Բովանդակություն:

4-20ma գեներատոր/փորձարկիչ, օգտագործելով Arduino- ն. 8 քայլ
4-20ma գեներատոր/փորձարկիչ, օգտագործելով Arduino- ն. 8 քայլ

Video: 4-20ma գեներատոր/փորձարկիչ, օգտագործելով Arduino- ն. 8 քայլ

Video: 4-20ma գեներատոր/փորձարկիչ, օգտագործելով Arduino- ն. 8 քայլ
Video: 4-20 MA Transmitter: How Does It Work? 2024, Հունիսի
Anonim
4-20 մետր գեներատոր/փորձարկիչ, օգտագործելով Arduino- ն
4-20 մետր գեներատոր/փորձարկիչ, օգտագործելով Arduino- ն

EBay- ում առկա են 4-20mA գեներատորներ, բայց ես մեկ-մեկ սիրում եմ իրերի DIY մասը և այն մասերի օգտագործումը, որոնք տեղադրում եմ:

Ես ուզում էի ստուգել մեր PLC- ի անալոգային մուտքերը `ստուգելու մեր սկադայի ընթերցումները և փորձարկելու 4-20mA գործիքների ելքը: Ebay- ում arduino- ի համար կան հոսանքից մինչև լարման կերպափոխիչներ և հոսանքից փոխարկիչներ, դրանք, սակայն, ճշգրտման կարիք ունեն: Ես կարող եմ օգտագործել սա ՝ ebay- ում և նմանատիպ այլ կերպափոխիչներից որևէ մեկը ստուգելու համար:

Ես որոշեցի, որ ես ինքս կնստեմ գեներատոր և փորձարկիչ: Այս պահին այն դեռ ընթացքի մեջ գտնվող աշխատանք է և նախատիպ:

Ես ունեի հին 2.1 ձայնային համակարգ, որը չէր օգտագործվում (փոքր բարձրախոսներ): Այսպիսով, ես որպես պարիսպ օգտագործեցի բարձրախոսների արկղերից մեկը: Ես ունեի նաև ուժեղացուցիչ, որը մահացել էր կայծակի պատճառով, ես հեռացրել էի բարձրախոսների տերմինալն այդ ուժեղացուցիչից ՝ քամին միացնելու համար: Ես մտադիր եմ ապագայում պատրաստել PCB և ավելի լավ պարիսպ:

Պարագաներ:

Մասերի ցուցակ:

LCD // 20x4 (հարմարեցրեք ծածկագիրը, եթե ձերն ավելի փոքր է)

LM7808 // 8 վոլտ կարգավորիչ

LED // typeանկացած տեսակի կամ չափի

LED- ի դիմացկուն // Հարմար է LED տիպի և 8 վոլտի համար

100 օմ դիմադրություն + 47 օհմ դիմադրություն շարքում // Կօգտագործվի որպես շունտի դիմադրություն

10K ռեզիստոր // Arduino անալոգ `բարձր լարման պաշտպանությունից

22K դիմադրություն // A0- ի լողալը դադարեցնելու համար

Trimpot 100 ohm + 47 ohm դիմադրություն շարքում // PT100 սիմուլյատոր

35 վոլտ կոնդենսատոր // Ես օգտագործել եմ 470uF, պարզապես մատակարարման լարման տատանումները ցածր պահելու համար

RTD (PT100 փոխարկիչ) // Տևողությունը նշանակություն չունի (տիրույթ)

ԴԻՈԴ (բևեռականությունից պաշտպանվելու համար)

INA219

Արդուինո

Քայլ 1:

Պատկեր
Պատկեր

Սխեմատիկին հետևելը պետք է սկսի, թե որտեղ պետք է ավելացնել մասերը և լարել դրանք:

LM7808- ը թույլ է տալիս առավելագույնը 25 վոլտ մուտք, ինչը լավ է PLC համակարգերի համար, դրանք հիմնականում օգտագործում են 24 վոլտ սնուցման աղբյուրներ: Կարգավորիչին ավելացրեք տաքացուցիչ և մի օգտագործեք այն երկար ժամանակ: 16 վոլտ իջնելը հանգեցնում է նրան, որ կարգավորիչը շատ ջերմություն է արտադրում:

Մուտքային մատակարարումը սնուցում է կարգավորիչը և միանում INA219 VIN- ին, այս կոնֆիգուրացիայում INA219- ը կկարողանա նաև չափել մատակարարման ճիշտ լարումը ՝ հանած դիոդից լարման անկումը: Դուք պետք է չափեք ձեր դիոդի լարման անկումը և ավելացրեք այն ծածկագրին, որպեսզի ստանաք մատակարարման լարման ճիշտ ընթերցում:

INA219 VOUT- ից մինչև RTD+ հզորացնում է RTD- ը: RTD- գետնին ավարտում է շրջանը:

PLC անալոգային քարտը փորձարկելու համար դուք պետք է միացնեք RTD- ը անալոգային քարտի մուտքին և քարտից գետնին arduino գետնին: (Համոզվեք, որ անջատեք փորձարկվող ալիքին կցված ցանկացած գործիք):

R5 և LED1 ՝ նշելով, որ համակարգը միացված է:

Կարգավորիչը սնվում է arduino VIN- ով (arduino- ն կարգավորիչում ներկառուցված է 5 վոլտ):

Arduino 5V քորոցը գնում է INA219 ՝ բորտ չիպը սնուցելու համար: INA219 GND arduino գրունտին:

Կաթսայի մաքրիչը մաքրեք RTD PIN1- ով, իսկ զամբյուղի կապը 3 -ը RTD կապիչ 2 -ին նմանեցնելու են PT100 կապը: (Փոխեք լարերը, եթե զարդանախշը ժամացույցի սլաքի ուղղությամբ պտտելը չի մեծացնում mA- ն):

Քայլ 2: Գործիքի ելքային փորձարկում

Գործիքի ելքը փորձարկելու համար անհրաժեշտ են լրացուցիչ մասեր, ինչպես շանթի դիմադրիչը: Սովորական 0.25W ռեզիստորները լավ կաշխատեն: Դուք կարող եք թողնել շունտի դիմադրիչը և ավելացնել երկրորդ INA219 գործիքի ելքը ստուգելու համար: Ինձ մնում էր միայն մեկը, դրա փոխարեն ես դիմադրություն էի օգտագործում:

Շունտի միջոցով փորձարկումը կարող է կատարվել միայն սարքի բացասական կողմում: Եթե դուք օգտագործում եք դրական կողմը, ձեր արդուինոյին կտրամադրեք թույլատրելիից ավելի քան 4 անգամ լարում և ծուխը դուրս կթողնի:

Գործողության բացասական մետաղալարով շարքով ավելացրեք շանթի դիմադրությունը: Սարքին ամենամոտ շանթի կողմը կդառնա arduino- ի դրական անալոգը: Էներգամատակարարմանը ամենամոտ գտնվող շանթի մյուս կողմը կդառնա անալոգային մուտքային շղթան ավարտող arduino հիմքը:

150 օհմ շունտի ռեզիստորը բացարձակ առավելագույնն է, որը պետք է օգտագործել արդուինո օգտագործելիս: Ռեզիստորն ունի լարման անկման գծային գծեր, որոնք հոսում են դրա միջով: Որքան մեծ է mA- ն, այնքան մեծ է լարումը:

20 մԱ -ով ընթացիկ # 150 օհմ*0.02A = 3 վոլտ դեպի arduino:

4 մԱ -ով ընթացիկ # 150 օհմ*0.004A = 0.6 վոլտ arduino- ին:

Այժմ դուք կարող եք ցանկանալ, որ լարումը մոտ լինի 5 վոլտին, որպեսզի կարողանաք մեզ տրամադրել arduino- ի ամբողջ ADC տիրույթը: (Լավ գաղափար չէ):

RTD- ի հզորությունը կարող է հասնել 30.2mA- ի (իմն ունի): 150 օմ*0.03A = 4.8 վոլտ Դա այնքան մոտ է, որքան ես կցանկանայի լինել:

Մեկ այլ կայք նշված է, որ օգտագործում է 250 օհմ դիմադրություն:

20 մԱ -ով ընթացիկ # 250 օհմ*0.02A = 5 վոլտ դեպի arduino- ին:

30mA- ով ընթացիկ # 250ohm*0.03A = 7.5 վոլտ arduino- ին:

Դուք ռիսկի եք դիմում այրել ձեր ADC- ն և arduino- ն:

Գործիքը դաշտում փորձարկելու համար վերցրեք ձեզ հետ 12 վոլտ մարտկոց և միացրեք այն մատակարարման աղբյուրին: Արտաքին էներգիայի աղբյուրի օգտագործումը չի ազդի PLC- ի ընթացիկ կարգավորման վրա:

Անալոգային մուտքային քարտը դաշտում փորձարկելու համար ձեզ հետ վերցրեք 12 վոլտ մարտկոց: Անջատեք գործիքը + միացումից: Միացրեք գետինը գործիքի գետնին և RTD- ը `անջատված գործիքի լարին:

Քայլ 3: Կալիբրացում

Կալիբրացիա
Կալիբրացիա

Ձեր շանթային դիմադրության ընթերցումը ճշգրտելու համար RTD- ը միացրեք շունտի անալոգին: Տեղադրեք ձեր զարդանախշը այնպես, որ գեներացված mA- ն լինի 4 մԱ: Եթե ձեր սարքի mA- ն հավասար չէ, ապա փոփոխեք ծածկագրի առաջին արժեքը 84 -րդ տողում: Այս արժեքը մեծացնելը կնվազեցնի mA- ի ընթերցումը:

Այնուհետև կարգավորեք ձեր զարդարված կաթսան ՝ արտադրելու 20 մԱ: Եթե ձեր սարքի mA- ն հավասար չէ, ապա փոփոխեք ծածկագրի երկրորդ արժեքը 84 -րդ տողում:

Այսպիսով, ձեր 4-20 մԱ-ն այժմ կդառնա 0.6-3 վոլտ (տեսական): Ավելի քան բավարար տիրույթ: Օգտագործելով eRCaGuy- ի գրադարանը, գերբարձր ընտրանքը ձեզ կտա ավելի լավ և կայուն ընթերցում:

Հուսով եմ, որ դուք կարդում եք սա: Սա իմ առաջին հրահանգն է, ուստի խնդրում եմ մի՛ հանգստացեք, եթե ես ինչ -որ տեղ սխալ եմ թույլ տվել կամ ինչ -որ բան բաց եմ թողել:

Այս նախագիծը, հավանաբար, դրա իրականացման լավագույն միջոցը չէ, բայց այն աշխատում է ինձ համար և հաճելի էր դա անել:

Որոշ գաղափարներ, որոնք ես ունեմ լրացուցիչ…

Տուփի ներսում զարդանախշը պտտելու համար ավելացրեք սերվո:

Ավելացրեք սեղմման կոճակներ `սերվոն ձախ կամ աջ պտտելու համար:

Կարգավորիչի ջեռուցիչին ավելացրեք թվային ջերմաստիճանի տվիչ `վտանգավոր ջերմության զգուշացման համար:

Քայլ 4. Arduino ծրագրավորում

#ներառում

// #include // Չմեկնաբանել, եթե օգտագործում եք LCD հերթափոխի գրանցամատյանով:

#ներառում

#ներառում

#ներառում

#ներառում

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Չմեկնաբանել, եթե դուք օգտագործում եք LCD հերթափոխի գրանցամատյանով:

// | | | _ ամրացման կապում

// | / _ ockամացույցի քորոց

// / _ Տվյալներ/Միացնել PIN- ը

բայթ bitsOfResolution = 12; // պատվիրված գերբարձրացված նմուշ

անստորագիր երկար numSamplesToAvg = 20; // ofԱՄԱՆԱԿԱՎՈՐ ԲԱՆԱՁԵՎՈՎ Նմուշների թիվը, որը ցանկանում եք վերցնել և միջինացնել

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

անստորագիր երկար նախորդ Միլիս = 0;

բոց shuntvoltage = 0.0; // INA219- ից

բոց ավտոբոլտաժ = 0.0; // INA219- ից

բոց ընթացիկ_մԱ = 0.0; // INA219- ից

բոց բեռնվածության լարում = 0.0; // INA219- ից

բոց arduinovoltage = 0.0; // Լարման հաշվարկ A0 կապից

Անստորագիր երկար A0analogReading = 0;

բայթ analogIn = A0;

բոց ma_mapped = 0.0; // Քարտեզի լարումը A0- ից 4-20mA

void setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t ընթացիկՀաճախականություն;

ina219. սկսել ();

ina219.setCalibration_32V_30mA (); // Փոփոխված գրադարան mA- ի վրա ավելի ճշգրիտ լինելու համար

lcd. սկսել (20, 4); // LCD- ի նախաստորագրում

lcd. հստակ ();

lcd. տուն (); // գնա տուն

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

ուշացում (2000);

lcd. հստակ ();

}

դատարկ շրջան ()

{

անստորագիր երկար հոսանք Millis = millis ();

const երկար ընդմիջում = 100;

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

Կարդացեք I2C սարքերը ընդմիջումներով և կատարեք որոշ հաշվարկներ

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

if (currentMillis - previousMillis> = ընդմիջում) {

նախորդ Միլիս = ընթացիկ Միլիս;

Ինտերվալ ();

}

Print_To_LCD (); // Ես, հավանաբար, կարիք չունեմ LCD- ն այսքան արագ թարմացնելու և կարող եմ տեղափոխվել միջակայքի ստորև ()

}

դատարկ

Ինտերվալ () {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

բեռնվածության լարման = (ավտոբուսային լարում + (շունտվոլտաժ / 1000)) + 0.71; // +0.71 է իմ դիոդի լարման անկումը

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0 անալոգային ընթերցում); // Հաշվարկված է մ. Վ

ma_mapped = քարտեզ (arduinovoltage, 752, 8459, 30, 220) / 10.0; // Քարտեզը չի կարող օգտագործել բոցեր: Քարտեզագրված արժեքի ետևում ավելացրեք 0 և բաժանեք 10 -ի ՝ բոց ընթերցում ստանալու համար:

// Լարման հաշվարկից քարտեզագրումը տալիս է ավելի կայուն ընթերցում, քան օգտագործելով հում adc ընթերցումը:

եթե (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Առանց բեռի INA219- ը հակված է կարդալ ստորև -0.01 -ին, իմը դա անում է:

{

ընթացիկ_մԱ = 0;

ավտոբուսային լարման = 0;

բեռնվածության լարում = 0;

shuntvoltage = 0;

}

}

դատարկ

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Առանց հոսանքի սա իմ mA ընթերցումն է, այնպես որ ես պարզապես հեռացրել եմ այն:

lcd.print (" * 4-20mA գեներատոր *");

}

ուրիշ {

lcd.print ("** Անալոգային փորձարկիչ **");

}

lcd.setCursor (0, 1);

lcd.print ("Սարքը.");

lcd.setCursor (10, 1);

եթե (ma_mapped <1.25) {

lcd.print («ոչ մի սարք»);

}

ուրիշ {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Ստեղծել.");

lcd.setCursor (10, 2);

lcd.print (ընթացիկ_մԱ);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Մատակարարում.");

lcd.setCursor (10, 3);

lcd.print (բեռի լարման);

lcd.print ("V");

}

Քայլ 5: Որոշ այլ լուսանկարներ

Որոշ այլ լուսանկարներ
Որոշ այլ լուսանկարներ

Ուժեղացուցիչ բարձրախոսների տերմինալ: LED, որը առաջնորդվում է ընթացիկ գեներատորի (RTD) կողմից: Անալոգային քարտի լարերը կփոխարինեն LED- ին:

Հեռավոր ձախ տերմինալը մատակարարման մուտքագրման համար է: Աջ կողմում գտնվող տերմինալները նախատեսված են գործիքի մուտքագրման համար:

Քայլ 6: Տեղադրումը

Տեղավորում
Տեղավորում

Կարծես ամեն ինչ տեղավորվում է: Սիլիկոն օգտագործեցի որոշ իրեր ժամանակավորապես միասին պահելու համար: Վերևի աջ կողմում զարդարված կաթսան սիլիկոնավորված է: Մի փոքր անցք նախապես փորված էր: Ես կարող եմ կարգավորել հոսանքի տուփի վերևից:

Քայլ 7: Պարզապես լուսանկարներ

Պարզապես Լուսանկարներ
Պարզապես Լուսանկարներ
Պարզապես Լուսանկարներ
Պարզապես Լուսանկարներ
Պարզապես Լուսանկարներ
Պարզապես Լուսանկարներ
Պարզապես Լուսանկարներ
Պարզապես Լուսանկարներ

Քայլ 8: Վերջնական բառեր

Ես փորձարկել եմ այս սարքի ելքը Allan Bradley PLC- ով: Արդյունքները շատ լավ էին: Ես ստացա ամբողջ տեսականին: Ես նաև փորձարկել եմ այս սարքը 4-20mA ճնշման տվիչով, որն ունի ներկառուցված LCD էկրան: Կրկին արդյունքները շատ լավ էին: Իմ ընթերցումները մի քանի տասնորդական թվով անջատվեցին:

Ես գրում եմ իմ arduino կոդը էջանիշերում: PLC- ում դրանք կոչվում են ենթակարգեր: Իմ համար հեշտացնում է վրիպազերծումը:

Կից ներկայացված են այդ ներդիրների տեքստային ֆայլերը:

Խորհուրդ ենք տալիս: