Bird Postat Decembrie 15, 2009 Partajează Postat Decembrie 15, 2009 Va salut ! Incerc sa gasesc o formula de conversie a valorii rezultate din intrarea unei tensiuni variabile intre o si 4,95 volti pentru afisarea pe un displai LCD , dar nu reusesc sa vad o creste contiunua . Cu 8 biti , crescand de la 0 la 5 volti am doua plaje de cate 2,4 volti , iar in alta situatie nu indica zecimalele .....Am incercat pe rezolutii de 8 si 10 biti . Cred ca mare lucru nu poate fi , dar.... cand nu sti ..... Va rog , spuneti-mi si mie care este solutia . Va multumesc ! Link spre comentariu
caddyct Postat Decembrie 15, 2009 Partajează Postat Decembrie 15, 2009 In ce limbaj doresti sa faci aceasta conversie?Assembler ? C++ ? si daca raspunsul e C++ cu ce compilator , ca in cazul celor de la Microchip cred ca te pot ajuta.. Link spre comentariu
vsurducan Postat Decembrie 15, 2009 Partajează Postat Decembrie 15, 2009 Va salut !Incerc sa gasesc o formula de conversie a valorii rezultate din intrarea unei tensiuni variabile intre o si 4,95 volti pentru afisarea pe un displai LCD , dar nu reusesc sa vad o creste contiunua . Cu 8 biti , crescand de la 0 la 5 volti am doua plaje de cate 2,4 volti , iar in alta situatie nu indica zecimalele .....Am incercat pe rezolutii de 8 si 10 biti . Cred ca mare lucru nu poate fi , dar.... cand nu sti .....Va rog , spuneti-mi si mie care este solutia .Va multumesc !8 biti inseamna 256 de nivele, deci 4.95V=cap scala/255 = 19.4mV/pas, rezolutia digitala in care masori. Daca la 255 trebuie sa-ti afiseze 4.95V trebuie sa inmultesti cu 1.94. Asta se face in mai multe feluri depinde daca lucrezi cu un compilator sau in assembler. In assembler faci ochii mari de tot la metoda asta:http://www.piclist.com/techref/method/math/divconst.htmsi o aplici aici:http://www.piclist.com/techref/piclist/ ... divmul.htm Link spre comentariu
cirip Postat Decembrie 15, 2009 Partajează Postat Decembrie 15, 2009 Incerc sa gasesc o formula de conversie a valorii rezultate din intrarea unei tensiuni variabile intre o si 4,95 volti pentru afisarea pe un displai LCD , dar nu reusesc sa vad o creste contiunua . Cu 8 biti , crescand de la 0 la 5 volti am doua plaje de cate 2,4 volti , iar in alta situatie nu indica zecimalele .....Am incercat pe rezolutii de 8 si 10 biti . Cred ca mare lucru nu poate fi , dar.... cand nu sti .....Mai lipsesc informatii. Ce referinta folosesti?La modul general, daca rezultatul conversiei este N si ADul e de 8 biti, atunci Vin[mV]=N*(Vref[mV]/256). In proiectele facute de mine am preferat sa folosesc Vref in [mV], ca sa pot face calculele cu numere intregi sau virgula fixa. Mi se pare mai usor.Pe de alta parte, nu inteleg afirmatia "am doua plaje de cate 2,4 volti".Cat despre "mare lucru nu poate fi" , e discutabil, ca dovada. Pana sa ajungi pe LCD iti cam mananca zilele conversiile. Rezultatul este in binar. Trebuie apoi convertit in zecimal, apoi in ASCII si dupa aceea trimis la LCD. Nu neglija nici regimul tranzitoriu (settling) al ADului. Mi s-a intamplat sa am erori ptr ca citeam prea repede dupa ce comutam pe un canal.Rutinele sunt facute de tine sau sunt luate de pe net?Cirip Link spre comentariu
ratza Postat Decembrie 16, 2009 Partajează Postat Decembrie 16, 2009 Dac? ar fi fost ?i codul prezent, era mai simplu pentru toat? lumea. Link spre comentariu
Bird Postat Decembrie 16, 2009 Autor Partajează Postat Decembrie 16, 2009 In ce limbaj doresti sa faci aceasta conversie?............ Folosesc MicroCodeStudio-Plus . Link spre comentariu
Bird Postat Decembrie 16, 2009 Autor Partajează Postat Decembrie 16, 2009 Dac? ar fi fost ?i codul prezent, era mai simplu pentru toat? lumea. Cu liniile de mai jos , s-ar parea ca pot afisa pe LCD val_masurata VAR WORD Volti VAR WORD DEFINE ADC_BITS 8 ' Set number of bits in result DEFINE ADC_CLOCK 3 ' Set clock source (rc = 3) DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds ADCON1=%00001110 TRISA =%00000001 ADCIN 0,val_masurata Volti = val_masurata*100/512 pause 100 ' 'AFISARE PE LCD 'Lcdout $fe, 1 'LCDOUT $fe, $80, dec Volti /10,"," , dec volti //10 Link spre comentariu
Bird Postat Decembrie 16, 2009 Autor Partajează Postat Decembrie 16, 2009 Dac? ar fi fost ?i codul prezent, ..................... Am rezolvat ! Va multumesc ! Am folosit urmatoarele linii de cod si formula de conversie :...................................................... ADCON1=%00001110 'seteaza PORTA.0 analog restul digital ADCON0=%00000001 'MASURARE UMIDITATE ADCON0.2 = 1 ' Start ConversionNU-IGATA: Pause 5 If ADCON0.2 = 1 Then NU-IGATA ' Wait for low on bit-2 of ADCON0, conversion finished Umiditate = ADRESH ' Move high byte of result to adval volti= Umiditate*194/10 Lcdout $fe, 1 ' Clear LCD Lcdout "Volti: ", DEC volti/1000,",",dec3 volti//1000 ' Display the decimal value Acum trebuie sa fac corespondenta intre tensiunea masurata pe senzor si umiditatea relativa data de tebelul firmei . Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum