Sisällysluettelo:

4-20ma generaattori/testaaja Arduinon avulla: 8 vaihetta
4-20ma generaattori/testaaja Arduinon avulla: 8 vaihetta

Video: 4-20ma generaattori/testaaja Arduinon avulla: 8 vaihetta

Video: 4-20ma generaattori/testaaja Arduinon avulla: 8 vaihetta
Video: Обзор модуля ввода/вывода EBYTE Modbus RTU 2024, Kesäkuu
Anonim
4-20ma generaattori/testaaja Arduinon avulla
4-20ma generaattori/testaaja Arduinon avulla

4-20 mA generaattoreita on saatavana ebaystä, mutta minä rakastan yhden puolen asioiden tekemistä ja osien käyttämistä.

Halusin testata PLC: n analogisia tuloja scada-lukemiemme tarkistamiseksi ja 4-20 mA: n instrumenttien ulostulon testaamiseksi. Ebayssa on paljon virtaa jännitteenmuuntimiin ja jännite -virtamuuntimia arduinoon, mutta ne tarvitsevat kalibroinnin. Voin käyttää tätä kalibroidaksesi kaikki ebaystä löydetyt muuntimet ja tykkäykset.

Päätin tehdä DIY -generaattorin ja testaajan. Tässä vaiheessa se on vielä kesken ja prototyyppi.

Minulla oli vanha 2.1 -äänijärjestelmä, jota ei käytetty (pienet kaiuttimet). Joten käytin yhtä kaiutinkoteloista kotelona. Minulla oli myös vahvistin, joka kuoli salaman takia, poistin kaiuttimen liittimen vahvistimesta, jotta yhdistäminen olisi helppoa. Aion tulevaisuudessa tehdä piirilevyn ja paremman kotelon.

Tarvikkeet:

Osaluettelo.

LCD // 20x4 (mukauta koodi, jos omasi on pienempi)

LM7808 // 8 voltin säädin

LED // Mikä tahansa tyyppi tai koko

LED -vastus // Sopii LED -tyypille ja 8 voltille

100 ohmin vastus + 47 ohmin sarjavastus // Käytetään shuntivastuksena

10K vastus // Arduino -analogi suojaa korkeajännitteeltä

22K vastus // A0: n kellumisen estämiseksi

Trimpot 100 ohmia + 47 ohmin sarjavastus // PT100 -simulaattori

35 voltin kondensaattori // Käytin 470uF, vain pitämään syöttöjännitteen vaihtelut alhaisina

RTD (PT100 -anturi) // Span ei ole väliä (alue)

DIODI (napaisuuden suojaamiseksi)

INA219

Arduino

Vaihe 1:

Kuva
Kuva

Kaavion jälkeen sinun pitäisi päästä alkuun siihen, mihin osat lisätään ja johdotetaan.

LM7808 sallii enintään 25 voltin tulon, mikä on hyvä PLC -järjestelmille, ne käyttävät yleensä 24 voltin virtalähteitä. Lisää jäähdytyselementti säätimeen äläkä käytä sitä pitkään aikaan. 16 voltin pudottaminen saa säätimen tuottamaan paljon lämpöä.

Tulolähde syöttää säätimen ja muodostaa yhteyden INA219 VIN -järjestelmään, tässä kokoonpanossa INA219 pystyy myös mittaamaan oikean syöttöjännitteen miinus diodin jännitehäviö. Sinun on mitattava diodin jännitehäviö ja lisättävä se koodiin, jotta saat oikean syöttöjännitteen lukeman.

INA219 VOUT: sta RTD+: een tehostaa RTD: tä. RTD- maahan täydentää piirin.

Jos haluat testata analogisen PLC-kortin, kytke RTD- analogikortin tuloon ja maadoita kortista arduino-maahan. (Varmista, että irrotat kaikki testattavaan kanavaan kiinnitetyt instrumentit).

R5 ja LED1, mikä ilmaisee järjestelmän olevan päällä.

Säädin syötetään arduino VIN -järjestelmään (arduino on varustettu 5 voltin säätimellä).

Arduino 5V-nasta menee INA219: hen virtalähteeksi sisäiseen siruun. INA219 GND arduino -maahan.

Trim potinpyyhkimen RTD PIN1 ja Trim potin 3 RTD pin 2: een simuloi PT100 -yhteyttä. (Vaihda johdot, jos trimmausastian kääntäminen myötäpäivään ei lisää mA: ta).

Vaihe 2: Laitteen ulostulotesti

Laitteen ulostulon testaamiseen tarvitaan lisäosia, kuten shuntivastus. Normaalit 0,25 W: n vastukset tekevät työnsä hienosti. Voit poistua shuntivastuksesta ja lisätä toisen INA219 -laitteen testauslaitteen lähtöön. Minulla oli vain yksi jäljellä, joten käytin sen sijaan vastusta.

Testaus shuntilla voidaan tehdä vain laitteen negatiivisella puolella. Jos käytät positiivista puolta, syötät arduinoosi yli 4 kertaa sallitun jännitteen ja päästät savun ulos.

Lisää shuntivastus sarjaan laitteen negatiivisella johdolla. Laitetta lähinnä olevasta shuntin sivusta tulee arduinon positiivinen analogi. Shuntin toiselta puolelta, joka on lähinnä virtalähdettä, tulee analoginen tulopiiri täydentävä arduino -maa.

150 ohmin shuntivastus on ehdoton maksimi, jota tulee käyttää käytettäessä arduinoa. Vastuksessa on jännitehäviö lineaarisesti sen läpi virtaavaan mA: han. Mitä suurempi mA, sitä suurempi jännite.

20 mA virralla # 150ohm*0,02A = 3 volttia arduinoon.

4 mA virralla # 150ohm*0,004A = 0,6 volttia arduinoon.

Nyt saatat haluta, että jännite on lähempänä 5 volttia, jotta voit käyttää kaikkia arduinon ADC -alueita. (Ei hyvä idea).

RTD: t voivat saavuttaa 30,2 mA: n ulostulon (minun). 150ohm*0,03A = 4,8 volttia. Se on niin lähellä kuin haluaisin olla.

Toinen sivusto ilmoitti käyttävänsä 250ohmin vastusta.

20 mA virralla # 250ohm*0,02A = 5 volttia arduinoon.

30 mA virralla # 250ohm*0,03A = 7,5 volttia arduinoon.

Olet vaarassa polttaa ADC: si ja arduino.

Jos haluat testata instrumenttia kentällä, ota 12 voltin akku mukaasi ja kytke se virtalähteeseen. Ulkoisen virtalähteen käyttäminen ei vaikuta nykyiseen PLC -kokoonpanoon.

Testaa analoginen tulokortti kentällä ottamalla 12 voltin akku mukaasi. Irrota instrumentti + virtapiiristä. Liitä maadoitus laitteen maadoitukseen ja RTD- irrotettuun instrumenttijohtoon.

Vaihe 3: Kalibrointi

Kalibrointi
Kalibrointi

Kalibroi shuntivastuksen lukema kytkemällä RTD- shuntin analogiseen tuloon. Aseta trimmausastia niin, että generoitu mA on 4 mA. Jos laitteesi mA ei ole sama, muokkaa koodin ensimmäistä arvoa rivillä 84. Tämän arvon lisääminen laskee mA -lukemaa.

Aseta sitten trimmausastia tuottamaan 20 mA. Jos laitteesi mA ei ole sama, muuta rivin 84 koodin toista arvoa.

Joten 4-20 mA: sta tulee nyt 0,6-3 volttia (teoreettinen). Enemmän kuin tarpeeksi kantamaa. Käyttämällä eRCaGuyn kirjastoa ylinäytteenotto antaa sinulle paremman ja vakaamman lukeman.

Toivottavasti luet tämän. Tämä on ensimmäinen ohjeeni, joten ota rauhallisesti, jos olen tehnyt virheen jossakin tai jättänyt jotain pois.

Tämä projekti ei luultavasti ole paras tapa edetä, mutta se toimii minulle ja oli hauskaa tehdä se.

Joitakin ideoita minulla on ylimääräistä…

Lisää servo kiertääksesi trimmausastiaa laatikon sisällä.

Lisää painikkeita servon kääntämiseksi vasemmalle tai oikealle.

Lisää digitaalinen lämpötila -anturi säätimen jäähdytyselementtiin varoittamaan vaarallisesta kuumuudesta.

Vaihe 4: Arduinon ohjelmointi

#sisältää

// #include // Uncomment, jos käytät nestekidenäyttöä, jossa on siirtorekisteri.

#sisältää

#sisältää

#sisältää

#sisältää

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Ei kommenttia, jos käytät nestekidenäyttöä, jossa on siirtorekisteri.

// | | | _ Salvatappi

// | / _ Kellotappi

// / _ Data/Ota PIN käyttöön

tavut bittiäOfResolution = 12; // käski ylinäytteistettyä resoluutiota

allekirjoittamaton pitkä numSamplesToAvg = 20; // otettavien näytteiden lukumäärä YLIESIMERKITTYNÄ PÄÄTÖKSESSÄ ja keskiarvo

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

allekirjoittamaton aikaisempiMillis = 0;

kelluva shuntijännite = 0,0; // Lähde: INA219

kelluva väyläjännite = 0,0; // Lähde: INA219

kelluva virta_mA = 0,0; // Lähde: INA219

kelluva kuormitusjännite = 0,0; // Lähde: INA219

kelluva arduinovoltage = 0,0; // Jännitteen laskeminen A0 -nastasta

Allekirjoittamaton pitkä A0analogReading = 0;

tavu analoginenIn = A0;

float ma_mapped = 0.0; // Kartoittaa jännitteen A0: sta 4-20 mA: iin

void setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Muokattu kirjasto lisää mA: n tarkkuutta

lcd. alku (20, 4); // Alusta LCD -näyttö

lcd.clear ();

lcd.home (); // mene kotiin

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

viive (2000);

lcd.clear ();

}

tyhjä silmukka ()

{

allekirjoittamaton pitkävirtaMillis = millis ();

const pitkä väli = 100;

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

Lue I2C -laitteet säännöllisin väliajoin ja tee laskelmia

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

if (currentMillis - previousMillis> = väli) {

previousMillis = currentMillis;

Väli ();

}

Print_To_LCD (); // Minun ei luultavasti tarvitse päivittää nestekidenäyttöä näin nopeasti, ja sen voi siirtää alle Interval ()

}

mitätön

Väli () {

shuntvoltage = ina219.getShuntVoltage_mV ();

väyläjännite = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

kuormitusjännite = (väyläjännite + (shuntijännite / 1000)) + 0,71; // +0,71 on diodini jännitehäviö

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5,0 * A0analogReading); // Laskettu mV: ksi

ma_mapped = kartta (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Kartta ei voi käyttää kellukkeita. Lisää 0 yhdistetyn arvon taakse ja jaa kymmenellä saadaksesi kellukkeen lukema.

// Jännitelaskennan kartoitus antaa vakaamman lukeman kuin raaka ADC -lukema.

jos (shuntijännite> = -0,10 && shuntvoltage <= -0,01) // Ilman kuormaa INA219 pyrkii lukemaan alle -0,01, hyvin minun.

{

nykyinen_mA = 0;

väyläjännite = 0;

kuormitusjännite = 0;

shuntijännite = 0;

}

}

mitätön

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Ilman virtaa tämä on mA -lukemani, joten otan sen vain pois.

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

}

muu {

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

}

lcd.setCursor (0, 1);

lcd.print ("Laite:");

lcd.setCursor (10, 1);

if (kartoitettu <1,25) {

lcd.print ("ei laitetta");

}

muu {

lcd.print (kartoitettu);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Luo:");

lcd.setCursor (10, 2);

lcd.print (current_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Toimitus:");

lcd.setCursor (10, 3);

lcd.print (kuormitusjännite);

lcd.print ("V");

}

Vaihe 5: Lisää kuvia

Muutama Valokuva
Muutama Valokuva

Vahvistimen kaiutinliitin. Virtageneraattorin (RTD) käyttämä LED. Analogisen kortin johdotus korvaa LED -valon.

Vasemmassa reunassa oleva liitin on syöttöjännitettä varten. Oikealla olevat liittimet ovat instrumenttien syöttöä varten.

Vaihe 6: Asentaminen

Sopia joukkoon
Sopia joukkoon

Kaikki näyttää sopivan. Käytin silikonia pitämään joitain tavaroita tilapäisesti yhdessä. Leikkausastia on silikonitettu oikeassa yläkulmassa. Pieni reikä porattiin etukäteen. Voin säätää virtaa laatikon yläosasta.

Vaihe 7: Vain valokuvia

Vain Valokuvat
Vain Valokuvat
Vain Valokuvat
Vain Valokuvat
Vain Valokuvat
Vain Valokuvat
Vain Valokuvat
Vain Valokuvat

Vaihe 8: Viimeiset sanat

Olen testannut tämän laitteen lähtöä Allan Bradley PLC: llä. Tulokset olivat erittäin hyviä. Sain täyden valikoiman. Olen myös testannut tätä laitetta 4-20mA paineanturilla, jossa on sisäänrakennettu LCD-näyttö. Tulokset olivat jälleen erittäin hyviä. Lukemaani katkaistiin pari desimaalia.

Kirjoitan arduino -koodini välilehdille. PLC: ssä niitä kutsutaan alirutiiniksi. Helpottaa virheenkorjausta.

Liitteenä on näiden välilehtien tekstitiedostot.

Suositeltava: