vineri, 28 martie 2008

Home

Proiectul nostru, "On Wheel Car Controls", dezvoltat in cadrul competitiei "Open Doors Day", implementeaza un sistem prin care soferul unei masini sa poata sa controleze, fara a lua mainile de pe volan, sistemele electrice ale autovehiculului (pozitia oglinzilor, unghiul de inclinare al farurilor, temperatura in habitaclu, ridicarea/coborarea geamurilor, volumul player-ului audio, intensitatea luminii interioare etc ).

Feedback-ul actiunilor sale este afisat pe un display situat in spatele volanului, langa indicatoarele de viteza si turatie, astfel incat soferul sa isi poata mentine atentia in permanenta la ceea ce se intampla in trafic. Tot in acest scop s-a adaugat un asistent vocal care reda optiunile selectate prin intermediul controalelor de pe volan.

In prezent exista unele solutii care implementeaza insa doar controlul player-ului audio direct de pe volan. De asemenea, sunt unele modele de masini care permit, prin actionarea unor butoane situate in afara volanului, vizualizarea unor parametri ai masinii pe un LCD situat in spatele volanului, insa nu este implementat un sistem de control al acestora.

Solutia noastra isi propune sa faciliteze accesul la controalele electrice situate in diverse locatii din interiorul masinii care nu sunt in permanenta la indemana soferului in timpul mersului ( de exemplu reglarea oglinzii din dreapta ).

Deoarece statisticile arata ca un numar foarte mare de accidente rutiere se produc datorita faptului ca soferii nu isi tin mainile pe volan si atentia la drum, solutia noastra inlatura aceste neajunsuri, utilizatorul putand controla totul fara a-si desprinde mainile de pe volan. Pentru a-si metine privirea cat mai mult la drum ,display-ul este situat foarte avantajos, iar sistemul vocal permite modificarea unor parametri fara feedback vizual.


Descriere a solutiei tehnice


Pentru implementarea sistemului de control s-au folosit doua butoane rotative, cu rotatie infinita, pozitionate perpendicular pe volan, diametral opus, astfel incat soferul sa le poata actiona concomitent cu ajutorul degetelor mari, pastrandu-si astfel mainile pe volan intr-o pozitie fireasca condusului.

Cele doua rotite sunt zimtate si confectionate dintr-un material aderent pentru a le mari manevrabilitatea. De asemenea, ele sunt si apasabile, fiind foarte similare rotitei de scroll de la mouse.

Rotita din stanga va bucla printr-un meniu care contine optiunile implementate, iar cu ajutorul celei din dreapta se va putea regla controlul selectat. Spre exemplu, in urma selectarii optiunii "temperatura" cu rotita stanga, prin rotirea sus/jos a celei din dreapta se efectueaza reglarea temperaturii dorite.

In permanenta, pe display-ul din spatele volanului se afiseaza optiunea selectata si eventualele modificari. Grafica afisarii pe display este realizata intr-o maniera intuitiva, astfel incat utilizatorul sa stie mereu care dintre optiuni este selectata.

Asistentul vocal vine in ajutorul soferului aflat in trafic, redand numele optiunii selectate daca se stationeaza mai mult de o secunda asupra acesteia.



Software

Sistemul are doua module software, o aplicatie care ruleaza pe microcontroler si o alta dezvoltata pentru PC .

HCS12 - SW module :

Aplicatia de pe microcontroler este dezvoltatata in IDE-ul CodeWarrior HCS12. Aceasta filtreaza, prin diversi algoritmi, semnalele receptionate. Au fost dezvoltate o serie de rutine pentru comunicarea bidirectionala seriala cu PC-ul, citirea temperaturii de pe senzor, modificarea intensitatii luminoase a unui LED prin PWM, rotirea stanga-dreapta a unui motor de curent continuu.

Aplicatia este impartita in urmatoarele module :

~ main.c - ciclu de functionare a microcontrolerului

~ buttons.c - contine functiile de preluare si procesare a datelor de la cele doua butoane rotative si de la switchurile atasate

~ sensors.c - contine functiile prin care vor fi citite datele de la senzorul de temperatura

~ motor.c - contine libraria functiilor de actionare a motorului

~ serial.c - contine functiile care deservesc transmiterea seriala a datelor catre PC


PC - SW module :

Aplicatia este realizata in limbajul C#, folosindu-se mediul de dezvoltare Visual Studio 2005. Aceasta preia pe PC datele de la microcontroler si le afiseaza pe display-ul laptopului. Scopul aplicatiei de pe PC este unul demonstrativ. Avand insa in vedere faptul ca tehnologia de implementare a computerului de bord este in dezvoltare, credem ca s-ar putea rula pe acesta o astfel de aplicatie de nivel inalt.

Programul realizeaza o interfata grafica prietenoasa, care arata utilitatea sistemului. Spre exemplu atunci cand cu ajutorul rotitei din stanga se selecteaza optiunea de modificare a volumului, se va modifica volumul de redare a unei melodii ce se aude in background. Tot aceasta aplicatie implementeaza si asistentul vocal care va seconda actiunile utilizatorului.

Sistemul astfel implementat va aduce un plus de siguranta si confort conducatorilor auto.

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.

Solutii existente pe piata

Una dintre solutiile adoptate de cei de la Toyota se poate vedea pe acest volan al unei Toyota Prius, care are mai 15 butoane pentru a controla sistemul audio, aerul conditionat, sistemul de navigare, telefonul .

Exista acum in industria automotive o adevarata frenezie cu atasarea butoanelor pe volan. " The more, the better", par sa gandeasca companiile, pentru ca la ora actuala Range Rover SUV are 10 butoane atasate pe volan, Toyota Prius hybrid are 15 in vreme ce Acura RL sedan detine 16.

Intr-adevar, initiativa de a-i face pe soferi sa isi tina cat mai mult mainile pe volan, amplasandu-le toate comenzile la indemana este una laudabila, insa neajunsul acestor solutii sta tocmai in numarul mare de butoane folosite, care distrag atentia de la condus soferului. Solutia noastra rezolva elegant aceasta problema, amplasand pe volan numai 2 butoane foarte usor de folosit, prin care se poate controla teoretic orice. In plus, asistentul vocal asigura, o data in plus, ca soferul nu trebuie sa isi deprinda privirea de la sosea.



Idrive, implementat pe BMW seria 5, reprezinta o alta abordare a celor de la BMW de a solutiona problema controlului folosind o rotita principala, care se misca in diferite pozitii. Si aceasta solutie are insa neajunsul de a fi situata departe de volan, iar manipularea acesteia echivaleaza cu vorbitul la telefon in trafic, deoarece soferul nu tine volanul decat cu o mana cand manevreaza Idrive-ul.

Solutia noastra rezolva si aceasta problema, prin amplasarea rotitelor de comanda si control direct pe volanul masinii, la indemana soferului.

Echipa

Echipa "On Wheel Car Controls" este formata din:

Cleminte George - student in anul V la Facultatea de Automatica si Calculatoare, sectia Calculatoare, Iasi

Pirtac Alina - studenta in anul V la Facultatea de Automatica si Calculatoare, sectia Calculatoare, Iasi

Taivan Constantin - student in anul V la Facultatea de Automatica si Calculatoare, sectia Calculatoare, Iasi


Indrumator proiect :


Andrei Stan
- Asistent Inginer la Facultatea de Automatica si Calculatoare, sectia Calculatoare, Iasi