Sisukord:
- Samm 1:
- 2. samm: instrumendi väljundi test
- 3. samm: kalibreerimine
- Samm: Arduino programmeerimine
- Samm: veel mõned fotod
- 6. samm: paigaldamine
- Samm: lihtsalt fotod
- 8. samm: lõppsõnad
Video: 4-20ma generaator/tester Arduino abil: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:45
Ebayst on saadaval 4-20 mA generaatorid, kuid mulle meeldib ühe asjade isetegemise osa ja nende osade kasutamine, mis mul on.
Tahtsin testida meie PLC analoogsisendeid, et kontrollida meie scada näitu ja testida 4-20 mA instrumentide väljundit. Ebay -l on palju voolu ja pinge muundureid ning arduino jaoks voolu muundureid, kuid need vajavad kalibreerimist. Ma saan seda kasutada kõigi ebayst leitud muundurite jms kalibreerimiseks.
Otsustasin, et teen DIY generaatori ja testri. Praegu on see veel pooleli ja prototüüp.
Mul oli vana 2.1 helisüsteem, mida ei kasutatud (väikesed kõlarid). Niisiis kasutasin korpuseks ühte kõlarikarpi. Mul oli ka võimendi, mis välgu tõttu suri, eemaldasin selle võimendi kõlariklemmi, et ühendada imelihtne. Kavatsen tulevikus teha trükkplaadi ja parema ümbrise.
Tarvikud:
Osade nimekiri.
LCD // 20x4 (kohandage koodi, kui teie oma on väiksem)
LM7808 // 8 -voldine regulaator
LED // Mis tahes tüüpi või suurusega
LED -takisti // Sobib LED -i tüübile ja 8 -voldisele
100 oomi takisti + 47 oomi takisti järjestikku // Kasutatakse šundtakistina
10K takisti // Arduino analoog kaitseks kõrgepinge eest
22K takisti // A0 hõljumise peatamiseks
Trimpot 100 oomi + 47 oomi takisti järjestikku // PT100 simulaator
35 -voldine kondensaator // Ma kasutasin 470uF, lihtsalt toitepinge kõikumiste hoidmiseks
RTD (PT100 andur) // Vahemik pole oluline (vahemik)
DIODE (polaarsuse kaitseks)
INA219
Arduino
Samm 1:
Skeemi järgides peaksite alustama osade lisamise ja juhtmete ühendamise kohaga.
LM7808 võimaldab maksimaalselt 25 -voldist sisendit, mis sobib PLC -süsteemide jaoks, tavaliselt kasutavad nad 24 -voldiseid toiteallikaid. Lisage regulaatorile jahutusradiaator ja ärge seda pikemat aega kasutage. 16 volti mahalaskmine tekitab regulaatorile palju soojust.
Sisendtoide toidab regulaatorit ja ühendub INA219 VIN -iga, selles konfiguratsioonis saab INA219 mõõta ka õiget toitepinget miinus dioodi pingelangus. Mõõtke oma dioodi pingelangus ja lisage see koodile, et saada õige toitepinge näit.
Alates INA219 VOUT kuni RTD+ võimendab RTD. RTD- maandus lõpetab vooluringi.
PLC analoogkaardi testimiseks ühendage RTD- analoogkaardi sisendiga ja maandus kaardilt arduino maandusele. (Ühendage kindlasti lahti kõik testitava kanali külge kinnitatud instrumendid).
R5 ja LED1, mis näitab, et süsteem on sisse lülitatud.
Regulaator toidab arduino VIN -i (arduino on sisseehitatud 5 -voldise regulaatori).
Arduino 5V pin läheb pardal oleva kiibi toiteks INA219. INA219 GND arduino maapinnale.
Kärpimispoti klaasipuhasti RTD PIN1 -ga ja kärpimispoldi tihvti 3 RTD tihvtiga 2 simuleerib PT100 ühendust. (Vahetage juhtmed, kui trimmipotti päripäeva keeramine ei suurenda mA).
2. samm: instrumendi väljundi test
Instrumendi väljundi testimiseks on vaja täiendavaid osi, näiteks šundtakisti. Tavalised 0,25 W takistid teevad selle töö suurepäraselt. Võite jätta šundtakisti ja lisada instrumendi väljundisse teise INA219. Mul jäi ainult üks, nii et kasutasin selle asemel takistit.
Šundi abil saab katsetada ainult seadme negatiivsel poolel. Kui kasutate positiivset külge, varustate oma arduino rohkem kui 4 korda lubatud pingega ja lasete suitsu välja.
Lisage šundtakisti järjestikku instrumendi negatiivse juhtmega. Šundi seadmele lähim külg muutub arduino positiivseks analoogiks. Toiteallikale kõige lähemal asuvast šundi teisest küljest saab arduino maandus, mis täiendab analoogsisendiahelat.
150 oomi šundtakisti on absoluutne maksimum, mida tuleks arduino kasutamisel kasutada. Takistil on pingelangus lineaarselt läbi selle voolava mA suhtes. Mida suurem on mA, seda suurem on pinge.
20 mA voolu korral # 150 oomi*0,02 A = 3 volti arduinole.
4 mA voolu korral # 150 oomi*0,004A = 0,6 volti kuni arduino.
Nüüd võiksite soovida, et pinge oleks lähemal kui 5 volti, et saaksite kasutada kogu arduino ADC valikut. (Pole hea mõte).
RTD -d võivad jõuda 30,2 mA väljundini (minu omad). 150 oomi*0,03A = 4,8 volti. See on nii lähedal kui tahaksin olla.
Teine veebisait soovitas kasutada 250 oomi takistit.
20 mA voolu korral # 250 oomi*0,02 A = 5 volti arduinole.
30 mA voolu korral # 250 oomi*0,03 A = 7,5 volti arduinole.
Te riskite oma ADC ja arduino põletamisega.
Instrumendi väljas katsetamiseks võtke 12 -voldine aku kaasa ja ühendage see toite sisendiga. Välise toiteallika kasutamine ei mõjuta praegust PLC seadistust.
Väljas analoogsisendkaardi testimiseks võtke 12 -voldine aku kaasa. Ühendage instrument + vooluahelast lahti. Ühendage maandus instrumendi maandusega ja RTD- lahti ühendatud instrumendi juhtmega.
3. samm: kalibreerimine
Šundtakisti lugemise kalibreerimiseks ühendage RTD- šundi analoogiga. Seadke oma trimmipott nii, et genereeritud mA oleks 4 mA. Kui teie seadme mA pole võrdne, muutke rea 84. koodi esimest väärtust. Selle väärtuse suurendamine vähendab mA näitu.
Seejärel seadistage oma trimmipott 20mA genereerimiseks. Kui teie seadme mA pole võrdne, muutke rea 84 väärtuses oleva koodi teist väärtust.
Nii et teie 4-20 mA muutub nüüd 0,6-3 voltiks (teoreetiline). Vahemik on enam kui piisav. Kasutades eRCaGuy raamatukogu, annab üleproovimine teile parema ja stabiilsema näidu.
Loodetavasti lugesite seda. See on minu esimene juhend, nii et palun võtke rahulikult, kui olen kusagil vea teinud või midagi välja jätnud.
See projekt ei ole ilmselt parim viis selle saavutamiseks, kuid see töötab minu jaoks ja oli lõbus seda teha.
Mõned ideed on mul veel…
Lisage servo, et pöörata trimmipott kasti sees.
Lisage servo vasakule või paremale pööramiseks nuppe.
Lisage regulaatori radiaatorile digitaalne temperatuuriandur, et hoiatada ohtliku kuumuse eest.
Samm: Arduino programmeerimine
#kaasake
// #Include // Uncomment, kui kasutate nihkeregistriga LCD -d.
#kaasake
#kaasake
#kaasake
#kaasake
// A4 = (SDA)
A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal LCD (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Tühistage kommentaar, kui kasutate nihkeregistriga LCD -d.
// | | | _ Riivi tihvt
// | / _ Kella tihvt
// / _ Andmed/Luba kinnitus
bait bittiOfResolution = 12; // käsutas üleproovitud eraldusvõime
allkirjastamata pikad numSamplesToAvg = 20; // proovide arv ÜLDNÄIDISTUD RESOLUTSIOONIL, mida soovite võtta, ja keskmine
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
allkirjastamata kaua eelmineMillis = 0;
ujuki šuntpinge = 0,0; // INA219 -st
ujuki pinge = 0,0; // INA219 -st
ujukivool_mA = 0,0; // INA219 -st
ujuki koormuspinge = 0,0; // INA219 -st
ujuki arduinovoltage = 0,0; // Pinge arvutamine A0 tihvtist
Allkirjata pikk A0analogReading = 0;
bait analoogIn = A0;
ujuk kaardistatud = 0,0; // Kaardi pinge vahemikus A0 kuni 4-20 mA
tühine seadistus () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t currentFrequency;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // Modifitseeritud teek mA täpsemaks muutmiseks
lcd.algus (20, 4); // LCD initsialiseerimine
lcd.clear ();
lcd.home (); // mine koju
lcd.print ("********************");
viivitus (2000);
lcd.clear ();
}
tühine tsükkel ()
{
allkirjata pikk voolMillis = millis ();
const pikk intervall = 100;
//&&&&&&&&&&&&&&&&&
Lugege intervallidega I2C -seadmeid ja tehke mõned arvutused
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis> = intervall) {
previousMillis = currentMillis;
Intervall ();
}
Print_To_LCD (); // Tõenäoliselt ei pea ma LCD -d nii kiiresti värskendama ja selle saab viia intervalli alla ()
}
tühine
Intervall () {
šuntpinge = ina219.getShuntVoltage_mV ();
siinipinge = ina219.getBusVoltage_V ();
praegune_mA = ina219.getCurrent_mA ();
koormuspinge = (siinipinge + (šuntpinge / 1000)) + 0,71; // +0,71 on minu dioodi pingelangus
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5,0 * A0analogReading); // Arvutatud mV
kaardistatud = kaart (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Kaart ei saa kasutada ujukeid. Lisage 0 kaardistatud väärtuse taha ja jagage 10 -ga, et saada ujuki näitu.
// Pingearvutuse kaardistamine annab stabiilsema näidu kui toore adc -näidu kasutamine.
kui (šuntpinge> = -0,10 && šuntpinge <= -0,01) // Ilma koormuseta kipub INA219 lugema alla -0,01, minu oma teeb seda.
{
praegune_mA = 0;
siinipinge = 0;
koormuspinge = 0;
šuntpinge = 0;
}
}
tühine
Print_To_LCD () {
lcd.setCursor (0, 0);
if (ma_mapped <1.25) {// Ilma vooluta on see minu mA näit, seega panen selle lihtsalt ära.
lcd.print (" * 4-20mA generaator *");
}
muu {
lcd.print ("** analoogtestija **");
}
lcd.setCursor (0, 1);
lcd.print ("Seade:");
lcd.setCursor (10, 1);
if (kaardistatud <1,25) {
lcd.print ("seadet pole");
}
muu {
lcd.print (kaardistatud);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Loo:");
lcd.setCursor (10, 2);
lcd.print (praegune_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Pakkumine:");
lcd.setCursor (10, 3);
lcd.print (koormuspinge);
lcd.print ("V");
}
Samm: veel mõned fotod
Võimendi kõlarite terminal. LED, mida juhib voolugeneraator (RTD). Analoogkaardi juhtmestik asendab LED -i.
Vasakpoolses klemmis on toite sisend. Paremal asuvad klemmid on instrumendi sisestamiseks.
6. samm: paigaldamine
Kõik tundub sobivat. Kasutasin silikooni, et mõnda kraami ajutiselt kokku hoida. Viimistluspott on paremas ülanurgas silikoonitud. Eelnevalt puuriti väike auk. Ma saan voolu reguleerida kasti ülaosast.
Samm: lihtsalt fotod
8. samm: lõppsõnad
Olen testinud selle seadme väljundit Allan Bradley PLC -ga. Tulemused olid väga head. Mul on täielik valik. Olen seda seadet testinud ka 4-20 mA rõhuanduriga, millel on sisseehitatud LCD-ekraan. Tulemused olid jällegi väga head. Minu näidud lülitati paari kümnendkoha võrra maha.
Kirjutan vahekaartidele oma arduino koodi. PLC -des nimetatakse neid alamrutiinideks. Muudab silumise minu jaoks lihtsamaks.
Manustatud on nende vahekaartide tekstifailid.
Soovitan:
Arduino lainekuju generaator: 5 sammu (piltidega)
Arduino lainekuju generaator: veebruari 2021 värskendus: vaadake uut versiooni 300 -kordse proovivõtu sagedusega, mis põhineb Raspberry Pi Picol. Laboris on sageli vaja teatud sageduse, kuju ja amplituudiga korduvat signaali. See võib olla võimendi testimine, vooluahela kontrollimine
Arduino TOTP generaator: 3 sammu
Arduino TOTP -i generaator: inspiratsioon Kuna mul oli sõber, kes on huvitatud krüptograafiast ja turvalisusest, tahtsin luua täiusliku sünnipäevakingi.*See on projekt, mille tegin sünnipäevakingitusena ja mis loodi lühikeste ajapiirangutega (vabandust räpase töö eest) EI
Kella tegemine M5stick C abil Arduino IDE abil RTC reaalajas kell M5stack M5stick-C abil: 4 sammu
Kella tegemine M5stick C abil, kasutades Arduino IDE | RTC reaalajas kell koos M5stack M5stick-C-ga: Tere, selles juhendis olevad poisid, me õpime, kuidas Arduino IDE abil kella m5stick-C arendusplaadiga teha. Nii kuvab m5stick kuupäeva, kellaaja ja amp; kuunädal ekraanil
Generaator - alalisvoolu generaator Reed lüliti abil: 3 sammu
Generaator - alalisvoolu generaator Reed lülitit kasutades: lihtne alalisvoolu generaator Alalisvoolu (DC) generaator on elektrimasin, mis muudab mehaanilise energia alalisvoolu elektrienergiaks. Oluline: alalisvoolu (DC) generaatorit saab kasutada alalisvoolumootorina ilma konstruktsioonita muudatused
Arduino Yún Morse generaator: 4 sammu (piltidega)
Arduino Yún Morse Generator: Kas olete kunagi olnud baaris, kus te ei saanud oma sõbraga rääkida, sest muusika oli liiga vali? no nüüd võite temalt morsekoodis õlut küsida! Alustame