Sadržaj:

Generator/tester 4-20ma pomoću Arduina: 8 koraka
Generator/tester 4-20ma pomoću Arduina: 8 koraka

Video: Generator/tester 4-20ma pomoću Arduina: 8 koraka

Video: Generator/tester 4-20ma pomoću Arduina: 8 koraka
Video: Как сделать регулируемый регулятор напряжения с помощью 7805 2024, Studeni
Anonim
Generator/tester 4-20ma pomoću Arduina
Generator/tester 4-20ma pomoću Arduina

Generatori 4-20 mA dostupni su na ebayu, ali ja volim dio DIY stvari i korištenja dijelova koje imam okolo.

Htio sam testirati analogne ulaze našeg PLC-a kako bih provjerio naša očitavanja scada i testirao izlaz 4-20mA instrumenata. Postoji mnogo pretvarača struje u napon i pretvarača napona u struju za arduino na ebayu, no potrebna im je kalibracija. Ovo mogu upotrijebiti za kalibriranje bilo kojeg od onih pretvarača koji se nalaze na ebayu i sličnim.

Odlučio sam da ću sam napraviti generator i tester. U ovom trenutku to je još uvijek u tijeku i prototip.

Imao sam stari 2.1 zvučni sustav koji se nije koristio (mali zvučnici). Stoga sam jednu od zvučničkih kutija koristio kao kućište. Imao sam i pojačalo koje je umrlo od munje, uklonio sam priključak zvučnika s tog pojačala kako bih spojio povjetarac. Namjeravam u budućnosti napraviti PCB i bolje kućište.

Pribor:

Popis dijelova.

LCD // 20x4 (prilagodite kôd ako je vaš manji)

LM7808 // 8voltni regulator

LED // Bilo koje vrste ili veličine

Otpornik za LED // Pogodno za LED tip i 8 volti

100 ohmski otpornik + 47 ohmski otpornik u seriji // Koristit će se kao ranžirni otpornik

10K otpornik // Arduino analog u zaštiti od visokog napona

22K otpornik // Za zaustavljanje plutanja A0

Trimpot 100 ohm + 47 ohm otpornik u seriji // PT100 simulator

35 voltni kondenzator // Koristio sam 470uF, samo da bih smanjio fluktuacije napona

RTD (sonda PT100) // Raspon nije bitan (raspon)

DIODA (za zaštitu polariteta)

INA219

Arduino

Korak 1:

Slika
Slika

Slijedom sheme trebali biste započeti gdje ćete dodati dijelove i spojiti ih.

LM7808 dopušta maksimalno 25 volti na ulazu što je u redu za PLC sustave, općenito koriste napajanja od 24 volta. Regulatoru dodajte hladnjak i nemojte ga koristiti dulje vrijeme. Pad 16 volti uzrokuje da regulator proizvodi mnogo topline.

Ulazni izvor napaja regulator i spaja se na INA219 VIN, u ovoj konfiguraciji INA219 će također moći mjeriti ispravan opskrbni napon minus pad napona s diode. Trebali biste izmjeriti pad napona diode i dodati ga kodu kako biste dobili ispravno očitanje napona napajanja.

Od INA219 VOUT do RTD+ napaja RTD. RTD- uzemljenje dovršava krug.

Za testiranje PLC analogne kartice spojite RTD- na ulaz na analognoj kartici i uzemljenje od kartice do arduino mase. (Svakako odspojite bilo koji instrument spojen na kanal koji se testira).

R5 i LED1, sustav za označavanje je uključen.

Regulator se napaja u arduino VIN (arduino ima ugrađeni regulator na 5 volti).

Arduino 5V pin ide na INA219 za napajanje ugrađenog čipa. INA219 GND na arduino tlo.

Brisač trim lonaca na RTD PIN1, a trim pin 3 na RTD pin 2 simulirat će PT100 vezu. (Zamijenite žice ako okretanje trim lonca u smjeru kazaljke na satu ne povećava mA).

Korak 2: Ispit izlaza instrumenta

Za ispitivanje izlaza instrumenta potrebni su dodatni dijelovi, poput šanta otpornika. Normalni otpornici od 0,25 W dobro će obaviti posao. Možete ostaviti shunt otpornik i dodati drugi INA219 za testiranje izlaza instrumenta. Ostao mi je samo jedan pa sam umjesto toga upotrijebio otpornik.

Testiranje pomoću šanta može se obaviti samo na negativnoj strani uređaja. Ako koristite pozitivnu stranu, opskrbit ćete svoj arduino više od 4 puta dopuštenim naponom i pustiti dim.

Dodajte shunt otpornik u nizu s negativnom žicom instrumenta. Strana šanta najbliža uređaju postat će pozitivni analog za arduino. Druga strana šanta najbliža napajanju postat će arduino uzemljenje koje završava analogni ulazni krug.

Otpor otpornika od 150 ohma apsolutni je maksimum koji treba koristiti pri upotrebi arduina. Otpornik ima pad napona linearnog prema mA koji protiče kroz njega. Što je veći mA veći je napon.

Na 20mA struje # 150ohm*0,02A = 3volt na arduino.

Na 4mA struje # 150ohm*0,004A = 0,6 volti na arduino.

Sada biste možda htjeli da napon bude bliži 5 volti kako biste mogli koristiti cijeli ADC raspon arduina. (Nije dobra ideja).

RTD -ovi mogu doseći izlaz od 30,2 mA (moj radi). 150ohm*0,03A = 4,8 volti. To je onoliko blizu koliko bih želio biti.

Druga web stranica naznačila je da koristi otpornik od 250 ohma.

Na 20mA struje # 250ohm*0,02A = 5 volti na arduino.

Na 30mA struje # 250ohm*0,03A = 7,5 volti na arduino.

Rizikujete spaljivanje ADC -a i arduina.

Da biste testirali instrument na terenu, ponesite sa sobom 12 -voltnu bateriju i spojite je na ulaz za napajanje. Korištenje vanjskog izvora napajanja neće utjecati na trenutne postavke PLC -a.

Za testiranje analogne ulazne kartice na terenu, ponesite sa sobom bateriju od 12 volti. Odvojite instrument + od strujnog kruga. Spojite uzemljenje na masu instrumenta, a RTD- na isključenu žicu instrumenta.

Korak 3: Kalibracija

Kalibriranje
Kalibriranje

Za kalibriranje očitanja shunt otpornika, spojite RTD- na analogni ulaz za shunt. Postavite trim lonac tako da generirana mA bude 4mA. Ako mA vašeg uređaja nije jednaka, promijenite prvu vrijednost u kodu u retku 84. Povećanjem ove vrijednosti smanjit ćete očitanje mA.

Zatim podesite trim lonac da generira 20mA. Ako mA vašeg uređaja nije jednaka, promijenite drugu vrijednost u kodu u retku 84.

Tako će vaši 4-20mA sada postati 0,6-3 volti (teoretski). Domet više nego dovoljan. Koristeći biblioteku iz eRCaGuya, prekomjerno uzorkovanje pružit će vam bolje i stabilnije očitanje.

Nadam se da ste ovo pročitali. Ovo je moje prvo uputstvo, pa molim vas polako ako sam negdje pogriješio ili nešto izostavio.

Ovaj projekt vjerojatno nije najbolji način za to, ali djeluje mi i bilo mi je zabavno raditi.

Neke ideje imam dodatno …

Dodajte servo za okretanje trim lonca unutar kutije.

Dodajte tipke za okretanje servo ulijevo ili udesno.

U hladnjak regulatora dodajte digitalni osjetnik temperature kako biste upozorili na opasnu toplinu.

Korak 4: Programiranje Arduina

#uključi

// #include // Uncomment ako koristite LCD sa registrom pomaka.

#uključi

#uključi

#uključi

#uključi

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

LCD tekući kristal (12, 11, 5, 4, 3, 2);

// LCD tekući kristal_SR (3, 4, 2); // Ne komentirajte ako koristite LCD sa registrom pomaka.

// | | | _ Igla zasuna

// | / _ Pin sata

// / _ Podaci/Omogući pin

bitovi bitovaOdlučivosti = 12; // naredio prekomjerno razlučivost

unsigned long numSamplesToAvg = 20; // broj uzoraka PREMA PRIMERENOJ REZOLUCIJI koji želite uzeti i prosjek

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

unsigned long previousMillis = 0;

plovak shuntvoltage = 0,0; // Iz INA219

plovni napon sabirnice = 0,0; // Iz INA219

struja plovka_mA = 0,0; // Iz INA219

napon opterećenja plovka = 0,0; // Iz INA219

arduinonapon plovka = 0,0; // Izračun napona s pina A0

Nepotpisano dugo A0analogReading = 0;

bajt analogIn = A0;

float ma_mapped = 0.0; // Mapa napona 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 (); // Izmijenjena knjižnica za veću preciznost na mA

lcd.begin (20, 4); // inicijalizacija LCD -a

lcd.clear ();

lcd.home (); // Idi kući

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

odgoda (2000);

lcd.clear ();

}

void loop ()

{

bezznačna duga strujaMillis = millis ();

const dugi interval = 100;

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

U intervalima čitajte I2C uređaje i napravite neke izračune

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

if (currentMillis - previousMillis> = interval) {

previousMillis = trenutniMillis;

Interval();

}

Ispiši_Za_LCD (); // Vjerojatno ne moram ažurirati LCD ovako brzo i mogu se premjestiti ispod Interval ()

}

poništiti

Interval () {

shuntvoltage = ina219.getShuntVoltage_mV ();

napon sabirnice = ina219.getBusVoltage_V ();

trenutna_mA = ina219.getCurrent_mA ();

napon opterećenja = (napon sabirnice + (shuntvoltage / 1000)) + 0,71; // +0,71 je moj pad napona diode

A0analogReading = adc.newAnalogRead (analogIn);

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

ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Karta ne može koristiti plovke. Dodajte 0 iza preslikane vrijednosti i podijelite s 10 da biste dobili očitavanje s plutanjem.

// Mapiranje iz proračuna napona daje stabilnije očitanje od korištenja neobrađenog očitanja ADC -a.

if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Bez opterećenja INA219 ima tendenciju očitavanja ispod -0.01, dobro radi moj.

{

struja_mA = 0;

napon sabirnice = 0;

napon opterećenja = 0;

napon pomaka = 0;

}

}

poništiti

Ispis_Da_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Bez struje, ovo je moje očitanje mA, pa sam ga jednostavno odbacio.

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

}

drugo {

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

}

lcd.setCursor (0, 1);

lcd.print ("Uređaj:");

lcd.setCursor (10, 1);

if (preslikano <1,25) {

lcd.print ("bez uređaja");

}

drugo {

lcd.print (mapirano);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Generiraj:");

lcd.setCursor (10, 2);

lcd.print (trenutna_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Opskrba:");

lcd.setCursor (10, 3);

lcd.print (napon opterećenja);

lcd.print ("V");

}

Korak 5: Još nekoliko fotografija

Još nekoliko fotografija
Još nekoliko fotografija

Terminal zvučnika pojačala. LED pogonjen generatorom struje (RTD). Ožičenje analogne kartice zamijenit će LED.

Krajnji lijevi priključak služi za ulaz napajanja. Stezaljke s desne strane služe za unos instrumenata.

Korak 6: Ugradnja

Uklopiti se
Uklopiti se

Čini se da sve pristaje. Koristio sam silikon da privremeno držim neke stvari zajedno. Trim lonac je silikoniziran u gornjem desnom kutu. Prethodno je izbušena mala rupa. Mogu podesiti struju s vrha okvira.

Korak 7: Samo fotografije

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

Korak 8: Završne riječi

Testirao sam izlaz ovog uređaja s PLC -om Allan Bradley. Rezultati su bili vrlo dobri. Dobio sam cijeli raspon. Također sam testirao ovaj uređaj sa senzorom tlaka 4-20mA koji ima ugrađen LCD zaslon. Opet su rezultati bili vrlo dobri. Moja su očitanja bila isključena za nekoliko decimala.

Zapisujem svoj arduino kod u kartice. U PLC -ima se zovu podprogrami. Olakšava ispravljanje pogrešaka.

U privitku se nalaze tekstualne datoteke tih kartica.

Preporučeni: