Tabla de contenido:
- Paso 1:
- Paso 2: Prueba de salida del instrumento
- Paso 3: Calibración
- Paso 4: Programando Arduino
- Paso 5: Algunas fotos más
- Paso 6: Encajar
- Paso 7: solo fotos
- Paso 8: Palabras finales
Video: Generador / probador 4-20ma con Arduino: 8 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Los generadores de 4-20 mA están disponibles en eBay, pero a mí me encanta la parte de bricolaje de las cosas y el uso de piezas que tengo por ahí.
Quería probar las entradas analógicas de nuestro PLC para verificar nuestras lecturas de scada y probar la salida de instrumentos de 4-20 mA. Hay un montón de convertidores de corriente a voltaje y convertidores de voltaje a corriente para arduino en ebay, aunque necesitan calibración. Puedo usar esto para calibrar cualquiera de esos convertidores que se encuentran en eBay y similares.
Decidí que haré un generador y un probador de bricolaje. En este momento todavía es un trabajo en progreso y un prototipo.
Tenía un antiguo sistema de sonido 2.1 que no se estaba utilizando (altavoces pequeños). Así que utilicé una de las cajas de altavoces como recinto. También tuve un amplificador que murió debido a un rayo, quité el terminal de altavoz de ese amplificador para facilitar la conexión. Tengo la intención de hacer una placa de circuito impreso en el futuro y una mejor carcasa.
Suministros:
Lista de partes.
LCD // 20x4 (adapte el código si el suyo es más pequeño)
LM7808 // Regulador de 8 voltios
LED // Cualquier tipo o tamaño
Resistencia para LED // Adecuado para el tipo de LED y 8 voltios
Resistencia de 100 ohmios + resistencia de 47 ohmios en serie // Se utilizará como resistencia de derivación
Resistencia 10K // Arduino analógico en protección contra alto voltaje
Resistencia de 22K // Para evitar que A0 flote
Trimpot 100 ohmios + 47 ohmios resistor en serie // Simulador PT100
Condensador de 35 voltios // Usé 470uF, solo para mantener bajas las fluctuaciones de voltaje de suministro
RTD (transductor PT100) // Span no importa (rango)
DIODE (para protección de polaridad)
INA219
Arduino
Paso 1:
Seguir el esquema debería ayudarlo a comenzar sobre dónde agregar las piezas y cablearlas.
El LM7808 permite una entrada máxima de 25 voltios, lo cual está bien para los sistemas PLC, generalmente utilizan fuentes de alimentación de 24 voltios. Agregue un disipador de calor al regulador y no lo use por períodos prolongados. La caída de 16 voltios hace que el regulador genere mucho calor.
La fuente de entrada alimenta el regulador y se conecta al INA219 VIN, en esta configuración el INA219 también podrá medir el voltaje de suministro correcto menos la caída de voltaje del diodo. Debe medir la caída de voltaje de su diodo y agregarlo al código para obtener la lectura correcta del voltaje de suministro.
Desde el INA219 VOUT al RTD + enciende el RTD. RTD- a tierra completa el circuito.
Para probar una tarjeta analógica PLC, debe conectar RTD- a la entrada de la tarjeta analógica y la tierra de la tarjeta a la tierra arduino. (Asegúrese de desconectar cualquier instrumento conectado al canal que se está probando).
R5 y LED1, el sistema indicador está encendido.
El regulador se alimenta en el arduino VIN (arduino tiene un regulador incorporado a 5 voltios).
El pin Arduino 5V va a INA219 para alimentar el chip integrado. INA219 GND a tierra arduino.
Recorte el limpiador de olla a RTD PIN1 y Trim pot pin 3 a RTD pin 2 simularán una conexión PT100. (Cambie los cables si girar el potenciómetro en el sentido de las agujas del reloj no aumenta los mA).
Paso 2: Prueba de salida del instrumento
Para probar la salida del instrumento se necesitan piezas adicionales, como una resistencia de derivación. Las resistencias normales de 0,25 W funcionarán bien. Puede dejar la resistencia de derivación y agregar un segundo INA219 para probar la salida del instrumento. Solo me quedaba uno, así que usé una resistencia en su lugar.
Las pruebas con una derivación solo se pueden realizar en el lado negativo del dispositivo. Si usa el lado positivo, suministrará a su arduino más de 4 veces el voltaje permitido y dejará salir el humo.
Agregue la resistencia de derivación en serie con el cable negativo del instrumento. El lado de la derivación más cercano al dispositivo se convertirá en el análogo positivo para arduino. El otro lado de la derivación más cercano a la fuente de alimentación se convertirá en la tierra arduino completando el circuito de entrada analógica.
La resistencia de derivación de 150 ohmios es el máximo absoluto que debe usarse cuando se usa un arduino. La resistencia tiene una caída de voltaje lineal al mA que fluye a través de ella. Cuanto mayor sea el mA, mayor será el voltaje.
A 20 mA de corriente # 150 ohmios * 0,02 A = 3 voltios a arduino.
A 4 mA de corriente # 150 ohmios * 0,004 A = 0,6 voltios a arduino.
Ahora es posible que desee que el voltaje esté más cerca de los 5 voltios para poder utilizar el rango completo de ADC del arduino. (No es Buena idea).
Los RTD pueden alcanzar una salida de 30,2 mA (el mío lo hace). 150 ohmios * 0,03 A = 4,8 voltios. Eso es lo más cercano que me gustaría estar.
Otro sitio web indicó el uso de una resistencia de 250 ohmios.
A 20 mA de corriente # 250 ohmios * 0,02 A = 5 voltios a arduino.
A 30mA de corriente # 250ohm * 0.03A = 7.5volt a arduino.
Corre el riesgo de quemar su ADC y arduino.
Para probar un instrumento en el campo, lleve una batería de 12 voltios y conéctela a la entrada de suministro. El uso de una fuente de alimentación externa no influirá en la configuración actual del PLC.
Para probar una tarjeta de entrada analógica en el campo, lleve una batería de 12 voltios. Desconecte el instrumento + del circuito. Conecte la tierra a la tierra del instrumento y el RTD- al cable del instrumento desconectado.
Paso 3: Calibración
Para calibrar la lectura de su resistencia de derivación, conecte RTD- a la entrada analógica de derivación. Configure su potenciómetro de compensación de modo que el mA generado sea 4mA. Si el mA de su dispositivo no es igual, modifique el primer valor en el código en la línea 84. Si aumenta este valor, disminuirá la lectura de mA.
Luego, configure su olla de recorte para generar 20 mA. Si el mA de su dispositivo no es igual, modifique el segundo valor en el código en la línea 84.
Entonces, su 4-20mA ahora se convertirá en 0.6-3voltios (teórico). Alcance más que suficiente. Usando la biblioteca de eRCaGuy, el sobremuestreo le dará una lectura mejor y estable.
Ojalá leas esto. Este es mi primer instructivo, así que tómatelo con calma si cometí un error en alguna parte o dejé algo fuera.
Este proyecto probablemente no sea la mejor manera de hacerlo, pero me funciona y fue divertido hacerlo.
Algunas ideas que tengo extra …
Agregue un servo para rotar el potenciómetro dentro de la caja.
Agregue botones para girar el servo hacia la izquierda o hacia la derecha.
Agregue un sensor de temperatura digital al disipador de calor del regulador para advertir sobre calor peligroso.
Paso 4: Programando Arduino
#incluir
// #include // Descomente si usa una pantalla LCD con un registro de desplazamiento.
#incluir
#incluir
#incluir
#incluir
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Descomente si usa una pantalla LCD con un registro de desplazamiento.
// | | | _ Pasador de pestillo
// | / _ Pin de reloj
// / _ Data / Enable Pin
byte bitsOfResolution = 12; // resolución sobremuestreada ordenada
unsigned long numSamplesToAvg = 20; // número de muestras A LA RESOLUCIÓN SOBREMESTADA que desea tomar y promedio
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
unsigned long previousMillis = 0;
tensión de derivación de flotación = 0,0; // De INA219
voltaje del bus flotante = 0.0; // De INA219
flotar current_mA = 0.0; // De INA219
voltaje de carga flotante = 0.0; // De INA219
flotador arduinovoltaje = 0.0; // Cálculo de voltaje desde el pin A0
Unsigned long A0analogReading = 0;
byte analogIn = A0;
float ma_mapped = 0.0; // Mapear voltaje de A0 a 4-20mA
configuración vacía () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t currentFrequency;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // Biblioteca modificada para mayor precisión en mA
lcd. comienzo (20, 4); // inicializar la pantalla LCD
lcd.clear ();
casa lcd (); // Vete a casa
lcd.print ("********************");
retraso (2000);
lcd.clear ();
}
bucle vacío ()
{
currentMillis largo sin firmar = millis ();
intervalo largo constante = 100;
//&&&&&&&&&&&&&&&&&
Leer dispositivos I2C a intervalos y hacer algunos cálculos
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis> = intervalo) {
previousMillis = currentMillis;
Intervalo();
}
Print_To_LCD (); // Probablemente no necesite actualizar la pantalla LCD tan rápido y se puede mover a debajo de Interval ()
}
vacío
Intervalo() {
shuntvoltage = ina219.getShuntVoltage_mV ();
busvoltage = ina219.getBusVoltage_V ();
current_mA = ina219.getCurrent_mA ();
tensión de carga = (tensión de bus + (tensión de derivación / 1000)) + 0,71; // +0.71 es la caída de voltaje de mi diodo
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5.0 * A0analogReading); // Calculado en mV
ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10.0; // El mapa no puede usar flotadores. Agregue un 0 detrás del valor mapeado y divida por 10 para obtener una lectura flotante.
// El mapeo del cálculo de voltaje proporciona una lectura más estable que usar la lectura de adc sin procesar.
if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Sin carga, el INA219 tiende a leer por debajo de -0.01, bueno, el mío sí.
{
current_mA = 0;
busvoltage = 0;
voltaje de carga = 0;
tensión de derivación = 0;
}
}
vacío
Print_To_LCD () {
lcd.setCursor (0, 0);
if (ma_mapped <1.25) {// Sin corriente, esta es mi lectura de mA, así que simplemente la tiro.
lcd.print ("* Generador 4-20mA *");
}
demás {
lcd.print ("** Analog Tester **");
}
lcd.setCursor (0, 1);
lcd.print ("Dispositivo:");
lcd.setCursor (10, 1);
if (ma_mapped <1.25) {
lcd.print ("sin dispositivo");
}
demás {
lcd.print (ma_mapped);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Generar:");
lcd.setCursor (10, 2);
lcd.print (current_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Suministro:");
lcd.setCursor (10, 3);
lcd.print (voltaje de carga);
lcd.print ("V");
}
Paso 5: Algunas fotos más
Terminal de altavoz amplificador. LED impulsado por el generador de corriente (RTD). El cableado de la tarjeta analógica reemplazará al LED.
El terminal en el extremo izquierdo es para la entrada de suministro. Los terminales de la derecha son para entrada de instrumentos.
Paso 6: Encajar
Todo parece encajar. Usé silicona para sujetar temporalmente algunas cosas. El recipiente de ajuste está siliconado en la parte superior derecha. Se taladró previamente un pequeño agujero. Puedo ajustar la corriente desde la parte superior de la caja.
Paso 7: solo fotos
Paso 8: Palabras finales
He probado la salida de este dispositivo con un PLC Allan Bradley. Los resultados fueron muy buenos. Obtuve rango completo También probé este dispositivo con un sensor de presión de 4-20 mA que tiene una pantalla LCD incorporada. Nuevamente los resultados fueron muy buenos. Mis lecturas se desviaron por un par de decimales.
Escribo mi código arduino en pestañas. En los PLC se les llama subrutinas. Facilita la depuración para mi.
Se adjuntan archivos de texto de esas pestañas.
Recomendado:
Probador de servos de 16 canales con Arduino e impresión 3D: 3 pasos (con imágenes)
Probador de servos de 16 canales con Arduino e impresión 3D: Casi todos los proyectos que he hecho recientemente me han requerido probar algunos servos y experimentar con sus posiciones antes de que entren en el ensamblaje. Por lo general, hago un probador de servos rápido en una placa de pruebas y uso el monitor en serie en el ardui
Generador de música basado en el clima (generador Midi basado en ESP8266): 4 pasos (con imágenes)
Generador de música basado en el clima (Generador Midi basado en ESP8266): Hola, hoy explicaré cómo hacer tu propio generador de música basado en el clima. Está basado en un ESP8266, que es como un Arduino, y responde a la temperatura, la lluvia y la intensidad de la luz. No espere que haga canciones completas o programas de acordes
Generador - Generador de CC con interruptor de lengüeta: 3 pasos
Generador - Generador de CC con interruptor de láminas: Generador de CC simple Un generador de corriente continua (CC) es una máquina eléctrica que convierte la energía mecánica en electricidad de corriente continua. cambios
Probador de componentes electrónicos (con un estuche agradable): 5 pasos (con imágenes)
Comprobador de componentes electrónicos (con un estuche agradable): ¿Alguna vez ha tenido un dispositivo defectuoso o roto y se ha encontrado pensando " ¿qué puedo recuperar de esta basura "? Me pasó varias veces, y aunque pude recuperar la mayor parte del hardware, no pude recuperar la mayor parte del pa
Probador de IC, amplificador operacional, probador de temporizador 555: 3 pasos
IC Tester, Op-Amp, 555 Timer Tester: todos los circuitos integrados defectuosos o de repuesto están por ahí, pero si se mezclan entre sí, lleva mucho tiempo identificar uno malo o bueno. En este artículo aprendemos sobre cómo podemos hacer IC probador, continuemos