27 ledna, 2022

Jak postavit regulátor ventilátoru PWM s proměnnou rychlostí

v tomto článku vám ukážu, jak postavit regulátor ventilátoru PWM (DC) pomocí krátkého programu C a několika částí včetně sady pro vývoj mikrokontroléru Launchpad RM57L. Umožňuje uživatelům efektivně měnit rychlost ventilátorů PWM, aby se snížila hladina hluku a spotřeba energie. Tento projekt automaticky monitoruje teplotu objektu, ke kterému je připojen teplotní senzor (v tomto případě chladič CPU používaný k chlazení malého termoelektrického modulu), a podle toho řídí rychlost ventilátoru, aby se minimalizoval výstup šumu a spotřeba energie. Níže je ukázka ovladače ventilátoru používaného na chladiči stolního procesoru.

Video: Kompulsa.

než se naučíte, jak postavit regulátor otáček ventilátoru, pomůže vám zjistit, jak fungují různé metody řízení rychlosti. Vysvětlím dvě klíčové technologie: odporové regulátory otáček a regulátory ventilátorů PWM.

odporové regulátory otáček

odporové regulátory otáček řídí dané otáčky motoru ventilátoru tím, že odolávají toku proudu ze zdroje energie do motoru. To lze provést kombinací potenciometru a tranzistoru nebo jiného varistorového obvodu. Bývalá technologie je velmi snadná, ale způsobuje, že tranzistor vypálí docela dost proudu, který jím prochází. Proto je neefektivní. PWM na druhé straně pulzuje plný proud zapnutí a vypnutí mnohokrát za sekundu. Tranzistor bude stále plýtvat elektřinou, ale ne tolik.

regulátory otáček PWM

pulzní šířková modulace je mnohem složitější, lepší a stále běžnější metoda řízení proudu, která mimo jiné usnadňuje řízení otáček motoru, jasu lampy energeticky účinným způsobem. Mezi klíčové důvody pro regulátory motorů PWM patří zlepšení účinnosti spotřebičů a snížení hladiny hluku jejich provozem při nízkých rychlostech, kdykoli je to možné.

použil jsem ti Launchpad RM57L MCU development kit postavit tento řadič ventilátoru (díky TI pro odeslání), ale tento kód lze snadno upravit tak, aby běžet na levnější Launchpad TMS57012, nebo Launchpad TMS57004 Launchpads stejně.

když se učíte, jak postavit řadič ventilátoru pwm, pomáhá pochopit nebo se naučit, jak provádět různé technologie/metody, jakož i jejich výhody a nevýhody. Tímto způsobem budete přesně vědět, Které a kdy použít.

tento článek předpokládá, že máte nějaké zkušenosti s elektrotechnikou a víte, jak bezpečně připojit tranzistor, senzor a všechna ostatní uvedená zařízení. Vyzkoušejte tento Projekt na vlastní nebezpečí.

Obsah

  1. Seznam Dílů Seriálu.
  2. Příprava Vývojového Prostředí.
  3. začněme kódovat!

tato prezentace vyžaduje JavaScript.

Seznam dílů seriálu

Všechny ceny jsou uvedeny v USD.

  1. 2n6284g NPN Darlington BJT tranzistor. BJT znamená bipolární tranzistor (vhodný, protože má stejnosměrný proud 750).
  2. tři 12 kOhm 1/2 wattové rezistory.
  3. spojovací skříňka se šroubovými svorkami nebo barovým konektorem.
  4. Texas Instruments Launchpad RM57L MCU (RM57L843) vývojová sada.
  5. 10 kOhm NTC Termistor s hodnotou b 3435. „NTC“ znamená, že odpor klesá vždy, když se teplota zvyšuje.
  6. 40mm x 40mm (nebo větší, pokud nemůžete najít tuto velikost) chladič pro tranzistor.
  7. propojovací vodiče / kolíky pro připojení čepů vývojové sady k tranzistoru a pro připojení tranzistoru ke zdroji energie(pokud nepoužíváte prkénko). Ty jsou obvykle v rozmezí $ 3-6.
  8. 12 nebo 5 voltový zdroj napájení.
  9. 12 Volt CPU ventilátor, nebo 5 volt laptop ventilátor (tento projekt je určen pro tři nebo čtyři-wire ventilátory, které podporují PWM). Ty jsou obvykle v rozmezí$10- $ 20.
  10. chladič CPU (včetně chladiče a ventilátoru) nebo jakákoli jiná kombinace ventilátoru a horkého předmětu, který lze s ním ochladit. To vám umožní sledovat, jak se regulátor ventilátoru automaticky ochladí a vypne ventilátor. Použil jsem chladič CPU s vestavěným ventilátorem. Je to konečný test!

doporučil bych připojit chladič k tranzistoru, pokud budete napájet velké ventilátory (větší než malé 80mm ventilátory, které se obvykle používají pro chlazení stolního procesoru). Bude generovat značné množství tepla.

připravte si vývojové prostředí

vývojová sada RM57L843 je srdcem tohoto regulátoru ventilátoru PWM (způsob, jakým tyto mikrokontroléry fungují, se příliš neliší od Arduina, takže se nenechte zastrašit!). Naším prvním krokem k vybudování tohoto regulátoru ventilátoru pwm je nastavení našeho vývojového prostředí, které budeme používat k programování / blikání MCU.

Připojte vývojovou sadu Launchpad RM57L do portu USB počítače pomocí dodaného kabelu a poté vytvořte účet Texas Instruments, abyste si mohli stáhnout IDE CCS. Pro toto cvičení použijeme také HALCoGen. HALCoGen je generátor kódu HAL, který vám umožní snadno konfigurovat MCU pomocí GUI. V tomto případě jej použijeme ke konfiguraci analogově-digitálního převodníku (mibadc) a modulu časovače HET.

Stáhněte si HALCoGen a CCS (ujistěte se, že jste přihlášeni ke svému účtu TI pro CCS)a poté podle níže uvedených pokynů vytvořte svůj projekt HALCoGen.

nejprve vytvořte nový projekt v Halcogenu, vyberte vývojovou sadu „RM57Lx“ a napravo od obrazovky uvidíte seznam jeho variant. V tomto případě existuje pouze jedna varianta: RM57L843ZWT. Vyberte to a pojmenujte svůj projekt „PWM“, jak je uvedeno níže. Do pole „Umístění“ zadejte cestu projektu, poznamenejte si ji a klikněte na OK. Náš projekt CCS uložíme do stejného adresáře. Váš projekt PWM by měl být umístěn ve složce s názvem PWM, pod vaším pracovním adresářem, který pojmenujeme RM57L.

screenshot obrazovky

vytvořte nový projekt s názvem “ PWM “ v Halcogenu. Zde nakonfigurujete moduly ADC a HET.

Chcete-li vytvořit regulátor ventilátoru PWM, musíte nastavit časovače, které budou oscilovat malým elektrickým zapínáním a vypínáním, a nastavit jejich frekvenci.

dále povolte ovladače ADC1 a HET1 výběrem karty „povolit ovladač“ a zaškrtnutím políček, jak je uvedeno níže. Analogový digitální převodník (ADC) bude použit k převodu odečtu analogového teplotního senzoru na digitální hodnotu, kterou můžeme použít k určení teploty, což umožní regulátoru ventilátoru odpovídajícím způsobem upravit rychlost ventilátoru. Špičkový časovač (HET) bude použit ke generování našeho signálu PWM, který bude použit k ovládání jednoduchého tranzistoru BJT.

doporučuji zrušit zaškrtnutí ostatních ovladačů, abyste šetřili systémové prostředky(například: RAM a flash paměť).

povolit ovladače-adc-and-het

povolit ovladače HET1 a ADC1 v Halcogenu.

nyní je čas nakonfigurovat analogový převodník našeho PWM ventilátoru (který je zabudován do Launchpadu RM57L MCU). Přejděte na kartu ADC1 a nastavte velikost FiFo na 1, protože to je vše, co pro tento projekt potřebujeme. Vyberte také povolit Pin 7, protože k tomu připojíme snímač teploty. Pin 7 je označen „AI1_7“ na spodní straně vývojové sady Launchpadu.

jak funguje analogová digitální konverze

Screenshot konfigurace ADC1

přejděte na kartu HET1, kde nakonfigurujete časovač PWM našeho řadiče ventilátoru (zabudovaný do vývojové sady RM57L) a pin HET, který řídí tranzistor napájející ventilátor, a proveďte následující kroky, jak je znázorněno na dalším snímku obrazovky.

vyberte kartu PWM 0-7, nastavte pole povinnost pro PWM 0 až 0. To nastavuje pracovní cyklus signálu PWM na 0, proto nastavte pracovní cyklus ventilátoru, který ovládáte, na 0. Pracovní cyklus 0 jednoduše znamená, že ventilátor bude vypnutý. Dalším způsobem, jak to říct, je: procento času, kdy bude napájení zapnuto, je 0.

v tomto projektu začneme s pracovním cyklem 0, protože programově upravíme pracovní cyklus (a tím i rychlost ventilátoru) tak, aby sledoval teplotu chladiče, ke kterému je připojen teplotní senzor. Když je pracovní cyklus nastaven na 0, regulátor ventilátoru vypne ventilátor (0 odpovídá 0%). Dále zaškrtněte dvojici políček „povolit“ nalevo od pole „Pin“. To umožňuje signál PWM. Zadejte 2 do pole „Pin“, což je port HET 1, Pin 2, označený „HET1_2“ na spodní straně Launchpadu. Nakonec: do pole tečka zadejte 10 000 (bez čárky).

jednotka použitá v tomto poli je mikrosekunda. Mikrosekunda je jedna miliontina sekundy. Nastavení tohoto pole na 10 000 způsobí, že časovač het zapne a vypne napájení každých 10 000 mikrosekund (každých 0.01 sekund). Díky tomuto rychlému přepínání si nevšimnete, že se napájení zapíná a vypíná, což má za následek hladký a nepřetržitý provoz ventilátoru.

 konfigurační obrazovka PWM.

povolte časovač ‚PWM 0‘.

Chcete-li zabalit konfiguraci HALCoGen, vyberte kartu Pin 0-7. Zde nakonfigurujete kolík RM57L, ke kterému bude připojena základna tranzistoru (samozřejmě prostřednictvím rezistoru 12 kOhm). Zaškrtněte políčko DIR v části „Bit 2“, Jak je uvedeno níže, a nastavte bit 2 na výstupní směr. To nám umožňuje zapnout ventilátor. Pin může být označován jako bit, takže „Bit 2“ v tomto případě znamená het Pin 2.

Co Je Odpor?

výstupní hodnota (označená DOUT na obrázku níže) je stav pin, který může být buď zapnuto (1), nebo Vypnuto (0). Ujistěte se, že je nastavena na hodnotu 0, takže je vypnutá, když se MCU zpočátku spustí.

konfigurační obrazovka časovače het

nastavuje HET1, Pin 2 do směru výstupu.

vyberte soubor > uložit projekt a poté soubor > vygenerovat kód (nebo stiskněte klávesu F5). Sledujte podokno „výstup“ ve spodní části, dokud neříká, že je generování kódu dokončeno. Nyní se můžete přesunout do konfigurace CCS a až budete hotovi, můžete konečně shromáždit součásti a postavit ovladač ventilátoru.

Pojďme kód!

spusťte CCS a vyberte / vytvořte adresář s názvem RM57L jako pracovní prostor, jak je uvedeno níže. Vytvořte nový projekt v Code Composer Studio s názvem PWM, který bude uložen v kořenovém adresáři PWM, kde uvidíte PWM.soubor hcg. PWM.hcg je váš soubor projektu HALCoGen. Jak jsem řekl výše, soubory projektů CCS a HALCoGen musí být ve stejném adresáři pro toto cvičení.

zapojte vývojovou sadu Launchpad RM57L pomocí dodaného kabelu USB.

vpravo vyberte z rozevíracího pole‘ RM57L8x‘, protože to budeme používat. Dále vyberte debug sondu XDS110 USB z rozevíracího pole pod ní. Nakonec vyberte „prázdný projekt“ a klikněte na Dokončit.

vytvořte projekt CCS

klikněte pravým tlačítkem myši na projekt PWM v podokně Průzkumníka projektu (je na levé straně obrazovky)a poté přidejte složku HALCoGen / includes z adresáře projektu PWM do projektu CCS kliknutím na tlačítko zakroužkované níže. Tyto RM57L obsahují soubory se skládají z knihoven a ovladačů, které usnadňují psát programy pro MCU.

přidat zahrnout adresář

přejděte na hl_sys_main.soubor c v podokně Průzkumníka projektu vlevo pod /PWM / source/. V tomto souboru vložte níže uvedený vzorek kódu RM57L.

zdrojový kód (ukázka kódu Hercules RM57L)

následující ukázkový kód RM57L lze nahrát do vašeho Launchpadu přes USB pomocí Code Composer Studio. Takto by měl vypadat zdrojový soubor:

hodnoty teploty jsou ve °C.

HL_sys_main.c

/* USER CODE BEGIN (1) */#include "HL_het.h" //The HET library we'll use for PWM.#include "HL_adc.h" //The ADC library we'll use to read the sensor./* USER CODE END */void main(void){/* USER CODE BEGIN (3) */adcData_t adc_data; //ADC Data Structure.adcData_t *adc_data_ptr = &adc_data; //ADC Data Pointer.unsigned int value; //The ADC value is stored in this variable.float resistance; //The resistance of the thermistor at the current temperature reading;float degperohm = 0.003267974; //Degrees per ohm of resistance.unsigned int temperature; //The temperature in degrees Celsius.hetInit(); //Initialize the HET module.adcInit(); //Initialize the ADC module.while(1) //ADC conversion loop.{ adcStartConversion(adcREG1, 1U); //Start conversion on ADC 1. while(!adcIsConversionComplete(adcREG1, 1U)); //Keep looping until the conversion is complete. adcGetData(adcREG1, 1U, adc_data_ptr); //Store conversion into ADC pointer value = (unsigned int)adc_data_ptr->value; resistance = 1000 * (4096 / value); temperature = degperohm * resistance;//Adjust the fan speed based on the temperature readings obtained above. pwmStart(hetRAM1, pwm0); if (temperature < 40) { pwmSetDuty(hetRAM1, pwm0, 0U); //0% duty cycle. Fan is switched off. } else if (temperature >= 40 && temperature <= 42) { //If the temp is between 40°C and 42°C, set the fan to 20%. pwmSetDuty(hetRAM1, pwm0, 20U); //20% duty cycle. Fan Speed 1. } else if (temperature >= 42 && temperature <= 44) { pwmSetDuty(hetRAM1, pwm0, 30U); //30% duty cycle. Fan Speed 2. } else if (temperature >= 44 && temperature <= 46) { pwmSetDuty(hetRAM1, pwm0, 40U); //40% duty cycle. Fan Speed 3. } else if (temperature >= 46 && temperature <= 48) { pwmSetDuty(hetRAM1, pwm0, 50U); //50% duty cycle. Fan Speed 4. } else if (temperature >= 48 && temperature <= 50) { pwmSetDuty(hetRAM1, pwm0, 60U); //60% duty cycle. Fan Speed 5. } else if (temperature >= 50 && temperature <= 52) { pwmSetDuty(hetRAM1, pwm0, 70U); //70% duty cycle. Fan Speed 6. } else if (temperature >= 52 && temperature <= 54) { pwmSetDuty(hetRAM1, pwm0, 80U); //80% duty cycle. Fan Speed 7. } else if (temperature >= 54 && temperature <= 56) { pwmSetDuty(hetRAM1, pwm0, 90U); //90% duty cycle. Fan Speed 8. } else if (temperature >= 56 && temperature <= 58) { pwmSetDuty(hetRAM1, pwm0, 100U); //100% duty cycle. Fan Speed 9 (full speed). } else if (temperature > 65) { //65 //Code to display a temperature warning. 65 °C is a bit hot, warn the user. } else if (temperature > 70) { //Code to shut the device down (70 °C just won't do, shut it off). }} //End of ADC conversion loop./* USER CODE END */}

tento kód RM57L můžete šířit za předpokladu, že na tuto stránku vložíte odkaz.

vždy umístěte svůj kód mezi / * user CODE BEGIN * / a / * USER CODE END * / comments, takže HALCoGen nebude odstranit po provedení změn v projektu.

vždy mějte na paměti, že teplota chladiče bude nižší než teplota CPU nebo jakéhokoli zařízení, které chladí. To znamená, že pokud je chladič 70 °C, pak je CPU ještě teplejší. Můžete také navrhnout tento regulátor ventilátoru pwm pro přímé měření teploty procesoru a umístění termistoru na něj. To je přesnější, protože teplota chladiče pomalu zaostává za teplotou procesoru.

každá z hodnot ADC jsou digitální reprezentace hodnot teploty regulátoru ventilátoru a každý rozsah hodnot představuje teplotní rozsah, který vyžaduje určité množství proudění vzduchu k jeho ochlazení. V případě tohoto termistoru odpovídá nižší hodnota ADC vyšší teplotě a naopak. Kód byl nyní aktualizován, aby převedl hodnoty analogově-digitálního převodníku na hodnoty teploty ve stupních Celsia.

příklad scénáře: Rozsah hodnot ADC 310 až 320 může být dostatečně vysoký, aby zaručil spuštění ventilátoru až na 80%, protože to naznačuje, že náš testovací subjekt (chladič a tím i CPU) se zahřívá. Pokud je však chladič / ventilátor dostatečně velký, neměla by být tato rychlost po většinu času nutná. To je jeden případ, ve kterém budete chtít vydělávat na větší chladič.

na druhé straně rozsah hodnot ADC 340 až 350 může znamenat, že chladič je jen trochu teplý a vyžaduje, aby ventilátor pracoval pouze při velmi nízkém nastavení (20%), takže při tomto nastavení bude mnohem tišší. Nastavil jsem pracovní cyklus na základě hodnotových rozsahů ADC namísto přesných hodnot ADC, abych se vyhnul častým výkyvům rychlosti. Vřele doporučuji implementovat rutinu UART, která přenáší hodnoty analogově-digitálního převodníku do počítače, takže můžete vidět vše, co se děje v reálném čase. Usnadňuje ladění a je také informativní.

užitečné aplikace pro PWM zahrnují, ale nejsou omezeny na:

  1. klimatizace a regulace otáček kompresoru chladničky pro zvýšení účinnosti a snížení hladiny hluku.
  2. LED lampa stmívání.
  3. HEV / řízení rychlosti elektrického vozidla.
  4. regulátory větracích ventilátorů.
  5. regulátory ventilátorů chladiče, které mohou šetřit elektřinu, plyn a snižovat hlukové znečištění způsobené automobily na silnicích. Snížení hluku by v některých případech mohlo lidem pomoci lépe spát v noci.

mějte na paměti, že všechny výše uvedené aplikace vyžadují ventilátor, který podporuje PWM. Bohužel ne všichni fanoušci jsou pro to postaveni.

nastavení hardwaru

jak jsem řekl na začátku, tento článek byl napsán s předpokladem, že víte, jak používat tranzistor a jak bezpečně připojit senzor k Launchpadu.

Připojte termistor k portu ADC 1 pin 7 a tranzistor k portu HET 1 pin 2 na vývojové sadě RM57L pomocí tří rezistorů v seznamu dílů. Pokud používáte chladič CPU (chladič + vestavěný kombo ventilátoru), vložte snímač teploty do chladiče (ujistěte se, že nedovolte, aby některý ze svorek senzoru přišel do kontaktu s chladičem, který může být elektricky vodivý). Připojte ventilátor chladiče k regulátoru. Níže uvedené návody vám pomohou naučit se, jak nastavit ventilátor, ADC pin a tranzistor.

Sparkfun vysvětluje analogovou konverzi na digitální a základní příklad připojení senzoru ADC zde (což je to, co jsem použil pro tento projekt, kromě toho, že můj senzor má dva vodiče, spíše než tři, které jejich potenciometr dělá). Vysvětlují zde také tranzistory.

jakmile to zvládnete, můžete mít ovladač ventilátoru v provozu!

senzor

ADC ve vývojové sadě RM57L MCU převádí analogové kolísání napětí způsobené termistorem (nebo podle toho, který teplotní senzor používáte) na digitální hodnoty uložené ve výše uvedené proměnné hodnoty. Vzhledem k tomu, že hodnoty ADC jsou závislé na senzoru, který používáte, musíte použít SPECIFIKACE v dokumentaci senzoru k převodu hodnot teploty na stupně.

čidlem použitým pro tento projekt byl termistor uxcell 3435B 10 kOhm. Termistor je odpor navržený tak, aby měnil svůj odpor s teplotou (mnohem více než běžný odpor). Pokud je termistor hodnocen na 10 kOhm, znamená to, že jeho odpor je 10 kOhm při 25 °C.

Pozn.: odpor daného termistoru se nebude lineárně měnit s teplotou, což je důvod, proč výrobci termistorů poskytnou graf teploty proti odporu a (někdy) hodnoty a, B A C pro použití v Steinhartově-Hartově rovnici, která tento problém řeší.

kód úspěšně testován s verzemi CCS:

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.