GeoMar Postat Octombrie 6, 2010 Autor Partajează Postat Octombrie 6, 2010 Tensiunea maxima este de 35 V si 3,5 A, asa cum arata la pornire el, in poze, neconectat la sursa reglabila.[attachment=0]Imagine0763-b.jpg[/attachment]Adevarat ca MicroC nu vrea sa mearga pe Win7, am incercat si eu, am tot Win7.Daca nu se poate mai devreme, e bine si in weekend, mai bine mai tarziu decat niciodata. Link spre comentariu
nooob64 Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 Aveti nevoie si de usart ? Link spre comentariu
GeoMar Postat Octombrie 6, 2010 Autor Partajează Postat Octombrie 6, 2010 Aveti nevoie si de usart ?NU, nu am nevoie, nu am realizat si partea de conectare la PC [parca asta face USART].Nu le am cu programarile de PIC-uri ca sa cunosc termenii necesari.Cred ca se poate modifica mai rapid fara, parerea mea. Se poate elimina partea aceea din soft.Sa mearga sa afisez tensiunea/amperajul sursei pe el, nu pe PC. Link spre comentariu
Stefan Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 1. Din pacate softul original este asa cu delay. Si tot din pacate GeoMar a folosit fisierul hexa care l-a avut. Daca il poti rezolva ar fi foarte bine. Se pare ca are un delay de 50 us.unde e delay-ul ala ? eu cred ca softul initial functiona perfect singura problema fiind modificarea clock-ului de la 14... la 11 Mhz fara alte modificari in cod Link spre comentariu
puiu Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 1. Se vede in fisieruc C Link spre comentariu
Liviu M Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 Nu este nevoie de nici un delay (nici nu e recomandat delay care sa tina procesoru in ciclu infinit ,decit delay bazat pe intreruperi) , Poti sa postezi un exemplu de "delay bazat pe intreruperi"? ci o marire a rezolutiei ADC din soft si se va afisa frumos pe lcd fara sa se schimbe valorile aiurea. Pun aici un cod cum am facut eu : void get_volt(int pin,int lin,int col){ // assign text to string//aci incepe marirea rezolutiei din soft de la 8 bit la 12 bit daca tin bine minte*************************** int i; i=1; while(i<=256){ aux=aux+ADC_read(pin);// se fac 256 citiri adc valoarea se imparte la 16 i++; }, Pe de o parte, cu i= 0 si while(i<255) puteai face i "numai" char. Economiseai memorie. Pe de alta parte, ce oscilator folosesti? Cam ce rata de esantionare iti rezulta? adc_rd = aux/16; tlong = (long)adc_rd * 25000; // covert adc reading to milivolts tlong = tlong / 4095; // aci deja avem 12 bit ADC se face conversia // 0..4095 -> 0-25000mV ch = tlong /10000;, Ce tip are adc_rd? Ca daca nu e double, ai deja prima "aproximare" in cod. Mai ai unala impartirea tlong/4095 si inca una la tlong/10000. Asa ca ma intreb cat de reala e rezolutia aia de 0.01V Link spre comentariu
nooob64 Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 int max_pwm;unsigned char ch;int pwm_volt;unsigned int aux=0,adc_rd;long tlong; Nu exista nici un overflow. Link spre comentariu
Liviu M Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 Nici n-am zis de overflow, ci de trunchiere. Atunci cand rezultatul e salvat in orice nu e double, compilatoarele "arunca" tot ce e dupa virgula (pastreaza doar partea intreaga). Si asta fara sa rotunjeasca (trunchiaza). Asa ca, de exemplu, daca teoretic rezultatul unei impartiri e 4.99, cand il salvezi in char/int/long... ramai cu 4. Link spre comentariu
Liviu M Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 @GeoMar: m-am uitat putin prin Multimeter.c si am vazut ca ai facut ceva modificari prin cod (ti-ai scris numele). Sa inteleg ca poti compila fisierul respectiv? Daca da, la sfarsitul fisierului e un Delay_ms(50) comentat. Tu l-ai comentat? Si daca da, si daca nu, poti incerca sa-l reactivezi, sa recompilezi si sa vezi daca e mai bine. Daca o sa fie mai bine dar nu suficient, poti incerca sa maresti numarul din paranteze (nu as trece de 255, totusi, in cazul in care functia accepta parametru de tip char). Rectivarea insemana ca daca acum arata asa //Delay_ms(50); // Waits 50msdupa va arata Delay_ms(50); // Waits 50ms Link spre comentariu
GeoMar Postat Octombrie 6, 2010 Autor Partajează Postat Octombrie 6, 2010 NU am modificat in afara de nume si scrisul "Sursa reglabila" in loc de multimeter, care se afla separat in fisierul Ar2r.In rest nu am modificat la delay nimic, nu am comentat nimic.Am modificat, pana sa compilez sa obtin hexul, frecventa quartzului folosit, adica 11,059200 in loc de 14,31818 cum era in schema.Ar influenta asta cu ceva? Link spre comentariu
Liviu M Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 Nu stiu, da' cum ziceam si mai sus, incearca sa te joci cu Delay_ms(50); de la sfarsitul fisierului, sa vezi daca ajuta. Link spre comentariu
Liviu M Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 Poti sa-mi dai pinningul de la display? Am intalat mikroC, da' se pare ca au facut ceva modificari prin functii si trebuie sa definesc pinii pentru lcd: Link spre comentariu
GeoMar Postat Octombrie 6, 2010 Autor Partajează Postat Octombrie 6, 2010 Nu stiu, da' cum ziceam si mai sus, incearca sa te joci cu Delay_ms(50); de la sfarsitul fisierului, sa vezi daca ajuta.OK. Am sa incerc si varianta ta, sa vad ce randament are.Poate asa deprind si eu ceva din "arta" programarii, cu toate ca nu cred ca se mai "lipeste" de mine la varsta mea. :rade:Mersi oricum, am sa postez rezultatele obtinute. :daP.S.Cred ca pana la urma putem renunta la afisarea ultimului digit de la V,A,W si Ohmi, daca se poate si scapam de problema.NU cred ca este nevoie de precizie de 0,01V. :nas:0,1V ar fi destul de suficient. Link spre comentariu
GeoMar Postat Octombrie 6, 2010 Autor Partajează Postat Octombrie 6, 2010 Poti sa-mi dai pinningul de la display? Am intalat mikroC, da' se pare ca au facut ceva modificari prin functii si trebuie sa definesc pinii pentru lcd:Modelul este GDM1602K rev2,1, asa scrie pe el.Pinii sunt pe schema.Uite datasheet-ul[attachment=0]GDM1602K-Extended.pdf[/attachment] Link spre comentariu
Liviu M Postat Octombrie 6, 2010 Partajează Postat Octombrie 6, 2010 Ca sa micsorezi rezolutia, comenteaza linia 74: // LCD_Chr_CP(48+ch); // write ASCII digit at cursor point Am reusit sa recompilez codul. Mai vedem maine daca mai ai nevoie (da' nu vad de ce nu te-ai descurca singur). 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