Piezas: Sensor de temperatura de 1 alambre (DS1822)

Descargar: buspirate.v0d.zip

El protocolo de 1 hilos de Dallas / Maxim es la adición más solicitada al pirata del autobús. Por último, obtuvimos algunas partes de 1 cable, y hoy demostraremos el termómetro digital DS1822 de 1 hilos. Agarre la hoja de datos (PDF) y cumple con la parte.

Esta publicación se ha llevado junto con la versión V.0D del firmware del pirata de autobús para la versión de hardware 0. Esto incluye la nueva biblioteca de protocolos de 1 hilos, más opciones de configuración y otras mejoras.

DS1822 Clima económico Termómetro digital (DIGIKEY # DS1822 + -ND, $ 3.87) Descubrimos una huella en la biblioteca de 1 alambre para Eagle en la página de descarga de CADSOFT.

El protocolo de 1 hilos utiliza un solo cable para la transferencia de datos y, a veces, potencia. Los datos se transfieren en ‘ranuras’ sensibles al tiempo ya que no hay un reloj separado para delinear los períodos de bits.

Pirata de autobús

DS1822

Sda

Dq

+ 5Volts
VDD

Terrestre

Gnd

Las conexiones DS1822 se muestran en la tabla. Utilizamos el suministro de 5 Volt del pirata de autobús para alimentar el DS1822, sin embargo, también funciona a 3.3Volts. Una resistencia (R1, ~ 5k) sostiene el autobús alto.

Todos los comandos de 1 cable comienzan con un procedimiento de reinicio, cumplido con uno de los cinco comandos de ROM.

Mando
Descripción

0x33
Leer ROM. Checked Out Single Gadget Dirección.

0x55
Match ROM. Match Gadget Dirección, cumplido con la dirección de 64bit.

0xcc
SKIP ROM. Dirigir todos los gadgets juntos.

0xec
Búsqueda de alarmas. Busque la condición de alarma.

0xf0
Búsqueda ROM. Parte del procedimiento de enumeración de direcciones.

Los comandos de la ROM se explican en la página 10 de la hoja de datos. Todos los comandos de ROM se ofrecen como macros en la biblioteca de 1 alambre del pirata de autobús, consulte (0) para un menú. ROM Command Macros incluye el procedimiento de restablecimiento de bus de 1 cable.

Un solo dispositivo

Todos los gadgets de 1 cables tienen una dirección única de 64bit (8 bytes), y algunos dispositivos de 1 alambre se utilizan únicamente para proporcionar electrónica un número de seguimiento único. Cuando un solo gadget está vinculado a un autobús de 1 hilado, el comando de ROM de revisión extraerá su dirección.

1 cable> {0x33 R: 8 <-command Restablecimiento de bus de XXX 1Wire OK xxx 1wire escribir: 0x33 <-read ROM xxx 1wire bulk lee, 0x08 bytes: 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 <-id # 1-cable>

El comando envía un reinicio de bus ({), el comando ROM de salida (0x33), y lee la dirección 64bit (R: 8, 8 bytes * 8bits / byte = 64bits).

El primer byte (0x22) determina esto como un termómetro DS1822. Los próximos 6 bytes son exclusivos de este dispositivo, y el byte final es un CRC de los 7 bytes anteriores.

Ahora podemos abordar el gadget con el comando Match ROM y enviarlo más instrucciones.

1 cable> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0x44
Restablecimiento de bus de XXX 1Wire OK
xxx 1wire escribir: 0x55 <-match ROM Comando xxx 1wire escribe: 0x22 <-Start Dirección xxx 1wire escribir: 0x47 xxx 1wire escribir: 0x45 xxx 1wire escribir: 0x22 xxx 1wire escribir: 0x00 xxx 1wire escribir: 0x00 xxx 1wire escribir: 0x00 xxx 1wire escribir: 0x29 xxx 1wire escribir: 0x44 <-Start Conversion 1-cable>

Primero, enviamos el comando Match ROM (0x55) y la dirección del gadget (8 bytes). El siguiente es el comando con convertencia (0x44, la hoja de datos Página 11) que inicia la conversión de temperatura.

Una segunda secuencia de comandos recupera la lectura de la temperatura del DS1822.

1 cable> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0xbe R: 9
Restablecimiento de bus de XXX 1Wire OK
xxx 1wire escribir: 0x55
xxx 1wire escribir: 0x22
… Larga dirección de 1 alambre …
xxx 1wire escribir: 0x29
xxx 1wire escribe: 0xbe <-Read ScratePad Command xxx 1wire bulk lee, 0x09 bytes: 0x71 0x01 0xff 0x00 0x7f 0xff 0x0f 0x10 0xf8 1-cable>

El comando ScratkPad de salida (0xbe, la hoja de datos Page 11) devuelve 9 bytes. Solo nos preocupamos por los dos primeros bytes, el resto se puede decodificar de acuerdo con la tabla en la página 7 de la hoja de datos. La temperatura se calcula de acuerdo con la página 4 de la hoja de datos: 0x0171 hex = 369 dic, 369 * 0.0625 = 23c (74F).

Múltiples dispositivos

Cuando varios gadgets de 1 cables comparten un autobús, es más difícil determinar todas las direcciones. El método más rápido para descubrir los gadgets conectados es con el comando Browse ROM (0xf0) y un procedimiento de ramificación binario. El pirata de autobús automatiza esto con Macro (240).

1 cable> (240) <-macro 240 Comando XXX 1Wire ROM: Navegar (0xf0) Gadgets encontrados en: Dirección macro de 1 alambre 1.0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a <-Address * DS1822 Econ Dig Therm <-Type según el código del hogar 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 Encontrados 0x03 dispositivos. Las primeras 10 identificaciones de gadgets son ofrecidas por Macro, ver (0). 1-cable>

El comando Browse ROM muestra los gadgets que encontró, y el tipo según el código del hogar.

Creemos que la escritura de 8 bytes de 1 alambre es verdaderamente tediosa, por lo que las primeras 10 direcciones de gadget se mantienen en la memoria y se pueden acceder con las macros (1) … (10). Un tampón durante hasta 50 direcciones de gadget se puede definir en la biblioteca de 1 alambre en el tiempo de compilación. Idealmente, estos datos se mantendrán en un búfer mundial de scratch compartidos por todos los módulos en una futura actualización de firmware.

1 cable> (0) <-Show Macro LIST 0.Macro Menu Macro 1-cable direcciones <- direcciones de gadgets mencionadas 1.0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a * DS1822 Econ Dig Therm 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 Macros de comando ROM de 1 hilos: <- Comandos normales 51.Read ROM (0x33) * Para un solo autobús de gadget 85.match ROM (0x55) * seguido de una dirección de 64 bits 204.skip ROM (0xcc) * seguido de comando 236.Arm Blowse (0XEC) 240.Search ROM (0xf0) 1-cable>

El menú macro (0) también incluirá las direcciones de gadget mantenidas en la lista. Ahora podemos simplemente abordar los gadgets por macro, en lugar de escribir toda la dirección de 64bit cada vez.

1 cable> (85) (1) 0x44 <-Start Conversion Restablecimiento de bus de XXX 1Wire OK XXX 1Wire COMPONE ROM Command: Match (0x55) * Siga con la dirección de 64bit XXX 1Wire Dirección Macro 1: 0x22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a xxx 1wire escribir: 0x44 1 cable> (85) (1) 0xbe R: 9 <-Fetch Reading Restablecimiento de bus de XXX 1Wire OK XXX 1Wire COMPONE ROM Command: Match (0x55) * Siga con la dirección de 64bit XXX 1Wire Dirección Macro 1: 0x22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a xxx 1wire escribir: 0xbe xxx 1wire bulk lee, 0x09 bytes: 0x81 0x01 0x4b 0x46 0x7f 0xff 0x0f 0x10 0x71 1-cable>

(85) es un acceso directo para un comando de reinicio de autobús y coincidir ROM. (1) es la macro de la dirección del gadget, y 0x44 es el comando para comenzar una conversión de temperatura. Recuperar la lectura incluye las mismas macros exactas, sin embargo, sustituye el comando para verificar el gadget (0xbe) y agarra 9 bytes (R: 9). La temperatura es 0x0181, o 24C junto al ventilador de la PC.

Tomándolo más

Utilizamos el pirata de autobús para proporcionar una presentación visual del protocolo de 1 hilos, sin embargo, la dificultad genuina lo está integrando en su propio diseño. MAXIM proporciona un código de ejemplo, Microchip tiene una Nota de aplicación (PDF), y puede inspeccionar el código de ejemplo que utilizamos.

Descarga de firmware: buspirate.vod.zip