Vlad Mihai Postat Iunie 7, 2013 Partajează Postat Iunie 7, 2013 felicitari, atunci dai bataie mai departe. daca sunt probleme te ajut. Link spre comentariu
Marian Postat Iunie 7, 2013 Partajează Postat Iunie 7, 2013 Multumesc, si multumesc in special pentru ajutorul cu scrierea codului, reusita proiectului ti se datoreaza tie in principal.Inca n-am facut cablajul, vroiam intai sa testez jucaria pe breadboard ca sa fiu sigur ca-i ok si apoi sa realizez practic placa, ce spui ti se par ok testele facute? sau mai bine zis rezultatele despre care am vorbit? Link spre comentariu
Vlad Mihai Postat Iunie 7, 2013 Partajează Postat Iunie 7, 2013 da, sunt ok, sa vedem la curent cum se comporta, daca e nevoie de datonari, referitor la lcd, mai e spatiu de ceva, parca ar mai merge ceva, nu stiu, inca o tensiune de exemplu ca e simplu.presupun ca se aprinde led-ul atunci cand intra la suprasarcina. Link spre comentariu
Marian Postat Iunie 7, 2013 Partajează Postat Iunie 7, 2013 Marturisesc ca nu am pus si LED-ul dar o voi face ca sa vad daca se aprinde ( eu unul sunt destul de sigur ca da ). Cat despre spatiul ramas liber sincer sa fiu inca nu m-am decis ce sa pun pe el, banuiesc ca as putea monitoriza si ramura negativa din punct de vedere al tensiunii cu un eventual AO inversor, sau poate temperatura radiatorului de la regulatoare... sau altceva... momentan insa prefer sa il las asa ca imi este arhisuficient. O sa fac cablajul de cum pot si atunci vor mai urma si alte teste. Link spre comentariu
csongore Postat Iunie 7, 2013 Partajează Postat Iunie 7, 2013 Felicitari domilor proiect fain cu PIC16F876. Eu am facut unul gasit pe net, caut si pun aici cand ajung acasa. Panelmetru care masoara Volt+Amper+Temberatura cu LM35+Limitare la curent setat cu declansare releuDar asta e mai simpatic ca are rezulutia mai buna(Calculeaza W si R) decat al meu, si mai compact decat proiectul de pe forum cu PIC16F877.Cam cat e tensiunea si curentul maxim? Link spre comentariu
Marian Postat Iunie 8, 2013 Partajează Postat Iunie 8, 2013 Felicitarile le merita in mare parte @Vlad Mihai ca el a scris codul care a mers ok din prima, din punctul meu de vedere jos palaria pentru el Apoi in cazul dispozitivului meu am cerut 35Vcc si 6A, mie mi-au ajuns aceste valori tocmai la fix. Link spre comentariu
csongore Postat Iunie 9, 2013 Partajează Postat Iunie 9, 2013 http://vasileelettronic.altervista.org/ ... 20news.htm Eu am inlocuit operationalele cu un singur TL047 se comporta excelent mai complicat partea de alimentare cu o tensiune negativa dar merita se comporta frumos. Problema e cu rezulutia ampermetrului 100mA(nu ma pricep la programare) cam mult pentru proiectul meu urmator o sursa dubla stabilizata Al vostru pare mai versatil felicitari pentru domnu @Vlad Mihai pentru soft! A-si dori sa folosesc al vostru cu intrarea de la italian. Nu stiu nu vreau sa terorizez pe domnu @Vlad Mihai dar era cumva grea o modificare de soft pentru curent maxim 10A si tensiune max 50V? Ps:@marian@ la ultima poza postata nu calculeaza rezistenta? Atasezi cablajul realizat de mine pentru Volt Ampermetrul Italianului Volt.pdf Link spre comentariu
Vlad Mihai Postat Iunie 10, 2013 Partajează Postat Iunie 10, 2013 nu e grea modificarea, să îmi spui ce pic folosești, ce fel de cuarț, să îmi spui ce tensiune maximă dorești și ce curent maxim și modificăm. zimi la curent cum e treaba.. la 5A pe port sa afisezi 10A sau cum? @Marian atasez o noua versiune ca sa calculeze si rezistenta de sarcina, e acelasi cod doar ca am adaugat asta. daca ai timp poate testezi si hexul asta. simulat functioneaza corect. // LCD module connectionssbit LCD_RS at RB2_bit;sbit LCD_EN at RB3_bit;sbit LCD_D4 at RB4_bit;sbit LCD_D5 at RB5_bit;sbit LCD_D6 at RB6_bit;sbit LCD_D7 at RB7_bit;sbit LCD_RS_Direction at TRISB2_bit;sbit LCD_EN_Direction at TRISB3_bit;sbit LCD_D4_Direction at TRISB4_bit;sbit LCD_D5_Direction at TRISB5_bit;sbit LCD_D6_Direction at TRISB6_bit;sbit LCD_D7_Direction at TRISB7_bit;// End LCD module connections unsigned int Tensiune,curent1,curent2,curent3,curent4,curent5,curent6,curent_medie,val1; unsigned long u,i,power,res;unsigned char ch;void main(){ TRISA = 0xFF; // designate PORTA as input //INTCON = 0; // Disable all interrupts //IRP_bit = 1 ; TRISC.F3 = 0; //declaram un port la iesire pentru buzzer TRISC.F4 = 0; //declaram un port la iesire pentru led PORTC.F4=0; //starea initiala a portului setata in 0 logic, ledul e stins Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Cmd(_LCD_CLEAR); // Clear display Delay_ms(100); LCD_Out(1,2,"*****VoltAmpermeter*****"); LCD_Out(2,2,"*******By Marian********"); Delay_ms(1500); Lcd_Cmd(_LCD_CLEAR); LCD_Out(1, 1,"V:"); LCD_Out(2, 1,"I:"); LCD_Out(1, 12,"R:"); LCD_Out(2, 12,"P:"); while (1) { // Citire Tensiune Tensiune=ADC_read(0); // get ADC value for U from channel 1 u=(long)Tensiune*3500; // covert adc reading to milivolts u=u/1023; // 0..1023 -> 0-3500mV ch=u/1000; // extract 10.00 U digit if (ch==0) { LCD_Chr(1,3, 32); // write empty space if digit is 0 } else { LCD_Chr(1,3,48+ch); // write ASCII digit at 1st row, 2nd column } ch=(u/100) %10; // extract 01.00 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('.'); // write '.' at cursor point ch=(u/10) %10; // extract 00.10 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point ch=u %10; // extract 00.01 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point ch=10u %10; // extract 00.001 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('V'); // write 'V' at cursor point //Curent curent1=ADC_read(1); // get ADC value for U from channel 1 Delay_ms(50); curent2=ADC_read(1); // get ADC value for U from channel 1 Delay_ms(50); curent3=ADC_read(1); // get ADC value for U from channel 1 Delay_ms(50); curent4=ADC_read(1); // get ADC value for U from channel 1 Delay_ms(50); curent5=ADC_read(1); // get ADC value for U from channel 1 Delay_ms(50); curent6=ADC_read(1); // get ADC value for U from channel 1 Delay_ms(50); curent_medie=(curent1+curent2+curent3+curent4+curent5+curent6)/6; i=(long)curent_medie*602; // covert adc reading to milivolts i=i/1023; // 0..1023 -> 0-3500mV ch=i/1000; // extract 10.00 U digit if (ch==0) { LCD_Chr(2,3, 32); // write empty space if digit is 0 } else { LCD_Chr(2,3,48+ch); // write ASCII digit at 1st row, 2nd column } ch=(i/100) %10; // extract 01.00 U digit LCD_Chr_CP(48+ch); LCD_Chr_CP('.'); // write '.' at cursor point ch=(i/10) %10; // extract 00.10 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point ch=i %10; // extract 00.01 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point ch=10*i %10; // extract 00.001 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('A'); //putere power=u*i/1000; ch=power/1000; if (ch==0) { LCD_Chr(2,14, 32); // write empty space if digit is 0 } else { LCD_Chr(2,14,48+ch); // write ASCII digit at 2nd row, 2nd column } ch=(power/100) %10; // extract 01.00 P digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point ch=(power/10) %10; // extract 0.10 P digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('.'); // write '.' at cursor point ch=(power/1) %10; // extract 0.10 P digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('W'); // write 'W' at cursor point // Resistance Calculation if(power==0) { LCD_Out(2,10," "); // write empty space LCD_Chr_CP(243); // write 'infinity' at cursor point LCD_Out(2,13," "); // write empty space LCD_Chr_CP(244); // write 'ohm' at cursor point } else { res=u*100/i; if(res>=10000) { LCD_Out(1,14," > 1K"); // write " > 1K" LCD_Chr_CP(244); // write 'ohm' at cursor point } else { ch=res/1000; // extract 100.0 R digit if (ch==0) { LCD_Chr(1,14, 32); // write empty space if digit is 0 } else { LCD_Chr(1,14,48+ch); // write ASCII digit at 2nd row, 10th column } ch=(res/100) %10; // extract 010.0 R digit if (ch==0 && res<=99) { LCD_Chr_CP(32); // write empty space if digit is 0 } else { LCD_Chr_CP(48+ch); // write ASCII digit at cursor point } ch=(res/10) %10; // extract 001.0 R digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('.'); // write '.' at cursor point ch=res %10; // extract 000.1 R digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP(244); // write 'ohm' at cursor point } } //Buzzer val1=ADC_read(1); if (val1 > 1022) { Sound_Init(&PORTC, 3); Sound_Play(500, 1000); // Play sound at 500Hz for 1 second PORTC.F4=1; //led on Delay_ms(100); } else PORTC.F4= 0;}} Link spre comentariu
Marian Postat Iunie 10, 2013 Partajează Postat Iunie 10, 2013 O sa testez si chestia asta, ( intrebare de nub: stergeri si rescrieri repetate de hex in microcontroller il pot afecta? adica ma tem ca tot stergandu-l si reprogramandu-l sa nu-l stric... am zis, e intrebare de nub ca nu stiu, daca va straneste rasul asta e...), dar @Vlad am o nelamurire, in imaginea simularii tale pentru 35V si 2,4A apare o rezistenta de 145 Ohm, care-i logica? gandesc ca ar trebui sa fie 35/2,4=R... Link spre comentariu
Vlad Mihai Postat Iunie 10, 2013 Partajează Postat Iunie 10, 2013 referitor la cod dar era o mica eroare care mi-a scapat(se inmultea rezultatul cu 10 pe undeva), acum am rezolvat, atasez noul hex.Picul are flash, astea cu F, se comporta ca un stick de memorie, poti sa il scrii pana te saturi, s-ar putea sa mori tu si picul inca sa mearga. Parca avea circa 10000 de stergeri si scriere, dar eu nu imi fac griji de asa ceva. Link spre comentariu
Marian Postat Iunie 10, 2013 Partajează Postat Iunie 10, 2013 Ok pai am zis deja ca nu stiu si de asta am intrebat, deci e bine de aflat, atunci nu am stres. O sa imi fac timp azi sa reprogramez PIC si sa testez hex-ul, voi reveni cu detalii. Link spre comentariu
Marian Postat Iunie 10, 2013 Partajează Postat Iunie 10, 2013 @Vlad inainte sa testez, te stresez cu cateva chestiuni ( si-mi cer scuze dar sunt curios ): -Limbajul in care scrii codul este C daca nu ma insel, nu? -Apoi cu ce compilezi codul sursa dupa ce il scrii ( si de ce nu, cu ce il si scrii )? la softuri ma refer... -Si intr-un final ceva legat de ultimul cod postat de tine, sectiunea asta de pe la inceput: Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Cmd(_LCD_CLEAR); // Clear display [b]Delay_ms(100)[/b]; LCD_Out(1,2,"*****VoltAmpermeter*****"); LCD_Out(2,2,"*******By Marian********"); [b]Delay_ms(1500)[/b]; Lcd_Cmd(_LCD_CLEAR); LCD_Out(1, 1,"V:"); LCD_Out(2, 1,"I:"); LCD_Out(1, 12,"R:"); LCD_Out(2, 12,"P:");Am bolduit 2 parametrii delay de care sunt interesat, primul cel de 100mS reprezinta cumva timpul cat dureaza pana apare textul ala generic? apoi cel de 1500mS ar fi timpul cat textul generic sta pe display ( corecteaza-ma te rog daca gresesc ). Daca am inteles corect atunci ar putea fi modificate astfel incat primul sa fie spre exemplu 500mS iar ce de-al 2-lea 3000mS? Asta ar presupune ca textul ala sa apara la 0,5S dupa alimentarea dispozitivului si apoi sa ramana pe ecran 3 secunde... Link spre comentariu
Vlad Mihai Postat Iunie 10, 2013 Partajează Postat Iunie 10, 2013 Folosesc mikroC Pro for pic, are librarii vaste si pricep bine ceea ce fac, limbajul e C.deci secventa face asa:initialzeza LCD, opreste cursorul, sterge LCD(in caz ca apare ceva pe el la initializare), dupa ii da o mica intarziere, cu cat e mai mare cu atat apar mai greu cele 2 texte ce urmeazaal doilea delay face o intarziere mai mica sau mai mare de intrarea in paine a programului(adica afisarea tensiunii, curentului etc.) daca maresti intarzii practic.Da, valorile pot fi modificate cum vrei tu.am modificat eu valorile la delay. atasez hex. Link spre comentariu
Vlad Mihai Postat Iunie 12, 2013 Partajează Postat Iunie 12, 2013 atasez fisierul hex cu modificarile cerute pentru colegul csongere Link spre comentariu
csongore Postat Iunie 12, 2013 Partajează Postat Iunie 12, 2013 Multumesc frmos domnu Vlad Mihai pentru ajutorul acordat!!!!! 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