Peças: sensor de temperatura de 1 fio (DS1822)
Download: Buspirate.v0d.zip
O protocolo de 1 fio de Dallas / Maxim é a adição mais solicitada ao pirata de ônibus. Nós finalmente temos algumas partes de 1 fio, e hoje demonstraremos o termômetro digital de 1 fio DS1822. Pegue a folha de dados (PDF) e cumpra junto.
Esta publicação se foi junto com a versão V.0d do firmware do pirata de ônibus para a versão de hardware 0. Isso inclui a nova biblioteca de protocolo de 1 fio, mais opções de configuração e outras melhorias.
DS1822 Térmetro digital climático econômico (Digikey # DS1822 + -nd, $ 3.87) Descobrimos uma pegada na biblioteca de 1 fio para Eagle na página de download CADSOFT.
O protocolo de 1 fio utiliza um único cabo para transferência de dados e, às vezes, energia. Os dados são transferidos em ‘slots sensíveis ao tempo, pois não há um relógio separado para delinear os períodos de bits.
Pirata de ônibus
DS1822.
SDA.
Dq.
+ 5volts.
VDD.
Terra
Gnd.
As conexões DS1822 são mostradas na tabela. Utilizamos o fornecimento de 5Volt do Pirate Bus para alimentar o DS1822, no entanto, também funciona em 3.3volts. Um resistor (R1, ~ 5k) mantém o barramento alto.
Todos os comandos de 1 fio começam com um procedimento de redefinição, cumpridos por um dos cinco comandos da ROM.
Comando
Descrição
0x33.
Leia a ROM. Verifique se o único endereço de gadget.
0x55.
Combinar rom. Combine o endereço do gadget, cumprido pelo endereço de 64 bits.
0xcc.
Pule rom. Abordar todos os gadgets juntos.
0xec.
Pesquisa de alarme. Navegue por condição de alarme.
0xf0.
Pesquisar ROM. parte do procedimento de enumeração de endereços.
Os comandos da ROM são explicados na página 10 da folha de dados. Todos os comandos da ROM são oferecidos como macros na biblioteca de 1 fios do Pirate Bus, veja (0) para um menu. As macros de comando da ROM incluem o procedimento de reset de barramento de 1 fio.
Dispositivo único
Todos os gadgets de 1 fios têm um endereço exclusivo de 64 bits (8 bytes), e alguns gadgets de 1 fio são utilizados exclusivamente para fornecer eletrônicos um número de rastreamento exclusivo. Quando um único gadget está vinculado a um barramento de 1 fio, o comando ROM de saída irá extrair seu endereço.
1-fio> {0x33 r: 8 <-command xxx 1wire barramento reset ok XXX 1Wire escrever: 0x33 <-read rom XXX 1Wire a granel ler, 0x08 bytes: 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 <-id # 1 fio>
O comando envia uma redefinição de barramento ({), o comando rom check-out (0x33) e lê o endereço de 64 bits (R: 8, 8 bytes * 8bits / byte = 64bits).
O primeiro byte (0x22) determina isso como um termômetro DS1822. Os próximos 6 bytes são exclusivos deste dispositivo, e o byte final é CRC dos 7 bytes anteriores.
Agora podemos lidar com o gadget com o comando Match ROM e enviá-lo mais instruções.
1 fio> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0x44
xxx 1wire barramento reset ok
XXX 1Wire WRITE: 0x55 <-match rom
XXX 1Wire escrever: 0x22 <-start endereço
XXX 1wire escrever: 0x47
XXX 1Wire WRITE: 0x45
XXX 1wire escrever: 0x22
XXX 1Wire WRITE: 0x00
XXX 1Wire WRITE: 0x00
XXX 1Wire WRITE: 0x00
XXX 1Wire WRITE: 0x29
XXX 1wire escrever: 0x44 <-start conversão
1 fio>
Primeiro, enviamos o comando ROM (0x55) e o endereço de gadget (8 bytes). Em seguida é o comando convert t (0x44, datasheet page 11) que inicia a conversão de temperatura.
Uma segunda seqüência de comando recupera a leitura de temperatura do DS1822.
1-fio> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0xbe R: 9
xxx 1wire barramento reset ok
XXX 1wire escrever: 0x55
XXX 1wire escrever: 0x22
… longo endereço de 1 fio …
XXX 1Wire WRITE: 0x29
XXX 1wire escrever: 0xbe <-read scratchpad comando
XXX 1Wire a granel ler, 0x09 bytes:
0x71 0x01 0xff 0x00 0x7F 0xff 0x0f 0x10 0xf8
1 fio>
O comando Checked Out Scratchpad (0xbe, Datasheet page 11) Retorna 9 bytes. Nós só nos preocupamos com os dois primeiros bytes, o resto pode ser decodificado de acordo com a tabela na página 7 da folha de dados. A temperatura é calculada de acordo com a página 4 da folha de dados: 0x0171 HEX = 369 DEC, 369 * 0,0625 = 23C (74F).
Dispositivos múltiplos.
Quando vários gadgets de 1 fio compartilham um barramento, é mais difícil determinar todos os endereços. O método mais rápido para descobrir gadgets conectados é com o comando Browse ROM (0xf0) e um procedimento de ramificação binária. O Ônibus Pirate automatiza isso com macro (240).
1-fio> (240) <-macro 240 Comando XXX 1Wire ROM: Browse (0xf0) Encontrou gadgets em: Endereço de 1 fio macro 1,0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a <-Address * DS1822 ECON DIG THERME <-YPE de acordo com o código doméstico 2,0 × 22 0xd0 0xc7 0x1a 0x00 0x00 0x00 0x01 * DS1822 Econ Dig Therm 3,0 × 22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 * DS1822 Econ Dig Therm Encontrado 0x03 dispositivos. Os primeiros 10 IDs de gadget são oferecidos por macro, veja (0). 1 fio>
O comando Browse ROM mostra os gadgets encontrados e o tipo de acordo com o código doméstico.
Acreditamos que digitar 8 endereços de 1 byte de 1 fio é verdadeiramente tedioso, por isso os primeiros 10 endereços de gadget são mantidos na memória e podem ser acessados com as macros (1) … (10). Um buffer para até 50 endereços de gadget pode ser definido na biblioteca de 1 fio no tempo de compilação. Idealmente, esses dados serão mantidos em um buffer mundial de riscos compartilhados por todos os módulos em uma atualização futura de firmware.
1-fio> (0) <-show lista de macro Menu 0.macro. Macr.O endereço 1-fio