Sistema de alarma Raspberry PI a HoneyWell (3V vs 12V)

1

simular este circuito : esquema creado usando CircuitLab

He estado trabajando en un proyecto similar como esto pero con un sistema de alarma HoneyWell. Logré bajar el voltaje de 12 V a 3 V (aprox.) Usando un puente de resistencia. Ahora tengo los cables del puente enchufados en los pines GPIO en la frambuesa pi. Estoy leyendo la entrada del pin a través de Pi4J y parece darme un valor ALTO y BAJO respectivamente para los 2 pines. Este valor no cambia incluso si hay un evento que ocurre en el panel de alarma (apertura de puertas, etc.). ¿Alguien puede decirme cómo leer los datos y las entradas de clk correctamente?

Notas: En el diagrama del circuito debajo de la fuente de voltaje están los datos y las líneas de reloj que salen del Panel de Alarma. Estoy alimentando el pin GPIO de la pi con un cable de puente al final de la resistencia R1. Tuve que usar un manojo de 1k y otra resistencia de 300 ohmios porque no tenía una resistencia de 3300K en mi kit pequeño. El reloj y las líneas de datos se están degradando a una línea de entrada de 3 voltios al pasar por este circuito (2 circuitos en una placa de pan). El modelo del panel de alarma es un Honeywell Vista 20p. Diagrama del circuito del panel adjunto a continuación. Estoy alimentando el pi con los cables conectados a PIN 6 y 7 como se muestra en el circuito.

[]

Lasiguienteimagenesdeloscablesconectadosalaplacadepruebas.Laplacadepruebasseconectaalapiatravésdeuncable(noestásegurodecómosellamaelcable).

    
pregunta vineets

1 respuesta

1

El uso de un divisor de resistencia para esto es probablemente una mala idea, por algunas razones: aislamiento de tierra, compatibilidad electromagnética y si la salida de 12 V (y supongo que es una salida de 12 V del sistema de alarma que está intentando) para monitorear desde la Pi) incluso tiene una topología de push-pull completa.

Mi primera suposición de por qué siempre ve un 1 es que la salida de 12 V puede ser solo un transistor de pull-up y no un pull-down, por lo que el pin de entrada simplemente flotará alto. O bien, ha elegido los valores de resistencia pobremente, o un montón de otras posibilidades.

El enfoque habitual (a menos que la velocidad de datos sea realmente alta, como un Mbit o más) es usar un optoaislador. Eso debería proporcionarle una señal limpia, aislada y con cambio de nivel que puede ser observada directamente por el Pi. Deberá buscar en Google ("opto-isolator input pi" o similar) un esquema, pero hay muchas opciones para elegir.

El segundo problema es que si esas dos líneas son salidas de reloj + datos de la alarma, tendrá dificultades para interpretarlas en el Pi como GPIO porque simplemente no puede leerlas lo suficientemente rápido, sin espacios, para garantizar que obtienes cada bit Deberá conectarlos a un periférico I2C o SPI dedicado (según sea apropiado para el protocolo de señalización real que proviene de la alarma), configurado como esclavo, para interpretar el flujo de bits en tiempo real sin que el programador de Linux se interponga en su camino. .

    
respondido por el William Brodie-Tyrrell

Lea otras preguntas en las etiquetas