Satura rādītājs:

4-20ma ģenerators/testeris, izmantojot Arduino: 8 soļi
4-20ma ģenerators/testeris, izmantojot Arduino: 8 soļi

Video: 4-20ma ģenerators/testeris, izmantojot Arduino: 8 soļi

Video: 4-20ma ģenerators/testeris, izmantojot Arduino: 8 soļi
Video: loop 4 20mA 2024, Jūnijs
Anonim
4-20ma ģenerators/testeris, izmantojot Arduino
4-20ma ģenerators/testeris, izmantojot Arduino

4-20mA ģeneratori ir pieejami ebay, bet man vienam patīk DIY lietu daļa un to detaļu izmantošana, kuras man ir apkārt.

Es gribēju pārbaudīt mūsu PLC analogās ieejas, lai pārbaudītu mūsu scada rādījumus un pārbaudītu 4-20 mA instrumentu izvadi. Ir daudz slodžu strāvas uz sprieguma pārveidotājiem un sprieguma uz strāvas pārveidotājiem arduino vietnē ebay, tomēr tiem nepieciešama kalibrēšana. Es varu to izmantot, lai kalibrētu jebkuru no šiem ebay atrodamajiem pārveidotājiem un tamlīdzīgiem.

Nolēmu, ka uztaisīšu ģeneratoru un testeri. Šobrīd tas vēl ir nepabeigts darbs un prototips.

Man bija veca 2.1 skaņas sistēma, kas netika izmantota (mazi skaļruņi). Tāpēc es izmantoju vienu no skaļruņu kastēm kā korpusu. Man bija arī pastiprinātājs, kas nomira zibens dēļ, es noņēmu skaļruņa spaili no šī pastiprinātāja, lai būtu vieglāk izveidot savienojumu. Es plānoju nākotnē izgatavot PCB un labāku korpusu.

Piegādes:

Detaļu saraksts.

LCD // 20x4 (pielāgojiet kodu, ja jūsu izmērs ir mazāks)

LM7808 // 8 voltu regulators

LED // Jebkura veida vai izmēra

LED rezistors // Piemērots LED tipam un 8 voltiem

100 omu rezistors + 47 omu rezistors virknē // Tiks izmantots kā šunta rezistors

10K rezistors // Arduino analogs aizsardzībā pret augstspriegumu

22K rezistors // Lai apturētu A0 peldēšanu

Trimpot 100 omi + 47 omi rezistors virknē // PT100 simulators

35 voltu kondensators // Es izmantoju 470uF, tikai lai samazinātu barošanas sprieguma svārstības

RTD (PT100 devējs) // Spānam nav nozīmes (diapazons)

DIODE (polaritātes aizsardzībai)

INA219

Arduino

1. darbība:

Attēls
Attēls

Ievērojot shēmu, jums vajadzētu sākt, kur pievienot detaļas un savienot tās.

LM7808 pieļauj maksimāli 25 voltu ieeju, kas ir labi PLC sistēmām, parasti tās izmanto 24 voltu barošanas avotus. Pievienojiet regulatoram radiatoru un nelietojiet to ilgu laiku. Nokrītot 16 voltiem, regulators rada daudz siltuma.

Ieejas padeve baro regulatoru un savienojas ar INA219 VIN, šajā konfigurācijā INA219 arī varēs izmērīt pareizo barošanas spriegumu, atskaitot sprieguma kritumu no diodes. Jums vajadzētu izmērīt diodes sprieguma kritumu un pievienot to kodam, lai iegūtu pareizu barošanas sprieguma rādījumu.

No INA219 VOUT līdz RTD+ ieslēdz RTD. RTD- zemei pabeidz ķēdi.

Lai pārbaudītu PLC analogo karti, pievienojiet RTD- analogās kartes ieejai un zemi no kartes līdz arduino zemei. (Noteikti atvienojiet visus instrumentus, kas pievienoti pārbaudāmajam kanālam).

R5 un LED1, kas norāda, ka sistēma ir ieslēgta.

Regulators tiek ievadīts arduino VIN (arduino ir iebūvēts regulators līdz 5 voltiem).

Arduino 5V tapa iet uz INA219, lai darbinātu borta mikroshēmu. INA219 GND uz arduino zemi.

Apgriešanas katla tīrītāju līdz RTD PIN1 un apgriešanas trauka tapu 3 līdz RTD tapai 2 simulēs PT100 savienojumu. (Nomainiet vadus, ja apdares trauka pagriešana pulksteņrādītāja virzienā nepalielina mA).

2. darbība. Instrumentu izvades pārbaude

Lai pārbaudītu instrumenta izeju, ir nepieciešamas papildu detaļas, piemēram, šunta rezistors. Parastie 0,25 W rezistori darīs darbu lieliski. Jūs varat atstāt šunta rezistoru un pievienot otru INA219, lai pārbaudītu instrumenta izvadi. Man palika tikai viens, tāpēc es izmantoju rezistoru.

Testēšanu, izmantojot šunti, var veikt tikai ierīces negatīvajā pusē. Ja izmantojat pozitīvo pusi, jūs piegādāsit arduino vairāk nekā 4 reizes lielāku pieļaujamo spriegumu un izlaidīsiet dūmus.

Pievienojiet šunta rezistoru virknē ar instrumenta negatīvo vadu. Šunta puse, kas atrodas vistuvāk ierīcei, kļūs par arduino pozitīvo analogu. Šunta otra puse, kas ir vistuvāk barošanas avotam, kļūs par arduino zemi, kas pabeidz analogās ieejas ķēdi.

150 omu šunta rezistors ir absolūtais maksimums, kas jāizmanto, izmantojot arduino. Rezistoram ir sprieguma kritums lineāri pret mA, kas plūst caur to. Jo lielāks mA, jo lielāks spriegums.

Pie 20mA strāvas # 150ohm*0,02A = 3 volti uz arduino.

Pie 4mA strāvas # 150ohm*0,004A = 0,6 volti uz arduino.

Tagad jūs varētu vēlēties, lai spriegums būtu tuvāk 5 voltiem, lai jūs varētu mums izmantot visu arduino ADC diapazonu. (Nav laba ideja).

PTA var sasniegt 30,2 mA izvadi (manējais). 150 omi*0,03A = 4,8 volti. Tas ir tik tuvu, kā es gribētu būt.

Cita vietne norādīja, ka jāizmanto 250 omu rezistors.

Pie 20mA strāvas # 250ohm*0,02A = 5 volti uz arduino.

Pie 30mA strāvas # 250ohm*0,03A = 7,5 volti uz arduino.

Jūs riskējat sadedzināt savu ADC un arduino.

Lai pārbaudītu instrumentu uz lauka, ņemiet līdzi 12 voltu akumulatoru un pievienojiet to barošanas ieejai. Ārēja barošanas avota izmantošana neietekmēs pašreizējo PLC iestatījumu.

Lai pārbaudītu analogo ievades karti laukā, ņemiet līdzi 12 voltu akumulatoru. Atvienojiet instrumentu + no ķēdes. Pievienojiet zemējumu instrumenta zemē un RTD- atvienotajam instrumenta vadam.

3. solis: kalibrēšana

Kalibrēšana
Kalibrēšana

Lai kalibrētu šunta rezistora rādījumus, pievienojiet RTD- šunta analogo ievadi. Iestatiet apdares podu tā, lai ģenerētā mA būtu 4 mA. Ja jūsu ierīces mA nav vienāds, mainiet 84. rindas koda pirmo vērtību. Palielinot šo vērtību, samazinās mA rādījums.

Pēc tam iestatiet apdares podu, lai ģenerētu 20 mA. Ja jūsu ierīces mA nav vienāds, mainiet otro vērtību kodā 84. rindā.

Tātad jūsu 4-20 mA tagad kļūs par 0,6-3 volti (teorētiski). Diapazons vairāk nekā pietiekams. Izmantojot bibliotēku no eRCaGuy, pārmērīga paraugu ņemšana nodrošinās labāku un stabilāku rādījumu.

Cerams, ka izlasījāt šo. Šī ir mana pirmā pamācība, tāpēc, lūdzu, mierīgi, ja esmu kaut kur pieļāvis kļūdu vai kaut ko izlaidis.

Šis projekts, iespējams, nav labākais veids, kā to īstenot, taču man tas darbojas un bija jautri to darīt.

Dažas idejas man ir papildus…

Pievienojiet servo, lai pagrieztu apdares podu kastes iekšpusē.

Pievienojiet spiedpogas, lai pagrieztu servo pa kreisi vai pa labi.

Pievienojiet regulatora radiatoram digitālo temperatūras sensoru, lai brīdinātu par bīstamu karstumu.

4. solis: Arduino programmēšana

#iekļaut

// #include // Uncomment, ja izmantojat LCD ar maiņu reģistru.

#iekļaut

#iekļaut

#iekļaut

#iekļaut

// A4 = (SDA)

A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Komentārs, ja izmantojat LCD ar maiņu reģistru.

// | | | _ fiksatora tapa

// | / _ Pulksteņa tapa

// / _ Data/Enable Pin

baitu bitiOfResolution = 12; // komandēja izšķirtspējas pārsniegumu

neparakstīts garš numSamplesToAvg = 20; // to paraugu skaits, kurus PĀRBAUDES PARĀDĪTĀ REZOLŪCIJĀ vēlaties ņemt, un vidējais

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

neparakstīts ilgi iepriekšMillis = 0;

pludiņa šunta spriegums = 0,0; // No INA219

pludiņa kopnes spriegums = 0,0; // No INA219

pludiņa strāva_mA = 0,0; // No INA219

pludiņa slodzes spriegums = 0,0; // No INA219

pludiņa arduinovoltage = 0.0; // Sprieguma aprēķins no A0 tapas

Neparakstīts garš A0analogReading = 0;

baitu analogIn = A0;

float ma_mapped = 0.0; // Kartes spriegums no A0 līdz 4-20mA

void setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Modificēta bibliotēka, lai iegūtu lielāku precizitāti mA

lcd. sākums (20, 4); // inicializēt LCD

lcd.clear ();

lcd.home (); // ej mājās

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

kavēšanās (2000);

lcd.clear ();

}

tukša cilpa ()

{

neparakstīta garā strāvaMillis = millis ();

const ilgs intervāls = 100;

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

Intervālos lasiet I2C ierīces un veiciet dažus aprēķinus

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

if (currentMillis - previousMillis> = intervāls) {

previousMillis = currentMillis;

Intervāls ();

}

Print_To_LCD (); // Man, iespējams, nav tik ātri jāatjaunina LCD, un to var pārvietot uz zemāku intervālu ()

}

spēkā neesošs

Intervāls () {

šunta spriegums = ina219.getShuntVoltage_mV ();

kopnes spriegums = ina219.getBusVoltage_V ();

pašreizējais_mA = ina219.getCurrent_mA ();

slodzes spriegums = (kopnes spriegums + (šunta spriegums / 1000)) + 0,71; // +0,71 ir mans diodes sprieguma kritums

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5,0 * A0analogReading); // Aprēķināts līdz mV

ma_mapped = karte (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Kartē nevar izmantot pludiņus. Pievienojiet 0 aiz kartētās vērtības un daliet ar 10, lai iegūtu pludiņa nolasījumu.

// Kartēšana no sprieguma aprēķina nodrošina stabilāku rādījumu, nekā izmantojot neapstrādātu adc nolasījumu.

ja (šuntēšanas spriegums> = -0,10 && šunta spriegums <= -0,01) // Bez slodzes INA219 mēdz lasīt zemāk par -0,01, arī manējais.

{

strāvas_mA = 0;

kopnes spriegums = 0;

slodzes spriegums = 0;

šunta spriegums = 0;

}

}

spēkā neesošs

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Ja nav strāvas, tas ir mans mA rādījums, tāpēc es to vienkārši aizbāzu.

lcd.print (" * 4-20mA ģenerators *");

}

cits {

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

}

lcd.setCursor (0, 1);

lcd.print ("Ierīce:");

lcd.setCursor (10, 1);

ja (kartēts <1,25) {

lcd.print ("nav ierīces");

}

cits {

lcd.print (kartēts);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Ģenerēt:");

lcd.setCursor (10, 2);

lcd.print (current_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Piegāde:");

lcd.setCursor (10, 3);

lcd.print (slodzes spriegums);

lcd.print ("V");

}

5. darbība. Vēl daži fotoattēli

Vēl dažas fotogrāfijas
Vēl dažas fotogrāfijas

Pastiprinātāja skaļruņu terminālis. LED, ko darbina strāvas ģenerators (RTD). Analogās kartes vadi nomainīs LED.

Terminālis kreisajā pusē ir paredzēts barošanas ievadam. Termināļi labajā pusē ir paredzēti instrumentu ievadīšanai.

6. solis: uzstādīšana

Iekļūšana
Iekļūšana

Viss it kā der. Es izmantoju silikonu, lai īslaicīgi turētu kopā dažas lietas. Apdares pods ir silikonēts augšējā labajā stūrī. Iepriekš tika izurbts neliels caurums. Es varu pielāgot strāvu no kastes augšdaļas.

7. solis: tikai fotoattēli

Tikai fotogrāfijas
Tikai fotogrāfijas
Tikai fotogrāfijas
Tikai fotogrāfijas
Tikai fotogrāfijas
Tikai fotogrāfijas
Tikai fotogrāfijas
Tikai fotogrāfijas

8. solis: beigu vārdi

Esmu pārbaudījis šīs ierīces izvadi ar Allan Bradley PLC. Rezultāti bija ļoti labi. Man ir viss diapazons. Esmu arī pārbaudījis šo ierīci ar 4-20 mA spiediena sensoru, kuram ir iebūvēts LCD displejs. Atkal rezultāti bija ļoti labi. Manus rādījumus pārtrauca pāris cipari aiz komata.

Es rakstīju savu arduino kodu cilnēs. PLC tos sauc par apakšprogrammām. Man atvieglo atkļūdošanu.

Pievienoti šo cilņu teksta faili.

Ieteicams: