- Reikalingos medžiagos
- „Arduino DC“ elektroninės apkrovos grandinės schema
- PCB dizainas ir „Gerber File“
- Užsakydami savo PCB iš „AllPCB“
- „Arduino“ kodas reguliuojamai nuolatinei apkrovai
- Mūsų reguliuojamos nuolatinės apkrovos testavimas
Jei kada nors dirbote su baterijomis, SMPS grandinėmis ar kitomis maitinimo grandinėmis, dažnai galėjo atsitikti taip, kad jūs turite išbandyti savo energijos šaltinį įkeldami, kad patikrintumėte, kaip jis veikia esant skirtingoms apkrovos sąlygoms. Įrenginys, kuris paprastai naudojamas tokio tipo bandymams atlikti, vadinamas nuolatinės srovės nuolatine apkrova, kuri leidžia mums reguliuoti jūsų energijos šaltinio išėjimo srovę ir tada ją išlaikyti pastovią, kol ji vėl pakoreguojama. Šioje pamokoje sužinosime, kaip sukurti savo pačių reguliuojamą elektroninę apkrovą naudojant „Arduino“, kuri gali paimti maksimalią 24 V įėjimo įtampą ir nutekėti srovę iki 5 A. Šiam projektui panaudojome PCB plokštes, kurias gamina Kinijos profesionalus PCB gamybos ir surinkimo paslaugų teikėjas AllPCB.
Ankstesnėje įtampos valdomo srovės šaltinio pamokoje paaiškinome, kaip naudoti operacinį stiprintuvą su MOSFET ir naudoti įtampos valdomą srovės šaltinio grandinę. Tačiau šioje pamokoje mes pritaikysime tą grandinę ir sukursime skaitmeniniu būdu valdomą srovės šaltinį. Akivaizdu, kad skaitmeniniu būdu valdomam srovės šaltiniui reikalinga skaitmeninė grandinė, o tam tikslui naudojamas „Arduino NANO“. „Arduino NANO“ suteiks reikalingus nuolatinės srovės apkrovos valdiklius.
Grandinė susideda iš trijų dalių. Pirmoji dalis yra „Arduino Nano“ sekcija, antroji dalis yra skaitmeninis į analoginį keitiklį, o trečioji dalis yra gryna analoginė grandinė, kurioje naudojamas dvigubas operacinis stiprintuvas vienoje pakuotėje, kuris valdys apkrovos sekciją. Šis projektas yra įkvėptas įrašo apie „Arduino“, tačiau grandinė pakeista taip, kad būtų mažiau sudėtinga, o pagrindinės savybės visiems ją sukurti.
Mūsų elektroninė apkrova skirta šiems įvesties ir išvesties skyriams.
- Du įvesties jungikliai, skirti padidinti ir sumažinti apkrovą.
- Skystųjų kristalų ekranas, kuriame bus rodoma nustatyta apkrova, faktinė apkrova ir apkrovos įtampa.
- Didžiausia apkrovos srovė yra apribota iki 5A.
- Didžiausia apkrovos įėjimo įtampa yra 24 V.
Reikalingos medžiagos
Toliau išvardyti komponentai, reikalingi nuolatinei nuolatinei elektroninei apkrovai sukurti.
- Arduino nano
- 16x2 simbolių LCD ekranas
- Dviejų statinių lizdas
- „Mosfet irf540n“
- McP4921
- Lm358
- 5 vatų šuntinis rezistorius.1 omas
- 1 tūkst
- 10k - 6vnt
- Radiatorius
- .1uF 50v
- 2k - 2vnt
„Arduino DC“ elektroninės apkrovos grandinės schema
Žemiau pateiktoje schemoje operacinis stiprintuvas turi dvi dalis. Vienas iš jų yra valdyti MOSFET, o kitas - sustiprinti juntamą srovę. Taip pat galite patikrinti vaizdo įrašą šio puslapio apačioje, kuriame paaiškinamas visas grandinės veikimas. Pirmame skyriuje yra R12, R13 ir MOSFET. R12 naudojamas sumažinti grįžtamojo ryšio skyriaus apkrovos efektą, o R13 naudojamas kaip „Mosfet“ vartų rezistorius.
Papildomi du rezistoriai R8 ir R9 naudojami tam, kad būtų galima suvokti maitinimo šaltinio maitinimo įtampą, kurią įtrauks ši manekeno apkrova. Pagal įtampos daliklio taisyklę šie du rezistoriai palaiko ne daugiau kaip 24 V įtampą. Daugiau nei 24 V bus sukurta įtampa, kuri nebus tinkama „Arduino“ kaiščiams. Taigi būkite atsargūs, kad nejunkite maitinimo šaltinio, kurio išėjimo įtampa yra didesnė nei 24 V.
Rezistorius R7 yra tikrasis apkrovos rezistorius. Tai 5 vatų,.1 Ohmo rezistorius. Pagal galios įstatymą, jis palaikys maksimalų 7A (P = I 2 R), tačiau saugiai kalbant, protingiau apriboti maksimalią apkrovos srovę 5A. Todėl šiuo metu manekeno apkrova gali nustatyti didžiausią 24V, 5A apkrovą.
Kitas stiprintuvo skyrius yra sukonfigūruotas kaip stiprinimo stiprintuvas. Tai suteiks 6x padidėjimą. Srovės srauto metu pasirodys įtampos kritimas. Pavyzdžiui, kai 5A srovė teka per rezistorių, įtampos kritimas bus.5V skersai.1 omo šunto rezistoriaus (V = I x R) pagal omų dėsnį. Neinvertuojantis stiprintuvas sustiprins jį iki x6, todėl 3V bus išėjimas iš antrosios stiprintuvo dalies. Šią išvestį pajus „Arduino nano“ analoginis įvesties kaištis ir bus apskaičiuota srovė.
Pirmoji stiprintuvo dalis yra sukonfigūruota kaip įtampos sekimo grandinė, kuri valdys MOSFET pagal įėjimo įtampą ir gaus norimą grįžtamąją įtampą dėl apkrovos srovės, tekančios per šunto rezistorių.
MCP4921 yra skaitmeninis į analoginį keitiklis. DAC naudoja SPI ryšio protokolą, kad gautų skaitmeninius duomenis iš bet kurio mikrovaldiklio bloko ir teiktų analoginę įtampos išvestį, atsižvelgiant į tai. Ši įtampa yra op-amp įvestis. Anksčiau mes taip pat sužinojome, kaip naudoti šį MCP4921 DAC su PIC.
Kitoje pusėje yra „Arduino Nano“, kuris skaitmeninius duomenis perduos DAC per SPI protokolą ir valdys apkrovą, taip pat rodydamas duomenis 16x2 simbolių ekrane. Naudojami du papildomi dalykai, tai yra mažinimo ir didinimo mygtukas. Užuot prisijungęs prie skaitmeninio kaiščio, jis yra prijungtas prie analoginių kaiščių. Todėl galima jį pakeisti kito tipo jungikliais, pvz., Slankikliu arba analoginiu kodatoriumi. Be to, modifikuojant kodą, galima pateikti neapdorotus analoginius duomenis, kad būtų galima valdyti apkrovą. Tai taip pat leidžia išvengti jungiklio atšaukimo problemos.
Galiausiai, padidindamas apkrovą, „Arduino nano“ pateiks apkrovos duomenis DAC skaitmeniniu formatu, DAC pateiks analoginius duomenis operaciniam stiprintuvui, o operacinis stiprintuvas valdys MOSFET pagal operacinio stiprintuvo įėjimo įtampą.. Galiausiai, atsižvelgiant į apkrovos srovės srautą per šunto rezistorių, atsiras įtampos kritimas, kurį dar labiau sustiprins antrasis LM358 kanalas ir pasieks „Arduino nano“. Tai bus rodoma simbolių ekrane. Tas pats nutiks, kai vartotojas paspaus mažinimo mygtuką.
PCB dizainas ir „Gerber File“
Kadangi šios grandinės srovės kelias yra didelis, protingesnis pasirinkimas yra naudoti tinkamą PCB projektavimo taktiką pašalinant nepageidaujamus gedimo atvejus. Taigi šiai nuolatinei apkrovai yra sukurtas PCB. Kurdamas savo PCB naudojau „Eagle PCB Design Software“. Galite pasirinkti bet kurią PCB Cad programinę įrangą. Galutinė suprojektuota CAD programinės įrangos plokštė parodyta toliau pateiktame paveikslėlyje,
Svarbus veiksnys, kurį reikia pastebėti projektuojant šią plokštę, yra storos galios plokštumos naudojimas tinkamam srovės srautui visoje grandinėje. Taip pat yra antžeminės siūlės VIAS (atsitiktinės vijos žemės plokštumoje), kurios naudojamos tinkamam žemės srautui tiek sluoksniuose į viršų, tiek į apačią.
Taip pat galite atsisiųsti šios PCB „Gerber“ failą iš toliau pateiktos nuorodos ir naudoti jį gamybai.
- Atsisiųskite reguliuojamą elektroninę nuolatinės srovės įkrovos failą
Užsakydami savo PCB iš „AllPCB“
Kai būsite pasirengę „Gerber“ failui, galėsite jį naudoti, kad pagamintumėte savo PCB. Kalbant apie tai, iškyla šio straipsnio rėmėjas ALLPCB, kuris yra žinomas dėl savo aukštos kokybės PCB ir itin greito pristatymo. Be PCB gamybos, AllPCB taip pat teikiaPCB surinkimas ir komponentų tiekimas.
Norėdami gauti PCB užsakymą iš jų, apsilankykite allpcb.com ir prisiregistravimas. Tada pagrindiniame puslapyje įveskite savo PCB matmenis ir reikiamą kiekį, kaip parodyta žemiau. Tada spustelėkite „Cituoti dabar“.
Dabar galite pakeisti kitus savo PCB parametrus, pvz., Sluoksnių skaičių, kaukės spalvą, storį ir kt. Dešinėje pusėje galite pasirinkti savo šalį ir pageidaujamą pristatymo parinktį. Tai parodys jūsų atlikimo laiką ir bendrą mokėtiną sumą. Aš pasirinkau DHL ir mano bendra suma yra 26 USD, tačiau jei jūs pirmą kartą esate klientas, kasoje kainos sumažės. Tada spustelėkite Pridėti į krepšelį ir tada patikrinkite dabar.
Dabar galite spustelėti „Gerber“ failo įkėlimą spustelėdami „Įkelti„ Gerber “, tada spustelėkite pirkti.
Kitame puslapyje galite įvesti pristatymo adresą ir patikrinti galutinę kainą, kurią turite sumokėti už savo PCB. Tada galite peržiūrėti savo užsakymą ir tada spustelėkite „Pateikti“, kad atliktumėte mokėjimą.
Kai jūsų užsakymas bus patvirtintas, galėsite ramiai atsipalaiduoti ir perduoti savo PCB prie jūsų namų slenksčio. Gavau užsakymą po kelių dienų, o tada pakuotė buvo tvarkinga, kaip parodyta žemiau.
PCB kokybė buvo gera, kaip visada, kaip matote patys toliau pateiktose nuotraukose. Viršutinė ir apatinė lentos pusė parodyta žemiau.
Gavę lentą, galite tęsti visų komponentų surinkimą. Mano baigta lenta atrodo maždaug taip, kaip parodyta žemiau.
Tada galite įkelti kodą ir įjungti modulį, kad patikrintumėte, kaip jis veikia. Visas šio projekto kodas pateiktas šio puslapio apačioje. Kodas paaiškinamas taip.
„Arduino“ kodas reguliuojamai nuolatinei apkrovai
Kodas yra gana paprastas. Iš pradžių mes įtraukėme SPI ir LCD antraštės failus, taip pat nustatėme didžiausią loginę įtampą, lusto pasirinkimo kaiščius ir kt.
# įtraukti
Šis skyrius susideda iš būtinų programos srautų deklaracijų iš sveikųjų skaičių ir kintamųjų. Be to, mes nustatėme asocijuotų periferinių įrenginių kaiščius su „Arduino Nano“.
const int slaveSelectPin = 10; // Chip select pin int number = 0; int padidėjimas = A2; // Padidinti kaiščio int sumažėjimą = A3; // mažinti pin int current_sense = A0; // srovės jutiklio kaištis int voltage_sense = A1; // įtampos jutimo kaiščio int būsena1 = 0; int būsena2 = 0; int Nustatyti = 0; plūduriuojantis voltas = 0; plūdės apkrova_ srovė = 0,0; plūdės apkrova_įtampa = 0,0; plūdinė srovė = 0,0; plūdės įtampa = 0,0; „LiquidCrystal“ lcd (7, 6, 5, 4, 3, 2); // LCD kaiščiai
Tai naudojama nustatant LCD ir SPI. Taip pat čia nustatytos kaiščių kryptys.
negaliojanti sąranka () { pinMode (slaveSelectPin, OUTPUT); pinMode (padidinti, INPUT); pinMode (sumažėjimas, INPUT); pinMode (current_sense, INPUT); pinMode (įtampos pojūtis, INPUT); // inicijuoti SPI: SPI.begin (); // nustatykite LCD stulpelių ir eilučių skaičių: lcd.begin (16, 2); // Spausdinkite pranešimą į skystųjų kristalų ekraną. lcd.print („Skaitmeninė apkrova“); lcd.setCursor (0, 1); lcd.print („Grandinės santrauka“); vėlavimas (2000); }
Jis naudojamas DAC reikšmei konvertuoti.
void convert_DAC (nepasirašyta int reikšmė) { / * Žingsnio dydis = 2 ^ n, Todėl 12bit 2 ^ 12 = 4096 5V nuorodai žingsnis bus 5/4095 = 0,0012210012210012V arba 1mV (apytiksliai) * / nepasirašytas int konteineris; nepasirašytas tarp MSB; nepasirašytas int LSB; / * Žingsnis: 1, išsaugoję 12 bitų duomenis į konteinerį Tarkime, kad duomenys yra 4095, dvejetainiu 1111 1111 1111 * / container = reikšmė; / * Žingsnis: 2 8 bitų manekeno sukūrimas. Taigi, padalijant 256, viršutiniai 4 bitai užfiksuojami LSB LSB = 0000 1111 * / LSB = container / 256; / * Žingsnis: 3 Siunčiama konfigūracija perforuojant 4 bitų duomenis. LSB = 0011 0000 ARBA 0000 1111. Rezultatas yra 0011 1111 * / LSB = (0x30) - LSB; / * Žingsnis: 4 konteineris vis tiek turi 21 bitų vertę. Ištraukiant apatinius 8 bitus. 1111 1111 IR 1111 1111 1111. Rezultatas yra 1111 1111, kuris yra MSB * / MSB = 0xFF & konteineris; / * Žingsnis: 4 Siunčiant 16 bitų duomenis padalijant į du baitus. * / digitalWrite (slaveSelectPin, LOW); vėlavimas (100); SPI.transfer (LSB); SPI.transfer (MSB); vėlavimas (100); // paimkite aukštą SS kaištį, kad pasirinktumėte mikroschemą: digitalWrite (slaveSelectPin, HIGH); }
Šis skyrius naudojamas su dabartinėmis jutimo operacijomis.
plūdė skaitymo srovė (negaliojanti) { apkrova_ srovė = 0; for (int a = 0; a <vidurkis; a ++) { load_current = load_current + analogRead (current_sense); } apkrovos srovė = apkrovos srovė / vidurkis; apkrovos_ srovė = (apkrovos_ srovė * MAX_VOLT) / 1024; load_current = (apkrovos_ srovė / opamp_gain) / apkrovos_resistorius; grįžti apkrovos_ srovė; }
Tai naudojama apkrovos įtampai nuskaityti.
plūdės skaitymo įtampa (tuštuma) { apkrova_įtampa = 0; už (int a = 0; a <vidurkis; a ++) { apkrovos_įtampa = apkrovos_įtampa + analogRead (įtampos_prasmė); } apkrovos įtampa = apkrovos įtampa / vidutinė; apkrovos įtampa = ((apkrovos įtampa * MAX_VOLT) / 1024,0) * 6; grįžti apkrova_įtampa; }
Tai yra tikroji kilpa. Čia išmatuojami perjungimo žingsniai ir duomenys siunčiami į DAC. Perdavus duomenis, matuojamas tikrasis srovės srautas ir apkrovos įtampa. Abi vertės taip pat galutinai atspausdintos LCD ekrane.
void loop () { būsena1 = analogasRead (padidėjimas); jei (būsena1> 500) { vėlavimas (50); būsena1 = analogasRead (padidėjimas); jei (būsena1> 500) { volt = voltas + 0,02; } } būsena2 = analogasRead (sumažėjimas); jei (būsena2> 500) { vėlavimas (50); būsena2 = analogasRead (sumažėjimas); jei (būsena2> 500) { jei (voltas == 0) { voltas = 0; } dar { volt = voltas-0,02; } } } skaičius = voltas / 0,0012210012210012; konvertuoti_DAC (skaičius); įtampa = skaitymo įtampa (); srovė = skaitymo srovė (); lcd.setCursor (0, 0); lcd.print („Nustatyta vertė“); lcd.print ("="); Nustatyti = (voltas / 2) * 10000; lcd.print (rinkinys); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("Aš"); lcd.print ("="); lcd.print (dabartinis); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (įtampa); lcd.print ("V"); // lcd.print (apkrova_įtampa); //lcd.print("mA "); // delsa (1000); //lcd.clear (); }
Mūsų reguliuojamos nuolatinės apkrovos testavimas
Skaitmeninė apkrovos grandinė lituojama ir įjungiama naudojant 12 V maitinimo šaltinį. Maitinimo šaltinio pusėje naudojau savo 7,4 V ličio bateriją ir prijungiau spaustuko matuoklį, kad patikrinčiau, kaip jis veikia. Kaip matote, kai nustatyta srovė yra 300mA, grandinė iš akumuliatoriaus ima 300mA, kuris taip pat matuojamas spaustuko matuokliu kaip 310mA.
Visą grandinės veikimą galima rasti žemiau esančiame vaizdo įraše. Tikiuosi, kad supratote projektą ir patiko kurti ką nors naudingo. Jei turite klausimų, palikite juos komentarų skiltyje arba naudokitės forumais.