CPU


Atmega8 pocetak programiranja

Svaki pocetak programiranja nekog mikrokontrolera pocinje sa paljenjem i gasenjem LED dioda,na razlicite nacine.
 Na slici je programator koji sam napravio, a u snimku je prikazan rad izprogramiranog kontrolera sa led diodama. 




Atmega8 LED matrica 5*8

Odradjena slova i rasporedjena kao na tastaturi i jos po neki znak.
      LED matrice su veoma korisna stvar na mnogim mestima koristeci ga 
      za marketing poput bilbord-a, na autobusima za prikazivanje linije i destinacije do koje ide,
     i za razne druge namene.Odlucio sam da napravim jedan takav displej.
  Sema za povezivanje led matrice nalazi se u semi ispod teksta:

 Pinovi od PC0 pa do PC4, povezani su sa tranzistorima BC547 na bazu.Na pinove se salje logicka 1-ca pocev 
od PC0 pa do PC4 jednu za drugim a ostali pinovi ce za to vreme primati logicku 0-lu i tako u krug
 sa vremenskim razmakom od 3ms.Kako bi dobili jasnu sliku sta treba da se predstavi.
Sledeci korak je pozvati funkciju gde je preko logicke 1-ce i 0-le ispisano slovo "R".




mikroC PRO for ARM Cortex-M3™ pocetak programiranja

 Svaki pocetak programiranja nekog mikrokontrolera pocinje sa paljenjem i gasenjem LED dioda,
              sa razlicitim kombinacijama (kao sto sam napisao za Atmega8).
              
              Na slici je razvojno okruzenje ARM Cortex-M3™ Mikroelektronike, a na snimku je prikazano
             upravljanje LED diodama u nekoliko razlicitih primera.



Aplikacija TFT displeja i senzora temperature LM35

Na razvojnom okruzenju ARM Cortex-M3™ postavljena su podnozja za senzore temperature:
             
             -LM35 Analogni temperaturni senzor
             -DS1820 Digitalni temperaturni senzor

Koristeci LM35, rezultate merenja temperature sam prikazao na TFT-u.  



Senzor vibracije

 Vibracioni senzor sa digitalnim izlazom koji moze da se podesi
                 kao  interapt prekidna rutina(mikroBUS INT pin) sa ugradjenim potenciometrom.
               Koristeci senzor vibracije, buzer-a i TFT napravljen je sistem alarma pri kucanju na 
               ulaznim vratima.




Rad_sa_tasterima

Ulazni i izlazni signali sa mikrokontrolera su signali koje možemo da  kontrolišemo koju god aplikaciju da pravimo. Većina uređaja koje nas okružuje radi na principu poslatih signala / obrada tih podataka / i izlazni signal to jest, obavlja funkciju koju smo tražili tj. koja nam je potrebno tog trenutka.

Za početak, da bi shvatili kako funkcionišu ulazni i izlazni signali, najjednostavni primer jeste da se napravi aplikacija sa tasterima i LED diodom, a pored toga možemo da se igramo sa njima.

Rađeno je sa Atmega8.

Definisaću dva ulazna i tri izlazna signala na kontroleru.

Napraviću tru različite funkcije, koje:

a)        1)  Kada se pritisne na prvi taster uključuje LED diodu a pritiskom na drugi taster isključuje istu LED diodu.

b)        2) Pritiskom na prvi taster uključuje prvu LED diodu a pritiskom na drugi taster uključuje drugu LED diodu.

c)         3) Pritiskom na drugi taster uključuje jednu LED diodu a pritiskom na prvi taster isključuje tu LED diodu i naizmenično aktivira i isključujei dve LED diode.

 



74HC595

Mikrokontroleri “MC”, imaju jednu veliku manu, ograničeni su sa brojem pinova.  Zato se prilikom odabira mikrokontrolera mora obratiti pažnja na to

 koju aplikaciju želimo da napravimo, tj. koliko će nam za tu aplikaciju trebati pinova (ulazni/izlazni signali).

Zahvaljujući mnogo brojnim integrisanim kolima “IC“, možemo uzeti MC sa manjim brojem pinova i odraditi aplikaciju koja zahteva više signala od dozvoljenih na MC-u.

O kakvim se to IC radi?

To su IC koja se povezuju sa MC sa min brojem pinova, na primer dva pina, i preko raznih komunikacija, u zavisnosti od IC, možemo proširiti broj signala.

Uzmimo na primer IC 74HC595. To je osmobitni pomerački shift registar, SIPO (serial-in, parallel-out).


IC se mora dovesti napajanje od 5V (iako radi na naponima od 2V do 6V) na pinovima 16 (+) i 8 (-). Sa leve strane imamo 6 (Q1-Q7) izlaza i jedan (Q0) sa desne strane IC.

Izvod pod brojem 9 je Q7S i on se koristi i kao izlaz i za povezivanje više ovakvih IC kaskadno. Kako se bitovi pomeraju unutar registra, bitovi će nastaviti da se pomeraju dalje, u narednom IC. Na izvodu broj 10 je MR (master reset). Logička nula na ovom izvodu će resetovati pomerački registar. Za njim ide SH_CP (shift register clock input) na izvodu broj 11 ispisujući LOW ka HIGH na ovom izvodu ćemo pomerati podatke u osmobitnom registru. Pod nazivom ST_CP (storage register clock input) je takozvani Latch Clock Input, a sa LOW->HIGH na ovom pinu postižemo da se podaci iz pomeračkog registra prebace u “Latch blok“. Dovođenjem LOW na OE (output enable) izvod, omogućavamo podacima da se iz latch bloka pojave na izlaznim izvodima. Sa HIGH primoravamo izlazne izvode da budu u stanju visoke impedanse.Na izvodu 14 je DS (serial data input), a podatke koje čip dobije na ovom izvodu kasnije prebacuje u registar. 



LED_KOCKA/LED_CUBE

Led kocka, je mnogima san da je naprave što veću i sa što zanimljivijim efekatima.

 

Ja ovde neću mnogo komentarisati, pošto je ovo probna verzija. Napravljena sa MC-om Atmega8. Napravio sam je kao i što sam napravio LED matricu samo sam  je napravio u četiri nivoa.

 

Za više efekata u nekom od narednih članaka.



RGB_LED

RGB_LED

RGB LED diode, funkcionise tako sto se u njenom kucistu nalaze tri diode: crvena, plava i zelena.

Kombinacijom te tri boje, dobijamo nijansu ostalih boja.

Da bi smo menjali intezitet boja, potrebno je da na svakom pinu dovedemo odgovarajuci napon, to jest, napon cemo kontrolisati pre mikrokontrolera (u ovom slucaju je to Atmega 328).

Definisemo izlazne pinove:

    DDRC |= 1<<PINC5;          

    PORTC = 0x00;

                DDRC |= 1<<PINC4;          

    PORTC = 0x00;

                DDRC |= 1<<PINC3;          

    PORTC = 0x00;

 

Pozovemo potrebne funkcije:

void pwm(void);

 void red(void);

 void blue(void);

 void green(void);

 

Napravimo odgovarajuce funkcije (ja cu napisati ovde funkciju samo za jednu boju):

 

void red(void) {

                  PORTC |= !((1<<PINC4)|(1<<PINC3));

                  OCR0A = 0;

                  OCR0B = 0;

                  OCR2B = 218;

                 _delay_ms(1000);

                  }

 

PWM-funkciju ovde je necu postaviti.

A zatim u “whule” pozovemo funkcije za boju LED Diode:

 

    while(1) {            

                     red();

                     blue();

                     green();

                   }

Dalje je potrebno da se igramo sa intezitetom boja I dodajemo  vremenske tajmere koje ce regulisati promene boja na LED diode.



PWM LED

PWM LED

Za vezbu upravljanja PWM signalom, odlucio sam da napravim vremenski promenljim PWM signal.

Kako bih video postignut rezultat bez osciloskopa (posto ga nemam, tog trenutka kada sam radio I sada dok pisem ovaj kratki clanak), odlucio sam da iskoristim LED diodu.

LED dioda, ce  menjati svoj intezitet svetlosti kako se bude menjao PWM signal. 

Prvi korak je bio da se napravi pwm funkcija a zatim je pozvati:

void pwm(void);

A zatim njegovu promenljivu ubaciti u “for” petlju da se za odredjeno vreme poveca “DUTY CYCLE”:

for (i=0; i<128; i++)  {

                                      OCR0A=i;

                                     _delay_ms(50);

                                      }

 for(i=128; i>0; i--)     {

                                      OCR0A=i;

                                     _delay_ms(50);

                                       }



LED potenciometar

LED potenciometar

Najjednostavnija stvar koja se moze izvesti, sa promenom otpornosti menjamo I broj aktivnih LED diode.

Prvenstveno je potrebno pozvati funkciju za ADC konvertor:

int adc_value;

A zatim kroz for petlju  izvrsiti upit o vrednosti otpornika I za datu vrednost da se aktiviraju izlazi na kontroleru. (petlja se proteze, nije cela prikazana, ovo se radi na jednostavniji nacin, ali ovo je bila proba aplikacije za neki drugi program)

for(;;){           

adc_value = ADCW;   

 if(adc_value > 100){

 PORTD |= (1<<PD0);   

 }

 else {

 PORTD &= ~(1<<PD0);   

}