Jump to content
ELFORUM - Forumul electronistilor

Voltmetru cu PIC 16F73 pas cu pas


 Share

Recommended Posts

Hello!Tin sa mentionez ca sunt incepator intr-ale programarii microcontrolerelor si folosesc ca limbaj de programare ASM.Am nevoie de ajutor in realizarea unui voltmetru cu PIC 16F73 (va rog nu ma trimiteti la scheme gata facute si care au programul in .HEX pentru ca ma intereseaza sa invat sa fac programul nu sa-l iau dea-gata).In primul rand as vrea sa invat sa lucrez cu un LCD, sa-l initializez si sa scriu caractere pe el.Asta-i LCD-ul pe care vreau sa-l folosesc:[attachment=0]ITM1286404_K49.pdf[/attachment]Am vazut ca ii diferit modul de comanda al acestuia fata de cel cu 2x16 caractere :nebunrau: Va rog daca puteti sa-mi spuneti ce pasi trebuie sa urmez ca sa-l initializez, intai, dupa aceea restu'.P.S. Am tecut prin tutorialele cu ledul palpaitor si alte aplicatii cu leduri.Daca ma puteti juta va rog sa o faceti mai "babeste" sa inteleaga toti, nu numai cei experimentati.Cu respect. Sergiu

Link to comment
Share on other sites

Salut,Nu sunt suficieante informatii ca sa stii cum sa lucrezi cu afisajul ala. Ar trebui sa existe o foaie de catalog cu mai multe pagini in care sa vezi timing, harta memoriei si multe altele. Uita-te cam ce informatii sunt in foile de catalog de la LCDurile de 16X2, de exemplu. Asa ceva ar trebui sa gasesti.Cirip

Link to comment
Share on other sites

  • 1 month later...

Ok, vad ca nu ma poate ajuta nimeni cu LCD-ul, o sa incerc sa-l decurc singur.Urmatoarea mea problema pe care am intampinat-o este cum sa afisez o valoare data de ADC in cifre zecimale pe display.M-am gandit la un tabel, dar ca sa fac un tabel cu toate rezultatele posibile nu mi-ar ajunge memoria uC-ului. Ajutati-ma la cum sa gandesc treaba asta (daca se poate), si care ar fi cel mai optim mod de implementare. Multumesc.Cu respect, Sergiu

Link to comment
Share on other sites

Salut Sergiu,Ceea ce vrei sa faci este mult prea complex. Aparent e simplu, dar, cand intri in detalii, iti dai seama cam cata munca este. LCDul tau este grafic si pentru comanda lui trebuie citita si inteleasa documentatia. Ai acolo toata informatia. In Fig3 ai modalitatea de comanda seriala, iar in Tabelul 18 ai setul de instructiuni. Trebuiesc citite si intelese de cel care programeaza.Referitor la afisarea rezultatului ADC in cifre zecimale, iarasi e mai complicat decat pare. Hai sa presupunem pentru inceput ca folosesti un LCD alfanumeric, nu grafic. Ala alfanumeric se scrie prin incarcarea de caractere ASCII la adresele de pe ecran.Etapele ar fi cam asa:1)ADC-ul iti da o valoare N in hexa pe 2 octeti. Valoarea N este data de relatia N=1024*Vin/Vref. Rezulta ca Vin=Vref*N/1024. Daca Vref este in mV, atunci si Vin va fi in mV. Asta e primul calcul pe care trebuie sa il faci. Dupa acest calcul ai valoarea tensiunii de intrare in ADC in mV si in format HEX.2)Urmatoarea etapa este conversia de baza de numeratie din hex in zecimal. Nu e simplu.3)Ai nr zecimal. Convertesti in ASCII, adaugi virgula ca sa convertesti in volti si scrii pe LCD.Daca ai divizor de tensiune la intrare, asta adauga inca o etapa de calcul.Trebuie atentie la dimensiunea in octeti a numerelor rezultate dupa fiecare operatie. Daca nu aloci suficienti, nu va merge.Am presupus ca lucrezi cu numere intregi cu semn. Daca vrei in virgula fixa sau mobila, lucrurile se complica suplimentar.Sugestia mea e sa cauti la Microchip aplicatia cu rutine aritmetice. Vei avea nevoie de ele la greu. Testeaza-le inainte de a le folosi.Cirip

Link to comment
Share on other sites

  • 5 months later...

Am mai evoluat de cand am postat ultima oara in acest topic :da Am schimbat PIC-ul cu 16F877.Am schimbat display-ul cu unul O-LED de 96x16 pixeli cu controllerul SH1101A.Am schimbat destinatia proiectului, acuma este si voltmetru si un cronometru pana la 99:59 crescator si descrescator.Nu am reusit sa fac si cablajul, inca nu am terminat de scris toate functiile codului, dar pentru ca sa vedeti si voi ceva am sa pun aici schema si programul pentru o eventuala simulare.Am schimbat si limbajul de programare de la assembler la basic (ii mai usor de scris).Acest proiect este destinat unei telecomenzi pentru avioane.[attachment=0]crono.zip[/attachment]Astept pareri, propuneri si neclaritati.

Link to comment
Share on other sites

De unde iei Vdd?

VDD este alimentarea de 5V. O genereaza programul automat si nu mai trebuie sa pun o sursa sau ceva.

Cand apesi pe reset se face scurt pe VDD.

Mercie, greseala de proiectare, butonul de reset vine legat dupa rezistenta de la pinul MCLR.

Telecomanda? Ma asteptam sa vad niste potentiometre ptr comanda proportionala.

Acest proiect nu face si functia de telecomanda. El este doar un voltmetru care masoara starea bateriilor din telecomanda (circuitul telecomenzii are un are un comparator si la un anumit prag se opreste telecomanda si ramai fara comenzi la avion) , eu am facut voltmetrul pentru a putea vedea tensiunea pe baterii si o sa-i pun si un prag peste cel al comparatorului telecomenzii ca sa piuie cand ajunge acolo.

Cronometrul este pentru bateriile din avion care la fel cand se atinge pragul de descarcare opreste avionul si acesta pica. Cronometrul il setezi inainte de decolare in functie de capacitatea si de incarcarea acumulatorului din avion si dupa ce se scurge acel timp iara o sa dea de stire ca o sa ramai fara curent.

Link to comment
Share on other sites

(circuitul telecomenzii are un are un comparator si la un anumit prag se opreste telecomanda si ramai fara comenzi la avion)

Serios? Ce telecomanda ai tinut in mana si facea asa?

Cronometrul este pentru bateriile din avion care la fel cand se atinge pragul de descarcare opreste avionul si acesta pica.

Pai daca pica oricum fara baterii, la ce-i mai trebuie conometrul. Pica si cu si fara cronometru, asa ca mai bine il lasi fara.Acum serios vorbind. Inainte sa te apuci sa inventezi ceva, e bine sa vezi ce s-a facut deja. Altfel risti sa inventezi apa calda si roata.
Link to comment
Share on other sites

@cirip te rog nu mai sari asa cu gura. Acest montaj mi-a fost cerut de un prieten pentru telecomanda lui. El mi-a spus ca are aceste comparatoare in ea si sa-i fac ceva sa stie cam cand ii posibil sa ramana fara comenzi respectiv fara avion. Eu am acceptat acest lucru din motivul ca o sa invat ceva din asta nu ca sa "reinventez roata si apa calda".Eu nu sunt pasionat de modelism, dar am invatat foarte multe de cand lucrez la acest proiect.

Pai daca pica oricum fara baterii, la ce-i mai trebuie conometrul. Pica si cu si fara cronometru, asa ca mai bine il lasi fara.

Cronometrul il seteaza ca sa-l atentioneze dinaite ca aproape i s-a scurs timpul da functionare al avionului ca sa-l aduca la sol lin si frumos nu ca sal izbeasca.

Nu inteleg cum o adica o genereaza programul automat?

Adica programul cu care lucrez eu are pinii procesorului legat la "Power rails" adica legate direct la sursa virtuala de 5V. Pinii ce i-am pus eu acolo nu fac decat sa se lege la acea sursa ca sa pot alimenta si alte parti ale circuitului.P.S. Prietenul acesta de care ziceam ii inginer electronist asa ca nu vad dece nu l-as crede.
Link to comment
Share on other sites

Te rog sa ma scuzi. Nu o sa ma mai amestec.

Scuza-ma, dar ai vorbit in necunostinta de cauza. Aseara am fost la prietenul meu si m-am uitat la telecomanda si chiar are un comparator care opreste telecomanda cand se descarca acumulatorii sub un anumit nivel, la fel si la avion, cred ca pentru a nu descarca prea tare acumulatorii.

Chiar nu-i locul si momentul pentru mitocanii.Un post mai sus a fost OK ca ti-a semnalat o eroare, nu?

Hai totusi sa nu transformam topicul asta intr-unul de bodega.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines