Tartalomjegyzék:

4-20ma generátor/tesztelő az Arduino használatával: 8 lépés
4-20ma generátor/tesztelő az Arduino használatával: 8 lépés

Videó: 4-20ma generátor/tesztelő az Arduino használatával: 8 lépés

Videó: 4-20ma generátor/tesztelő az Arduino használatával: 8 lépés
Videó: Как использовать оптопару Mosfet HW-532 для управления скоростью двигателя постоянного тока до 30 В или нагрузкой с помощью Arduino 2024, Június
Anonim
4-20ma generátor/tesztelő az Arduino használatával
4-20ma generátor/tesztelő az Arduino használatával

4-20mA generátorok kaphatók az ebay-en, de egyrészt szeretem a dolgok barkácsolásának részét, másrészt az általam lefektetett alkatrészeket.

Szerettem volna tesztelni PLC-nk analóg bemeneteit, hogy ellenőrizhessük a scada értékeket, és tesztelhessem a 4-20 mA-es műszerek kimenetét. Rengeteg áram -feszültség átalakító és feszültség -áram átalakító van az arduino számára az ebay -en, de kalibrálni kell őket. Ezzel kalibrálhatom az ebayen található konverterek és hasonlók bármelyikét.

Úgy döntöttem, hogy barkácsolok egy generátort és tesztert. Ezen a ponton ez még folyamatban lévő munka és prototípus.

Volt egy régi 2.1 -es hangrendszerem, amelyet nem használtak (kis hangszórók). Így az egyik hangszóródobozt használtam házként. Volt egy erősítőm is, amely villámcsapás miatt meghalt, eltávolítottam a hangszóró csatlakozóját az erősítőből, hogy egyszerű legyen a csatlakoztatás. A jövőben PCB -t és jobb házat kívánok készíteni.

Kellékek:

Alkatrész lista.

LCD // 20x4 (módosítsa a kódot, ha a tied kisebb)

LM7808 // 8 voltos szabályozó

LED // Bármilyen típus vagy méret

Ellenállás LED -hez // Megfelelő a LED típushoz és a 8 voltos feszültséghez

100 ohmos ellenállás + 47 ohmos soros ellenállás // Sönt ellenállásként használható

10K ellenállás // Arduino analóg magas feszültség elleni védelemben

22K ellenállás // Az A0 lebegésének megakadályozása érdekében

Trimpot 100 ohm + 47 ohmos ellenállás sorozatban // PT100 szimulátor

35 voltos kondenzátor // 470uF -ot használtam, csak azért, hogy a tápfeszültség ingadozásait alacsonyan tartsam

RTD (PT100 jelátalakító) // A távolság nem számít (tartomány)

DIÓDA (a polaritás védelme érdekében)

INA219

Arduino

1. lépés:

Kép
Kép

A vázlat követésével el kell kezdenie, hogy hova kell hozzáadni az alkatrészeket és bekötni őket.

Az LM7808 maximum 25 voltos bemenetet tesz lehetővé, ami jó a PLC rendszerekhez, általában 24 voltos tápegységeket használnak. Tegyen hűtőbordát a szabályozóhoz, és ne használja hosszabb ideig. A 16 volt leesése miatt a szabályozó sok hőt termel.

A bemeneti tápegység táplálja a szabályozót és csatlakozik az INA219 VIN -hez, ebben a konfigurációban az INA219 képes lesz mérni a helyes tápfeszültséget, mínusz a dióda feszültségcsökkenését. Mérje meg a dióda feszültségcsökkenését, és adja hozzá a kódhoz, hogy a helyes tápfeszültség leolvasást kapja.

Az INA219 VOUT -tól az RTD+ -ig az RTD bekapcsol. RTD- földelés befejezi az áramkört.

A PLC analóg kártya teszteléséhez az analóg kártya bemenetéhez RTD- és a kártya és az arduino föld közötti földet kell csatlakoztatni. (Győződjön meg arról, hogy a tesztelt csatornához csatlakoztatott minden eszközt lekapcsol.)

R5 és LED1, jelezve, hogy a rendszer be van kapcsolva.

A szabályozó betáplálódik az arduino VIN -be (az arduino 5 voltos szabályozót tartalmaz).

Az Arduino 5V-os tű az INA219-hez kerül a fedélzeti chip táplálásához. INA219 GND arduino földre.

Az edénytörlő vágása az RTD PIN1 -hez, a 3. vágótálca csapja pedig az RTD -2 -es csaphoz szimulálja a PT100 kapcsolatot. (Cserélje ki a vezetékeket, ha a trimmelőedény óramutató járásával megegyező irányba történő elforgatása nem növeli az mA -t).

2. lépés: Műszer kimeneti teszt

A műszer kimenetének teszteléséhez további alkatrészekre van szükség, például egy söntellenállásra. A normál 0,25 W -os ellenállások tökéletesen elvégzik a munkát. Hagyja el a sönt ellenállást, és adjon hozzá egy második INA219 -et a tesztműszer kimenetéhez. Nekem csak egy maradt, ezért ellenállást használtam helyette.

A sönt segítségével történő tesztelés csak a készülék negatív oldalán végezhető el. Ha a pozitív oldalt használja, akkor az arduino -t a megengedett feszültség több mint 4 -szeresére táplálja, és kiengedi a füstöt.

Sorba kell hozzáadni a sönt ellenállást a műszer negatív vezetékével. A söntnek a készülékhez legközelebb eső oldala lesz az arduino pozitív analógja. A sönt tápellátáshoz legközelebb eső másik oldala az analóg bemeneti áramkört befejező arduino föld lesz.

A 150 ohmos söntellenállás az abszolút maximum, amelyet arduino használatakor kell használni. Az ellenállás feszültségcsökkenése lineáris a rajta áramló mA -hez. Minél nagyobb az mA, annál nagyobb a feszültség.

20mA áramnál # 150ohm*0,02A = 3 volt az arduino -hoz.

4mA áramnál # 150ohm*0,004A = 0,6 volt az arduino -hoz.

Most azt szeretné, ha a feszültség közelebb legyen az 5 volthoz, így használhatja az arduino teljes ADC tartományát. (Nem jó ötlet).

A RTD -k elérhetik a 30,2 mA kimenetet (az enyém igen). 150ohm*0,03A = 4,8 volt. Ez olyan közel van, mint szeretnék.

Egy másik weboldal 250 ohmos ellenállás használatát jelezte.

20mA áramnál # 250ohm*0,02A = 5 volt az arduino -hoz.

30 mA áramnál # 250ohm*0,03A = 7,5 volt az arduino -hoz.

Fennáll annak a kockázata, hogy elégeti az ADC -t és az arduino -t.

Egy műszer teszteléséhez vegyen magával egy 12 voltos akkumulátort, és csatlakoztassa a tápellátáshoz. Külső áramforrás használata nem befolyásolja a PLC jelenlegi beállítását.

Analóg bemeneti kártya teszteléséhez vegyen magával egy 12 voltos akkumulátort. Válassza le a műszert + az áramkörről. Csatlakoztassa a földet a műszer földeléséhez, az RTD-t pedig a leválasztott műszervezetékhez.

3. lépés: Kalibrálás

Kalibráció
Kalibráció

A söntellenállás leolvasásának kalibrálásához kösse az RTD- kábelt az analóg shunt analóg bemenetére. Állítsa be a trim potot úgy, hogy a generált mA 4 mA legyen. Ha a készülék mA értéke nem egyenlő, módosítsa a 84. sorban lévő kód első értékét. Ennek az értéknek a növelése csökkenti az mA leolvasását.

Ezután állítsa be a trimmelőedényt 20 mA generálására. Ha a készülék mA értéke nem egyenlő, módosítsa a második értéket a 84. sorban lévő kódban.

Tehát a 4-20mA most 0,6-3 volt lesz (elméleti). Több mint elég hatótávolság. Az eRCaGuy könyvtárának használatával a túlmintavétel jobb és stabilabb leolvasást eredményez.

Remélhetőleg ezt olvassa. Ez az első tanulságos, ezért kérem nyugodtan, ha valahol hibát követtem el, vagy valamit kihagytam.

Ez a projekt valószínűleg nem a legjobb módja ennek, de számomra működik, és szórakoztató volt csinálni.

Néhány ötletem van…

Adjon hozzá egy szervót a díszítőedény forgatásához a dobozban.

Nyomja meg a gombokat a szervo balra vagy jobbra forgatásához.

Adjon hozzá egy digitális hőmérséklet -érzékelőt a szabályozó hűtőbordájához, hogy figyelmeztesse a veszélyes hőt.

4. lépés: Az Arduino programozása

#befoglalni

// #include // Megjegyzés megszüntetése, ha eltolásregiszterrel rendelkező LCD -t használ.

#befoglalni

#befoglalni

#befoglalni

#befoglalni

A4 = (SDA)

A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Megjegyzés, ha műszakregiszterrel rendelkező LCD -t használ.

// | | | _ Reteszcsap

// | / _ Óracsap

// / _ Data/Pin engedélyezése

bájt bitOfResolution = 12; // túlmintavételezett felbontást parancsolt

előjel nélküli hosszú numSamplesToAvg = 20; // azon minták száma, amelyeket a TÚLAMINTÁZOTT HATÁROZATBAN kíván venni, és átlag

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

unsigned long previousMillis = 0;

úszó söntfeszültség = 0,0; // INA219 -ből

úszó buszfeszültség = 0,0; // INA219 -ből

úszóáram_mA = 0,0; // INA219 -ből

úszó terhelésfeszültség = 0,0; // INA219 -ből

úszó arduinovoltage = 0,0; // Feszültségszámítás A0 érintkezőből

Aláíratlan hosszú A0analogReading = 0;

bájt analógIn = A0;

float ma_mapped = 0.0; // Feszültség leképezése A0-tól 4-20 mA-ig

void setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Módosított könyvtár az mA pontosabbá tétele érdekében

lcd. kezdet (20, 4); // inicializálja az LCD -t

lcd.clear ();

lcd.home (); // hazamenni

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

késleltetés (2000);

lcd.clear ();

}

üres hurok ()

{

előjel nélküli hosszú áramMillis = millis ();

const hosszú intervallum = 100;

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

Időnként olvassa el az I2C eszközöket, és végezzen néhány számítást

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

if (currentMillis - previousMillis> = intervallum) {

previousMillis = currentMillis;

Intervallum();

}

Print_To_LCD (); // Valószínűleg nem kell ilyen gyorsan frissítenem az LCD -t, és áthelyezhető az Interval () alá

}

üres

Időköz () {

shuntvoltage = ina219.getShuntVoltage_mV ();

buszfeszültség = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

terhelési feszültség = (buszfeszültség + (söntfeszültség / 1000)) + 0,71; // +0,71 a dióda feszültségcsökkenése

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5,0 * A0analogReading); // mV -ra számítva

ma_mapped = térkép (arduinovoltage, 752, 8459, 30, 220) / 10,0; // A térkép nem használhat úszókat. Adjon hozzá 0 -t a leképezett érték mögé, és ossza el 10 -gyel, hogy lebegjen.

// A feszültségszámításból származó leképezés stabilabb leolvasást biztosít, mint a nyers adc leolvasás.

if (shuntvoltage> = -0,10 && shuntvoltage <= -0,01) // Terhelés nélkül az INA219 -0,01 alatt szokott olvasni, az enyém igen.

{

áram_mA = 0;

buszfeszültség = 0;

terhelési feszültség = 0;

söntfeszültség = 0;

}

}

üres

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Áram nélkül ez az én mA -értékem, ezért csak lehúzom.

lcd.print (" * 4-20mA generátor *");

}

más {

lcd.print ("** Analóg tesztelő **");

}

lcd.setCursor (0, 1);

lcd.print ("Eszköz:");

lcd.setCursor (10, 1);

if (leképezett <1,25) {

lcd.print ("nincs eszköz");

}

más {

lcd.print (leképezett);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Generálás:");

lcd.setCursor (10, 2);

lcd.print (current_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Kínálat:");

lcd.setCursor (10, 3);

lcd.print (terhelési feszültség);

lcd.print ("V");

}

5. lépés: Még néhány fotó

Még néhány fotó
Még néhány fotó

Erősítő hangszóró terminál. Az áramgenerátor (RTD) által működtetett LED. Az analóg kártya bekötése helyettesíti a LED -et.

A bal oldali csatlakozó a tápellátást szolgálja. A jobb oldali csatlakozók a műszerbevitelre szolgálnak.

6. lépés: Beillesztés

Beleillik
Beleillik

Úgy tűnik, minden megfelel. Szilikont használtam, hogy ideiglenesen összehozzak néhány dolgot. A díszítőedény jobb felső részén szilikonos. Egy kis lyukat előre fúrtak. A doboz tetejéről állíthatom az áramot.

7. lépés: Csak fotók

Csak Fotók
Csak Fotók
Csak Fotók
Csak Fotók
Csak Fotók
Csak Fotók
Csak Fotók
Csak Fotók

8. lépés: Utolsó szavak

Az eszköz kimenetét egy Allan Bradley PLC -vel teszteltem. Az eredmények nagyon jók voltak. Teljes tartományt kaptam. Ezt a készüléket is teszteltem 4-20 mA nyomásérzékelővel, amely beépített LCD kijelzővel rendelkezik. Ismét nagyon jó eredmények születtek. A leolvasásaimat pár tizedes pontossággal leállítottuk.

Fülekbe írom az arduino kódomat. A PLC -kben alrutinoknak nevezik őket. Könnyebbé teszi a hibakeresést.

Ezeknek a lapoknak a szövegfájljai vannak csatolva.

Ajánlott: