Regulace LED světla

 

Martin Kotol,106550, UREL, FEEC, VUT Brno
xkotol00@
stud. feec.vutbr.cz

 

Úvod

 

V tomto projektu se budu zabívat regulací jasu LED diod. Tato regulace bude realizována pomocí mikroprocesoru AT MEGA 644, který bude generovat PWM modulaci a v závislosti na střídě této modulace budu regulovat jas LED diod jejich rozsvěcováním a zhasínáním.

 

 

Realizace

 

Napájení je realizováno jednoduchým stabilizátorem s LM7805 a jeho katalogovým zapojením. Pro ochranu jsou zde ještě přidány diody D5 a D4. Kondenzátor C4, který je na vstupu obvodu pro lepší vyhlazení vstupního napětí. Já jsem zvolil vstupní napětí 12V. Toto napětí může být samozřejmě jiné, ale v rozmezí vstupních napětí obvodu 7805 to nejčastěji bývá do +35V.

 

 

napájení.png

Obr.1:Schéma zapojení napájecího obvodu

 

 

Samotné řízení svitu LED diod je realizováno mikrokontrolérem AT MEGA 644. Jako zdroj hodinového kmitočtu jsem použil externí krystalový oscilátor s kmitočtem 16 MHz. Pro univerzálnost zapojení jsem vyvedl vetšinu pinů mikrokontroléru na konektory a mikrokontrolér jsem osadil do patice. Pro napájení nizkoodběrových zařízení jsem umístil na desku plošných spojů ještě konektor s výstupným napětím +5V. Programování mikrokontroléru je řešeno přes SPI sběrnici.

Na vstup A/D převodníku ( PA7) jsem přivedl napětí z fotodiody, která snímá okolní osvětlení a toto osvětlení převádí na napětí. Na základě tohoto napětí mikrokontrolér zvolí střídu PWM signálu. Je-li okolní osvětlení dostatečně velké tak LED diody svítí maximálně a pokud je tma tak LED diody svítí jen málo. Výstup PWM je na portu D ( PD6). Tento signál řídí spínání MOS-FET tranzistoru, který následné rozsvěcuje a zhasíná LED diody. Toto zhasínání a rozsvěcování musí být alespoň 100 krát za vteřinu aby se to oku jevilo jako kontinuální svit, jinak bude zřetelné blikání a to je velice nepříjemné.

rizení.png

Obr.2: Zapojení řídící čísti obvodu

 

 

LED diody.png

Obr.3: Zapojení tranzistoru a LED diod

 

Zdrojový kod pro mikrokontrolér

 

#include<avr/io.h>     // hlavičkový soubor pro mikrokontrolér ATmega644

#include <stdio.h>

#define F_CPU 16000000UL           // frekvence hodinového signálu       

#include<avr/interrupt.h>

#include <util/delay.h>

#include <stdlib.h>

 

 

int i;                                                                                       //proměná pro smičku for

int prevedena_hodnota_osvetleni;

int max_porovnavaci_konstanta=65;

int min_porovnavaci_konstanta=30;

 

 

 

//---- Inicializece AD prevodniku--------------------------------------------

void AD_init (void)

{

            ADCSRA|=(1<<ADEN)|(0<<ADPS2)|(0<<ADPS1)|(0<<ADPS0);

            ADMUX |= (1<<REFS1)|(0<<REFS0)|(1<<ADLAR)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0);// nastavení pinu PD7 a referenčního napětí 1,1V

           

           

}

//---------------------------------------------------------------------------

//----AD_převod--------------------------------------------------------------

void AD_prevod (void)

{

            ADCSRA|= (1<<ADSC);                             //start AD prevodu

            loop_until_bit_is_set(ADCSRA,ADIF);      //cekam dokud prevod neskonci

            prevedena_hodnota_osvetleni=0;     

            prevedena_hodnota_osvetleni=ADCH;        //prevedena hodnota osvetleni na napeti

 

}

 

//---------------------------------------------------------------------------

 

 

int main( void )

{

  // nastavení casovace pro system

  TCNT1 = 0;

  TCCR1A |= 0;

  TCCR1B |= _BV(CS10);

  DDRD = 0xff;  // nastaveni portu D jako vystupni

  DDRA = 0x00;        // nastaveni portu A jako vstupni

 

for(;;)

{

AD_init();                   //inicializace AD prevodniku

AD_prevod ();            // AD prevod

for (i=25;i<=70;i++) 

                                   {

                                   if(((i<=prevedena_hodnota_osvetleni) & (i<max_porovnavaci_konstanta))|                                              //svítí za normálního osvětlení funguje PWM

                                      ((prevedena_hodnota_osvetleni<min_porovnavaci_konstanta)&(i<min_porovnavaci_konstanta))|          //svítí minimálně při minimálním osvětlení

                                      (prevedena_hodnota_osvetleni>max_porovnavaci_konstanta))                                                              //svítí maximálně za maximálního osvětlení

                                                  

                                               {

                                               PORTD=0b10000000; //rozsvit LED

                                              

                                               }

           

                                   else

                                               {

                                               PORTD=0b00000000; //zhasni LED

                                              

                                               }

 

                                   }

}

 

}

 

Tento řídící program je velice jednoduchý. Nejprve se nastaví časování pro systém dále se nastaví port D jako výstupní a port A jako vstupní následně program skočí do nekonečné smyčky kde se inicializuje A/D převodník provede se A/D převod. V následném cyklu je porovnávána hodnota cyklu for s hodnotou převedenou v A/D převodníku a podle výsledku se bud LED rozsvítí nebo zhasne.

Závěr

 

Zadaný úkol se podařilo splnit. Při běžném denním osvětlení LED diody svítí maximálně, jakmile se začne stmívat a intenzita osvětlení klesne tak se LED diody začnou postupně zhášet, až klesne osvětlení pod určitou mez tak se zhášení zastaví a zůstane nastavené jen minimální osvětlení. Podstatného vylepšení by se docílilo přepsáním cyklu for, který porovnává svoji hodnotu s hodnotou z A/D převodníku. Případně by se dal využit PWM generátor zabudovaný přímo v mikrokontroléru. Další vylepšení by se docílilo tím, že by se dopsaly do programu další cykly pro další fotodiody. Mohly by jich být až 8, protože mikrokontrolér má 8 vstupů pro A/D převodník. Tím by bylo možno regulovat až 8 LED osvětlení nezávisle.

Literatura

[1] Datasheed obvodu LM7805 dostupné na WWW :

      http://www.datasheetarchive.com/LM7805-datasheet.html

[2] Datasheed obvodu AT MEGA 644 dostupné na WWW :

      http://www.atmel.com/products/microcontrollers/avr/megaavr.aspx?tab=documents

 

 

IMG_20130528_184655.jpg

Obr.3:Řídící část s mikrokontrolérem

 

IMG_20130528_184314.jpg

Obr.4:Řídící část a LED diody