- Tarvittavat materiaalit
- Arduino DC: n elektroninen kuormituspiirikaavio
- PCB-suunnittelu ja Gerber-tiedosto
- PCB: n tilaaminen AllPCB: ltä
- Arduino-koodi säädettävälle tasavirtakuormalle
- Testaamme säädettävää tasavirtakuormitusta
Jos olet koskaan työskennellyt paristojen, SMPS-piirien tai muiden virtalähdepiirien kanssa, on usein tapahtunut, että joudut testaamaan virtalähdettäsi lataamalla sen tarkistamaan, kuinka se toimii erilaisissa latausolosuhteissa. Laitetta, jota käytetään yleisesti tämän tyyppisen testin suorittamiseen, kutsutaan jatkuvavirtaiseksi DC-kuormaksi, jonka avulla voimme säätää virtalähteen lähtövirtaa ja pitää sen sitten vakiona, kunnes se muuttuu uudelleen. Tässä opetusohjelmassa opimme rakentamaan oman säädettävän elektronisen kuormamme Arduinolla, joka voi ottaa 24 V: n maksimijännitteen ja tyhjentää jopa 5 A: n virran. Tässä projektissa olemme käyttäneet piirilevyjä, jotka valmistaa Kiinassa toimiva ammattimainen piirilevyjen valmistus- ja kokoonpanopalvelujen tarjoaja AllPCB.
Edellisessä jänniteohjatussa virtalähteen opetusohjelmassa olemme selittäneet, kuinka operatiivista vahvistinta käytetään MOSFET: n kanssa ja miten jänniteohjattua virtalähdepiiriä käytetään. Mutta tässä opetusohjelmassa käytämme kyseistä piiriä ja teemme digitaalisesti ohjatun virtalähteen. Digitaalisesti ohjattu virtalähde vaatii luonnollisesti digitaalisen virtapiirin ja tarkoitukseensa käytetään Arduino NANO: ta. Arduino NANO tarjoaa tarvittavat ohjaimet tasakuormalle.
Piiri koostuu kolmesta osasta. Ensimmäinen osa on Arduino Nano -osa, toinen osa on digitaalinen-analoginen muunnin, ja kolmas osa on puhdas analoginen piiri, jossa käytetään kaksoisoperaatiovahvistinta yhdessä paketissa, joka ohjaa kuormitusosaa. Tämä projekti on saanut inspiraationsa Arduinossa julkaistusta viestistä, mutta piiri on muutettu vähemmän monimutkaiseksi ja perusominaisuuksilla kaikkien rakentamiseksi.
Elektroninen kuormitus on suunniteltu siten, että siinä on seuraavat tulo- ja lähtöosuudet.
- Kaksi tulokytkintä kuorman lisäämiseksi ja vähentämiseksi.
- LCD-näyttö, joka näyttää asetetun kuorman, todellisen kuorman ja kuormitusjännitteen.
- Suurin kuormitusvirta on rajoitettu arvoon 5A.
- Suurin tulojännite on 24 V kuormalle.
Tarvittavat materiaalit
DC-elektronisen kuorman rakentamiseen tarvittavat komponentit on lueteltu alla.
- Arduino nano
- 16x2 merkin LCD
- Kaksi tynnyriliitintä
- Mosfet irf540n
- Mcp4921
- Lm358
- 5 watin shuntivastus.1 ohmia
- 1k
- 10k - 6kpl
- Jäähdytyselementti
- .1uF 50v
- 2k - 2kpl
Arduino DC: n elektroninen kuormituspiirikaavio
Alla olevassa kaaviossa operatiivisella vahvistimella on kaksi osaa. Yksi on ohjata MOSFETiä ja toinen on vahvistaa havaittua virtaa. Voit myös tarkistaa tämän sivun alaosassa olevan videon, joka selittää piirin täydellisen toiminnan. Ensimmäisessä osassa on R12, R13 ja MOSFET. R12: ta käytetään vähentämään palautusosan kuormitusvaikutusta ja R13: ta käytetään Mosfet-portin vastuksena.
Kaksi muuta vastusta R8 ja R9 käytetään virransyötön syöttöjännitteen havaitsemiseen, jota tämä nuken kuormitus rasittaa. Jännitteenjakajan säännön mukaan nämä kaksi vastusta tukevat enintään 24 V: n jännitettä. Yli 24 V tuottaa jännitteen, joka ei sovi Arduino-nastoille. Älä siis kytke virtalähdettä, jossa on yli 24 V: n lähtöjännite.
Vastus R7 on tässä todellinen kuormitusvastus. Se on 5 watin.1 ohmin vastus. Teholain mukaan se tukee enimmäisarvoa 7A (P = I 2 R), mutta turvallisen puolen vuoksi on viisaampaa rajoittaa kuormavirran maksimiarvoa 5A. Siksi tällä nuken kuormalla voidaan tällä hetkellä asettaa suurin 24 V, 5 A: n kuormitus.
Toinen osa vahvistimesta on konfiguroitu vahvistusvahvistimeksi. Se tarjoaa 6x vahvistuksen. Virran virtauksen aikana ilmestyy jännitehäviö. Esimerkiksi, kun 5A virtaa virtaa vastuksen läpi, jännitehäviö on.5 V.1 ohmin shunttivastuksen yli (V = I x R) ohmin lain mukaan. Ei-invertoiva vahvistin vahvistaa sen x6: ksi, joten 3V on lähtö vahvistimen toisesta osasta. Tämä lähtö tunnistetaan analogisella Arduino nanotulonastalla ja virta lasketaan.
Vahvistimen ensimmäinen osa on konfiguroitu jännitteen seuraajapiiriksi, joka ohjaa MOSFET: ää tulojännitteen mukaan ja saa halutun takaisinkytkentäjännitteen shuntivastuksen läpi kulkevasta kuormavirrasta johtuen.
MCP4921 on digitaalinen-analoginen muunnin. DAC käyttää SPI-yhteyskäytäntöä saadakseen digitaalisen datan mistä tahansa mikrokontrolleriyksiköstä ja tarjoamaan analogisen jännitelähdön siitä riippuen. Tämä jännite on op-vahvistimen tulo. Olemme aiemmin oppineet myös käyttämään tätä MCP4921 DAC: ta PIC: n kanssa.
Toisella puolella on Arduino Nano, joka toimittaa digitaaliset tiedot DAC: lle SPI-protokollan kautta ja hallitsee kuormaa näyttämällä tiedot myös 16x2 merkin näytössä. Kaksi muuta asiaa käytetään, se on vähennys- ja lisäyspainike. Digitaaliseen nastaan kytkemisen sijaan se liitetään analogisiin nastoihin. Siksi se voidaan vaihtaa muun tyyppisiin kytkimiin, kuten liukusäätimeen tai analogiseen kooderiin. Koodia muokkaamalla voidaan myös antaa raakaa analogista dataa kuorman hallitsemiseksi. Tämä välttää myös kytkimen purkamisongelman.
Lopuksi lisäämällä kuormitusta Arduino nano toimittaa kuormitustiedot DAC: lle digitaalisessa muodossa, DAC tarjoaa analogisia tietoja operatiiviselle vahvistimelle ja operatiivinen vahvistin ohjaa MOSFETiä operatiivisen vahvistimen tulojännitteen mukaan.. Lopuksi riippuen shuntivastuksen läpi kulkevasta kuormitusvirrasta, ilmestyy jännitehäviö, jota LM358: n toinen kanava vahvistaa edelleen ja saa Arduino-nanosta. Tämä näkyy merkkinäytössä. Sama tapahtuu, kun käyttäjä painaa vähennyspainiketta.
PCB-suunnittelu ja Gerber-tiedosto
Koska tällä virtapiirillä on suuri virtapolku, on viisaampi valinta käyttää asianmukaista piirilevyn suunnittelutaktiikkaa ei-toivottujen vikatapausten poistamiseksi. Siten piirilevy on suunniteltu tälle tasavirtakuormalle. Olen käyttänyt Eagle PCB Design -ohjelmistoa piirilevyn suunnitteluun. Voit valita minkä tahansa PCB Cad -ohjelmiston. Lopullinen suunniteltu piirilevy CAD-ohjelmistossa näkyy alla olevassa kuvassa,
Yksi tärkeä tekijä, joka on huomioitava tämän piirilevyn suunnittelun aikana, on käyttää paksua tehotasoa oikeaan virtaukseen koko piirissä. On myös maadoitusompelu VIAS (maatasossa olevat satunnaiset läpiviennit), joita käytetään kunnolliseen maavirtaan molemmissa kerroksissa ylhäältä ja alhaalta.
Voit myös ladata tämän piirilevyn Gerber-tiedoston alla olevasta linkistä ja käyttää sitä valmistukseen.
- Lataa säädettävä elektroninen DC-lataus Gerber-tiedosto
PCB: n tilaaminen AllPCB: ltä
Kun olet valmis Gerber-tiedostoosi, voit käyttää sitä PCB: n valmistamiseen. Puhuminen tuo esiin tämän artikkelin sponsorin ALLPCB, joka tunnetaan korkealaatuisista piirilevyistään ja ultranopeasta toimituksestaan. PCB-valmistuksen lisäksi AllPCB tarjoaa myösPiirilevykokoonpano ja komponenttien hankinta.
Saadaksesi piirilevytilauksesi heiltä, käy osoitteessa allpcb.com ja rekisteröityminen. Syötä sitten kotisivulle piirilevyn mitat ja tarvittava määrä alla olevan kuvan mukaisesti. Napsauta sitten Lainaa nyt.
Nyt voit muuttaa piirilevyn muita parametreja, kuten kerrosten lukumäärää, maskin väriä, paksuutta jne. Oikealla puolella voit valita maasi ja haluamasi lähetysvaihtoehdon. Tämä näyttää läpimenoaika ja maksettava kokonaissumma. Olen valinnut DHL: n ja kokonaissummani on 26 dollaria, mutta jos olet ensimmäinen asiakas, hinnat laskevat kassalla. Napsauta sitten Lisää ostoskoriin ja napsauta sitten tarkista nyt.
Nyt voit napsauttaa Gerber-tiedostosi lataamista napsauttamalla "Lataa Gerber" ja napsauttamalla sitten Osta.
Seuraavalla sivulla voit antaa toimitusosoitteesi ja tarkistaa lopullisen hinnan, joka sinun on maksettava piirilevystä. Voit sitten tarkistaa tilauksesi ja napsauttaa sitten Lähetä suorittaaksesi maksun.
Kun tilauksesi on vahvistettu, voit rentoutua PCB: n saapumiseksi kotiovellesi. Sain tilaukseni muutaman päivän kuluttua ja sitten pakkaus oli siisti alla olevan kuvan mukaisesti.
Piirilevyn laatu oli hyvä, kuten aina, kuten näet itse alla olevista kuvista. Levyn ylä- ja alapuoli on esitetty alla.
Kun saat levyn, voit jatkaa kaikkien komponenttien kokoamista. Valmis tauluni näyttää tältä tältä alla.
Seuraavaksi voit ladata koodin ja käynnistää moduulin tarkistaaksesi sen toiminnan. Tämän projektin täydellinen koodi on tämän sivun alaosassa. Koodi selitetään seuraavasti.
Arduino-koodi säädettävälle tasavirtakuormalle
Koodi on melko yksinkertainen. Aluksi sisällytimme SPI- ja LCD-otsikkotiedostot sekä asetimme logiikan maksimijännitteen, sirunvalintanastat jne.
#sisältää
Tämä osio koostuu pakollisista ohjelmavirtaan liittyvistä kokonaislukujen ja muuttujien ilmoituksista. Asetimme myös liitännäislaitteiden nastat Arduino nanoon.
const int slaveSelectPin = 10; // Chip select pin int number = 0; int kasvu = A2; // Lisää tapin int pienennys = A3; // pienennä nasta int current_sense = A0; // virtatunnistintappi int voltage_sense = A1; // jännitetunnistintapin int-tila1 = 0; int-tila2 = 0; int Asetus = 0; uimurijännite = 0; uimurikuormitusvirta = 0,0; uimakuorma_jännite = 0,0; kelluvavirta = 0,0; uimurijännite = 0,0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD-nastat
Tätä käytetään LCD- ja SPI-asetusten määrittämiseen. Tappien suunnat asetetaan myös tänne.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (lisäys, INPUT); pinMode (vähennys, INPUT); pinMode (current_sense, INPUT); pinMode (jännitteen_sense, INPUT); // alustaa SPI: SPI.begin (); // määritä nestekidenäytön sarakkeiden ja rivien määrä: lcd.begin (16, 2); // Tulosta viesti nestekidenäytölle. lcd.print ("Digitaalinen kuorma"); lcd.setCursor (0, 1); lcd.print ("Piirin yhteenveto"); viive (2000); }
Sitä käytetään DAC-arvon muuntamiseen.
void convert_DAC (allekirjoittamaton int-arvo) { / * Vaiheen koko = 2 ^ n, Siksi 12bit 2 ^ 12 = 4096 5 V: n viitteessä vaihe on 5/4095 = 0,0012210012210012V tai 1 mV (noin) * / allekirjoittamaton int-säilö; allekirjoittamaton MSB; allekirjoittamaton int LSB; / * Vaihe: 1, tallennettu 12-bittinen data säilöön Oletetaan, että data on 4095, binäärisenä 1111 1111 1111 * / container = arvo; / * Vaihe: 2 8-bittisen nuken luominen. Joten jakamalla 256, ylemmät 4 bittiä kaapataan LSB: ssä LSB = 0000 1111 * / LSB = container / 256; / * Vaihe: 3 Määrityksen lähettäminen 4-bittisen datan lävistämisellä. LSB = 0011 0000 TAI 0000 1111. Tulos on 0011 1111 * / LSB = (0x30) - LSB; / * Vaihe: 4 Säiliöllä on edelleen 21-bittinen arvo. Pura alemmat 8 bittiä. 1111 1111 ja 1111 1111 1111. Tulos on 1111 1111, joka on MSB * / MSB = 0xFF & kontti; / * Vaihe: 4 Lähetetään 16-bittiset tiedot jakamalla kaksi tavua. * / digitalWrite (slaveSelectPin, LOW); viive (100); SPI-siirto (LSB); SPI.transfer (MSB); viive (100); // ota SS-nasta korkealle poistaaksesi sirun valinnan : digitalWrite (slaveSelectPin, HIGH); }
Tätä osaa käytetään virran tunnistamiseen liittyviin toimintoihin.
float read_current (void) { load_current = 0; for (int a = 0; a <keskiarvo; a ++) { load_current = load_current + analogRead (current_sense); } kuormitusvirta = kuormitusvirta / keskiarvo; kuormitusvirta = (kuormitusvirta * MAX_VOLT) / 1024; kuormitusvirta = (kuormitusvirta / opamp-voitto) / latausresisti; paluukuorma_virta; }
Tätä käytetään kuormitusjännitteen lukemiseen.
uimuri read_voltage (void) { load_voltage = 0; for (int a = 0; a <keskiarvo; a ++) { kuormitusjännite = kuormitusjännite + analoginen luku (jännite_tunnus); } kuormitusjännite = kuormitusjännite / keskiarvo; kuormitusjännite = ((kuormitusjännite * MAX_VOLT) / 1024,0) * 6; paluukuorma_jännite; }
Tämä on varsinainen silmukka. Tässä mitataan vaihtamisvaiheet ja tiedot lähetetään DAC: lle. Tietojen lähettämisen jälkeen todellista virtausta ja kuormitusjännitettä mitataan. Molemmat arvot tulostetaan lopulta myös nestekidenäytölle.
void loop () { tila1 = analoginenLue (lisäys); if (tila1> 500) { viive (50); tila1 = analoginenLue (kasvu); jos (tila1> 500) { volt = voltti + 0,02; } } tila2 = analoginenLue (vähennys); if (tila2> 500) { viive (50); tila2 = analoginen luku (lasku); if (tila2> 500) { if (volt == 0) { volt = 0; } muu { volt = volt-0,02; } } } numero = voltti / 0,0012210012210012; muuntaa_DAC (luku); jännite = luku_jännite (); virta = lue_virta (); lcd.setCursor (0, 0); lcd.print ("Aseta arvo"); lcd.print ("="); Aseta = (voltti / 2) * 10000; lcd.print (sarja); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (nykyinen); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (jännite); lcd.print ("V"); // lcd.print (kuormitusjännite); //lcd.print("mA "); // viive (1000); //lcd.clear (); }
Testaamme säädettävää tasavirtakuormitusta
Digitaalinen kuormituspiiri on juotettu ja kytketty päälle 12 V: n virtalähteellä. Käytin 7,4 V: n litiumparistoni virtalähteen puolella ja liitin pihtimittarin tarkistaakseni sen toiminnan. Kuten näet, kun asetettu virta on 300 mA, piiri vetää 300 mA: n akusta, joka mitataan myös pihtimittarilla 310 mA.
Piirin täydellinen toiminta löytyy alla olevasta videosta. Toivottavasti ymmärrät projektin ja nautit rakentamaan jotain hyödyllistä. Jos sinulla on kysyttävää, jätä ne kommenttiosioon tai käytä foorumeita.