- Potrebni materiali
- Diagram elektronskega obremenitve Arduino DC
- PCB Design in Gerber File
- Naročanje tiskanega vezja pri AllPCB
- Koda Arduino za nastavljivo enosmerno obremenitev
- Testiranje naše nastavljive enosmerne obremenitve
Če ste kdaj delali z baterijami, vezji SMPS ali drugimi napajalnimi vezji, bi se pogosto zgodilo, da bi morali svoj vir napajanja preizkusiti tako, da ga naložite, da preverite, kako deluje v različnih pogojih nalaganja. Naprava, ki se običajno uporablja za izvedbo te vrste preskusa, se imenuje konstantna enosmerna obremenitev, ki nam omogoča, da prilagodimo izhodni tok vašega vira napajanja in ga nato ohranja konstantnega, dokler se spet ne spremeni. V tej vadnici se bomo naučili, kako z Arduinom zgraditi svojo lastno nastavljivo elektronsko obremenitev, ki lahko sprejme največ 24V vhodne napetosti in odvede tok do 5A. Za ta projekt smo uporabili plošče PCB, ki jih proizvaja AllPCB, kitajski ponudnik storitev izdelave in montaže PCB.
V prejšnji vadnici z napetostnim nadzorom tokovnega vira smo razložili, kako uporabljati operacijski ojačevalnik z MOSFET-om in uporabiti napetostno krmiljeno vezje tokovnega vira. Toda v tej vadnici bomo uporabili to vezje in izdelali digitalno krmiljen vir toka. Očitno je, da digitalno krmiljen vir toka potrebuje digitalno vezje in je v ta namen uporabljen Arduino NANO. Arduino NANO bo zagotovil potrebne kontrole za enosmerno obremenitev.
Vezje je sestavljeno iz treh delov. Prvi del je odsek Arduino Nano, drugi del je digitalno-analogni pretvornik, tretji del pa je čisto analogno vezje, kjer se uporablja dvojni operacijski ojačevalnik v enem paketu, ki bo nadzoroval obremenitveni odsek. Ta projekt je navdihnjen s prispevkom o Arduinu, vendar je vezje spremenjeno zaradi manj zapletenosti z osnovnimi funkcijami, ki jih lahko vsi zgradijo.
Naša elektronska obremenitev je zasnovana tako, da ima naslednje vhodne in izhodne odseke.
- Dva vhodna stikala za povečanje in zmanjšanje obremenitve.
- LCD, ki bo prikazal nastavljeno obremenitev, dejansko obremenitev in napetost obremenitve.
- Največji obremenitveni tok je omejen na 5A.
- Največja vhodna napetost je 24V za obremenitev.
Potrebni materiali
Sestavni deli, potrebni za izdelavo enosmerne elektronske obremenitve, so navedeni spodaj.
- Arduino nano
- LCD z 16 x 2 znaki
- Dvodelna vtičnica
- Mosfet irf540n
- Mcp4921
- Lm358
- 5-vatni upor, 1 ohm
- 1k
- 10k - 6 kosov
- Hladilnik
- .1uF 50v
- 2k - 2 kosov
Diagram elektronskega obremenitve Arduino DC
V spodnji shemi ima operacijski ojačevalnik dva odseka. Ena je za nadzor MOSFET-a, druga pa za ojačanje zaznanega toka. Ogledate si lahko tudi video na dnu te strani, ki pojasnjuje popolno delovanje vezja. Prvi odsek vsebuje R12, R13 in MOSFET. R12 se uporablja za zmanjšanje učinka obremenitve na odsek s povratnimi informacijami, R13 pa se uporablja kot Mosfetov upor.
Dodatna dva upora R8 in R9 se uporabljata za zaznavanje napajalne napetosti napajalnika, ki jo bo obremenila ta lažna obremenitev. V skladu s pravilom delilnika napetosti ta dva upora podpirata največ 24V. Več kot 24 V bo povzročilo napetost, ki ne bo primerna za zatiče Arduino. Zato bodite previdni, da ne priključite napajalnika z več kot 24 V izhodno napetostjo.
Upor R7 je tukaj dejanski upor obremenitve. To je 5-vatni,.1 Ohm upor. Glede na zakon o moči bo podpiral največ 7A (P = I 2 R), za varnejšo stran pa je pametneje omejiti največji tok 5A. Zato je trenutno s to navidezno obremenitvijo mogoče nastaviti največ 24V, 5A obremenitve.
Drugi odsek ojačevalnika je konfiguriran kot ojačevalni ojačevalec. Zagotovil bo 6-kratni dobiček. Med tokom toka se bo pojavil padec napetosti. Na primer, ko skozi upor teče 5A toka, bo padec napetosti na vhodnem uporu.1 Ohm (V = I x R) v skladu z ohmskim zakonom 0,5 V. Neinvertirajoči ojačevalnik ga bo ojačal na x6, zato bo 3V izhod iz drugega dela ojačevalnika. Ta izhod zazna analogni vhodni zatič Arduino in izračuna tok.
Prvi del ojačevalnika je konfiguriran kot vezje za spremljanje napetosti, ki bo krmililo MOSFET glede na vhodno napetost in dobilo želeno povratno napetost zaradi toka toka, ki teče skozi uporni upor.
MCP4921 je digitalno-analogni pretvornik. DAC uporablja komunikacijski protokol SPI za pridobivanje digitalnih podatkov iz katere koli mikrokrmilne enote in zagotavlja analogno izhodno napetost, odvisno od tega. Ta napetost je vhod op-amp. Prej smo se že naučili, kako uporabljati ta DCP MCP4921 s PIC.
Na drugi strani je Arduino Nano, ki bo digitalne podatke prek protokola SPI posredoval DAC-u in nadzoroval obremenitev, podatke pa bo prikazal tudi na zaslonu 16x2 znakov. Uporabljeni sta še dve stvari, to je gumb za zmanjšanje in povečanje. Namesto da se priključi na digitalni zatič, je ta povezan v analogni zatič. Zato ga lahko spremenite v drugo vrsto stikal, kot sta drsnik ali analogni dajalnik. S spreminjanjem kode lahko dobite tudi surove analogne podatke za nadzor obremenitve. S tem se tudi izognemo težavi z izklopom stikala.
Nazadnje, s povečanjem obremenitve bo Arduino nano posredoval podatke o obremenitvi DAC v digitalni obliki, DAC pa analognim podatkom operativni ojačevalnik, operacijski ojačevalnik pa bo nadzoroval MOSFET glede na vhodno napetost operacijskega ojačevalnika.. Nazadnje, odvisno od toka toka obremenitve skozi ranžirni upor, se bo pojavil padec napetosti, ki ga bo nadalje ojačal drugi kanal LM358 in dobil Arduino nano. To bo prikazano na zaslonu znakov. Enako se bo zgodilo, ko uporabnik pritisne gumb za zmanjšanje.
PCB Design in Gerber File
Ker ima to vezje visoko tokovno pot, je pametneje izbrati pravilno taktiko oblikovanja PCB za odstranjevanje neželenih primerov okvar. Tako je PCB zasnovan za to enosmerno obremenitev. Za načrtovanje PCB-ja sem uporabil programsko opremo Eagle PCB Design. Izberete lahko katero koli programsko opremo PCB Cad. Končno zasnovani PCB v programski opremi CAD je prikazan na spodnji sliki,
Eden pomembnih dejavnikov, ki jih je treba opaziti med zasnovo tega tiskanega vezja, je uporaba debele močnostne ravnine za ustrezen tok toka po vsem vezju. Obstajajo tudi VIAS za zemeljski šiv (naključne vias v talni ravnini), ki se uporabljajo za ustrezen pretok tal v obeh plasteh do vrha in dna.
Datoteko Gerber tega PCB lahko prenesete tudi s spodnje povezave in jo uporabite za izdelavo.
- Prenesite datoteko Gerber z nastavljivim elektronskim nalaganjem
Naročanje tiskanega vezja pri AllPCB
Ko ste pripravljeni s svojo datoteko Gerber, jo lahko uporabite za izdelavo PCB-ja. Ko že omenjamo, se prikaže sponzor tega članka ALLPCB, ki je znan po svojih visokokakovostnih PCB-jih in ultrahitrem pošiljanju. Poleg proizvodnje PCB ponuja tudi AllPCBSestavljanje PCB in dobava komponent.
Če želite naročiti PCB pri njih, obiščite allpcb.com in prijava. Nato na domači strani vnesite mere tiskanega vezja in zahtevano količino, kot je prikazano spodaj. Nato kliknite Citiraj zdaj.
Zdaj lahko spremenite druge parametre tiskanega vezja, na primer število slojev, barvo maske, debelino itd. Na desni strani lahko izberete državo in želeno možnost pošiljanja. To vam bo pokazalo čas izvedbe in skupni znesek za plačilo. Izbral sem DHL in moj skupni znesek je 26 USD, če pa ste prvič kupec, se cene na blagajni spustijo. Nato kliknite Dodaj v košarico in nato še zdaj.
Zdaj lahko kliknete nalaganje datoteke Gerber tako, da kliknete »Naloži Gerber« in nato kliknete na nakup.
Na naslednji strani lahko vnesete naslov za dostavo in preverite končno ceno, ki jo morate plačati za tiskano vezje. Nato lahko svoje naročilo pregledate in nato kliknete na oddaj, da izvedete plačilo.
Ko je vaše naročilo potrjeno, lahko sedite in si sporočite tiskano vezje, da pride na vaš prag. Naročilo sem prejel po nekaj dneh, nato pa je bila embalaža urejena, kot je prikazano spodaj.
Kakovost tiskanega vezja je bila kot vedno dobra, kot se lahko prepričate na spodnjih slikah. Spodaj sta prikazani zgornja in spodnja stran plošče.
Ko dobite ploščo, lahko nadaljujete s sestavljanjem vseh komponent. Moja končana plošča je videti nekako takole spodaj.
Nato lahko naložite kodo in vklopite modul, da preverite, kako deluje. Popolna koda za ta projekt je navedena na dnu te strani. Razlaga kode je naslednja.
Koda Arduino za nastavljivo enosmerno obremenitev
Koda je precej preprosta. Sprva smo vključili datoteke zaglavja SPI in LCD ter nastavili največjo logično napetost, zatiče za izbiro čipov itd.
#include
Ta odsek je sestavljen iz zahtevanih deklaracij celih števil in spremenljivk, povezanih s programskim tokom. Z Arduino Nano smo nastavili tudi priključke zunanjih naprav.
const int slaveSelectPin = 10; // čip za izbiro čipa int številka = 0; povečanje int = A2; // Povečaj zatič int zmanjšanje = A3; // zmanjšanje zatiča int current_sense = A0; // trenutni zaznavni zatič int voltage_sense = A1; // zatič napetosti zaznavanje int stanje1 = 0; int stanje2 = 0; int Set = 0; plavajoči volt = 0; float load_current = 0,0; plavajoča obremenitev_napetost = 0,0; plavajoči tok = 0,0; plavajoča napetost = 0,0; LCD LiquidCrystal (7, 6, 5, 4, 3, 2); // LCD zatiči
To se uporablja za nastavitev LCD in SPI. Tukaj so nastavljena tudi navodila za zatiče.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (povečanje, INPUT); pinMode (zmanjšanje, INPUT); pinMode (current_sense, INPUT); pinMode (napetost_sense, INPUT); // inicializiramo SPI: SPI.begin (); // nastavimo število stolpcev in vrstic na LCD-ju: lcd.begin (16, 2); // Natisnite sporočilo na LCD. lcd.print ("Digital Load"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); zamuda (2000); }
Uporablja se za pretvorbo vrednosti DAC.
void convert_DAC (nepodpisana int vrednost) { / * Velikost koraka = 2 ^ n, zato je 12bit 2 ^ 12 = 4096 Za referenco 5V bo korak 5/4095 = 0,0012210012210012V ali 1mV (približno) * / nepodpisani int vsebnik; nepodpisan int MSB; nepodpisan int LSB; / * Korak: 1, shranil je 12-bitne podatke v vsebnik Recimo, da so podatki 4095, v binarni obliki 1111 1111 1111 * / vsebnik = vrednost; / * Korak: 2 Ustvarjanje lutke 8 bitov. Torej, z delitvijo 256, so zajeti zgornji 4 biti v LSB LSB = 0000 1111 * / LSB = vsebnik / 256; / * Korak: 3 Pošiljanje konfiguracije s prebijanjem 4-bitnih podatkov. LSB = 0011 0000 ALI 0000 1111. Rezultat je 0011 1111 * / LSB = (0x30) - LSB; / * Korak: 4 Vsebnik ima še vedno 21-bitno vrednost. Izdvajanje spodnjih 8 bitov. 1111 1111 IN 1111 1111 1111. Rezultat je 1111 1111, kar je MSB * / MSB = 0xFF & vsebnik; / * Korak: 4 Pošiljanje 16-bitnih podatkov z delitvijo na dva bajta. * / digitalWrite (slaveSelectPin, LOW); zamuda (100); SPI.transfer (LSB); SPI.transfer (MSB); zamuda (100); // dvignemo SS pin visoko, da odstranimo izbiro čipa: digitalWrite (slaveSelectPin, HIGH); }
Ta odsek se uporablja za trenutne operacije zaznavanja.
float_current_current (void) { load_current = 0; for (int a = 0; a <povprečje; a ++) { tok_toka = tok_toka + analogRead (current_sense); } tok_toka = tok_toka / povprečje; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; vrni load_current; }
To se uporablja za odčitavanje napetosti obremenitve.
lebdeča_napetost (void) { load_voltage = 0; for (int a = 0; a <povprečje; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } napetost_napetosti = napetost_napetosti / povprečje; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; povratna napetost_napetosti; }
To je dejanska zanka. Tu se izmerijo preklopni koraki in podatki se pošljejo v DAC. Po prenosu podatkov se izmeri dejanski pretok toka in napetost obremenitve. Obe vrednosti sta dokončno natisnjeni tudi na LCD-prikazovalniku.
void loop () { state1 = analogRead (povečanje); if (stanje1> 500) { zamuda (50); stanje1 = analogRead (povečanje); če (stanje1> 500) { volt = volt + 0,02; } } stanje2 = analogRead (zmanjšanje); if (stanje2> 500) { zamuda (50); stanje2 = analogRead (zmanjšanje); if (stanje2> 500) { if (volt == 0) { volt = 0; } sicer { volt = volt-0,02; } } } število = volt / 0,0012210012210012; convert_DAC (število); napetost = read_voltage (); trenutno = branje_toka (); lcd.setCursor (0, 0); lcd.print ("Set Value"); lcd.print ("="); Set = (volt / 2) * 10000; lcd.print (Set); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (trenutno); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (napetost); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // zamuda (1000); //lcd.clear (); }
Testiranje naše nastavljive enosmerne obremenitve
Digitalno obremenitveno vezje je spajkano in napajano z 12V virom napajanja. Na strani vira napajanja sem uporabil 7,4 V litijevo baterijo in priključil merilnik sponk, da preverim, kako deluje. Kot lahko vidite, ko je nastavljeni tok 300mA, vezje črpa 300mA iz akumulatorja, ki ga merilnik sponke meri tudi kot 310mA.
Popolno delovanje vezja najdete v spodnjem videoposnetku. Upam, da ste projekt razumeli in uživali v gradnji nečesa koristnega. Če imate kakršna koli vprašanja, jih pustite v oddelku za komentarje ali uporabite forume.