Taula de continguts:

Generador / provador de 4-20ma amb Arduino: 8 passos
Generador / provador de 4-20ma amb Arduino: 8 passos

Vídeo: Generador / provador de 4-20ma amb Arduino: 8 passos

Vídeo: Generador / provador de 4-20ma amb Arduino: 8 passos
Vídeo: Teste do servo atuador Honeywell com simulador de 4 a 20 mA. 2024, Juny
Anonim
Generador / provador de 4-20ma mitjançant Arduino
Generador / provador de 4-20ma mitjançant Arduino

Hi ha generadors de 4-20 mA disponibles a ebay, però a mi m’encanta la part de les coses de bricolatge i l’ús de peces que tinc al voltant.

Volia provar les entrades analògiques del nostre PLC per verificar les nostres lectures scada i provar la sortida dels instruments de 4-20 mA. Hi ha un munt de convertidors de corrent a voltatge i convertidors de tensió a corrent per a arduino a ebay, però, cal calibrar-los. Puc utilitzar-ho per calibrar qualsevol d'aquests convertidors que es troben a ebay i similars.

Vaig decidir que faré un generador i un provador de bricolatge. En aquest moment encara és un treball en curs i un prototip.

Tenia un sistema de so 2.1 que no s’utilitzava (altaveus petits). Així que vaig utilitzar una de les caixes d’altaveus com a recinte. També vaig tenir un amplificador que va morir a causa d’un llamp, vaig treure el terminal dels altaveus d’aquest amplificador per facilitar la connexió. Tinc la intenció de fer un PCB en el futur i un millor recinte.

Subministraments:

Llista de peces.

LCD // 20x4 (adapteu el codi si el vostre és més petit)

Regulador LM7808 // 8volt

LED // Qualsevol tipus o mida

Resistència per a LED // Apte per al tipus de LED i 8 volt

Resistència de 100 ohm + 47 ohm en sèrie // S'utilitzarà com a resistència de derivació

Resistència 10K // Arduino analògic en protecció contra alta tensió

Resistència 22K // Per evitar que A0 suri

Trimpot 100 ohm + 47 ohm resistència en sèrie // PT100 simulador

Condensador de 35 volts // He utilitzat 470uF, només per reduir les fluctuacions de tensió de subministrament

RTD (transductor PT100) // L’espai no importa (rang)

DIODE (per protegir la polaritat)

INA219

Arduino

Pas 1:

Imatge
Imatge

Seguint l'esquema, hauríeu de començar a afegir les peces i connectar-les.

El LM7808 permet un màxim d’entrada de 25 volts, cosa que està bé per als sistemes de PLC, normalment utilitzen fonts d’alimentació de 24 volts. Afegiu un dissipador de calor al regulador i no l’utilitzeu durant períodes prolongats. Si baixa 16 volts, el regulador genera molta calor.

L'alimentació d'entrada alimenta el regulador i es connecta al INA219 VIN; en aquesta configuració, l'INA219 també podrà mesurar la tensió d'alimentació correcta menys la caiguda de tensió del díode. Heu de mesurar la caiguda de tensió del díode i afegir-la al codi per obtenir la lectura correcta de la tensió d'alimentació.

Des de l'INA219 VOUT fins a l'RTD + s'encén l'RTD. RTD- a terra completa el circuit.

Per provar una targeta analògica de PLC, hauríeu de connectar RTD- a l'entrada de la targeta analògica i a la terra de la targeta a la terra arduino. (Assegureu-vos de desconnectar qualsevol instrument connectat al canal que s'està provant).

R5 i LED1, que indiquen que el sistema està engegat.

El regulador s’introdueix al VIN arduino (arduino ha incorporat un regulador a 5 volts).

El pin Arduino de 5 V passa a INA219 per alimentar el xip incorporat. INA219 GND a terra arduino.

Retallar el netejador de pot a RTD PIN1 i Retallar el pin 3 a RTD pin 2 simularà una connexió PT100. (Canvieu els cables si girar el pot d'ajust en sentit horari no augmenta el mA).

Pas 2: Prova de sortida de l'instrument

Per provar la sortida de l’instrument es necessiten parts addicionals, com una resistència de derivació. Les resistències normals de 0,25 W faran la feina bé. Podeu deixar la resistència de derivació i afegir un segon INA219 per provar la sortida de l’instrument. Només em quedava una, de manera que he utilitzat una resistència.

La prova amb un derivació només es pot fer des del costat negatiu del dispositiu. Si utilitzeu el costat positiu, subministrareu al vostre arduino més de 4 vegades el voltatge permès i deixareu sortir el fum.

Afegiu la resistència de derivació en sèrie amb fil negatiu de l’instrument. El costat de la derivació més proper al dispositiu es convertirà en l'analògic positiu per a arduino. L’altra cara de la derivació més propera a la font d’alimentació es convertirà en la terra arduino que completa el circuit d’entrada analògica.

La resistència de derivació de 150 ohm és el màxim absolut que s’ha d’utilitzar quan s’utilitza un arduino. La resistència té una caiguda de tensió lineal al mA que hi circula. Com més gran sigui el mA, major serà el voltatge.

A 20mA de corrent # 150ohm * 0,02A = 3 volt a arduino.

A 4mA de corrent # 150ohm * 0,004A = 0,6 volt a arduino.

Ara és possible que vulgueu que la tensió sigui més propera a 5 volts, de manera que pugueu obtenir tota la gamma ADC de l’arduino. (No és una bona idea).

Els RTD poden arribar a 30,2 mA de sortida (el meu sí). 150ohm * 0,03A = 4,8 volts. Això és tan proper com voldria ser.

Un altre lloc web va indicar utilitzar una resistència de 250ohm.

A 20mA de corrent # 250ohm * 0,02A = 5 volt a arduino.

A 30mA de corrent # 250ohm * 0,03A = 7,5 volt a arduino.

Es corre el risc de cremar el vostre ADC i arduino.

Per provar un instrument al camp, porteu una bateria de 12 volt i connecteu-la a l’entrada de subministrament. L'ús d'una font d'alimentació externa no influirà en la configuració actual del PLC.

Per provar una targeta d'entrada analògica al camp, porteu-vos una bateria de 12 volt. Desconnecteu l'instrument + del circuit. Connecteu la terra a la terra de l’instrument i el RTD- al cable de l’instrument desconnectat.

Pas 3: calibració

Calibratge
Calibratge

Per calibrar la lectura de la resistència de derivació, connecteu RTD- a la connexió analògica de derivació. Establiu la pota de retallada de manera que el mA generat sigui de 4 mA. Si el mA del vostre dispositiu no és igual, modifiqueu el primer valor del codi a la línia 84. Si augmenteu aquest valor, disminuirà la lectura de mA.

A continuació, configureu el pot de retallada perquè generi 20 mA. Si el mA del vostre dispositiu no és igual, modifiqueu el segon valor del codi a la línia 84.

Així, el vostre 4-20mA ara es convertirà en 0,6-3 volts (teòric). Abast més que suficient. Mitjançant la biblioteca d’eRCaGuy, el mostreig excessiu us proporcionarà una lectura millor i estable.

Esperem que llegiu això. Aquest és el meu primer instructiu, així que, si us plau, calmeu-lo si he comès un error en algun lloc o he deixat alguna cosa fora.

Probablement, aquest projecte no és la millor manera d’aconseguir-ho, però em funciona i em va agradar fer-ho.

Algunes idees que tinc extra …

Afegiu un servo per girar l’olla de retall dins de la caixa.

Afegiu botons per girar el servo cap a l’esquerra o cap a la dreta.

Afegiu un sensor de temperatura digital al dissipador de calor del regulador per advertir de calor perillosa.

Pas 4: Programació d'Arduino

#incloure

// #include // Descomenta si fas servir una pantalla LCD amb un registre de desplaçament.

#incloure

#incloure

#incloure

#incloure

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

// LiquidCrystal_SR lcd (3, 4, 2); // Descomenteu si feu servir una pantalla LCD amb un registre de desplaçament.

// | | | _ Pinça de tancament

// | / _ Pin del rellotge

// / _ Dades / Activa el PIN

bytes bitsOfResolution = 12; // va ordenar una resolució sobreeixamplada

numSamplesToAvg llarg sense signar = 20; // nombre de mostres A LA RESOLUCIÓ SOBREMOSTREADA que voleu prendre i mitjà

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

unsigned long previousMillis = 0;

tensió de derivació flotant = 0,0; // Des de INA219

tensió bus flotant = 0,0; // Des de INA219

float current_mA = 0,0; // Des de INA219

tensió de càrrega flotant = 0,0; // Des de INA219

flotació arduinovoltatge = 0,0; // Càlcul de tensió a partir del pin A0

Llarg A0analogReading sense signar = 0;

byte analogIn = A0;

float ma_mapped = 0,0; // Mapa del voltatge d’A0 a 4-20mA

configuració nul·la () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t freqüència actual;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Biblioteca modificada per obtenir més precisió a mA

lcd.begin (20, 4); // inicialitzar la pantalla LCD

lcd.clear ();

lcd.home (); // anar a casa

lcd.print ("********************");

endarreriment (2000);

lcd.clear ();

}

bucle buit ()

{

corrent llarg sense signar Millis = millis ();

intervall llarg const = 100;

//&&&&&&&&&&&&&&&&&

Llegiu els dispositius I2C a intervals i feu alguns càlculs

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

if (Miles actuals - Miles anteriors> = interval) {

anteriorMillis = actualMillis;

Interval();

}

Imprimeix_A_LCD (); // Probablement no necessiteu actualitzar la pantalla LCD tan ràpidament i es pot moure a sota d'interval ()

}

buit

Interval() {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

tensió de càrrega = (busvoltage + (shuntvoltage / 1000)) + 0,71; // +0,71 és la meva caiguda de tensió del díode

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // Calculat a mV

ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10,0; // El mapa no pot fer servir flotants. Afegiu un 0 darrere del valor assignat i dividiu-lo per 10 per obtenir una lectura flotant.

// El mapatge a partir del càlcul de voltatge proporciona una lectura més estable que després mitjançant la lectura de ADC en brut.

if (shuntvoltage> = -0,10 && shuntvoltage <= -0,01) // Sense càrrega, l'INA219 tendeix a llegir a sota de -0,01, bé, el meu sí.

{

current_mA = 0;

tensió de bus = 0;

tensió de càrrega = 0;

voltatge de derivació = 0;

}

}

buit

Imprimeix_A_CD () {

lcd.setCursor (0, 0);

if (ma_mapped <1,25) {// Sense corrent, aquesta és la meva lectura de mA, així que la vaig deixar de banda.

lcd.print ("* Generador de 4-20 mA *");

}

més {

lcd.print ("** Analog Tester **");

}

lcd.setCursor (0, 1);

lcd.print ("Dispositiu");

lcd.setCursor (10, 1);

if (ma_mapped <1,25) {

lcd.print ("sense dispositiu");

}

mé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 ("Subministrament:");

lcd.setCursor (10, 3);

lcd.print (tensió de càrrega);

lcd.print ("V");

}

Pas 5: algunes fotos més

Algunes fotos més
Algunes fotos més

Terminal d'altaveus amplificador. LED accionat pel generador de corrent (RTD). El cablejat de la targeta analògica substituirà el LED.

La terminal de l'extrem esquerre serveix per a l'entrada de subministrament. Els terminals de la dreta són per a l'entrada d'instruments.

Pas 6: adaptació

Encaix
Encaix

Tot sembla encaixar. Vaig utilitzar silicona per mantenir temporalment algunes coses juntes. El pot de retall està siliconat a la part superior dreta. Es va foradar un petit forat. Puc ajustar el corrent des de la part superior del quadre.

Pas 7: només fotos

Només fotos
Només fotos
Només fotos
Només fotos
Només fotos
Només fotos
Només fotos
Només fotos

Pas 8: Paraules finals

He provat la sortida d'aquest dispositiu amb un PLC Allan Bradley. Els resultats van ser molt bons. Tinc una gamma completa. També he provat aquest dispositiu amb un sensor de pressió de 4-20 mA que té una pantalla LCD integrada. De nou els resultats van ser molt bons. Les meves lectures es van desactivar per un parell de decimals.

Escric el meu codi arduino a les pestanyes. Als PLC s’anomenen subrutines. Em facilita la depuració.

S'adjunten fitxers de text d'aquestes pestanyes.

Recomanat: