Proiectul urmareste realizarea unui voltmetru numeric cu afisaj LCD/LED, cu mai multe scari de tensiune.
Tensiunea care vrem sa o masuram este convertita in biti de catre convertorul analog digital apoi este citita de catre microprocesorul AVR si este comparata de acesta cu o tensiune de referinta. Apoi tensiunea de masurat este afisata pe ecranul LCD.
Pentru afisarea tensiunilor vom folosi un ecran LCD 2x16 conectat pe un port al microprocesorului.
Microprocesorul ATMega16 va fi programat folosind un bootloader si va comunicacu PC-ul prin portul serial RS232. Pentru a realiza aceasta comunicare este necesara o trecere de la nivelele de tensiune TTL la cele pentru portul serial, care se va realiza cu un convertor MAX232. La intrarea acestuia vom avea o tensiune de +5V obtinuta prin stabilizarea unei tensiuni de +10V de la sursa cu un stabilizator LM7805.
bookmarks :
Procesorul Portul serial Vizualizarea formelor de unda
» Procesorul [sus]
Schema cuprinzand procesorul si anexele sale este data in figura. Aceste componente se vor regasi pe toate machetele de proiect, indiferent de teme; la ele se vor adauga conectorii si componentele specifice.

Click pentru marire
JF1 este conectorul de programare ISP (In-System Programming); acesta permite programarea memoriei FLASH din procesor folosind un programator extern. De notat ca exista mai multe standarde de conector (în principal 2x3 pini si 2x5 pini), noi îl vom folosi numai pe acesta pentru compatibilitate.
R1, C1 formeaza circuitul de power-on reset. In momentul aplicarii Vcc, C1 este descarcat si trage linia RESET* in 0, resetand procesorul. Ulterior, condensatorul se va incarca prin R1 si linia va sta in 1 (procesul este asimptotic, dar sfarsitul incarcarii se considera dupa un timp aproximativ egal cu 5R1C1). Acest reset este necesar pentru a asigura pornirea in bune conditii a procesorului; in lipsa lui, tensiunile tranzitorii care apar in
momentul alimentarii pot duce la ajungerea procesorului intr-o stare incerta.
Condensatoarele C5 si C6 se vor lipi cat mai aproape de procesor, intre pinii 10-11, respectiv 30-31. Ele sunt condensatoare de decuplare si sunt specifice alimentarii oricarui circuit digital - asigura o rezerva de energie in momentul comutarii, si astfel previne aparitia zgomotului de comutare pe liniile de alimentare.
Condensatorul electrolitic C4 nu este obligatoriu, dar este recomandat pentru reducerea riscului ca procesorul sa se reseteze din cauza unor glitch-uri pe alimentare.
Cristalul de cuart, impreuna cu condensatoarele C2, C3 si cu amplificatorul intern de la bornele XTAL1,2 formeaza un oscilator cu cuart. Aceste componente se vor lipi, de asemenea, cat mai aproape de pinii respectivi ai procesorului.
Pentru alimentare se foloseste stabilizatorul U3 cu 3 terminale (7805), 2 condensatoare de 100nF necesare pentru stabilitatea functionarii acestuia, si dioda D1 care protejeaza la alimentarea inversa.
Dioda LED este pozitionata astfel incat se aprinde cand PD6 este pe 1 logic; rezistenta R2 asigura limitarea curentului prin LED la cca. (5-1.6)/330= 10mA. De notat ca in multe cazuri cand se conecteaza un LED la iesirea unui circuit digital, fara tranzistor de comanda, el se monteaza invers (intre pinul circuitului si Vcc, evident cu anodul la Vcc), intrucat majoritatea circuitelor suporta un curent mai mare cand pinul este in 0 logic decat atunci
cand e in 1. Dezavantajul e ca LED-ul se aprinde pe 0. In cazul nostru insa, circuitul Atmel suporta curenti egali pe 0 si pe 1 logic.
Butonul SW1 leaga PD5 la masa (0 logic) in momentul apasarii. Intrucît, atunci cand nu este apasat, starea pinului PD5 nu este definita, va trebui activata o rezistenta de pull-up intern prin software.
» Portul serial [sus]
Standardul RS232 prevede o tensiune intre +6V..+15V fata de masa pentru 0 logic si de -6V..-15V fata de masa pentru 1 logic.
Atentie! Pentru un numar exprimat in binar in notatia obisnuita b7b6b5b4b3b2b1b0, unde b7 este MSB si b0 este LSB, bitii pe seriala se transmit LSB-first, nu MSB-first cum ar fi mai intuitiv. Asadar, dupa bitul de start (0) urmeaza LSB (b0). Cei 8 biti de date sunt incadrati de un bit de start, care va fi intotdeauna 0, si un bit de stop, care va fi intotdeauna 1.
Bitii de stop si de start garanteaza faptul ca la începutul fiecarui octet are loc o tranzitie 1 → 0, chiar si în cazul în care octetii transmisi reprezinta lungi siruri de 1 sau 0. Dezavantajul este ca la fiecare 8 biti de date trebuie adaugati cei 2 biti, adica eficienta transmisiei este de doar 80%.
Pinii RxD, TxD ai procesorului se conecteaza la pinii cu acelasi nume ai convertorului de nivel realizat cu circuitul MAX202, MAX232 sau echivalent. Rolul acestuia este sa converteasca nivelurile TTL (0..5V) în niveluri RS232, si viceversa; practic, tensiunile +10V si -10V se obtin prin dublarea tensiunii de alimentare a circuitului, folosind un convertor intern cu capacitati comutate, care foloseste condensatoarele externe C7-C10.

Click pentru marire
Condensatoarele de 1uF pot fi înlocuite cu 100nF în cazul în care se foloseste MAX202 sau ST232. În plus, condensatoarele de 100nF sînt nepolarizate, în timp ce la cele de 1uF trebuie avut grija la polaritate.
Verificarea functionarii acestui circuit în regim static (fara a transmite date) se face masurînd cu voltmetrul tensiunile de pe pinii 2 si 6, fata de masa. Trebuie sa se obtina o tensiune de cca. 7..10V cu polaritatea corespunzatoare: (+) pe pinul 2 si (-) pe 6. Practic, dublarea tensiunii la valoarea de 10V se obtine numai în cazul ideal si anume în gol; în sarcina aceasta tensiune este mai mica, dar suficienta
pentru a respecta standardul. Pe pinii de date, în pauzele dintre transmisii, trebuie sa se masoare 1, adica +5V pe TTL si circa -10V pe RS232 (logica inversata).
Mufa DB9 de tip mama este cablata dupa standardul DCE (Data Communications Equipment):
Pin mufa DB9DCE
|
Descriere
|
2
|
Tx (transmisie; sens de iesire, de la macheta catre PC)
|
3
|
Rx (receptie; sens de intrare în macheta)
|
5
|
GND
|
Aceasta înseamna ca se va folosi un cablu serial direct (1-la-1) pentru conectarea la PC, care este echipat cu o mufa de tip tata, cablata dupa standardul DTE (Data Terminal Equipment), la care pinii 2 si 3 sînt inversati. De notat ca daca s-ar dori conectarea a 2 echipamente cu acelasi standard (DCE cu DCE sau DTE cu DTE; de exemplu, 2 PC-uri legate între ele pe seriala), ar trebui un cablu de tip crossover (pinii 2
si 3 inversati la unul din capete). De obicei, toate cablurile disponibile comercial cu mufe mama-tata sînt de tip direct, iar cele mama-mama sînt de tip crossover.
» Vizualizarea formelor de unda; depanarea portului serial [sus]
Se va folosi un osciloscop cu care sa se vizualizeze formele de unda în mai multe puncte. Pentru 9600bps un caracter are 10 biti deci dureaza:
10 biti * 1/9600 sec/bit = 1ms
Pentru ca un caracter (10 biti) sa ocupe toate cele 10 diviziuni pe ecran, determinam CX :
TX = NXCX → CX = TX / NX
= 1ms / 10 div = 0.1 ms/div
Atentie la reglajul de sincronizare! bitul de start este un front negativ de la 5V la 0V pe nivele TTL (deci slope= falling), si unul pozitiv de la -10V la +10V pentru RS232. Sincronizarea trebuie deci reglata diferit în functie de punctul unde se observa.
Se va tine apasata o tasta pe tastatura PC-ului (dupa ce se porneste programul de terminal). Folosind softul de test, macheta trebuie sa trimita înapoi caracterul urmator: daca primeste a trimite b, etc.
Se urmareste pe osciloscop ordinea evenimentelor (crocodilul de masa al osciloscopului se poate conecta la aripioara metalica a lui LM7805):
de la PC, folosind terminalul, se emite un caracter (RS232) care
ajunge pe DB9.2 (nivel RS232), apoi la intrarea în MAX202 (pin 13),
este convertit de MAX202 în nivel TTL si scos la iesire (pin 12),
ajunge la procesor (pin 14),
acesta trimite caracterul cu codul imediat urmator (procesor pin 15), ajunge la intrarea MAX202 (pin 11, nivel TTL),
este convertit în nivel RS232 (MAX202 pin 14) si
ajunge pe DB9.3 si de acolo pe cablu direct catre PC.
În cazul în care nu functioneaza comunicatia macheta-PC (nu se primeste înapoi în terminal caracterul urmator), depanarea se face determinînd în care dintre punctele de mai sus nu se mai observa forma de unda (se întrerupe lantul).