bobinatorul Postat Iulie 9, 2013 Partajează Postat Iulie 9, 2013 Am si eu o intrebare,sper sa nu fie prosteasca deoarece nu ma pricep asa bine:Pot folosi un afisaj de 2x16?Am vazut ca in schema afisajul este 2x24.multumesc! :jytuiyuSi inca ceva,afisajul trebuie si el programat? Link spre comentariu
Marian Postat Iulie 9, 2013 Partajează Postat Iulie 9, 2013 LCD-ul in sine nu trebuie programat, este suficienta scrierea unui cod corespunzator pentru PIC-ul folosit, insa in cazul de fata LCD de 2x16 nu sunt sigur ca poate afisa codul asa cum este acum, nu are suficiente coloane, spre exemplu pentru afisarea tensiunii in formatul V:xx.yyV sunt necesare 8 coloane si asta doar folosind 2 zecimale, la putere insa sunt necesare cifre de ordinul sutelor inainte de virgula, deci 9 coloane necesare, poate sa se renunte la ceva caractere, spre exemplu la formatul ala de tensiune subliniat de mine, sa se renunte la unul din caracterele "V", sa zicem cel din fata, astfel se poate renunta si la cele 2 puncte din fata cifrei afisate, automat se castiga 2 coloane, deci in concluzie masuratorile ar putea fi afisate in formatul xx.yyV; xx.yyA; xxx.yyW; yy.zzR astfel s-ar inscrie in afisaj toate cele 4 masuratori, respectiv tensiune, curent, putere si rezistenta sarcina. Ori asa ori analizeaza subiectul deschis de mine unde am pus si o simulare ( ultima din ele ) vezi acolo in clip cum am abordat eu afisarea pe un LCD2x16, alegerea iti apartine. PS: Asta este clipul: Link spre comentariu
bobinatorul Postat Iulie 9, 2013 Partajează Postat Iulie 9, 2013 Multumesc frumos de raspuns.Imi cer scuze daca denaturez continutul subiectului dar sunt si eu foarte interesat de acest proiectcu toate ca nu am mai lucrat cu pic-uri si lcd-uriPicul l-am progamat cu hex-ul atasat in discutiile anterioare acum ramane sa fac rost de quartzsi apoi sa testez cu un display de 2x20 (am facut rost intre timp)Nu stiu daca sunt multi carora le-ar conveni sa foloseasca un display de 2x16 dar mie sigur imi convineavand in vedere pretul unui lcd 2x24 Link spre comentariu
Marian Postat Iulie 9, 2013 Partajează Postat Iulie 9, 2013 Se poate folosi si LCD 2x16 dar codul trebuie ajustat, pot face eu asta dar trebuie sa te decizi asupra afisarii, cum preferi sa se faca avand in vedere ca ceea ce se afiseaza pe 2x24 nu se poate si pe 2x16 din lipsa de coloane suficiente, ti-am explicat ceva in mesajul anterior, citeste si spune-mi ce alegi. Link spre comentariu
bobinatorul Postat Iulie 9, 2013 Partajează Postat Iulie 9, 2013 sincer nu am indraznit sa iti cer asta dar ca se poate as vrea hex-ul pentru ambele variantesi pentru 2x16 si 2x20 vreau sa vad ce iese.Multumesc mult Link spre comentariu
Marian Postat Iulie 9, 2013 Partajează Postat Iulie 9, 2013 Ok se pare ca nu intelegi observatiile mele asa ca nu mai insist, o sa ajustez codul pentru 2x16 si vin cu printul unei simulari pentru a-ti ilustra cum va arata totul. Link spre comentariu
bobinatorul Postat Iulie 9, 2013 Partajează Postat Iulie 9, 2013 ce tampit sunt acum am inteles ,e perfect si daca nu imi afiseaza simbolul unitatii de masurasi cele doua puncte.acestea vor fi marcate pe panoul frontal al carcasei Link spre comentariu
Marian Postat Iulie 10, 2013 Partajează Postat Iulie 10, 2013 Revin cu ceea ce am promis, am rescris codul si l-am ajustat pentru LCD2x16, microcontroller PIC16F876A, oscilator extern cristal la 4 Mhz, gama tensiuni 0-35V, gama curent 0-6A asa cum era proiectul original pentru a nu fi necesare modificari in schema sau cablaj. Iata codul sursa: /*VoltAmper-Metru bobinatorul@elforum* Descriere Indicator LCD afisand Tensiunea, Curentul, Puterea si Rezistenta de sarcina,* Configuratie Microcontroller PIC16F876A Oscilator HS 4.0000Mhz LCD display 2x16 Gama tensiune 0-35V Gama curent 0-6A* Autor cod Marian@elforum*///Conexiuni LCDsbit 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;//Declarare variabileunsigned char ch, I, U;unsigned int Tensiune,Curent, ProtI;unsigned long V, A, Power, Res;//Functie principalavoid main() { INTCON = 0; // Dezactivare intreruperi TRISA = 0x03; // Pinii RA0 si RA1 setati pe intrare TRISC = 0xE7; // RC3 si RC4 setati pe iesire PORTC = 0; // Resetare port c Lcd_Init(); // Initializare LCD Lcd_Cmd(_LCD_CURSOR_OFF); // Comanda dezactivare cursor Lcd_Cmd(_LCD_CLEAR); // Comanda stergere ecran Delay_ms(1000); Lcd_Out(1,1,"Volt/Amper-Metru"); // Mesajul initial => prima linie Lcd_Out(2,2,"*bobinatorul*"); // Mesajul initial => linia a 2-a Delay_ms(3000); // 3 secunde delay Lcd_Cmd(_LCD_CLEAR); // Comanda stergere ecran while (1) { //Tensiune Tensiune = 0; for (U=0; U<10; U++) { Tensiune += ADC_Read(0); // Achizitie ADC pentru tensiune Delay_ms(10); } Tensiune = Tensiune/U; V = (long)Tensiune*3500; // Convertire rezultat in milivolti V = V/1023; // 0..1023 => 0-3500mV ch = V/1000; // Extragere zeci Lcd_Chr(1,1,48+ch); // Scrie rezultatul in format ASCII ch = (V/100) % 10; // Extragere unitati Lcd_Chr_CP(48+ch); // Scrie rezultatul in format ASCII Lcd_Chr_CP('.'); ch = (V/10) % 10; // Extragere sutimi Lcd_Chr_CP(48+ch); ch = V % 10; // Extragere zecimi Lcd_Chr_CP(48+ch); LCD_Chr_CP('V'); // Afisare caracter 'V' la final Delay_ms(10); //Curent Curent = 0; for(I=0; I<10; I++) { Curent += ADC_Read(1); // Achizitie ADC pentru curent Delay_ms(10); } Curent = Curent/I; A = (long)Curent*600; // Convertire rezultat un milivolti A = A/1023; // 0...1023 => 0...600mV ch = A/1000; // Extrage zeci Lcd_Chr(2,1,48+ch); ch = (A/100) % 10; // Extrage unitati Lcd_Chr_CP(48+ch); Lcd_Chr_CP('.'); // Afisare caracter "virgula" ch = (A/10) %10; // Etrage sutimi Lcd_Chr_CP(48+ch); ch = A % 10; // Extrage zecimi Lcd_Chr_CP(48+ch); Lcd_Chr_CP('A'); // Afiseaza caracter "A" la final Delay_ms(10); //Protectie ProtI = ADC_Read(1); // Achizitie ADC pentru Protectie if (ProtI == 1023) { PORTC.F4 = 1; // Aprinde ledul daca curentul este 6A Sound_Init(&PORTC, 3); // Initializare buzzer si activare avertizare Sound_Play(1000, 1000); // sonora 1Khz/1 Sec daca curentul este 6A } else { PORTC.F4 = 0; // Resetare RA4 } //Putere Power = V*A/1000; // Seteaza valoare Putere ch = Power/1000; // Extrage sute Lcd_Chr(1,8,48+ch); ch = (Power/100) % 10; // Extrage zeci Lcd_Chr_CP(48+ch); ch = (Power/10) %10; // Extrage unitati Lcd_Chr_CP(48+ch); Lcd_Chr_CP('.'); ch = (Power/1) % 10; // Extrage sutimi Lcd_Chr_CP(48+ch); ch = Power % 10; // Extrage zecimi Lcd_Chr_CP(48+ch); Lcd_Chr_CP('W'); // Afiseaza "W" la sfarsit Delay_ms(10); //Rezistenta Res = V*10/A; // Seteaza valoare Rezistenta ch = Res/1000; // Extrage sute Lcd_Chr(2,8,48+ch); ch = (Res/100) % 10; // Extrage zeci Lcd_Chr_CP(48+ch); ch = (Res/10) %10; // Extrage unitati Lcd_Chr_CP(48+ch); Lcd_Chr_CP('.'); ch = (Res/1) % 10; // Extrage sutimi Lcd_Chr_CP(48+ch); ch = Res % 10; // Extrage zecimi Lcd_Chr_CP(48+ch); Lcd_Chr_CP(244); // Afiseaza caracterul "ohm" la final Delay_ms(10); }} Aici 2 imagini cu simularea pentru a ilustra modul de afisare. Ecranul initial: http://img854.imageshack.us/img854/6914/pw.png Ecranul principal: http://img163.imageshack.us/img163/8769/ykzp.png Si arhiva cu hex-ul necesar: [attachment=0]VA-metru.rar[/attachment] Testeaza-l si spune-mi daca este ok. Link spre comentariu
bobinatorul Postat Iulie 10, 2013 Partajează Postat Iulie 10, 2013 Multumesc mult pentru efortul depus,acum astept sa imi vina comanda de piese(sper sa nu dureze foarte mult) si voi incepe realizarea practica a proiectului.Voi reveni si cu poze Link spre comentariu
Marian Postat Iulie 10, 2013 Partajează Postat Iulie 10, 2013 Cu placere, sper sa fie ok si in realitate, simulatorul a reactionat bine la hex-ul atasat dar ramane sa verifici si practic, atentie la conexiunea LCD. Link spre comentariu
bobinatorul Postat Iulie 13, 2013 Partajează Postat Iulie 13, 2013 Asa cum am promis ,revin cu poze din timpul constructiei acestui proiect. Am avut insa o problema cu cablajul.In urma aplicarii unui flux cablajul a fost deteriorat,traseele nu au fost insa intrerupte http://imageshack.us/a/img10/8496/63s2.jpg Link spre comentariu
Vizitator Postat Septembrie 1, 2013 Partajează Postat Septembrie 1, 2013 Salut.Stie cineva,va rog,hex-ul pentru aceasta schema?Multumesc. Link spre comentariu
csongore Postat Septembrie 27, 2013 Partajează Postat Septembrie 27, 2013 Salutare, cer un pic de ajutor de la meseriasi Am inceput sa lucrez la o sursa de laborator dublu si m-am gandit la un voltampermetru cu PIC16F877A sau 876A cu un LCD de 4X20. Precizez ca sunt foarte incepator la programare.Softul am carpit cat de cat a dar a aparut o problema:Programul ruleaza afiseaza U1(AN0),I1(AN1),P1,U2(AN2) dar daca cer sa citeasca AN3 pentru curent se blocheaza programul si se reseteaza.Poate nu am declarat cum trebuie intrarile analogice? cod.pdf Link spre comentariu
Mircea Postat Septembrie 28, 2013 Partajează Postat Septembrie 28, 2013 In PDF atasat nu zici decat ca PORTA sunt intrari. Codul este incomplet. Pune tot codul ca nu-i nimic confidential sau proprietar in aplicatia ta (utilizeaza butonul CODE cand scrii mesajul). Nu mai atasa PDF-uri.Trebuie sa scrii 0000 sau 0010 sau 1001 in ADCON1 la bit 3-0 PCFG3:PCFG0: A/D Port Configuration Control bits. Vezi datasheet page 128. Link spre comentariu
csongore Postat Septembrie 28, 2013 Partajează Postat Septembrie 28, 2013 Codul e semi complet pentru ca pana aici functiona in simulare daca puneam sa masoara curentul de pe intrarea 3 si punem sa calculeze puterea nu mai mergea la simulare.Asa cum e merge la simulare cum se vede pe poza atasata.Trebuie sa precizez ca sunt ultra incepator la programare si va rog frumos daca ma ajutati la completarea codului sa precizati unde si ce trebuie scris, lucrez cu micoC. Multumesc 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