Sari la conținut
ELFORUM - Forumul electronistilor

Voltmetru cu PIC 16F73 pas cu pas


Rabulea Sergiu

Postări Recomandate

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 spre comentariu
  • Răspunsuri 23
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Rabulea Sergiu

    11

  • cirip

    5

  • puiu

    5

  • Liviu M

    1

Top autori în acest subiect

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 spre comentariu

Am gasit un echivalent la driverul ce-l are LCD-ul meu, poate ajuta la ceva (sper):[attachment=0]S6B0723_V09.pdf[/attachment]Driverul pe care-l are ii KS0723TB

Link spre comentariu
  • 1 lună mai târziu...

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 spre comentariu

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 spre comentariu
  • 5 luni mai târziu...

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 spre comentariu

Acest proiect este destinat unei telecomenzi pentru avioane.Astept pareri, propuneri si neclaritati.

Cand apesi pe reset se face scurt pe VDD.Telecomanda? Ma asteptam sa vad niste potentiometre ptr comanda proportionala.
Link spre comentariu
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 spre comentariu

(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 spre comentariu

@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 spre comentariu

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 spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări