- Szükséges anyagok
- Arduino DC elektronikus terhelési áramkör diagram
- NYÁK tervezés és Gerber fájl
- A PCB megrendelése az AllPCB-től
- Arduino kód az állítható DC terheléshez
- Állítható DC terhelés tesztelése
Ha valaha dolgozott akkumulátorokkal, SMPS áramkörökkel vagy más áramellátási áramkörökkel, akkor gyakran előfordult, hogy tesztelnie kell az áramforrást töltéssel, hogy ellenőrizze a teljesítményét különböző terhelési körülmények között. Az ilyen típusú tesztek elvégzésére általánosan használt eszközt állandó áramú egyenáramú terhelésnek nevezzük, amely lehetővé teszi számunkra, hogy beállítsuk az áramforrás kimeneti áramát, majd állandó állapotban tartsuk, amíg a beállítás ismét megváltozik. Ebben az oktatóanyagban megtanuljuk, hogyan építsük fel saját, állítható elektronikus terhelésünket az Arduino segítségével, amely maximum 24 V bemeneti feszültséget képes felvenni, és akár 5A magas áramot is elvezethet. Ehhez a projekthez olyan NYÁK-alaplapokat használtunk, amelyeket az AllPCB, a porcelán alapú professzionális NYÁK-gyártási és összeszerelési szolgáltató gyárt.
Korábbi feszültségvezérelt áramforrás-bemutatónkban elmagyaráztuk, hogyan kell használni egy operációs erősítőt egy MOSFET-mel, és hogyan lehet használni a feszültség által vezérelt áramforrás áramkört. De ebben az oktatóanyagban ezt az áramkört alkalmazzuk, és digitálisan vezérelt áramforrást készítünk. Nyilvánvaló, hogy egy digitálisan vezérelt áramforráshoz digitális áramkörre van szükség, és a cél érdekében Arduino NANO-t használnak. Az Arduino NANO biztosítja az egyenáramú terhelés szükséges vezérléseit.
Az áramkör három részből áll. Az első rész az Arduino Nano szakasz, a második rész a digitális-analóg átalakító, a harmadik rész pedig egy tiszta analóg áramkör, ahol egyetlen csomagban kettős műveleti erősítőt használnak, amely vezérli a terhelési részt. Ezt a projektet egy Arduino-bejegyzés ihlette, azonban az áramkört kevésbé bonyolultabbá változtatják, alapvető funkciókkal mindenki számára, hogy felépítsék.
Elektronikus terhelésünket úgy alakítottuk ki, hogy a következő bemeneti és kimeneti szakaszokkal rendelkezzen.
- Két bemeneti kapcsoló a terhelés növeléséhez és csökkentéséhez.
- LCD, amely megjeleníti a beállított terhelést, a tényleges terhelést és a terhelési feszültséget.
- A maximális terhelési áram 5A-ra korlátozódik.
- A terhelés maximális bemeneti feszültsége 24V.
Szükséges anyagok
Az egyenáramú elektronikus terhelés felépítéséhez szükséges alkatrészeket az alábbiakban soroljuk fel.
- Arduino nano
- 16x2 karakteres LCD
- Két hordós aljzat
- Mosfet irf540n
- Mcp4921
- Lm358
- 5 wattos söntellenállás, 1 ohm
- 1k
- 10k - 6db
- Hűtőborda
- .1uF 50v
- 2k - 2db
Arduino DC elektronikus terhelési áramkör diagram
Az alábbi sematikus ábrán a műveleti erősítőnek két szakasza van. Az egyik a MOSFET vezérlése, a másik pedig az érzékelt áram erősítése. Az oldal alján található videót is ellenőrizheti, amely elmagyarázza az áramkör teljes működését. Az első szakasz R12, R13 és MOSFET. Az R12-et a visszacsatolási szakasz terhelésének csökkentésére, az R13-t pedig a Mosfet kapu ellenállására használják.
További két R8 és R9 ellenállást használnak a tápfeszültség tápfeszültségének érzékelésére, amelyet ez a hamis terhelés megterhel. A feszültségosztó szabálya szerint ez a két ellenállás maximum 24 V-ot támogat. Több mint 24 V feszültséget fog termelni, amely nem lesz megfelelő az Arduino csapokhoz. Ezért ügyeljen arra, hogy ne csatlakoztasson 24V-nál nagyobb kimeneti feszültségű tápegységet.
Az R7 ellenállás itt a tényleges terhelési ellenállás. Ez egy 5 Wattos,.1 Ohmos ellenállás. A teljesítménytörvény szerint maximálisan 7A-t fog támogatni (P = I 2 R), de a biztonság kedvéért okosabb korlátozni az 5A maximális terhelési áramot. Ezért jelenleg ez a próbabábu terhelés maximális 24V, 5A terhelést állíthat be.
Egy másik része az erősítő van kialakítva erősítőt. 6-szoros nyereséget biztosít. Az áramlás során feszültségesés jelenik meg. Például, amikor az ellenálláson 5A áram folyik, a feszültségesés 0,5 V lesz a.1 Ohm shunt ellenálláson (V = I x R) az ohmos törvény szerint. A nem invertáló erősítő x6-ra erősíti, ezért 3 V lesz az erősítő második részének kimenete. Ezt a kimenetet az Arduino nano analóg bemeneti tű érzékeli és kiszámítja az áramot.
Az erősítő első része feszültségkövető áramkörként van kialakítva, amely a bemeneti feszültségnek megfelelően vezérli a MOSFET-et és megkapja a kívánt visszacsatolási feszültséget a söntellenálláson keresztül áramló terhelés miatt.
Az MCP4921 a digitális-analóg átalakító. A DAC az SPI kommunikációs protokollt használja a digitális adatok megszerzéséhez bármely mikrovezérlő egységtől, és annak függvényében analóg feszültség kimenetet biztosít. Ez a feszültség az op-amp bemenete. Korábban azt is megtanultuk, hogyan kell használni ezt az MCP4921 DAC-ot a PIC-mel.
A másik oldalon található egy Arduino Nano, amely a digitális adatokat SPI protokollon keresztül juttatja el a DAC-hoz és vezérli a terhelést, az adatokat a 16x2 karakteres kijelzőn is megjelenítve. Két további dolgot használnak, ez a csökkentés és növelés gomb. Ahelyett, hogy digitális csatlakozóhoz csatlakozna, az analóg csapokba csatlakozik. Ezért megváltoztatható egy másik típusú kapcsoló, például csúszka vagy analóg kódoló. A kód módosításával nyers analóg adatokat is nyújthatunk a terhelés vezérléséhez. Ezzel elkerülhető a kapcsoló visszavonási problémája is.
Végül a terhelés növelésével az Arduino nano a terhelési adatokat digitális formátumban juttatja el a DAC-hoz, a DAC analóg adatokat szolgáltat a műveleti erősítőhöz, és a műveleti erősítő vezérli a MOSFET-et a műveleti erősítő bemeneti feszültségének megfelelően. Végül, a söntellenálláson átáramló terhelési áram függvényében, megjelenik egy feszültségesés, amelyet tovább erősít az LM358 második csatornája, és eljut az Arduino nano. Ez megjelenik a karakter kijelzőn. Ugyanez történik, amikor a felhasználó megnyomja a csökkentés gombot.
NYÁK tervezés és Gerber fájl
Mivel ennek az áramkörnek nagy az áramlási útja, bölcsebb döntés megfelelő PCB-tervezési taktikát alkalmazni a nem kívánt meghibásodási esetek eltávolítására. Így erre a DC terhelésre egy NYÁK-t terveztek. Az Eagle PCB Design szoftvert használtam a NYÁK tervezéséhez. Bármely PCB Cad szoftvert választhat. A CAD szoftverben tervezett végleges NYÁK az alábbi képen látható,
Az egyik fontos tényező, amelyet észre kell venni a NYÁK tervezése során, hogy vastag teljesítménysíkot kell használni az áramkör megfelelő áramlásához. Létezik még VIAS (véletlenszerű vias az alapsíkon) varrás, amelyet a megfelelő talajáramláshoz használnak mind a felső, mind az alsó rétegekben.
Letöltheti a NYÁK Gerber fájlját is az alábbi linkről, és felhasználhatja a gyártáshoz.
- Töltse le az állítható elektronikus DC terhelésű Gerber fájlt
A PCB megrendelése az AllPCB-től
Miután elkészült a Gerber fájljával, felhasználhatja azt a PCB gyártásához. Ennek apropóján felvetődik a cikk szponzora, az ALLPCB, akik kiváló minőségű PCB -ikről és ultragyors szállításukról ismertek. A PCB-gyártás mellett az AllPCB is nyújtNYÁK-szerelés és alkatrész-beszerzés.
Ha meg szeretné kapni tőlük a NYÁK megrendelését, látogasson el allpcb.com és regisztráció. Ezután a kezdőlapon adja meg a NYÁK méreteit és a szükséges mennyiséget az alábbiak szerint. Ezután kattintson az Idézet gombra.
Most megváltoztathatja a NYÁK többi paraméterét, például a rétegek számát, a maszk színét, vastagságát stb. A jobb oldalon kiválaszthatja országát és a kívánt szállítási lehetőséget. Ez megmutatja az átfutási időt és a teljes fizetendő összeget. A DHL-t választottam, és a teljes összegem 26 dollár, de ha Ön először vásárló, akkor az árak a pénztárban csökkennek. Ezután kattintson a Kosárba gombra, majd kattintson a Kijelentkezés gombra.
Most kattintson a Gerber fájl feltöltésére a „Gerber feltöltése” elemre kattintva, majd a vásárlás gombra kattintva.
A következő oldalon megadhatja szállítási címét, és ellenőrizheti a PCB-ért fizetendő végső árat. Ezután áttekintheti megrendelését, majd a befizetéshez kattintson a Küldés gombra.
Miután megrendelését megerősítették, nyugodtan ülhet és továbbíthatja a nyomtatott áramkört, hogy megérkezzen a küszöbön. Néhány nap múlva megkaptam megrendelésemet, majd a csomagolás rendben volt, az alábbiak szerint.
A NYÁK minősége jó volt, mint mindig, amint az alábbi képeken magad is láthatod. A tábla felső és alsó oldala látható alább.
Miután megkapta a tábláját, folytathatja az összes alkatrész összeállítását. A kész deszkám az alábbiak szerint néz ki.
Ezután feltöltheti a kódot, és bekapcsolhatja a modult, hogy ellenőrizze a működését. A projekt teljes kódja az oldal alján található. A kód magyarázata a következő.
Arduino kód az állítható DC terheléshez
A kód nagyon egyszerű. Eleinte felvettük az SPI és az LCD fejlécfájlokat, valamint beállítottuk a maximális logikai feszültséget, a chipkiválasztó csapokat stb.
#include
Ez a szakasz az egész számok és változók kötelező programfolyamat-deklarációiból áll. Emellett beállítottuk a társult perifériák csapjait az Arduino Nano-val.
const int slaveSelectPin = 10; // Chip select pin int number = 0; int növekedés = A2; // A pin növelése int csökkent = A3; // pin int csökkentése current_sense = A0; // áramérzékelő tű int feszültség_érzék = A1; // feszültségérzékelő pin int állapot1 = 0; int állapot2 = 0; int Set = 0; úszó volt = 0; úszó terhelés_áram = 0,0; úszó terhelés_feszültség = 0,0; úszóáram = 0,0; úszófeszültség = 0,0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD csapok
Ezt használják az LCD és az SPI beállításához. A csapok irányai itt vannak beállítva.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (növekedés, INPUT); pinMode (csökkentés, INPUT); pinMode (current_sense, INPUT); pinMode (feszültség_érzék, INPUT); // inicializálja az SPI-t: SPI.begin (); // állítsa be az LCD oszlopainak és sorainak számát: lcd.begin (16, 2); // Üzenet nyomtatása az LCD-re. lcd.print ("Digitális terhelés"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); késés (2000); }
A DAC érték konvertálására szolgál.
void convert_DAC (előjel nélküli int érték) { / * Lépésméret = 2 ^ n, Ezért 12bit 2 ^ 12 = 4096 5V referencia esetén a lépés 5/4095 = 0,0012210012210012V vagy 1mV (kb.) * / előjel nélküli int tároló lesz; aláíratlan int MSB; aláíratlan int LSB; / * Lépés: 1, a 12 bites adatokat a tárolóba tárolta. Tegyük fel, hogy az adat 4095, bináris 1111 1111 1111 * / tároló = érték; / * Lépés: 2 8 bites Dummy létrehozása. Tehát a 256 felosztásával a felső 4 bitet rögzítjük az LSB-ben: LSB = 0000 1111 * / LSB = tartály / 256; / * Lépés: 3 A konfiguráció elküldése a 4 bites adatok lyukasztásával. LSB = 0011 0000 VAGY 0000 1111. Az eredmény: 0011 1111 * / LSB = (0x30) - LSB; / * Lépés: 4 A konténer továbbra is rendelkezik a 21 bites értékkel. Az alsó 8 bit kibontása. 1111 1111 és 1111 1111 1111. Az eredmény 1111 1111, amely MSB * / MSB = 0xFF és konténer; / * Lépés: 4 A 16 bites adatok elküldése két bájtra osztással. * / digitalWrite (slaveSelectPin, LOW); késés (100); SPI.transfer (LSB); SPI.transfer (MSB); késés (100); // magasra vegye az SS tűt a chip kijelölésének törléséhez : digitalWrite (slaveSelectPin, HIGH); }
Ez a szakasz az aktuális érzékeléssel kapcsolatos műveletekhez használható.
float read_current (void) { load_current = 0; for (int a = 0; a <átlag; a ++) { load_current = load_current + analogRead (current_sense); } load_current = terhelés_current / átlag; terhelés_áram = (terhelés_áram * MAX_VOLT) / 1024; terhelés_áram = (terhelés_áram / opamp_nyereség) / terhelés_ellenállás; visszatérő terhelés_áram; }
Ez a terhelési feszültség leolvasására szolgál.
float read_voltage (void) { terhelésfeszültség = 0; for (int a = 0; a <átlag; a ++) { terhelésfeszültség = terhelésfeszültség + analógRead (feszültség_érzékelés); } terhelésfeszültség = terhelésfeszültség / átlag; terhelésfeszültség = ((terhelésfeszültség * MAX_VOLT) / 1024,0) * 6; visszatérő terhelés_feszültség; }
Ez a tényleges hurok. Itt mérik a kapcsolási lépéseket, és az adatokat elküldik a DAC-nak. Az adatok továbbítása után a tényleges áramáramot és a terhelési feszültséget mérik. Mindkét értéket végül az LCD-re is kinyomtatják.
void loop () { állapot1 = analógRead (növekedés); if (állapot1> 500) { késés (50); állapot1 = analóg olvasás (növekedés); if (állapot1> 500) { volt = volt + 0,02; } } állapot2 = analóg olvasás (csökkenés); if (állapot2> 500) { késés (50); állapot2 = analóg olvasás (csökkenés); if (állapot2> 500) { if (volt == 0) { volt = 0; } else { volt = volt-0,02; } } } szám = volt / 0,0012210012210012; convert_DAC (szám); feszültség = olvasási feszültség (); aktuális = olvasási_áram (); lcd.setCursor (0, 0); lcd.print ("Beállított érték"); lcd.print ("="); Set = (volt / 2) * 10000; lcd.print (Készlet); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (aktuális); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (feszültség); lcd.print ("V"); // lcd.print (terhelés_feszültség); //lcd.print("mA "); // késés (1000); //lcd.clear (); }
Állítható DC terhelés tesztelése
A digitális terhelési áramkört 12 V-os áramforrással forrasztják és táplálják. Az áramforrás oldalán használtam a 7,4 V-os lítium akkumulátort, és csatlakoztattam egy bilincsmérőt, hogy ellenőrizzem, hogyan működik. Amint láthatja, amikor a beállított áram 300mA, az áramkör 300mA-t vesz le az akkumulátorból, amelyet a bilincsmérő 310mA-nak is mér.
Az áramkör teljes működése az alábbi videóban található. Remélem, megértette a projektet, és élvezett valami hasznos építését. Ha bármilyen kérdése van, hagyja őket a megjegyzés rovatban, vagy használja a fórumokat.