Aktivní chladící systém pro LED komponenty

Anton Paus, Vladimír Pacholík, UREL, FEEC, VUT Brno
xpausa00stud.feec.vutbr.cz
xpacho01stud.feec.vutbr.cz

Obsah:

  1. Úvod
  2. Realizace
  3. Závěr
  4. Literatura

Úvod

Tento projekt se zabývá návrhem a následnou realizací samostatně pracujícího aktivního chlazení pro LED komponenty. Základem je lopatkový ventilátor, který slouží pro efektivní odvedení tepla. Jako řídící člen je použit mikrokontrolér ATMega16. Výsledkem je kit, který pomocí vnějších senzorů dokáže efektivně a podle nutnosti reagovat na aktuální potřeby chlazení LED modulu, což zvyšuje životnost a spolehlivost chladícího systému.
Mezi výhody osvětlení pomocí LED diod patří vyšší mechanické odolnost, stabilní svítivost během života diod, menší spotřeba elektrické energie, menší rozměry. Naproti tomu mezi nevýhody patří bodový charakter světla a tepelné vlastnosti, kdy se na světlo přemění jen asi čtvrtina energie. Zbytek je ztrátové teplo. LED je tak kromě světelného zdroje zároveň zdrojem tepla, které je potřeba odvést.

Realizace

Chlazení probíhá aktivně prouděním vzduchu, vytvořené ventilátorem, pasivní chlazení by bylo v tomto případě nedostačující. Ventilátor je spouštěn pouze v případě nutnosti. Podle výstupního signálu z termistoru zařízení rozhodne, zdali ventilátor spustit nebo upravit počet otáček. V tomto projektu je využit ventilátor, který je zpravidla využívaný pro chlazení PC. Díky v něm umístěné Hallově sondě je možné sledovat rychlost otáčení ventilátoru externím zařízením, tzv. TACHO signál. Je napájen stejnosměrně 12V , jeho maximální otáčky jsou 4000 za minutu. Dva ze tří vodičů jsou napájecí. Třetí je použit na měření otáček (frekvence signálu je nepřímo úměrná otáčkám). Při otáčení je na výstupu obdélníkový signál se střídou 50%. Pokud je ventilátor zablokován, je na výstupu vysoká úroveň.

Stav tacho signálu
Obr. 1: Stav tacho signálu

PWM

Řízení otáček ventilátoru se realizuje pomocí PWM . Díky spínání tranzistoru získáváme dvoustavový signál, v jehož střídě (střední hodnotě) je zachycena analogová hodnota signálu. Při řízení tímto způsobem však vzniká nežádoucí projev akustického charakteru. Pro jeho odstranění se použije buď frekvenční filtr, nebo v našem případě filtrační kondenzátor připojený paralelně k ventilátoru. Střídavá složka je tak značně potlačena.

Signál PWM je přiveden přes tranzistor MOSFET typu N (otevírá se při kladném napětí na hradle), jinak by nebylo možné regulovat otáčky v celém rozsahu. Napájecí napětí kitu je totiž +5V, naproti tomu napětí nutné pro řízení ventilátoru odpovídá hodnotě +12V. Navíc toto řešení snižuje proudové zatížení vstupů mikrokontroléru. Tranzistor je zapojen jako spínač. Pokud je na výstupu mikrokontroléru vysoká úroveň, je tranzistor v saturaci, odpor mezi kolektorem a emitorem je minimální. Dojde tak k sepnutí ventilátoru. Naproti tomu pokud je na výstupu mikrokontroléru nízká úroveň, tak je tranzistor uzavřen a ventilátorem teče prakticky nulový proud.
Signál PWN je z mikrokontroléru generován pomocí integrovaného čítače a komparátoru. Díky nastavením předděličky lze nastavit frekvenci signálu. Změnou hodnoty komparačního registru dochází ke změně doby trvání vysoké úrovně.
fun
Obr. 2: Zapojení ventilátoru



Termistor

Pro měření teploty je k mikrokontroléru připojen NTC termistor v můstkovém zapojení. V uzlech můstku je napětí snímáno. Desetibitovým A/D převodníkem tak lze získat potřebná data pro další rozhodování.
V projektu byl použit termistor o odporu 100kΩ (tato hodnota je platná při teplotě 25°C). Charakteristika termistoru je zpravidla nelineární. Pokud do série připojíme rezistor (50kΩ), tak se průběh napětí v závislosti na teplotě linearizuje (aproximuje se lomenou přímkou, výpočet teploty z ze dvou lineárních rovnic - každá pro jiný rozsah teplot). Tyto hodnoty byly zvoleny tak, aby naměřená napětí byla v rozumném poměru k referenčnímu. Je tak využit celý rozsah převodníku. Termistor je tedy společně s dalšími třemi odpory o hodnotě 50kΩ zapojen ve Wheatstonově můstku. Paralelně k termistoru je navíc připojen kondenzátor, napětí na něm je potom stabilnější.

Popis programu

Inicializace - nastavení parametrů
Po spuštění se jako první spouští inicializační funkce (void init(void)).Ta zahájí komunikaci s LCD displejem a zobrazí úvodní obrazovku. Potvrzením klávesou OK se zobrazí obrazovka pro nastavení výkonu modulu LED, ze které se počítá tepelný odpor. Klávesami + a - se mění nastavitelné hodnoty v rozmezí 0-255W s krokem 1W. Po potvrzení se spustí měření otáček ventilátoru. Díky přivedení stálé vysoké úrovně na pin PB3 od začátku spuštění programu je v čase spuštění tohoto měření ventilátor v plných otáčkách. Naměřená hodnota se asi po 3s objeví na displeji a čeká se na potvrzení. Následně se nastavuje teplota okolí a požadovaná teplota na chladiči. Po dalším potvrzení se nastaví registry pro periferie (A/D převodník, čítače, I/O piny) a program následně skočí do nekonečné smyčky.
V rámci této nekonečné smyčky program neustále testuje indikaci dokončení A/D převodu a stlačení tlačítka pro přepínání obrazovek. Pokud jsou k dispozici výsledky převodů všech kanálů, tak program vypne přerušení po A/D převodu a testuje, je-li zapnut ventilátor. Pokud ano, je zavolána funkce, která změří otáčky ventilátoru. Po ukončení tohoto měření se volá funkce, která ze změřených napětí na vstupech A/D převodníku vypočítá teplotu termistoru, tepelný odpor chladiče. Pokud je zapnut ventilátor, tak určí i jeho otáčky (absolutně a relativně) jeho napětí, proud a příkon (spotřebu). Výsledky výpočtu se zobrazí na LCD displeji včetně případných kritických stavů (překročení přípustné teploty na chladiči, zablokovaný ventilátor, odpojený termistor). První dva stavy jsou kvůli kritické funkci indikovány i červenou LED diodou.

Přerušení po dokončení A/D převodu
Protože změna teploty, resp. odporu termistoru probíhá pomalu vzhledek rychlosti převodu, je zaznamenáván jenom jeden vzorek vždy po určité době. Aby se vyloučila nepřesnost, tak po přepnutí kanálu se se začíná zaznamenávat až desátý vzorek. Náhodné kolísání napětí vlivem šumu a jiného rušení je odstraněno průměrováním 32 vzorků každého kanálu. Po získání dostatečného množství vzorků se kanál přepne. Pokud je ventilátor vypnutý, tak se pro měření použijí pouze kanály potřebné pro měření teploty. Jakmile se získá sada 32 vzorků u každého používaného kanálu, dochází k jejich průměrování a nastaví se příznak indikující přítomnost platných dat pro další výpočty. Za situace, kdy napětí na termistoru překročí hodnotu 900, což při správném připojení není možné, protože to odpovídá referenčnímu napětí, se nastaví příznak informující nesprávné připojení termistoru.

Funkce měření otáček
Na začátku dojde k vynulování počítadla měření. Během jednoho volání funkce se vykonají tři měření a jejich výsledky se zprůměrují. Aby bylo možné změřit otáčky ventilátoru, musí se na řídící pin PB3 přivést na krátkou dobu stála vysoká úroveň. Při aplikaci PWM signálu se měření otáček nedá zrealizovat. Proto se pomocí řídícího registru PWM výstup vypne a příslušný pin se nastaví na vysokou úroveň. Vlivem setrvačnosti ventilátoru se jeho otáčky za tuto dobu zvýší jenom nepatrně, ale na výstupu TACHO vznikne obdélníkový signál, kterého periodu možno lehce změřit. Využije se k tomu jednotka Capture čítače/časovače 1. Řídící registry se nastaví tak, aby došlo k zachycení stavu čítače při detekci nástupné hrany a zároveň se povolí obsluha přerušení po jeho přetečení. V rámci funkce se spustí smyčka, která čeká na indikaci dokončení měření (proměnná data_ready_rpm). V rámci obsluhy přerušení po zachycení hrany se přepne citlivost na sestupní hranu a stav čítače se uloží do proměnné start. V druhém přerušení se zaznamená stav čítače do proměnné stop. Rozdílem hodnot proměnných start a stop se získá délka pulzu obdélníkového signálu, která je čtvrtinou periody otáčky ventilátoru. Následně se nastaví příznak data_ready_rpm, sníží se hodnota počítadla a čeká se na další měření. Měření délky pulzu se zopakuje 3-krát a výsledek se zprůměruje. V případe, že nenastane zachycení hrany, po přetečení čítače1 se spustí obsluha přerušení, která vrátí měření s nulovou hodnotou. To znamená, že ventilátor se netočí a funkce vrátí nulovou hodnotu RPM. Po ukončení měření se opět spustí PWM výstup. Funkce vrací přímo vypočítané otáčky. Závěrečný kód funkce ošetřuje situace při rozběhu ventilátoru, kdy se otáčky prudce mění a mohlo by dojít k zobrazení nesprávných hodnot.

Funkce výpočtů
Rozdílem uzlových napětí na můstku se vypočítá teplota na termistoru a aproximuje se závislost odporu termistoru na teplotě lomenou přímkou. Na základě vypočítaných parametrů (teplota a parametry zadané uživatelem na začátku měření, jako je teplota okolí a výkon modulu) se počítá tepelný odpor. Ve funkci výpočtů se provádí i samotné řízení chlazení. Testuje se hodnota teploty a po překročení zadané hodnoty dochází k zapnutí ventilátoru. Otáčky jsou řízeny algoritmem popsaným níže. Pokud teplota klesne pod zadanou teplotu, dojde naopak k vypnutí ventilátoru. Také se testují příznaky kritických stavů mezi které patří zablokovaný ventilátor (nulové otáčky při zapnutém ventilátoru) a překročení maximální teploty.

Algoritmus řízení otáček pro stabilizaci teploty
Řízení otáček probíhá v rámci funkce pro výpočty. Algoritmus se vykonává pouze při zapnutém ventilátoru. Nejprve se do proměnné delta_temperature zaznamená změna teploty z předešlého měření a to tak, že se integruje po dobu 32 měření. Tím se získá směrnice závislosti teploty na čase (tedy jestli teplota stoupá nebo klesá) a zároveň se vyfiltrují malé změny teploty opačného směru jako je celková tendence. Po ukončení integrace se algoritmus rozdělí podle toho, jestli je aktuální teplota vyšší nebo nižší než zadaná. Jestli je vyšší, nastaví se příznak higher a testuje se, jestli je směrnice záporná a v absolutní hodnotě menší než hraniční hodnota. Jestliže tato podmínka splněna není, zvýší se hodnota komparačního registru pro generování PWM signálu a tedy i otáčky ventilátoru. To by mělo zpomalit stoupání teploty a nakonec způsobit její pokles až se směrnicí, jejíž hodnota je rovna hraniční. Naopak jestli je aktuální teplota nižší než zadaná, nastaví se příznak lower a algoritmus se snaží docílit, aby teplota začala s hraniční směrnicí stoupat. To znamená, že postupně snižuje hodnotu komparačního registru a tedy i otáčky ventilátoru. Výsledkem je oscilujúcí průběh teploty v čase, přičemž v lineární části průběhu by měla být směrnice určena hraniční hodnotou v programu (změna o 0,5 °C během integrační doby). Při přechodu teploty přes zadanou hodnotu (nulový rozdíl mezi aktuální a zadanou) dojde k zmenšení absolutní hodnoty směrnice průběhu podle toho, jestli byl předcházející stav vyšší nebo nižší než zadaná teplota (testování proměnných higher a lower). Zároveň je při změnách hodnoty komparačního registru zabezpečeno, aby nedošlo k přetečení nebo k podtečení.

Ukázka zdrojového kódu:

Měření otáček

// funkce na mereni otacek ventilatoru (metoda pulse stretching)
// vraci delku ctvrtiny periody jednoho otoceni ventilatoru
// vyjadrenou v hodinove periode citace 1 (64/F_clock)

unsigned int measure (void)
{
	counter = 3;
	RPM = 0;

	while (counter>0)
		{
			data_ready_rpm = 0;   
				
			if (first==0)
				{
					TCCR0 = 0;			// vypnuti PWM rizeni 
					PORTB |= (1<<PB3);	// ridici pin se nastavi na konstatni vysokou uroven
				}

			priemer = 0;		// nulovani promenne
			a = 0;				// nulovani pocitadla pro pocet preteceni citace 1

			TCNT1 = 0;			// nulovani citace
			TIMSK |= (1<<TICIE1);	// zapnuti preruseni po detekci hrany
			TIMSK |= (1<<TOIE1);	// zapnuti preruseni po preteceni citace 1

			while(data_ready_rpm==0);	// smycka do ukonceni jednoho mereni			
			data_ready_rpm = 0;		// nulovani priznaku dokonceneho mereni		

			TIMSK &=~(!0<<TICIE1);	// vypnuti preruseni po detekci hrany
		 	TIMSK &= ~(!0<<TOIE1);// vypnuti preruseni po preteceni citace 1	

			if (first==0)
				{
					PORTB &=~(!0<<PB3);		// ridici pin do nizke urovne
					// zapnuti PWM rizeni
					TCCR0 |= (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(0<<COM00)|(2<<CS00);
				}

			if (priemer > 0)
				{
					RPM += (37500/priemer);
				}
			else
				{
					RPM = 0;
				}

			counter--;
		}

	RPM /= 3;

	if (first==0)
		{
	
			if ((RPM > RPM_memory) && (RPM!=0) )
				{
					if ((RPM - RPM_memory)>10)
						{
							RPM = RPM_memory;
						}
					else
						{
							RPM_memory = RPM;
						}
				}
	
			if ((RPM < RPM_memory) && (RPM!=0))
				{
					if ((RPM_memory - RPM)>10)
						{
							RPM = RPM_memory;
						}
					else
						{
							RPM_memory = RPM;
						}
				}
		}
	
	return RPM;		// vraci hodnotu prumerne delky pulzu
}
ISR (TIMER1_OVF_vect)				// obsluha preruseni po preteceni citace 1
{
	a++;

	if(a==2)				// perioda pro vyhodnoceni zablokovaneho ventilatoru
	{
		priemer = 0;			// vraceni nulove hodnoty delky pulzu
		data_ready_rpm = 1;
		a = 0;
	}					
}

ISR (TIMER1_CAPT_vect)				// obsluha preruseni po zachyceni hrany
{
	if (bit_is_set(TCCR1B,ICES1))
		{
			start = ICR1;		// ulozeni stavu citace pri nastupni hrane
			TCCR1B &= ~(!0<<ICES1);	// zmena citlivosti na sestupnou hranu
		}
	else
		{
			stop = ICR1;		// ulozeni stavu citace pri sestupni hrane
			pulse = (stop - start);	// vypocet delky pulzu
			TCCR1B |=  (1<<ICES1);	// zmena citlivosti na nastupnou hranu	
			priemer = pulse;	// ulozeni delky pulzu
			a = 0;			// nulovani promenne, ventilator se toci
			TCNT1 = 0;  		// nulovani citace
			data_ready_rpm = 1;	// indikace dokonceni mereni
		}
}



Regulace otáček
delta_temperature += (teplota - temp_memory); // integrace zmeny teploty
counter2++;				// pocitadlo vzorku na integraci
temp_memory = teplota;	// ulozeni soucasne hodnoty pro vypocet nasledne zmeny teploty

if (counter2 == 32)		// ukonceni integrace	
	{
		counter2 = 0;	// nulovani pocitadla

		if (teplota > (Tstart*10))	// jestli je teplota vyssi nez zadana
			{
				higher = 1;		// nastavi se prislusne priznaky
				lower = 0;

				if (delta_temperature > (-strmost))	// testovani hodnoty v integratoru
					{					
						OCR0 += 5;		// jestli nevyhovuje zvysi se otacky
										
						if (OCR0 > 249)	// zabraneni preteceni komparacniho registru
							{
								OCR0 = 250;
							}								
					}
			}
		else if (teplota < (Tstart*10))	// jestli je teplota nizsi nez zadana
			{
				higher = 0;		// nastavi se prislusne priznaky
				lower = 1;

				if ((delta_temperature < strmost))	// testovani hodnoty v integratoru
					{
						OCR0 -= 5;		// jestli nevyhovuje snizi se otacky
				
						if (OCR0 < 20)	// zabraneni preteceni komparacniho registru
							{
								OCR0 = 20;
							}								
					}
			}
		else						// jestli je teplota rovna zadana
			{
				if (higher==1)		// testuje se predesly stav
					{
						OCR0 -= 5; 
					}

				if (lower==1)
					{
						OCR0 += 5;
					}								
			}
	}
             

Závěr

Navrhované zařízení se podařilo zprovoznit. Funkční je měření teploty, otáček, a elektrických parametrů ventilátoru včetně indikace kritických stavů. Kvůli zdržení při výrobě hardwaru (výběr nevhodné pájecí pasty a nasledné zjišťování chyby a nutnost očištění pasty i zpod součástek) se nestihla realizace komunikace s PC. Při testování zařízení byl použit zapůjčený reálný LED modul používaný v běžných svítidlech. Algoritmus regulace je funkční, avšak potřeboval by ještě doladění na základě dlouhodobějšího používání zařízení (uplatnila by se komunikace s PC a vykreslování průběhů do grafu).

Schémata a obrazová dokumentace

Schéma zapojení
Schéma zapojení

TOP
Spoj TOP

BOTTOM
Spoj BOTTOM

Full Frontal
Celkový pohled na zařízení


screen1
Obrazovka č.1: Zobrazení teploty, odporu a otáček.

screen2
Obrazovka č.2: Zobrazení napětí, proudu a příkonu ventilátoru.

screen3
Obrazovka č.1: Zobrazení při zablokovaném ventilátoru včetně indikační LED diody.

Ke stažení

Materiály k projektu lze stáhnout zde.

Literatura

[1] DOLEČEK, J., Moderní učebnice elektroniky 3.díl, Praha, BEN – technická literatura, 2005, ISBN 80-7300-184-5.
[2] FUKÁTKO, T. , FUKÁTKO, J. , Teplo a chlazení v elektrotechnice II., Praha, BEN – technická literatura, 2006, ISBN 80-7300-199-3.
[3] KOLÁŘ, P., Aplikace LED : bakalářská práce, Brno, Vysoké učení technické, 2010.
[4] MATOUŠEK, D., Práce s mikrokontroléry ATmega16 4.díl, Praha, BEN – technická literatura, 2006, ISBN 80-7300-174-8.
[5] PINKER, J., Mikroprocesory a mikropočítače, Praha, BEN – technická literatura, 2004, ISBN 80-7300-110-1.
[6] Atmel Corporation, 8-bit Microcontroller ATmega16. [online] 2009 [cit. 07.08.2009]. Dostupné na WWW: http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf
[7] Atmel Corporation, 8-bit Microcontroller ATtiny45. [online] 2009 [cit. 07.08.2009]. Dostupné na WWW: http://www.atmel.com/dyn/resources/prod_documents/doc2586.pdf
[8] GENUTH, I., Ionic Wind – Chillin´ the PC. [online] 2010 [cit. 07.08.2010]. Dostupné na WWW: http://thefutureofthings.com/articles.php?itemId=46/59/
[9] LAZARIDIS, G., PWM 3-Wires Fan Controller with RPM feedback (Pulse Stretching Method) [online] 2010 [cit. 07.08.2010]. Dostupné na WWW: http://pcbheaven.com/circuitpages/PWM_3_Wires_Fan_Controller_with_RPM_feedback/
[10] Nuventix: Synjet Technology [online] 2010 [cit. 07.08.2010]. Dostupné na WWW: http://www.nuventix.com/technology/
[11] Wikipedia : Thermal Management of High-power LEDs [online] 2010 [cit 07.08.2010]. Dostupné na WWW: http://en.wikipedia.org/wiki/Thermal_management_of_high-power_LEDs#Package_type
[12] Arpad Bergh, George Craford, Anil Duggal, and Roland Haitz, The Promise and the Challenge of Solid-state lightings. [online]2010 [cit. 19.08.2010]. Dostupné na WWW: http://scitation.aip.org/journals/doc/PHTOAD-ft/vol_54/iss_12/42_1.shtml?bypassSSO=1
[13] Wikipedia : Thermoacoustic [online] 2010 [cit. 07.08.2010] Dostupné na WWW: http://en.wikibooks.org/wiki/Engineering_Acoustics/Thermoacoustics#Principle_of_operation
[14] Wikipedia : Luminous Efficancy [online] 2010 [cit. 07.08.2010] Dostupné na WWW: http://en.wikipedia.org/wiki/Luminous_efficacy
[15] Wikibooks : Engineering Acoustic / Thermoacoustic [online] 2010 [cit. 07.08.2010] Dostupné na WWW: http://en.wikibooks.org/wiki/Engineering_Acoustics/Thermoacoustics#Principle_of_operation
[16] Sunon : Technology. [online] 2010 [cit. 07.08.2010] Dostupnéna WWW: http://www.sunon.com/pro.php?c1=7
[17] Maxim : Circuit Converts PWM Fan Drive to Linear and Reduces Acoustic Noise. [online] 2010 [cit. 07.08.2010] Dostupné na WWW: http://pdfserv.maxim-ic.com/en/an/AN3530.pdf