vineri, 28 martie 2008

Hardware

HARDWARE :

Componente folosite :

~ Kit de dezvoltare PK-HCS12C32 cu microcontroler HCS12

~ Doua butoane rotative cu rotatie infinita

~ Doua switch-uri actionate prin apasarea pe butoanele rotative

~ Senzor de temperatura DS1820

~ PC legat printr-o conexiune seriala RS 232 la MCU

~ Motor de curent continuu alimentat la 6 V

~ LED cu intensitate luminoasa variabila

~ Driver motor L298N

Semnalele preluate de la cele doua rotite sunt transmise serial microcontrolerului HCS12; astfel se stie in orice moment daca butoanele au fost rotite si sensul acestei rotatii. Prin apasarea oricarei rotite se actioneaza cate un switch, care genereaza o intrerupere microcontrolerului. Acesta transmite informatiile primite catre PC printr-o interfata seriala RS232.

Demonstrativ, s-a folosit un senzor de temperatura conectat la microcontroler. Astfel, utilizatorul vede pe atat display-ul PC-ului si pe ledurile kitului de dezvoltare temperatura curenta in momentul in care a selectat din meniu optiunea de climatizare a habitaclului.

Tot in scop demonstrativ s-a folosit un LED a carui intensitate luminoasa se modifica, cu ajutorul celor doua controale de pe volan, simuland astfel modificarea intensitatii luminii in habitaclu.

Motorul de curent continuu simuleaza miscarea sus-jos a geamurilor ( dreapta pentru ridicarea geamurilor si stanga pentru coborarea lor).

Specificatii tehnice pentru senzorul de temperatura DS1820

Senzorul de temperatura folosit este DS 1820 "one wire interface", de la Dallas Semiconductor. Acesta masoara temperaturi cuprinse intre -55 si + 125 grade Celsius, cu o precizie de 0.5 °C. Conversia temperaturii are loc in maxim 750 ms, cu o rezolutie a termometrului de 9 biti.


Senzorul se poate alimenta fie direct, de la pinul de VCC, fie in mod parazit de la pinul de date. Noi am ales sa il folosim in modul "power up", adica folosind pinul de VCC.


DS1820 realizeaza conversia temperaturii in grade Celsius, iar valoarea ei este retinuta intr-un registru pe 2 octeti.


Pentru a obtine temperaturi cu o rezolutie mai mare de 9 biti, temperatura se va calcula folosind continutul registrelor COUNT REMAIN si COUNT PER C din scratchpad. Formula de calcul este urmatoarea:

TEMPERATURE = TEMP_READ - 0.25 + (COUNT_PER_C - COUNT_REMAIN)/COUNT_PER_C

Daca dorim sa citim temperaturi cu o rezolutie mai mica de 9 biti, se vor citi ultimii 2 octeti ( registrul TEMPERATURE) din scratchpad . Acestia au urmatorul format:

- Cel mai semnificativ octet contine 8 biti de semn ( valoarea 0x00 daca temperatura este pozitiva, si 0xFF daca temperatura este negativa).

- Cel mai putin semnificativ octet contine valoarea propriu-zisa a temperaturii, in cod complement fata de 2, cu mentiunea ca ultimul bit ( cel mai putin semnificativ reprezinta precizia).

In aplicatia noastra se citeste temperatura o data la 10 secunde, deoarece in interiorul masinii temperatura nu se modifica foarte repede. Temperatura citita de la senzor este afisata pe leduri in cod binar, cu observatia ca ultimul led indica precizia de 0.5 °C. Asadar, pentru a interpreta valoarea data pe leduri, acestea trebuie shiftate imaginar la dreapta cu o pozitie, calculata valoarea si in final se adauga sau nu 0.5 °C, in functie de starea ultimului led.

Niciun comentariu: