Kazalo:

Generator/tester 4-20ma z uporabo Arduina: 8 korakov
Generator/tester 4-20ma z uporabo Arduina: 8 korakov

Video: Generator/tester 4-20ma z uporabo Arduina: 8 korakov

Video: Generator/tester 4-20ma z uporabo Arduina: 8 korakov
Video: Обзор модуля ввода/вывода EBYTE Modbus RTU 2024, November
Anonim
Generator/tester 4-20ma z uporabo Arduina
Generator/tester 4-20ma z uporabo Arduina

Generatorji 4-20mA so na voljo na ebayu, vendar imam rad del DIY in uporabo delov, ki jih imam naokoli.

Želel sem preizkusiti analogne vhode našega PLC-ja, da preverim odčitke scada in preizkusim izhod instrumentov 4-20mA. Na ebayu je veliko pretvornikov toka v napetost in pretvornikov napetosti v tok za arduino, vendar jih je treba umeriti. To lahko uporabim za umerjanje katerega koli od tistih pretvornikov, ki jih najdemo na ebayu in podobnih.

Odločil sem se, da bom DIY naredil generator in tester. V tem trenutku je še vedno v izdelavi in prototip.

Imel sem star 2.1 zvočni sistem, ki se ni uporabljal (majhni zvočniki). Zato sem eno od zvočniških omar uporabil kot ohišje. Imel sem tudi ojačevalnik, ki je umrl zaradi strele, s tega ojačevalnika sem odstranil priključek zvočnika, da sem povezal vetrič. V prihodnosti nameravam narediti PCB in boljše ohišje.

Zaloge:

Seznam delov.

LCD // 20x4 (prilagodite kodo, če je vaša manjša)

LM7808 // 8 -voltni regulator

LED // Vse vrste ali velikosti

Upor za LED // Primerno za tip LED in 8 voltov

100 ohmski upor + 47 ohmski upor v seriji // Uporablja se kot shunt upor

10K upor // Arduino analog v zaščiti pred visoko napetostjo

22K upor // Za ustavitev plavanja A0

Trimpot 100 ohmski + 47 ohmski upor v seriji // simulator PT100

35 -voltni kondenzator // Uporabil sem 470uF, samo zato, da zmanjšam nihanja napajalne napetosti

RTD (pretvornik PT100) // Razpon ni pomemben (razpon)

DIODA (za zaščito polarnosti)

INA219

Arduino

Korak 1:

Slika
Slika

Po shemi bi morali začeti, kam dodati dele in jih povezati.

LM7808 omogoča največ 25 voltnih vhodov, kar je v redu za sisteme PLC, običajno uporabljajo 24 -voltne napajalnike. Regulatorju dodajte hladilnik in ga ne uporabljajte dlje časa. Padec 16 voltov povzroči, da regulator proizvaja veliko toplote.

Vhodni vir napaja regulator in se poveže z VA INA219, v tej konfiguraciji bo lahko INA219 izmeril tudi pravilno napajalno napetost minus minus padec napetosti iz diode. Izmerite padec napetosti diode in ga dodajte kodi, da dobite pravilno odčitavanje napajalne napetosti.

Od INA219 VOUT do RTD+ napaja RTD. RTD- na zemljo zaključi vezje.

Če želite preizkusiti analogno kartico PLC, priključite RTD- na vhod na analogni kartici in ozemljitev od kartice do ozemljitve arduino. (Ne pozabite odklopiti vseh instrumentov, priključenih na preskušani kanal).

R5 in LED1, sistem za prikazovanje je vklopljen.

Regulator se napaja v arduino VIN (arduino ima vgrajen regulator na 5 voltov).

Arduino 5V pin gre na INA219 za napajanje vgrajenega čipa. INA219 GND na arduino tla.

Brisalec trim lonca na RTD PIN1 in trin pin 3 na RTD pin 2 bo simuliral povezavo PT100. (Zamenjajte žice, če obračanje okrasnega lonca v smeri urinega kazalca ne poveča mA).

Korak: Preskus izhoda instrumenta

Za preskušanje izhoda instrumenta so potrebni dodatni deli, na primer uporni upor. Običajni upori 0,25 W se bodo odlično odrezali. Zapustni upor lahko pustite in dodate drugo INA219, da preizkusite izhod instrumenta. Le en mi je ostal, zato sem namesto tega uporabil upor.

Testiranje z uporabo shunta je mogoče opraviti samo na negativni strani naprave. Če uporabljate pozitivno stran, boste arduinu dobavili več kot 4 -kratno dovoljeno napetost in pustili dim.

Dodajte zaporedni upor z negativno žico instrumenta. Stran shunta, ki je najbližja napravi, bo postala pozitiven analog za arduino. Druga stran shunta, ki je najbližje napajalniku, bo postala ozemljitev arduino, ki zaključuje analogno vhodno vezje.

150 ohmski šant upor je absolutni maksimum, ki ga je treba uporabiti pri uporabi arduina. Upor ima padec napetosti, ki je linearna glede na mA, ki teče skozi njega. Večji kot je mA, večja je napetost.

Pri 20mA tok # 150ohm*0,02A = 3volt do arduina.

Pri 4mA toku # 150ohm*0,004A = 0,6 volta do arduina.

Zdaj bi morda želeli, da bi bila napetost bližje 5 voltom, tako da nam lahko posredujete celoten razpon ADC arduina. (To ni dobra ideja).

RTD -ji lahko dosežejo 30,2 mA izhod (moj deluje). 150ohm*0,03A = 4,8 voltov. To je tako blizu, kot bi si želel biti.

Druga spletna stran je navedla uporabo upora 250 ohmov.

Pri 20mA tok # 250ohm*0,02A = 5volt do arduina.

Pri 30mA tok # 250ohm*0,03A = 7,5 voltov do arduina.

Tvegate, da boste zažgali ADC in arduino.

Če želite instrument preizkusiti na terenu, vzemite s seboj 12 -voltno baterijo in jo priključite na vhod za napajanje. Uporaba zunanjega vira napajanja ne bo vplivala na trenutno nastavitev PLC -ja.

Za preizkus analogne vhodne kartice na terenu vzemite s seboj 12 -voltno baterijo. Odklopite instrument + iz tokokroga. Ozemljitev priključite na ozemljitev instrumenta in RTD- na odklopljeno žico instrumenta.

3. korak: Umerjanje

Praznovanje
Praznovanje

Če želite umeriti odčitavanje shunt upora, priključite RTD- na analogni vhod shunt. Nastavite svoj trim lonec tako, da bo generirani mA 4mA. Če mA vaše naprave ni enaka, spremenite prvo vrednost v kodi v vrstici 84. Povečanje te vrednosti bo znižalo odčitavanje mA.

Nato nastavite trim lonec, da ustvarja 20 mA. Če mA vaše naprave ni enaka, spremenite drugo vrednost v kodi v vrstici 84.

Tako bodo vaši 4-20mA zdaj postali 0,6-3 voltov (teoretično). Domet več kot dovolj. Z uporabo knjižnice iz eRCaGuy vam bo preveliko vzorčenje omogočilo boljše in stabilnejše odčitavanje.

Upam, da ste to prebrali. To je moj prvi pouk, zato vas prosim, da počakate, če sem kje naredil napako ali kaj izpustil.

Ta projekt verjetno ni najboljši način za to, vendar mi deluje in mi je bilo zabavno.

Nekaj idej imam še…

Dodajte servo, da zavrtite okrasni lonec znotraj škatle.

Dodajte gumbe, da zavrtite servo levo ali desno.

Regulatorju hladilnika dodajte digitalni temperaturni senzor, ki opozarja na nevarno toploto.

4. korak: Programiranje Arduina

#vključi

// #include // Uncomment, če uporabljate LCD s premičnim registrom.

#vključi

#vključi

#vključi

#vključi

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

LCD tekoči kristal (12, 11, 5, 4, 3, 2);

// LCD tekoči kristal_SR (3, 4, 2); // Komentirajte, če uporabljate LCD s premičnim registrom.

// | | | _ Zatič

// | / _ Zatič za uro

// / _ Podatki/Omogoči pin

bajtni bitoviOfResolution = 12; // ukazal preveč vzorčeno ločljivost

brez podpisa dolgo numSamplesToAvg = 20; // število vzorcev NA PREVERJENO REZOLUCIJO, ki jih želite vzeti, in povprečje

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

brez podpisa dolga previousMillis = 0;

izhodna napetost plovca = 0,0; // Iz INA219

napetost plovnega vodila = 0,0; // Iz INA219

plavajoči tok_mA = 0,0; // Iz INA219

napetost obremenitve plovca = 0,0; // Iz INA219

plavajoča arduino napetost = 0,0; // Izračun napetosti iz zatiča A0

Nepodpisano dolgo A0analogReading = 0;

bajt analogIn = A0;

float ma_mapped = 0,0; // Napetost zemljevida od A0 do 4-20mA

void setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Spremenjena knjižnica za večjo natančnost pri mA

lcd.begin (20, 4); // inicializiramo LCD

lcd.clear ();

lcd.home (); // Pojdi domov

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

zamuda (2000);

lcd.clear ();

}

void loop ()

{

nepodpisani dolgi tokMillis = millis ();

dolg interval const = 100;

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

Naprave I2C preberite v presledkih in naredite nekaj izračunov

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

if (currentMillis - previousMillis> = interval) {

previousMillis = trenutniMillis;

Interval ();

}

Print_To_LCD (); // LCD mi verjetno ni treba tako hitro posodabljati in ga lahko premaknem pod Interval ()

}

nično

Interval () {

shuntvoltage = ina219.getShuntVoltage_mV ();

napetost vodila = ina219.getBusVoltage_V ();

trenutni_mA = ina219.getCurrent_mA ();

obremenitvena napetost = (napetost vodila + (shuntvoltage / 1000)) + 0,71; // +0,71 je moj padec napetosti diode

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // Izračunano na mV

ma_mapped = zemljevid (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Zemljevid ne more uporabljati plovcev. Za preslikano vrednostjo dodajte 0 in delite z 10, da dobite odčitavanje s plavajočo vrednostjo.

// Preslikava iz izračuna napetosti daje bolj stabilno odčitavanje kot uporaba surovega odčitka ADC.

if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Brez obremenitve se INA219 nagiba k branju spodaj -0.01, pri mojem pa.

{

tok_mA = 0;

napetost vodila = 0;

obremenitvena napetost = 0;

shuntvoltage = 0;

}

}

nično

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1,25) {// Brez toka je to moje branje mA, zato ga preprosto odstranim.

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

}

drugače {

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

}

lcd.setCursor (0, 1);

lcd.print ("Naprava:");

lcd.setCursor (10, 1);

if (preslikano <1,25) {

lcd.print ("brez naprave");

}

drugače {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Ustvari:");

lcd.setCursor (10, 2);

lcd.print (trenutni_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Dobava:");

lcd.setCursor (10, 3);

lcd.print (napetost obremenitve);

lcd.print ("V");

}

5. korak: Še nekaj fotografij

Še nekaj fotografij
Še nekaj fotografij

Zvočniški priključek ojačevalnika. LED, ki ga poganja generator toka (RTD). Ožičenje analogne kartice bo zamenjalo LED.

Skrajni levi priključek je za vnos napajanja. Priključki na desni so za vnos instrumentov.

Korak 6: Namestitev

Namestitev
Namestitev

Zdi se, da vse ustreza. Uporabil sem silikon, da sem začasno držal nekaj stvari skupaj. Okrasna posoda je silikonirana zgoraj desno. Majhna luknja je bila predhodno izvrtana. Tok lahko nastavim z vrha škatle.

7. korak: samo fotografije

Samo Fotografije
Samo Fotografije
Samo Fotografije
Samo Fotografije
Samo Fotografije
Samo Fotografije
Samo Fotografije
Samo Fotografije

8. korak: Zadnje besede

Preizkusil sem izhod te naprave s PLC -jem Allan Bradley. Rezultati so bili zelo dobri. Dobil sem celotno paleto. Ta napravo sem preizkusil tudi s senzorjem tlaka 4-20 mA, ki ima vgrajen LCD zaslon. Ponovno so bili rezultati zelo dobri. Moje branje se je zmanjšalo za nekaj decimalk.

Svojo kodo arduino pišem v zavihke. V PLC -jih se imenujejo podprogrami. Olajša odpravljanje napak.

Priložene so besedilne datoteke teh zavihkov.

Priporočena: