Leitura automática de medidor (AMR) usando Arduino

Lectura automática de medidores (AMR) usando Arduino

No existe otra herramienta disponible que ayude a crear prototipos fácilmente como Arduino. La placa Arduino tiene todos los circuitos necesarios para que funcione el microcontrolador AVR integrado. Las placas de microcontrolador AVR que cuentan con todos los circuitos básicos para el funcionamiento del microcontrolador que se ha actualizado con el cargador de arranque Arduino se denominan placas Arduino. El IDE de Arduino es tan sencillo de utilizar que cualquiera que tenga conocimientos básicos de programación en C puede empezar a utilizarlo rápidamente. Entonces, para este proyecto, el lector debe tener conocimiento de cómo comenzar con Arduino y la interfaz LCD con Arduino .

Este documento analiza el desarrollo y funcionamiento de un prototipo de AMR ( lectura automática de medidores ) utilizando una placa Arduino . AMR es ahora un término general para todos los tipos de medidores que pueden leer datos, almacenar la lectura y transmitir la lectura de forma inalámbrica, previa solicitud, a otro dispositivo. Ahora hay medidores de agua disponibles que permiten la conexión de interruptores de láminas. Este proyecto utiliza un interruptor de láminas junto con un imán giratorio para demostrar el funcionamiento de la RAM .

Protótipo de Sistema Automático de Leitura de Medidores baseado em Arduino

Figura 1: Prototipo de sistema de lectura automática de medidores basado en Arduino

DESCRIPCIÓN:

El AMR consta básicamente de dos unidades, una unidad transmisora ​​de almacenamiento de datos que se fija al medidor y una unidad receptora portátil. La unidad transmisora ​​tiene un interruptor de láminas con el que lee el medidor y un transmisor de RF que transmite los datos. La unidad portátil tiene un receptor de RF que recibe los datos y una pantalla LCD de 16*2 en la que se muestran los datos.

Visão geral da leitura automática do medidor

Fig. 2: Descripción general de la lectura automática del contador

En este proyecto, tanto el Transmisor como el Receptor se fabrican utilizando placas Arduino pro-mini y un par transmisor-receptor RF de 433Mhz. La principal peculiaridad de la placa Arduino pro-mini es su tamaño y su capacidad de funcionar con una alimentación de 3V. Es de tamaño pequeño, tiene pines compatibles con placas de pruebas y se puede conectar fácilmente a placas de circuito prototipo. La comunicación entre dos dispositivos es comunicación UART inalámbrica con una velocidad de sólo 600 baudios.

Imagem do Arduino Pro Mini

Figura 3: Imagen del Arduino Pro Mini

Unidad transmisora

Unidad transmisora

La unidad transmisora ​​tiene un interruptor de láminas con el que lee los datos del medidor. Cuenta con una placa Arduino que almacena los datos, un micro-switch para que el usuario comience a enviar los datos y un módulo transmisor que se conecta directamente al puerto serie de la placa Arduino. La unidad funciona con dos pilas AA .

Diagrama de blocos da unidade transmissora do sistema de leitura automática de medidor baseado em Arduino

Fig. 4: Diagrama de bloques de la unidad transmisora ​​del sistema de lectura automática de contadores basado en Arduino

Cada vez que el imán del medidor se acerca al interruptor de láminas, hace un contacto y el pin de entrada digital de la placa Arduino donde está conectado indicará lógica alta. Cada vez que el pin sube, Arduino incrementa una variable en el código. Cada vez que el usuario presiona el microinterruptor, el

la placa recibe una interrupción externa y comenzará a transmitir el valor de esa variable en serie al módulo RF, que lo transmitirá de forma inalámbrica. Para recibir los datos sin errores en el receptor, la unidad transmisora ​​transmite los datos en el siguiente formato.

SOY R

Protótipo de unidade transmissora de sistema automático de leitura de medidor baseado em Arduino

Fig. 5: Prototipo de unidad transmisora ​​del sistema de lectura automática de contadores basado en Arduino

Unidad receptora

Unidad receptora

La unidad receptora tiene otra placa Arduino con un módulo receptor de RF conectado a su puerto serie. También realiza comunicación en serie con la misma velocidad de 600 baudios para poder recibir los datos transmitidos desde la unidad transmisora. La placa Arduino de esta unidad puede mostrar datos en una pantalla LCD de 16×2.

Diagrama de blocos da unidade receptora do sistema de leitura automática de medidor baseado em Arduino

Fig. 6: Diagrama de bloques de la unidad receptora del sistema de lectura automática de contadores basado en Arduino

Cada vez que se presiona el botón de la unidad transmisora, los datos se actualizarán en la pantalla LCD. La unidad receptora portátil funciona con una batería de 9V. El código en la unidad receptora espera que llegue una 'A' a su puerto serie desde la unidad receptora de RF y confirma que son datos del medidor transmisor cuando el siguiente carácter receptor es 'M'. El código actualizará el resto de los datos recibidos en la pantalla LCD hasta que reciba el carácter 'R' del medidor transmisor, lo que representa el final de la transmisión de datos.

Protótipo de unidade receptora de sistema de leitura automática de medidor baseado em Arduino

Fig. 7: Prototipo de unidad receptora del sistema de lectura automática de contadores basado en Arduino

Laboral

Laboral

El prototipo parece funcionar normalmente con una batería AA en la unidad transmisora ​​del medidor. Los datos se pueden recibir utilizando el dispositivo portátil a una distancia de más de 10 metros sin antenas, excepto pistas de PCB en las unidades de transmisión y recepción. La antena de pista PCB fabricada en la unidad transmisora ​​del medidor equivale a una antena de cable de 60 cm de largo.

Imagem da antena de trilha PCB

Fig. 8: Imagen de la antena de pista PCB

Imagem mostrando a antena de trilha PCB conectada à unidade transmissora

Fig. 9: Imagen que muestra la antena de carril PCB conectada a la unidad transmisora

Para demostrar cómo funciona, se pega un imán redondo a un disco de plástico, ligeramente desplazado de su centro. Luego, el disco se conecta al eje de un motor de CC para que pueda encenderse o girarse manualmente. Se coloca un interruptor de láminas cerca del imán giratorio ya que el imán está ligeramente desplazado del centro del disco; se acerca en un punto y se aleja en algún otro punto del interruptor de láminas a medida que el disco gira. En consecuencia, el interruptor Reed se abre y cierra continuamente a medida que el imán gira, simulando un medidor con el interruptor Reed conectado. En cualquier momento, el usuario puede presionar el botón en la unidad transmisora ​​del medidor y la lectura del medidor se actualizará en la unidad receptora.

Código fuente del proyecto

 ###


 #incluir
 LCD de cristal líquido (12, 11, 5, 4, 3, 2);
 LED int = 13;
 charx;
 char dat(6);
 int yo = 0;
 en;
 configuración vacía
 {
 lcd.comenzar(16, 2);
 retraso(1000);
 Serie.begin(600);
 retraso(1000);
 pinMode(led, SALIDA);
 escritura digital (led, ALTA);
 lcd.setCursor(5, 0); 
lcd.print("AMR");
 lcd.setCursor(4, 1);
 lcd.print("0000000");
 }
 bucle vacío
 {
 yo = 0;
 del
 {
 del
 {
 while(!Serial.disponible);
 x = Serie.leer;
 }
 mientras(x!= 'A');
 while(!Serial.disponible);
 x = Serie.leer;
 }
 mientras(x!= 'M');
 del
 {
 while(!Serial.disponible);
 x = Serie.leer;
 si(x!= 'R')
 {
 dat(i) = x;
 yo ++;
 }demás;
 }mientras(x!= 'R');
 dat(i) = '';
 lcd.setCursor(5, 0);
 lcd.print("AMR");
 lcd.setCursor(4, 1);
 para(o = 0; o < (7 - i); o ++)
 lcd.imprimir('0');
 lcd.print(dat);
 }




 //Código del transmisor



 volátil int meter_reading = 0;
 int sensor de caña = 6;
 configuración vacía
 {
 adjuntarInterrupt(1, data_tx, RISING);
 Serie.begin(600);
 pinMode(sensor de láminas, ENTRADA);
 }
 bucle vacío
 {
 del
 {
 while(!digitalRead(sensor de caña));
 retraso(10);
 }mientras(!digitalRead(sensor de caña));
 lectura_medidor++;
 del
 {
 while(digitalRead(sensor de caña));
 retraso(10);
 }mientras(digitalRead(sensor de caña));
 }
 //========== ISR ============//
 
anular datos_tx

 {

 separarInterrupción(1);

 Serie.print("AM");

 Serie.print(meter_reading);

 Serie.print('R');

 adjuntarInterrupt(1, data_tx, RISING);

 }

 //========== ISR ============//


 ###

Diagramas de circuito

Sistema de lectura automática de contadores basado en Arduino.
Sistema de lectura automática de contadores basado en Arduino.

Vídeo del proyecto

Volver al blog

Deja un comentario

Los comentarios deben ser aprobados antes de su publicación.