Sari la conținut
ELFORUM - Forumul electronistilor

BASCOM


yo9hnf

Postări Recomandate

In cea ce priveste simulatorul din bascom, nu prea ma descurc cu el....poate ma ajuta cineva, mai departe codul pe care vreau sa-l simulez (un VAmetru) si care m-i se opreste la linia 31 (Arata2 = Format(arata , "00.0") ca si cum i-as da STOP.

$regfile = "attiny13.dat"'$crystal = 1200000$hwstack = 16$swstack = 16$framesize = 16$noramclearDim Arata As String * 4Dim Arata2 As String * 4Dim Volt As WordDim Curent As WordConfig Adc = Single , Prescaler = Auto , Reference = Internal       'offStart AdcConfig Lcd = 16 * 2                                         'sau 8 X 2Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0Cursor Off'ClsDoDdrb = &B110010'Config Portb.5 = Input'If Pinb.5 = 0 Then'Do'Loop Until Pinb.5 = 1'End IfVolt = Getadc(1) - 7Arata = Str(volt)Arata2 = Format(arata , "00.0")Curent = Getadc(3) - 7Curent = Curent * 10Ddrb = &B111111UpperlineLcd ; Arata2 ; "V" ; " "                                    'Chr(32) ; Chr(32)LowerlineLcd ; Curent ; "mA" ; " "                                   'Chr(32) ; Chr(32)Waitms 500LoopEnd
Link spre comentariu

Salutare,Linia 31 ar trebui sa fie

Arata = Format(arata , "00.0")
Asa cum l-am postat functioneaza bine in montaj probleme am numai in simulator.Acum l-am modificat din nou, asa cum ai spus, deasemenea testat si ramine definitiv, merge si in simulator nu mai ramine blocat. Urmatoarea intrebare, cum ma folosesc de LCD-ul din simulator? nu-mi afisaza nimic din cea ce trebui.

$regfile = "attiny13.dat"$hwstack = 16$swstack = 16$framesize = 16$noramclearDim Arata As String * 4Dim Volt As WordDim Curent As WordConfig Adc = Single , Prescaler = Auto , Reference = InternalStart AdcConfig Lcd = 16 * 2Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0Cursor OffClsDoDdrb = &B110011'In simulare Proteus merge doar cu getadc(1) insa in realitate trebuie scazut cu 7Volt = Getadc(1) - 7Arata = Str(volt)Arata = Format(arata , "00.0")Ddrb = &B111111UpperlineLcd ; Arata ; "V" ; " "Ddrb = &B110011'difernta fata de simulare cu Proteus, curent a trebuit scazut cu 40 pentru a corespunde cu realitateaCurent = Getadc(3) - 40If Curent < 0 Then Curent = 0'limitat la 10A altfel afiseaza ceva de genul 685465847559, o ia raznaIf Curent > 1000 Then Curent = 0Arata = Str(curent)Arata = Format(arata , "0.00")Ddrb = &B111111LowerlineLcd ; Arata ; "A" ; " "Waitms 100LoopEnd

Link spre comentariu

Ce ar trebui sa arate? Poti sa dai niste valori? Daca te referi la pornirea simulatorului cand valoarea adc-ului este 0 poti folosi asa

Volt = Getadc(1)                                            '- 7If Volt <= 7 ThenVolt = 0ElseVolt = Volt - 7End IfArata = Str(volt)Arata = Format(arata , "00.0")Ddrb = &B111111UpperlineLcd ; Arata ; "V" ; " "
Link spre comentariu

Ce ar trebui sa arate? ....

Ar trebui sa afiseze valorile pe "zero" adica 00.0V si 0.00A.Se pare ca simulatorul meu are toane, pina acum i-mi afisa doar 0 si 6 iar acum i-mi afisaza asta:[attachment=0]sim.jpg[/attachment]
Link spre comentariu

Asa imi arata si mie @nickrvl...

In sfirsit, mergem mai departe, restul de "butonase" si alte alea (in fereastra LCD-ului) la ce folosesc, nu am reusit sa le dau de cap....
Link spre comentariu

Ai incercat sa folosesti asta?

 

Volt = Getadc(1)                                            '- 7If Volt <= 7 ThenVolt = 0ElseVolt = Volt - 7End IfArata = Str(volt)Arata = Format(arata , "00.0")Ddrb = &B111111UpperlineLcd ; Arata ; "V" ; " "
Link spre comentariu

Salut!

Spuneti-mi si mie de ce scadeti 7, respectiv 40 din valorile masurate de ADC si apoi va mirati de unde valorile aiurea pe care le obtineti pe afisor!!

Intreb pentru ca formula de calcul pentru transformarea valorii masurate de ADC din orice uC ATMEL este :

U= (ADC*Uref)/1024 (unitatea de masura fiind voltul)

In cazul ATtiny13, Uref este 1.1 V (sau pentru usurinta conversiei 1100mV)

Link spre comentariu

Salut!

Spuneti-mi si mie de ce scadeti 7, respectiv 40 din valorile masurate de ADC si apoi va mirati de unde valorile aiurea pe care le obtineti pe afisor!!

Intreb pentru ca formula de calcul pentru transformarea valorii masurate de ADC din orice uC ATMEL este :

U= (ADC*Uref)/1024 (unitatea de masura fiind voltul)

In cazul ATtiny13, Uref este 1.1 V (sau pentru usurinta conversiei 1100mV)

La "proiectul meu" am prezentat un VAmetru cu Attiny13 unde nu am reusit sa afisez corect valorile pina ce nu am facut rectificari, acel -7 si -40. Proiectul e liber poti sa-l modifici si sa ne arati si noua cum se poate face corect. In simulare cu Proteus ruleaza bine fara acele "rectificari" dar in realitate are abateri, daca reglez voltii sa afiseze corect la 8V sa zicem atunci cind ajung la 26v se ajunge la un decalaj de 2V, aproximativ.

La curent de asemenea, nu pleaca de la "0.00" ci de la "0.40", toate astea probabil din cauza ca e legat in "paralel" cu LCD-ul.

Link spre comentariu

Salut!

Spuneti-mi si mie de ce scadeti 7, respectiv 40 din valorile masurate de ADC si apoi va mirati de unde valorile aiurea pe care le obtineti pe afisor!!

Intreb pentru ca formula de calcul pentru transformarea valorii masurate de ADC din orice uC ATMEL este :

U= (ADC*Uref)/1024 (unitatea de masura fiind voltul)

In cazul ATtiny13, Uref este 1.1 V (sau pentru usurinta conversiei 1100mV)

La "proiectul meu" am prezentat un VAmetru cu Attiny13 unde nu am reusit sa afisez corect valorile pina ce nu am facut rectificari, acel -7 si -40. Proiectul e liber poti sa-l modifici si sa ne arati si noua cum se poate face corect. In simulare cu Proteus ruleaza bine fara acele "rectificari" dar in realitate are abateri, daca reglez voltii sa afiseze corect la 8V sa zicem atunci cind ajung la 26v se ajunge la un decalaj de 2V, aproximativ.

La curent de asemenea, nu pleaca de la "0.00" ci de la "0.40", toate astea probabil din cauza ca e legat in "paralel" cu LCD-ul.

Pai, nu poti sa te astepti la precizia unui aparat de laborator din cauza faptului ca reglarea corectitudinii valorii de afisat o faci cu potentiometri care, prin definitie, introduc zgomot si erori mecanice, pe de o parte si, pe de alta parte, modul in care se face conversia nu iti permite atingerea unei precizii sporite.

Ca exercitiu este interesant, ca utilitate practica nu prea. Este de preferat sa folosesti un uC cu resurse sporite ca sa emiti pretentii de precizie.

Link spre comentariu

Pai, nu poti sa te astepti la precizia unui aparat de laborator din cauza faptului ca reglarea corectitudinii valorii de afisat o faci cu potentiometri care, prin definitie, introduc zgomot si erori mecanice, pe de o parte si, pe de alta parte, modul in care se face conversia nu iti permite atingerea unei precizii sporite.Ca exercitiu este interesant, ca utilitate practica nu prea. Este de preferat sa folosesti un uC cu resurse sporite ca sa emiti pretentii de precizie.

Nu e vorba de precizie, nici nu am pretentii in regim hoby insa cu aceasi semireglabili dar cu modificarea din soft acum am precizie de aproximativ 0.1V raportat la un aparat de masura si incepind de la 0 la 26V, fata de 2V fara modificare in soft raportat la acelasi aparat plecind tot de la 0V pina la 26V.
Link spre comentariu
  • 2 săptămâni mai târziu...

Are cineva idee cum as putea afisa doua tensiuni (o tensiune si un curent) pe un VFD cu 12 digiti ? simultan (ex 12V , 0.5A, toate in linie). Am un VFD cu 12 digiti dintr-un calculator romanesc cu imprimanta si caruia-i pot afla imediat configuratia pinilor.

Link spre comentariu

Are cineva idee cum as putea afisa doua tensiuni (o tensiune si un curent) pe un VFD cu 12 digiti ? simultan (ex 12V , 0.5A, toate in linie). Am un VFD cu 12 digiti dintr-un calculator romanesc cu imprimanta si caruia-i pot afla imediat configuratia pinilor.

Alimentezi filamentul cu 2V, si, secvential (sau in regim de multiplexare), aplici circa 10-14V pe grila fiecarui digit (celelalte grile sunt pe zero V) si tot atatia volti pe segmentul pe care vrei sa-l aprinzi si, uite asa, comanzi afisorul.
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