Obsah:

Generátor/tester 4-20 ma pomocí Arduina: 8 kroků
Generátor/tester 4-20 ma pomocí Arduina: 8 kroků

Video: Generátor/tester 4-20 ma pomocí Arduina: 8 kroků

Video: Generátor/tester 4-20 ma pomocí Arduina: 8 kroků
Video: LDmicro 3: PIC16F628A & Arduino Nano (Microcontroller PLC Ladder Logic Programming with LDmicro) 2024, Červen
Anonim
Generátor/tester 4-20 ma pomocí Arduina
Generátor/tester 4-20 ma pomocí Arduina

Na ebay jsou k dispozici generátory 4-20mA, ale já mám rád část pro kutily a používání dílů, které mám kolem sebe.

Chtěl jsem otestovat analogové vstupy našeho PLC, abychom ověřili naše hodnoty scada a otestovali výstup přístrojů 4-20mA. Na ebay je spousta měničů proudu na napětí a měničů napětí na arduino, ale potřebují kalibraci. Můžu to použít ke kalibraci kteréhokoli z těchto převodníků nalezených na ebay a podobných.

Rozhodl jsem se, že si vyrobím generátor a tester. V tuto chvíli je to stále nedokončená výroba a prototyp.

Měl jsem starý zvukový systém 2.1, který nebyl používán (malé reproduktory). Jako skříň jsem tedy použil jeden z reproduktorových boxů. Měl jsem také zesilovač, který zemřel kvůli blesku, odstranil jsem reproduktorový terminál z tohoto zesilovače, aby bylo připojení hračkou. V budoucnu hodlám vyrobit desku plošných spojů a lepší skříň.

Zásoby:

Seznam dílů.

LCD // 20x4 (přizpůsobte kód, pokud je váš menší)

LM7808 // 8voltový regulátor

LED // Jakýkoli typ nebo velikost

Rezistor pro LED // Vhodný pro typ LED a 8volt

Rezistor 100 ohmů + odpor 47 ohmů v sérii // Bude použit jako bočníkový odpor

Rezistor 10K // Analog Arduino v ochraně proti vysokému napětí

22K odpor // Zastavení plovoucího A0

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

35 voltový kondenzátor // Použil jsem 470uF, jen abych udržel kolísání napájecího napětí

RTD (převodník PT100) // Na rozsahu nezáleží (rozsah)

DIODE (pro ochranu polarity)

INA219

Arduino

Krok 1:

obraz
obraz

Podle schématu byste měli začít s tím, kam přidat součásti a zapojit je.

LM7808 umožňuje vstup maximálně 25 voltů, což je v pořádku pro systémy PLC, obvykle používají 24voltové napájecí zdroje. Přidejte do regulátoru chladič a delší dobu jej nepoužívejte. Pokles 16voltů způsobí, že regulátor generuje velké množství tepla.

Vstupní napájení napájí regulátor a připojuje se k VIN INA219, v této konfiguraci bude INA219 také schopen měřit správné napájecí napětí mínus pokles napětí z diody. Měli byste změřit pokles napětí diody a přidat jej do kódu, abyste získali správné odečty napájecího napětí.

Od INA219 VOUT po RTD+ zapíná RTD. RTD- k zemi dokončí obvod.

Chcete-li otestovat analogovou kartu PLC, připojte RTD- ke vstupu na analogové kartě a uzemnění z karty na arduino uzemnění. (Ujistěte se, že jste odpojili jakýkoli nástroj připojený k testovanému kanálu).

R5 a LED1, indikující systém je napájen.

Regulátor se napájí do arduino VIN (arduino má vestavěný regulátor na 5 voltů).

Arduino 5V pin jde do INA219 k napájení palubního čipu. INA219 GND na arduino zem.

Trim pot wiper to RTD PIN1 and Trim pot pin 3 to RTD pin 2 will simulate a PT100 connection. (Vyměňte vodiče, pokud otáčením ozdobného hrnce ve směru hodinových ručiček nezvýšíte mA).

Krok 2: Test výstupu nástroje

K testování výstupu nástroje jsou zapotřebí další součásti, jako zkratový odpor. Normální rezistory 0,25 W budou fungovat dobře. Můžete nechat bočníkový odpor a přidat druhý INA219 pro testování výstupu nástroje. Zůstal mi jen jeden, takže jsem místo toho použil odpor.

Testování pomocí zkratu lze provádět pouze na negativní straně zařízení. Pokud použijete kladnou stránku, dodáte svému arduinu více než 4násobek povoleného napětí a vypustíte kouř.

Přidejte bočníkový odpor do série se záporným vodičem nástroje. Strana zkratu nejblíže zařízení se stane pozitivním analogem pro arduino. Druhá strana bočníku, která je nejblíže napájecímu zdroji, se stane zemí Arduino, která doplní analogový vstupní obvod.

150 ohmový bočníkový odpor je absolutní maximum, které by mělo být použito při použití arduina. Rezistor má úbytek napětí lineární k mA, který jím protéká. Čím větší je mA, tím větší je napětí.

Při proudu 20mA # 150ohm*0,02A = 3volt na arduino.

Při proudu 4mA # 150ohm*0,004A = 0,6volt na arduino.

Nyní můžete chtít, aby se napětí blížilo 5 voltům, abyste nám mohli nabídnout celý rozsah ADC arduina. (Není to dobrý nápad).

RTD mohou dosáhnout výstupu 30,2 mA (moje ano). 150 ohmů*0,03 A = 4,8 voltů. To je tak blízko, jak bych chtěl být.

Další web uvedl použití odporu 250 ohmů.

Při proudu 20mA # 250ohm*0,02A = 5volt na arduino.

Při proudu 30 mA # 250 ohmů*0,03 A = 7,5 voltu na arduino.

Riskujete spálení ADC a arduina.

Chcete -li otestovat nástroj v terénu, vezměte si s sebou 12voltovou baterii a připojte ji k napájecímu vstupu. Použití externího zdroje napájení neovlivní aktuální nastavení PLC.

Chcete -li vyzkoušet analogovou vstupní kartu v terénu, vezměte si s sebou 12voltovou baterii. Odpojte přístroj + od obvodu. Připojte kostru k uzemnění přístroje a RTD- k odpojenému vodiči přístroje.

Krok 3: Kalibrace

Kalibrace
Kalibrace

Chcete-li provést kalibraci odečítacího odporu, připojte analogový vstup RTD- k bočníku. Nastavte trimr tak, aby generovaná mA byla 4mA. Pokud mA vašeho zařízení není stejné, upravte první hodnotu v kódu na řádku 84. Zvýšení této hodnoty sníží odečet mA.

Poté nastavte svůj trimovací hrnec na generování 20mA. Pokud se mA vašeho zařízení nerovná, upravte druhou hodnotu v kódu na řádku 84.

Takže vašich 4-20mA bude nyní 0,6-3 voltů (teoreticky). Dosah více než dost. Pomocí knihovny od eRCaGuy vám převzorkování poskytne lepší a stabilní odečet.

Snad jste si to přečetli. Toto je můj první pokyn, takže si to prosím v klidu vezměte, pokud jsem někde udělal chybu nebo jsem něco vynechal.

Tento projekt pravděpodobně není nejlepší způsob, jak toho dosáhnout, ale funguje to pro mě a bylo zábavné to dělat.

Některé nápady mám navíc…

Přidejte servo pro otáčení ozdobného hrnce uvnitř krabice.

Přidejte tlačítka pro otáčení serva doleva nebo doprava.

Přidejte digitální chladič teploty do chladiče regulátoru, abyste varovali před nebezpečným teplem.

Krok 4: Programování Arduina

#zahrnout

// #include // Odkomentujte, pokud používáte LCD s posuvným registrem.

#zahrnout

#zahrnout

#zahrnout

#zahrnout

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Odkomentujte, pokud používáte LCD s posuvným registrem.

// | | | _ Západka

// | / _ Hodinový kolík

// / _ Data/Povolit pin

byte bitsOfResolution = 12; // přikázané převzorkované rozlišení

nepodepsané dlouhé numSamplesToAvg = 20; // počet vzorků V PŘEŠIROVANÉM ROZLIŠENÍ, které chcete odebrat, a průměr

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

nepodepsané dlouhé předchozí Millis = 0;

float shuntvoltage = 0,0; // Z INA219

napětí plovoucí sběrnice = 0,0; // Z INA219

float current_mA = 0,0; // Z INA219

plovoucí zatěžovací napětí = 0,0; // Z INA219

float arduinovoltage = 0,0; // Výpočet napětí z pinu A0

Nepodepsané dlouhé A0analogReading = 0;

byte analogIn = A0;

float ma_mapped = 0,0; // Napětí mapy od A0 do 4-20mA

neplatné nastavení () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Upravená knihovna pro větší přesnost na mA

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

lcd.clear ();

lcd.home (); // Jdi domů

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

zpoždění (2000);

lcd.clear ();

}

prázdná smyčka ()

{

unsigned long currentMillis = millis ();

konst dlouhý interval = 100;

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

Čtěte zařízení I2C v intervalech a proveďte nějaké výpočty

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

if (currentMillis - previousMillis> = interval) {

previousMillis = aktuálníMillis;

Časový úsek();

}

Print_To_LCD (); // Pravděpodobně nepotřebuji aktualizovat LCD tak rychle a lze jej přesunout pod Interval ()

}

prázdné

Časový úsek() {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

zatěžovací napětí = (napětí sběrnice + (shuntvoltage / 1000)) + 0,71; // +0,71 je můj pokles napětí diody

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5,0 * A0analogReading); // Vypočítáno na mV

ma_mapped = mapa (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Mapa nemůže používat plováky. Přidejte 0 za namapovanou hodnotu a vydělte 10, abyste získali plovoucí odečet.

// Mapování z výpočtu napětí poskytuje stabilnější odečet než použití hrubého čtení adc.

if (shuntvoltage> = -0,10 && shuntvoltage <= -0,01) // Bez zátěže má INA219 tendenci číst pod -0,01, moje ano.

{

current_mA = 0;

sběrnicové napětí = 0;

zatěžovací napětí = 0;

shuntvoltage = 0;

}

}

prázdné

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1,25) {// Bez proudu je to moje hodnota mA, takže jsem to prostě vyhodil.

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

}

jinak {

lcd.print ("** Analogový tester **");

}

lcd.setCursor (0, 1);

lcd.print ("Zařízení:");

lcd.setCursor (10, 1);

if (ma_mapped <1,25) {

lcd.print („žádné zařízení“);

}

jinak {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Generovat:");

lcd.setCursor (10, 2);

lcd.print (aktuální_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Nabídka:");

lcd.setCursor (10, 3);

lcd.print (zátěžové napětí);

lcd.print ("V");

}

Krok 5: Několik dalších fotografií

Několik dalších fotografií
Několik dalších fotografií

Terminál reproduktoru zesilovače. LED poháněné generátorem proudu (RTD). LED diodu nahradí kabeláž analogové karty.

Konektor zcela vlevo je pro napájecí vstup. Svorky vpravo jsou pro vstup nástroje.

Krok 6: Zapojení

Zapadnout
Zapadnout

Zdá se, že všechno sedí. Použil jsem silikon, abych dočasně držel nějaké věci pohromadě. Ozdobný hrnec je silikonovaný vpravo nahoře. Předvrtána byla malá díra. Mohu nastavit proud z horní části krabice.

Krok 7: Jen fotky

Jen fotky
Jen fotky
Jen fotky
Jen fotky
Jen fotky
Jen fotky
Jen fotky
Jen fotky

Krok 8: Závěrečná slova

Testoval jsem výstup tohoto zařízení s PLC Allan Bradley. Výsledky byly velmi dobré. Mám plný rozsah. Také jsem testoval toto zařízení s tlakovým senzorem 4-20mA, který má vestavěný LCD displej. Výsledky byly opět velmi dobré. Moje hodnoty byly odečteny o několik desetinných míst.

Píšu svůj arduino kód do záložek. V PLC se jim říká dílčí rutiny. Usnadňuje mi ladění.

Připojeny jsou textové soubory těchto karet.

Doporučuje: