luni, 27 iunie 2011

Senzor de temperatură auto II


Descriere

În articolul anterior am promis că o să prezint celălalt senzor, care este montat pe maşina mea. E vorba de acelaşi senzor, cu câteva mici diferenţe.

Display de Nokia 3310

Prima diferenţă este legată de display-ul folosit, care e de la un Nokia 3310. Diferenţele faţă de display-ul de Nokia 1100 şi acesta constau în semnificaţia pinilor şi modificarea protocolului de comunicare cu display-ul. Algoritmul folosit pentru afişarea cifrelor pe display-ul de Nokia 3310 se găseşte prezentat la capitolul "Afişarea temperaturii Nokia 3310" de aici.

Un mare dezavantaj al acestui display este faptul că nu vine dotat cu led-uri pentru iluminare. Din cauza asta a trebuit să montez 3 led-uri galbene pentru iluminare şi unul roşu pentru alarmă.

Senzorul (DS18B20)

Singura diferenţă dintre DS18S20 şi DS18B20 este acela că cel din urmă converteşte valoarea temperaturii într-o valoarea digitală cu mai multe zecimale. Modificările în codul microcontroller-ului au fost, în consecinţă, minore.

Schema

Pentru a putea folosi display-ul de nokia 3310 e nevoie de patru linii de control: Reset (PB3), SDIN (PB2), D/C (PB1) şi SCK (PB0). Asta înseamnă că nu o să mai rămână nici un pin al microcntroller-ului liber pentru a putea controla led-ul de alarmă. Dintre toate liniile folosite pentru controlul display-ului, doar linia de D/C era folosită cel mai puţin. Linia D/C semnalizează display-ului că informaţia transmisă reprezintă date sau comenzi. Pe durata rescrierii ecranului, linia de D/C rămâne foarte mult timp pe "1" logic şi foarte puţin pe "0" logic. Cu alte cuvinte, pe durată rescrierii ecranului, se trimit mult mai multe date decât comenzi. M-am folosit de detaliul ăsta pentru a controla led-ul de alarmă cu acelaşi port ce controlează şi linia D/C. Asta a însemnat că logica de aprindere a led-ului de alarmă trebuie să fie inversă ("1" = led stins, iar "0" = led aprins). Rescrierea întregului ecran durează sub o secundă, iar rata de actualizare a ecranului e tot la aproximativ 1.5 secunde. Astfel am posibilitatea de a mă folosi de timpul acesta (1.5 sec) pentru a schimba rolul portului PB1 în port ce controlează led-ul de alarmă.

Cablajul

Prima variantă de cablaj nu mi-a plăcut pentru că toate piesele erau mult prea înghesuite, aşa că am ales o abordare mai "aerisită". În felul acesta cablajul încape mai bine în "carcasa" senzorului.

Codul sursă

Am refăcut codul original astfel încât să permită funcţionarea senzorului folosind ambele tipuri de display-uri (Nokia3310 şi Nokia1100), şi a ambelor tipuri de senzori digitali (DS18S20 şi DS18B20). Codul poate fi configurat pentru display-ul şi senzorul folosit cu ajutorul unor switch-uri de compilare.

Fişierele Hex (Cod şi EEPROM) se găsesc aici.

Fişierele sursă se găsesc aici.

Poze

Mi s-a reproşat la un moment dat că nu am pus suficiente poze cu senzorul deja montat pe maşină. În încercarea de a repara scăparea din articolul precedent, am pus două poze cu senzorul montat pe bord.

Asta ar fi perspectiva celui de la volan. Senzorul a fost montat în partea din dreapta pentru ca şi copilotul să vadă temperatura afişată de senzor. :-)

Carcasa senzorului e prinsă de parbriz cu ajutorul a două ventuze luate de la o "lămâie" a şoferului începător.