Sari la conținut
ELFORUM - Forumul electronistilor

BASCOM


yo9hnf

Postări Recomandate

Repun cablajul pe partea de top, cum este montat afisaju si atmega, nu pot muta afisaju pe cealalta parte, daca mut nu mai vin pini de anod comun, 13 respectiv 14 pe tranzistori.

Model display cu 18 pini, dublu, DA56-11EWA

voltmetru top.pdf

Editat de costyy86
Link spre comentariu

Imi pare rau sa te anunt ca ai incurcat ceva in realizarea cablajului, respectiv modul de dispunere a afisorului, sau mai grav a microcontroller-ului.

Totusi insist ca afisorul trebuie montat pe prtea opusa microcontroller-ului.

Link spre comentariu

Multumesc pentru ajutor,insa nu am rezolvat nimic, am reverificat de multe ori cablajul, si e ok fata de schema, eu cred ca este gresit programul.

 

Cum pot genera codurile de mai jos?

Am vazut cu ceva timp in urma un tutorial cu, calculatorul, dar numai hgasesc..

"Data &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78 , &H00, &H18"

Editat de costyy86
Link spre comentariu

Nu stiu daca am inteles bine ce ai vrut sa zici, dar ai mai jos o imagine din care poti sa-ti dai seama cum s-a ajuns la acele valori din Dta.Daca vrei sa faci calcule in excel, in K2 pui formula" =CONCATENATE(D2,E2,F2,G2,H2,I2,J2,)", iar in L2 pui " =BIN2HEX(K2)".Repeti formulele pana la K11 si L11.Poti folosi pagina excel pentru ca sa-ti faci caractere personalizate pe un digit, de exemplu.In functie de tipul afisajului(anod comun sau catod comun) un segment se aprinde pentru zero sau pentru unu.

post-179738-0-12596100-1459448528_thumb.png

Link spre comentariu

Multumesc.

Acea explicatie cautam.

 

Nu am reusit sa fac mai nimic cu codul anterior, asa ca am cautat alta schema cu cod, de aceasta data am facut totul pe un breadboard, si se aprinde ok, dar nu functioneaza ok, am pus pe intrare adc un divizor rezistiv pentru o tensiune maxima de 50v 10k cu 1.11K, si imi afiseaza tensiunea aiurea, + ca ce e mai rau fluctueaza intruna tensiunea pe display, tinand cont ca este masurata tensiunea unui acumulator de 3.7v, ceea ce nu ar trebui sa se intample.

Schema si codul sunt la adresa de mai jos, singura modificare, eu am modificat crystalul la 8mhz intern.

http://inkubator-teknologi.com/voltmeter-digital-dengan-bascom-dan-cvavr/

Multumesc.

Link spre comentariu

Ai mai jos un fisier .bas care citeste intrarile analogice la fel ca in programul cu care ai inceput si pentru care aveai cablaj facut.In Proteus functioneaza corect.Daca valoarea indicata nu este stabila, adauga la inceput o bucla for in care citesti intrarea analogiga de mai multe ori,aceste valori le insumezi intr-o variabila si apoi faci media citirilor.Intre doua citiri consecutive poti sa pui un delay de 2-5ms.Poti sa mai stabilizezi variatiile de tensiune afisate cu un condensator de capacitate mica pus pe intrare analogica.Foarte important este sa ai o tensiune de alimentare stabilizata, bine filtrata si condensator de decuplare pe alimentarea atmega8

7segDisp.rar

Link spre comentariu

Monteaza un condensator de 0.1u intre Aref si masa si intrerupe legatura acestui pin cu 5V. Monteaza pe Avcc o bobina de 100u precedata de un cond de 0.1u. Modifica codul de calcul al tensiunii. Acum e gresit.

Link spre comentariu

@Elison, am vazut ca in proteus functioneaza, functiona si codul ce l-am pus eu, dar in realitate nu, ce mi-ai dat, functioneaza oarecum, exceptand tensiunea afisata eronata, dar asta se va calcula, plus ca fluctueaza afisarea cam la intervale de 50-100ms, de nu intelegi nimic uneori, alteori doar cate o cifra.

Am pus si condensator pe intrarea analogica, am legat si aref printr-un condensator la masa, toate astea incercate pe un breadboard, Am incercat alimentand direct din usb-asp si apoi am alimentat dintr-un acumulator de 3.7v, si tot asa functioneaza,

Pe cablajul ce il am facut am incercat, dar tot asa face, in plus este gresit cum ai scris codul deoarece comanda pentru digiti, pentru numarul lor este exact invers...digit 1- portd.3, digit 2 portd.2, digit 3 portd.1 si digiot4 portd.,0

 

@nico_2010

Am montatacel condensator, bobina nu am gasit,dar cond am montat, ce nu imi place este ca se comporta ciudat si cand este alimentat sau masoara o baterie, ceea ce nu ar trebui,toturi are tensiunea "curata" pe langa o alimentare si filttrare cu traf.

 

Multumesc.

Link spre comentariu

Cred ca trebuie sa incepi de la "0", in prima faza asigura-te ca citirea respectiv afisarea e ok, aprinde cite un digit cu o valoare stiuta adica da-i variabilei o valoare direct in soft si vezi daca o afisaza corect si deabia dupa asta citeste si un ADC, in codul din link-ul aratat de tine citirea nu prea e ok, regindeste softul ca nu e deosebit de greu......

Link spre comentariu
Daca ai chef sa mai incerci o varianta de program, am facut una in care afisarea pe fiecare digit se face atunci cand are loc o intrerupere a timerului 1.Asa cum este acum, rata de refresh este de 100Hz.Am avut grija sa nu mai inversez ordinea segmentelor.Daca vrei alta rata de refresh, schimbi Valtimer1,eventual prescaler.Tensiunile afisate sunt cele care corespund intervalului 0-5V.
 
$regfile = "m8def.dat"$crystal = 8000000Portd = &HFFDdrd = &HFFPortb = &HFFDdrb = &HFFConfig Adc = Single , Prescaler = Auto , Reference = AvccDim W As Word , V As Word , Seg1 As Byte , Seg2 As Byte , Seg3 As Byte , Seg4 As ByteDim Valtimer1 As Word , Tick As Byte , Canal As Byte , Contor_canal As ByteDim Vstring As String * 4 , Sseg1 As String * 1 , Sseg2 As String * 1 , Sseg3 As String * 1Dim Sseg4 As String * 1Sw1 Alias Pind.6Sw2 Alias Pind.7Portd.6 = 1Portd.7 = 1Config Sw1 = InputConfig Sw2 = InputConfig Debounce = 30Config Timer1 = Timer , Prescale = 1On Timer1 Isr_timer1Enable Timer1Enable InterruptsValtimer1 = 55536Contor_canal = 0Tick = 0Start AdcDo   Debounce Sw1 , 0 , Up , Sub   Debounce Sw2 , 0 , Down , Sub   W = Getadc(contor_canal)   V = W * 5   Vstring = Str(v)   Sseg1 = Mid(vstring , 1 , 1)                             'mii   Sseg2 = Mid(vstring , 2 , 1)                             'sute   Sseg3 = Mid(vstring , 3 , 1)                             'zeci   Sseg4 = Mid(vstring , 4 , 1)                             'unitati   Seg1 = Val(sseg1)   Seg2 = Val(sseg2)   Seg3 = Val(sseg3)   Seg4 = Val(sseg4)LoopEndIsr_timer1:   Timer1 = Valtimer1   Tick = Tick + 1Select Case Tick  Case 1 :    Portd = &B1110    Portb = Lookup(seg1 , Led)  Case 2 :    Portd = &B1101    Portb = Lookup(seg2 , Led)  Case 3 :    Portd = &B1011    Portb = Lookup(seg3 , Led)  Case 4 :    Portd = &B0111    Portb = Lookup(seg4 , Led)    Tick = 0End SelectReturnUp:Incr Contor_canalIf Contor_canal >= 6 ThenContor_canal = 0End IfReturnDown:If Contor_canal > 0 ThenDecr Contor_canalElseContor_canal = 5End IfReturnLed:   Data &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78 , &H00 , &H18

 

Link spre comentariu

Multumesc foarte mult pentru ajutorul acordat,insa tot nu vrea sa functioneze ok, fluctueaza rau ca naiba, am schimbat si rata de refres, si prescaleru, fara efect, cred ca voi renunta si voi face un voltmetru cu lcd 16x2, doar ca pe acela va trebui sa afiseze 8 tensiuni si 8 curenti, deci un atmega cu 16adc-uri sau un arduino mega.

Multumesc tutoror pentru efortul depus de a ma ajuta.

 

L.E.Am reusit sa filmez un pic cum functioneaza, desi uneori fluctueaza mult mai repede....

Editat de costyy86
Link spre comentariu

@costyy86:

 

In atasament ai fisierul .hex aferent schemei din pagina PDF anexata. Ar trebui sa faci un minim de modificari la montaj (succesiunea comenzii tranzistoarelor) si sa imi spui daca functioneaza.

La fisierul main.txt schimbi extensia in .hex si il incarci in uC. Frecventa de ceas a uC este de 8MHz intern.

Daca este OK, atunci postez si sursa.

voltmetru_costi.pdf

main.txt

Link spre comentariu

Revin dupa lungi teste, se pare ca nu functioneaza, asa ca, dupa cumam spus, voi face cu un Display Grafic, Am primit un display grafic 160x160 ,insa este o problema cu pini si nu stiu cum sa rezolv.

 

LCD-ul are alta configuratie la pini, bascomul din ce am studiat nu stie decat pe  urmatori pini:

WR

RD

CE

CD

Reset 

FS

 

Eu am la lcd-ul meu, http://www.tme.eu/en/Document/1d217dff24d22b5ff25472b629e20e04/RG160160B-TIY-V.pdf

R/W

E

CS

RS

RST

 

Cum sa fac conexiunea? sau cum sa configurez LCD-ul?

Multumesc.

 

Link spre comentariu

Daca citeai putin Help-ul BASCOM ai fi vazut ca chipul LC7981 nu este suportat de acest compilator. Se pare ca exista o librarie pentru acest controller pe site-urile nemtesti.

Poate te ajuta asta: http://www.mikrocontroller.net/attachment/62874/PollinBascomTest.bas care integreaza si partea de initializare si comanda a display-ului pe care il ai.

Incearca si varianta din arhiva de mai jos.

display.zip

Link spre comentariu

Cu scuze, nu am timp sa verific dar o problema cu un LCD grafic impreuna cu cei ce au putut sa ma ajute am rezolvat-o aici: http://www.elforum.info/topic/112559-lcd-grafic-128x64/?hl=%2Bnickrvl+%2Bgrafic&do=findComment&comment=1321425

 

Poate te ajuta.....

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