Obsah:

Generátor/tester 4-20 ma používajúci Arduino: 8 krokov
Generátor/tester 4-20 ma používajúci Arduino: 8 krokov

Video: Generátor/tester 4-20 ma používajúci Arduino: 8 krokov

Video: Generátor/tester 4-20 ma používajúci Arduino: 8 krokov
Video: LDmicro 3: PIC16F628A и Arduino Nano (программирование лестничной логики ПЛК микроконтроллера с помощью LDmicro) 2024, Jún
Anonim
Generátor/tester 4-20 ma pomocou Arduina
Generátor/tester 4-20 ma pomocou Arduina

Na ebay sú k dispozícii generátory 4-20 mA, ale ja mám rád časť domácich potrieb a používanie dielov, ktoré mám okolo seba.

Chcel som otestovať analógové vstupy nášho PLC, aby sme overili naše hodnoty scada a otestovali výstup prístrojov 4-20mA. Na eBay je veľa meničov prúdu na napätie a meničov napätia na prúd pre arduino, ale je potrebné ich kalibrovať. Môžem to použiť na kalibráciu ktoréhokoľvek z týchto prevodníkov, ktoré sa nachádzajú na ebay a podobne.

Rozhodol som sa, že si vyrobím generátor a tester. V tejto chvíli je to stále nedokončená výroba a prototyp.

Mal som starý zvukový systém 2.1, ktorý sa nepoužíval (malé reproduktory). Jeden z reproduktorových boxov som teda použil ako ozvučnicu. Mal som tiež zosilňovač, ktorý zomrel kvôli blesku, odstránil som z neho zosilňovač, aby bolo pripojenie hračkou. Mám v úmysle v budúcnosti vyrobiť DPS a lepší kryt.

Zásoby:

Zoznam položiek.

LCD // 20x4 (kód upravte, ak je váš menší)

LM7808 // 8voltový regulátor

LED // Akýkoľvek typ alebo veľkosť

Rezistor pre LED // Vhodný pre typ LED a 8 voltov

Rezistor 100 ohmov + odpor 47 ohmov v sérii // Bude použitý ako skratovací odpor

10K odpor // analógový Arduino na ochranu pred vysokým napätím

Odpor 22K // Zastavenie plávania A0

Trimpot 100 ohm + 47 ohm odpor v sérii // simulátor PT100

35 voltový kondenzátor // Použil som 470uF, len aby boli kolísania napájacieho napätia nízke

RTD (prevodník PT100) // Na rozpätí nezáleží (rozsah)

DIODE (na ochranu polarity)

INA219

Arduino

Krok 1:

Obrázok
Obrázok

Podľa schémy by ste mali začať s tým, kam pridať diely a zapojiť ich.

LM7808 umožňuje vstup maximálne 25 voltov, čo je v poriadku pre systémy PLC, spravidla používajú 24voltové napájacie zdroje. Pridajte k regulátoru chladič a nepoužívajte ho dlhší čas. Klesnutie 16 voltov spôsobuje, že regulátor generuje veľa tepla.

Vstupné napájanie napája regulátor a pripája sa k VIN INA219, v tejto konfigurácii bude INA219 tiež schopný merať správne napájacie napätie mínus pokles napätia z diódy. Mali by ste zmerať pokles napätia vašej diódy a pridať ho do kódu, aby ste získali správne odčítanie napájacieho napätia.

Od VAUT INA219 po RTD+ zapína RTD. RTD- uzemnenie dokončuje obvod.

Na testovanie analógovej karty PLC by ste zapojili RTD- na vstup na analógovej karte a uzemnenie z karty na arduino uzemnenie. (Nezabudnite odpojiť všetky nástroje pripojené k testovanému kanálu).

R5 a LED1, indikujúci systém je napájaný.

Regulátor sa napája na arduino VIN (arduino má vstavaný regulátor na 5 voltov).

Arduino 5V pin ide do INA219 na napájanie palubného čipu. INA219 GND na arduino zem.

Orezanie stierača hrnca na RTD PIN1 a Orezanie kolíka 3 na RTD pin 2 bude simulovať pripojenie PT100. (Vymeňte káble, ak otáčaním ozdobného hrnca v smere hodinových ručičiek nezvýšite mA).

Krok 2: Test výstupu nástroja

Na testovanie výstupu prístroja sú potrebné ďalšie diely, ako napríklad bočníkový odpor. Bežné rezistory 0,25 W budú svoju prácu vykonávať dobre. Môžete nechať bočníkový odpor a pridať druhý INA219 na testovanie výstupu prístroja. Zostal mi iba jeden, takže som namiesto toho použil odpor.

Testovanie pomocou skratu je možné vykonať iba na negatívnej strane zariadenia. Ak použijete pozitívnu stránku, dodáte svojmu arduinu viac ako 4 -násobok povoleného napätia a vypustíte dym.

Pridajte bočníkový odpor do série so záporným vodičom prístroja. Strana bočníka, ktorá je najbližšie k zariadeniu, sa stane pozitívnym analógom pre arduino. Druhá strana bočníka, ktorá je najbližšie k napájaciemu zdroju, sa stane arduinovou zemou dopĺňajúcou analógový vstupný obvod.

150 ohmový bočníkový odpor je úplné maximum, ktoré by ste mali použiť pri použití arduina. Rezistor má pokles napätia lineárny k mA, ktorý ním preteká. Čím väčšia je mA, tým väčšie je napätie.

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

Pri prúde 4mA # 150ohm*0,004A = 0,6volt na arduino.

Teraz môžete chcieť, aby sa napätie priblížilo k 5 voltom, aby ste nám mohli poskytnúť celý rozsah arduino ADC. (Nie je to dobrý nápad).

RTD môžu dosiahnuť výstup 30,2 mA (moje áno). 150 ohmov*0,03A = 4,8 voltov. To je tak blízko, ako by som chcel byť.

Ďalší web uviedol, že sa používa odpor 250 ohmov.

Pri prúde 20 mA # 250 ohmov*0,02 A = 5 voltov na arduino.

Pri prúde 30 mA # 250 ohmov*0,03 A = 7,5 voltu na arduino.

Riskujete spálenie ADC a arduina.

Ak chcete otestovať nástroj v teréne, vezmite si so sebou 12voltovú batériu a pripojte ju k napájaciemu vstupu. Použitie externého zdroja napájania neovplyvní aktuálne nastavenie PLC.

Ak chcete otestovať analógovú vstupnú kartu v teréne, vezmite si so sebou 12voltovú batériu. Odpojte prístroj + od obvodu. Pripojte uzemnenie k uzemneniu prístroja a RTD- k odpojenému vodiču prístroja.

Krok 3: Kalibrácia

Kalibrácia
Kalibrácia

Ak chcete kalibrovať čítanie skratového rezistora, zapojte RTD- k analógovému skratu. Nastavte trimr tak, aby generovaná mA bola 4mA. Ak sa hodnota mA vášho zariadenia nerovná, upravte prvú hodnotu v kóde na riadku 84. Zvýšením tejto hodnoty sa zníži hodnota mA.

Potom nastavte svoj trimovací hrniec na generovanie 20mA. Ak sa mA vášho zariadenia nerovná, upravte druhú hodnotu v kóde na riadku 84.

Takže vašich 4-20 mA sa teraz stane 0,6-3 voltov (teoreticky). Rozsah viac než dostatočný. Použitím knižnice od eRCaGuy vám prevzorkovanie poskytne lepšie a stabilnejšie odčítanie.

Dúfam, že ste si to prečítali. Toto je môj prvý návod, takže si to prosím v kľude vezmite, ak som niekde urobil chybu alebo som niečo vynechal.

Tento projekt pravdepodobne nie je najvhodnejší spôsob, ako to urobiť, ale funguje to pre mňa a bola to zábava.

Niektoré nápady, ktoré mám navyše…

Pridajte servo na otáčanie ozdobného hrnca vo vnútri škatule.

Pridajte tlačidlá na otáčanie serva doľava alebo doprava.

Pridajte k chladiču regulátora digitálny snímač teploty, ktorý vás upozorní na nebezpečné teplo.

Krok 4: Programovanie Arduina

#zahrnúť

// #include // Odporučte komentár, ak používate LCD displej s posuvným registrom.

#zahrnúť

#zahrnúť

#zahrnúť

#zahrnúť

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Ak používate LCD s posuvným registrom, odošlite komentár.

// | | | _ Západka

// | / _ Hodinový špendlík

// / _ Dáta/Povoliť pin

bajty bitsOfResolution = 12; // prikázané prevzorkované rozlíšenie

bez znamienka dlhé numSamplesToAvg = 20; // počet vzoriek NA PREJAVOM RIEŠENÍ, ktoré chcete odobrať, a priemer

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

nepodpísané dlhé predchádzajúce Millis = 0;

float shuntvoltage = 0,0; // Z INA219

napätie float bus = 0,0; // Z INA219

float current_mA = 0,0; // Z INA219

napätie float load = 0,0; // Z INA219

float arduinovoltage = 0,0; // Výpočet napätia z pinu A0

Podpísané dlhé A0analogReading = 0;

byte analogIn = A0;

float ma_mapped = 0,0; // Mapujte napätie od A0 do 4-20mA

neplatné nastavenie () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Upravená knižnica pre väčšiu presnosť mA

lcd.begin (20, 4); // inicializácia LCD

lcd.clear ();

lcd.home (); // Choď domov

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

oneskorenie (2000);

lcd.clear ();

}

prázdna slučka ()

{

nepodpísaný dlhý prúd Millis = millis ();

konštantný dlhý interval = 100;

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

Čítajte zariadenia I2C v intervaloch a vykonajte niekoľko výpočtov

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

if (currentMillis - previousMillis> = interval) {

previousMillis = súčasnýMillis;

Interval ();

}

Print_To_LCD (); // Pravdepodobne nepotrebujem aktualizovať LCD tak rýchlo a je možné ho presunúť pod Interval ()

}

prázdny

Interval () {

shuntvoltage = ina219.getShuntVoltage_mV ();

zbernicové napätie = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

záťažové napätie = (napätie zbernice + (skratové napätie / 1000)) + 0,71; // +0,71 je môj pokles napätia diódy

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5,0 * A0analogReading); // Vypočítané na mV

ma_mapped = mapa (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Mapa nemôže používať plaváky. Pridajte 0 za mapovanú hodnotu a vydelte 10, aby ste získali odčítané číslo.

// Mapovanie z výpočtu napätia poskytuje stabilnejšie odčítanie ako pri použití surového čítania adc.

if (shuntvoltage> = -0,10 && shuntvoltage <= -0,01) // Bez zaťaženia má INA219 tendenciu čítať nižšie ako -0,01, moje áno.

{

current_mA = 0;

napätie zbernice = 0;

záťažové napätie = 0;

shuntvoltage = 0;

}

}

prázdny

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1,25) {// Bez prúdu je to moja hodnota mA, takže to jednoducho vyhodím.

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

}

inak {

lcd.print ("** analógový tester **");

}

lcd.setCursor (0, 1);

lcd.print („Zariadenie:“);

lcd.setCursor (10, 1);

if (ma_mapped <1,25) {

lcd.print („žiadne zariadenie“);

}

inak {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Generovať:");

lcd.setCursor (10, 2);

lcd.print (current_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Dodávka:");

lcd.setCursor (10, 3);

lcd.print (záťažové napätie);

lcd.print ("V");

}

Krok 5: Niekoľko ďalších fotografií

Niekoľko ďalších fotografií
Niekoľko ďalších fotografií

Terminál reproduktora zosilňovača. LED poháňaná generátorom prúdu (RTD). LED diódy nahradí kabeláž analógovej karty.

Konektor úplne vľavo slúži na vstup napájania. Terminály napravo slúžia na vstup prístroja.

Krok 6: zapadnutie

Zapadá
Zapadá

Zdá sa, že všetko sedí. Na dočasné držanie niektorých vecí pohromade som použil silikón. Orezávací hrniec je silikónovaný vpravo hore. Bola predvŕtaná malá diera. Prúd môžem nastaviť z hornej časti krabice.

Krok 7: Len fotografie

Len Fotky
Len Fotky
Len Fotky
Len Fotky
Len fotky
Len fotky
Len Fotky
Len Fotky

Krok 8: Záverečné slová

Testoval som výkon tohto zariadenia s PLC Allan Bradley. Výsledky boli veľmi dobré. Mám plný rozsah. Tiež som testoval toto zariadenie so snímačom tlaku 4-20mA, ktorý má vstavaný LCD displej. Výsledky boli opäť veľmi dobré. Moje hodnoty boli preč o niekoľko desatinných miest.

Svoj arduino kód píšem do záložiek. V PLC sa nazývajú čiastkové rutiny. Uľahčuje ladenie pre mňa.

Priložené sú textové súbory týchto kariet.

Odporúča: