- Potřebné materiály
- Schéma elektronického zatěžovacího obvodu Arduino DC
- Design PCB a soubor Gerber
- Objednání PCB u AllPCB
- Arduino kód pro nastavitelné stejnosměrné zatížení
- Testování naší nastavitelné stejnosměrné zátěže
Pokud jste někdy pracovali s bateriemi, obvody SMPS nebo jinými obvody napájecího zdroje, často by se mohlo stát, že budete muset svůj zdroj energie otestovat jeho načtením a zkontrolovat, jak funguje za různých podmínek načítání. Zařízení, které se běžně používá k provádění tohoto typu testu, se nazývá stejnosměrné zatížení s konstantním proudem, což nám umožňuje upravit výstupní proud vašeho zdroje energie a poté jej udržovat konstantní, dokud se znovu nezmění. V tomto tutoriálu se naučíme, jak vytvořit vlastní nastavitelnou elektronickou zátěž pomocí Arduina, které může trvat maximální vstupní napětí 24 V a vybíjet proud až 5 A. Pro tento projekt jsme použili desky s plošnými spoji, které vyrábí společnost AllPCB, čínský profesionální poskytovatel služeb výroby a montáže desek plošných spojů.
V našem předchozím výukovém programu zdroje proudu řízeného napětím jsme vysvětlili, jak používat operační zesilovač s MOSFET a využívat obvod zdroje napětí řízeného proudem. Ale v tomto tutoriálu použijeme tento obvod a vytvoříme digitálně řízený zdroj proudu. Je zřejmé, že digitálně řízený zdroj proudu vyžaduje digitální obvod a ke svému účelu se používá Arduino NANO. Arduino NANO poskytne požadované ovládací prvky pro stejnosměrné zatížení.
Obvod se skládá ze tří částí. První částí je sekce Arduino Nano, druhou částí je převodník digitálně-analogový a třetí částí je čistě analogový obvod, kde se používá duální operační zesilovač v jednom balíčku, který bude řídit zátěžovou sekci. Tento projekt je inspirován příspěvkem na Arduinu, ale okruh je změněn kvůli menší složitosti se základními funkcemi pro jeho sestavení.
Naše elektronická zátěž je navržena tak, aby měla následující vstupní a výstupní sekce.
- Dva vstupní spínače pro zvýšení a snížení zátěže.
- LCD, který zobrazí nastavenou zátěž, skutečné zátěž a napětí zátěže.
- Maximální zatěžovací proud je omezen na 5A.
- Maximální vstupní napětí pro zátěž je 24 V.
Potřebné materiály
Níže jsou uvedeny komponenty potřebné k vytvoření stejnosměrné elektronické zátěže.
- Arduino nano
- 16x2 znakový LCD
- Zásuvka se dvěma hlavněmi
- Mosfet irf540n
- Mcp4921
- Lm358
- 5watt směšovač rezistor.1 ohmů
- 1k
- 10k - 6ks
- Chladič
- .1uF 50v
- 2k - 2ks
Schéma elektronického zatěžovacího obvodu Arduino DC
V níže uvedeném schématu má operační zesilovač dvě sekce. Jedním z nich je ovládání MOSFET a druhým je zesílení snímaného proudu. Můžete také zkontrolovat video ve spodní části této stránky, které vysvětluje kompletní fungování obvodu. První část má R12, R13 a MOSFET. R12 se používá ke snížení zatěžovacího účinku na zpětnovazební sekci a R13 se používá jako odpor brány Mosfet.
Další dva odpory R8 a R9 se používají ke snímání napájecího napětí napájecího zdroje, které bude namáháno touto fiktivní zátěží. Podle pravidla děliče napětí podporují tyto dva rezistory maximálně 24V. Více než 24 V bude produkovat napětí, které nebude vhodné pro piny Arduino. Dávejte proto pozor, abyste nepřipojovali napájecí zdroj, který má výstupní napětí vyšší než 24 V.
Rezistor R7 je zde skutečný odpor zátěže. Jedná se o odpor 5 W, 0,1 Ohm. Podle zákona o napájení bude podporovat maximálně 7A (P = I 2 R), ale pro bezpečnou stránku je rozumnější omezit maximální zatěžovací proud na 5A. Proto je v současné době možné tímto fiktivním zatížením nastavit maximální zátěž 24V, 5A.
Další část zesilovače je konfigurována jako zesilovač zisku. Poskytne 6x zisk. Během toku proudu se objeví pokles napětí. Například když odporem protéká proud 5A, pokles napětí bude podle ohmového zákona o 0,5 V přes bočníkový odpor 0,1 Ohm (V = I x R). Neinvertující zesilovač jej zesílí na x6, proto 3V bude výstupem z druhé části zesilovače. Tento výstup bude snímán analogovým vstupním kolíkem Arduino nano a bude vypočítán proud.
První část zesilovače je nakonfigurována jako obvod sledovače napětí, který bude řídit MOSFET podle vstupního napětí a získávat požadované zpětnovazební napětí v důsledku proudu zátěže protékajícího bočníkem.
MCP4921 je digitální na analogový převodník. DAC používá komunikační protokol SPI k získání digitálních dat z jakékoli jednotky mikrokontroléru a v závislosti na tom poskytuje analogový napěťový výstup. Toto napětí je vstupem operačního zesilovače. Dříve jsme se také naučili, jak používat tento MCP4921 DAC s PIC.
Na druhé straně je Arduino Nano, které bude poskytovat digitální data DAC prostřednictvím protokolu SPI a řídit zátěž, a také bude zobrazovat data na displeji 16x2 znaků. Používají se dvě další věci, a to tlačítko snížení a zvýšení. Místo připojení k digitálnímu kolíku je připojen do analogových kolíků. Proto je možné jej změnit na jiný typ přepínačů, jako je posuvník nebo analogový kodér. Úpravou kódu lze také poskytnout nezpracovaná analogová data pro řízení zátěže. Tím se také zabrání problému s odskokem přepínače.
A konečně, zvýšením zátěže poskytne Arduino nano zátěžová data DAC v digitálním formátu, DAC poskytne analogová data operačnímu zesilovači a operační zesilovač bude řídit MOSFET podle vstupního napětí operačního zesilovače. Nakonec se v závislosti na toku zatěžovacího proudu přes bočníkový rezistor objeví pokles napětí, který bude dále zesílen druhým kanálem LM358 a získán Arduino nano. To se zobrazí na displeji znaků. Totéž se stane, když uživatel stiskne tlačítko snížení.
Design PCB a soubor Gerber
Vzhledem k tomu, že tento obvod má vysokou proudovou cestu, je rozumnější volbou použít správnou taktiku návrhu desky plošných spojů k odstranění nežádoucích případů selhání. Pro toto stejnosměrné zatížení je tedy navržena deska plošných spojů. K návrhu své desky plošných spojů jsem použil Eagle PCB Design Software. Můžete si vybrat libovolný software PCB Cad. Konečně navržená deska plošných spojů v softwaru CAD je uvedena na následujícím obrázku,
Jedním důležitým faktorem, který si musíte všimnout během návrhu této desky plošných spojů, je použití silné výkonové roviny pro správný tok proudu po celém obvodu. K dispozici je také zemní šití VIAS (náhodné průchody v základní rovině), které se používají ke správnému zemnímu toku ve vrstvách nahoru i dolů.
Můžete si také stáhnout soubor Gerber tohoto PCB z níže uvedeného odkazu a použít jej pro výrobu.
- Stáhněte si nastavitelný elektronický soubor DC Load Gerber
Objednání PCB u AllPCB
Jakmile budete připraveni na soubor Gerber, můžete jej použít k výrobě desky s plošnými spoji. Když už mluvíme o tom, vychovává sponzora tohoto článku ALLPCB, který je známý svými vysoce kvalitními PCB a ultrarychlou přepravou. Kromě výroby PCB poskytuje AllPCB takéMontáž desek plošných spojů a sourcing komponent.
Chcete-li od nich získat objednávku na PCB, navštivte allpcb.com a registrace. Poté na domovské stránce zadejte rozměry vaší desky plošných spojů a požadované množství, jak je uvedeno níže. Poté klikněte na Citovat nyní.
Nyní můžete změnit další parametry vaší desky plošných spojů, jako je počet vrstev, barva masky, tloušťka atd. Na pravé straně můžete vybrat zemi a preferovanou možnost dopravy. To vám ukáže čas a celkovou částku k zaplacení. Vybral jsem si DHL a moje celková částka je 26 $, ale pokud jste zákazníkem poprvé, ceny v pokladně klesnou. Poté klikněte na Přidat do košíku a poté klikněte na Pokladna.
Nyní můžete kliknout na nahrát soubor Gerber kliknutím na „Nahrát Gerber“ a poté kliknout na koupit.
Na další stránce můžete zadat svou dodací adresu a zkontrolovat konečnou cenu, kterou musíte za desku plošných spojů zaplatit. Poté můžete objednávku zkontrolovat a kliknutím na Odeslat provést platbu.
Jakmile je vaše objednávka potvrzena, můžete se posadit a předat vám desku plošných spojů, abyste se dostali ke dveřím. Objednávku jsem obdržel po několika dnech a pak bylo balení čisté, jak je uvedeno níže.
Kvalita desky plošných spojů byla dobrá jako vždy, jak sami vidíte na obrázcích níže. Horní strana a spodní strana desky jsou zobrazeny níže.
Jakmile získáte svoji desku, můžete pokračovat v sestavování všech komponent. Moje hotová deska vypadá asi takto níže.
Dále můžete nahrát kód a zapnout modul a zkontrolovat, jak funguje. Celý kód tohoto projektu je uveden ve spodní části této stránky. Vysvětlení kódu je následující.
Arduino kód pro nastavitelné stejnosměrné zatížení
Kód je docela jednoduchý. Nejprve jsme zahrnovali hlavičkové soubory SPI a LCD a také nastavili maximální logické napětí, kolíky pro výběr čipů atd.
#zahrnout
Tato část se skládá z požadovaných deklarací celých čísel a proměnných souvisejících s tokem programu. Také jsme nastavili piny přidružených periferií s Arduino Nano.
const int slaveSelectPin = 10; // Chip select pin int number = 0; int zvýšení = A2; // Zvětšit pin int pokles = A3; // zmenšit pin int current_sense = A0; // aktuální snímací pin int voltage_sense = A1; // napěťový snímač pin int state1 = 0; int stav2 = 0; int sada = 0; float volt = 0; float load_current = 0,0; float load_voltage = 0,0; plovoucí proud = 0,0; plovoucí napětí = 0,0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD piny
Používá se pro nastavení LCD a SPI. Zde jsou také nastaveny směry kolíků.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (zvýšení, VSTUP); pinMode (pokles, VSTUP); pinMode (current_sense, INPUT); pinMode (voltage_sense, INPUT); // inicializace SPI: SPI.begin (); // nastavení počtu sloupců a řádků na LCD: lcd.begin (16, 2); // Tisk zprávy na LCD. lcd.print („Digital Load“); lcd.setCursor (0, 1); lcd.print ("Přehled okruhů"); zpoždění (2000); }
Používá se pro převod hodnoty DAC.
void convert_DAC (unsigned int value) { / * Velikost kroku = 2 ^ n, proto 12bit 2 ^ 12 = 4096 Pro 5V referenci bude krok 5/4095 = 0,0012210012210012V nebo 1mV (přibližně) * / unsigned int kontejner; unsigned int MSB; unsigned int LSB; / * Krok: 1, uložena 12bitová data do kontejneru Předpokládejme, že data jsou 4095, v binárním formátu 1111 1111 1111 * / container = value; / * Krok: 2 Vytvoření figuríny 8 bitů. Takže dělením 256 jsou horní 4 bity zachyceny v LSB LSB = 0000 1111 * / LSB = kontejner / 256; / * Krok: 3 Odeslání konfigurace s děrováním 4bitových dat. LSB = 0011 0000 NEBO 0000 1111. Výsledek je 0011 1111 * / LSB = (0x30) - LSB; / * Krok: 4 Kontejner má stále 21bitovou hodnotu. Extrahování spodních 8 bitů. 1111 1111 A 1111 1111 1111. Výsledkem je 1111 1111, což je MSB * / MSB = 0xFF & container; / * Krok: 4 Odeslání 16bitových dat rozdělením na dva bajty. * / digitalWrite (slaveSelectPin, LOW); zpoždění (100); SPI.transfer (LSB); SPI.transfer (MSB); zpoždění (100); // vezměte pin SS vysoko a zrušte výběr čipu: digitalWrite (slaveSelectPin, HIGH); }
Tato část se používá pro operace související se snímáním proudu.
float read_current (void) { load_current = 0; for (int a = 0; a <průměr; a ++) { load_current = load_current + analogRead (current_sense); } load_current = load_current / average; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; vrátit load_current; }
Slouží ke čtení zátěžového napětí.
float read_voltage (void) { load_voltage = 0; for (int a = 0; a <průměr; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = load_voltage / průměr; load_voltage = ((load_voltage * MAX_VOLT) / 1024.0) * 6; zpětné zátěžové napětí; }
Toto je skutečná smyčka. Zde se měří kroky přepínání a data se odesílají do DAC. Po přenosu dat se měří skutečný proudový proud a zátěžové napětí. Obě hodnoty jsou také konečně vytištěny na LCD.
void loop () { state1 = analogRead (increase); if (state1> 500) { delay (50); state1 = analogRead (zvýšení); if (state1> 500) { volt = volt + 0,02; } } state2 = analogRead (pokles); if (state2> 500) { delay (50); state2 = analogRead (pokles); if (state2> 500) { if (volt == 0) { volt = 0; } else { volt = volt-0,02; } } } číslo = volt / 0,0012210012210012; convert_DAC (číslo); voltage = read_voltage (); current = read_current (); lcd.setCursor (0, 0); lcd.print ("Nastavit hodnotu"); lcd.print ("="); Sada = (volt / 2) * 10 000; lcd.print (sada); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (aktuální); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd. tisk (napětí); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // zpoždění (1000); //lcd.clear (); }
Testování naší nastavitelné stejnosměrné zátěže
Digitální zátěžový obvod je připájen a napájen pomocí zdroje napájení 12V. Použil jsem lithiovou baterii 7,4 V na straně zdroje energie a připojil klešťový měřič, abych zkontroloval, jak funguje. Jak vidíte, když je nastavený proud 300 mA, obvod odebírá 300 mA z baterie, která je také měřena klešťovým měřičem jako 310 mA.
Kompletní fungování obvodu najdete ve videu, na které odkazujete níže. Doufám, že jste pochopili projekt a bavilo vás stavět něco užitečného. Pokud máte nějaké dotazy, nechte je v sekci komentářů nebo použijte fóra.