Sari la conținut
ELFORUM - Forumul electronistilor

voltampermetru cu pic 16f876


Postări Recomandate

Hihiii, ce cautat mai sunt :da ... glumesc si eu, nu ma luati in seama...

 

@Vasile1968 atasez o imagine cu dispunerea componentelor la cablaj:

Posted Image

 

LCD-ul are pinii numerotati pe placa sa, de la 1 la 14 la cele fara led, si de la 1 la 16 pentru cele cu led, ultimii 2 pini ( 15 si 16 ) nu te intereseaza, te intereseaza doar pinii 1-14, pe placa am dispus eu legaturile si le-am numerotat sa corespunda intocmai cu numerele pinilor de la LCD, adica pinul 1 de la LCD il legi la borna 1 de pe placa, pinul 2 la borna 2, pinul 3 la borna 3... etc, intelegi tu la ce ma refer. Te uiti pe imaginea aia pentru a identifica pe placa numarul fiecarei borne, iata pdf-ul pentru cablaj pe care daca il faci tu il printezi normal si-l pui la lucru, daca il face altcineva ii dai acest pdf:

Cablaj.pdf

 

In cazul in care ai inteles intocmai la ce ma refer atunci sa ai spor, ai deja totul pentru proiect.

 

...Vreau ca atunci cand tensiunea este mai mare de 27.5v si curentul mai mic de 4A ,sa se aprinda un led...

Ca sa fiu sigur intreb, deci ledul tre sa se aprinda numai cand cele 2 conditii se indeplinesc simultan ( adica spre exemplu tensiunea atinge 27,6V si curentul 3,9A )? sau sa se aprinda independent pentru fiecare conditie, adica daca se ating 27,6V se aprinde ledul indiferent de curent, sau daca se ating 3,9A, sa se aprinda indiferent de tensiune? Intreb ca sa fiu sigur... Apoi inteleg ca faza cu ledul tre sa fie doar la 876, pentru 88x este suficient doar adaptarea softului de ieri nu?
Link spre comentariu

@Vasile1968 ce repede te misti... bafta, astept noutati :da

@bratueduard nu te-am uitat, iata codul sursa pentru tine:

//Conexiuni LCDsbit LCD_RS at RB7_bit;sbit LCD_EN at RB6_bit;sbit LCD_D4 at RB5_bit;sbit LCD_D5 at RB4_bit;sbit LCD_D6 at RB3_bit;sbit LCD_D7 at RB2_bit;sbit LCD_RS_Direction at TRISB7_bit;sbit LCD_EN_Direction at TRISB6_bit;sbit LCD_D4_Direction at TRISB5_bit;sbit LCD_D5_Direction at TRISB4_bit;sbit LCD_D6_Direction at TRISB3_bit;sbit LCD_D7_Direction at TRISB2_bit;//Declarare variabileunsigned char ch, ADCx;unsigned int Tensiune, Curent;unsigned long V, A, Pw;//Functie principalavoid main() {INTCON = 0;TRISA = 0x03;Lcd_Init();Lcd_Cmd(_LCD_CURSOR_OFF);Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"T:");Lcd_Out(1,8,"C:");Lcd_Out(2,1,"Putere:");while (1) {//Achizitie ADCTensiune = 0;Curent = 0;for (ADCx=0; ADCx<10; ADCx++) {Tensiune += ADC_Read(0);Curent += ADC_Read(1);Delay_ms(10);}//TensiuneTensiune = Tensiune/ADCx;V = (long)Tensiune*500;V = V/1023;ch = V/100;Lcd_Chr(1,3,48+ch);ch = (V/10) % 10;Lcd_Chr_CP(48+ch);ch = (V/1) % 10;Lcd_Chr_CP(48+ch);LCD_Chr_CP('V');Delay_ms(10);//CurentCurent = Curent/ADCx;A = (long)Curent*50;A = A/1023;ch = A/10;Lcd_Chr(1,10,48+ch);ch = (A/1) % 10;Lcd_Chr_CP(48+ch);Lcd_Chr_CP('A');Delay_ms(10);//PuterePw = V*A;ch = Pw/10000;Lcd_Chr(2,8,48+ch);ch = (Pw/1000) %10;Lcd_Chr_CP(48+ch);ch = (Pw/100) %10;Lcd_Chr_CP(48+ch);ch = (Pw/10) %10;Lcd_Chr_CP(48+ch);ch = (Pw/1) %10;Lcd_Chr_CP(48+ch);Lcd_Chr_CP('W');Delay_ms(10);}}

Deci, PIC16F876A, cristal de 4Mhz, LCD16X2. Ai cerut 0-500V, 0-50A si putere, fara zecimale toate ( asa am inteles eu ), iata imaginea cu simularea menita sa ilustreze modul de afisare:
Posted Image

T vine de la tensiune, C de la curent, am pus doar initialele penca nu e loc pe un display 2x16 pentru cuvintele intregi, dedesubt fiind doar puterea am avut spatiu sa scriu integral. In cazul in care este ok asa iata hex-ul:
 

Bratueduard#1.rar

Link spre comentariu

Ca sa fiu sigur intreb, deci ledul tre sa se aprinda numai cand cele 2 conditii se indeplinesc simultan ( adica spre exemplu tensiunea atinge 27,6V si curentul 3,9A )

tre sa se aprinda numai cand cele 2 conditii se indeplinesc simultan,functia si sau and asa inseamna,adica tensiune mai mare de 27.5V si curent mai mic de 4A.Asa interpretez eu ca bateriile s-au incarcatAceeasi poveste si la 886 (acelasi domeniu 90 sau 100v si 100A si la fel cu ledul)
Link spre comentariu

Multumesc mult!Ati inteles exact ce am cerut.Ulterior am realizat ca ar fi bine sa se masoare curentul si la sutimi (ar iesi calculul puterii cu o rezolutie mai buna si suficienta).In mod normal consumurile uzuale sunt de ordinul unitatilor de amperi.Astfel ca va mai rog sa modificati (in masura timpului disponibil):- Curent sa afiseze sutimi.- Putere: maxim 9000W (nu cred ca permite fizic instalatia electrica sa trec peste valoarea de 9000)Cer scuze ca am fost grabit cu cererea.Nu este nici o graba deoarece nu am Pic-ul. Luni o sa fac comanda la TME ca am mai multe de adus de acolo si inca nu am lista completa pana Sambata.Momentan doar in proteus "functioneaza" :) Va multumesc inca o data pentru timpul acordat.Cu stimaBratu Eduard

Link spre comentariu

In loc de T si C as fi folosit notatiile "consacrate" - U si I, da' e chestie de cosmetica.In rest, felicitari pentru activitatea de pe sectiunea asta. :aplauze

si mai simplu ar fi fara T ,C si Putere,fiindca au deja trecute unitatile de masuraam testat 500V 50A si merge corect
Link spre comentariu

Am testat si eu in Proteus.Doar ca apare puterea din 220 in 220 :)Dealtfel; firesc daca calculeaza formula cu unitati de amperi.Cred ca totusi ar fi bine sa masoare sutimi si zecimi de amper acolo....Si cu notarile, ar fi in regula cu: "V, A si Power"Am fost eu grabit cu cererea ieri. (aici si aportul de inteligenta excesiva care se poate deduce)Un LCD mai am. sa "vad" cu sursa sugerata de pic-uri (merci de pont).

Link spre comentariu

Nu mai pot edita anterior...

 

@bratueduard puterea afisata este produsul dintre tensiunea si curentul afisate, deci pentru 500V si 50A nu se poate afisa decat 25000W, deci cat vei consuma la momentul respectiv, atat ti se va afisa, cu alte cuvinte maximul de 25kW trebuie sa ramana, restul cererilor tale cred ca le-am rezolvat:

//Conexiuni LCDsbit LCD_RS at RB7_bit;sbit LCD_EN at RB6_bit;sbit LCD_D4 at RB5_bit;sbit LCD_D5 at RB4_bit;sbit LCD_D6 at RB3_bit;sbit LCD_D7 at RB2_bit;sbit LCD_RS_Direction at TRISB7_bit;sbit LCD_EN_Direction at TRISB6_bit;sbit LCD_D4_Direction at TRISB5_bit;sbit LCD_D5_Direction at TRISB4_bit;sbit LCD_D6_Direction at TRISB3_bit;sbit LCD_D7_Direction at TRISB2_bit;//Declarare variabileunsigned char ch, ADCx;unsigned int Tensiune, Curent;unsigned long V, A, Pw;//Functie principalavoid main() {     INTCON = 0;     TRISA = 0x03;     Lcd_Init();     Lcd_Cmd(_LCD_CURSOR_OFF);     Lcd_Cmd(_LCD_CLEAR);     Lcd_Out(1,1,"U:");     Lcd_Out(1,8,"I:");     Lcd_Out(2,1,"Power:");      while (1) {            //Achizitie ADC            Tensiune = 0;            Curent = 0;            for (ADCx=0; ADCx<10; ADCx++) {            Tensiune += ADC_Read(0);            Curent += ADC_Read(1);            Delay_ms(50);            }            //Tensiune            Tensiune = Tensiune/ADCx;            V = (long)Tensiune*500;            V = V/1023;            ch = V/100;            Lcd_Chr(1,3,48+ch);            ch = (V/10) % 10;            Lcd_Chr_CP(48+ch);            ch = (V/1) % 10;            Lcd_Chr_CP(48+ch);            LCD_Chr_CP('V');            Delay_ms(10);            //Curent            Curent = Curent/ADCx;            A = (long)Curent*5000;            A = A/1023;            ch = A/1000;            Lcd_Chr(1,10,48+ch);            ch = (A/100) % 10;            Lcd_Chr_CP(48+ch);            Lcd_Chr_CP('.');            ch = (A/10) % 10;            Lcd_Chr_CP(48+ch);            ch = (A/1) % 10;            Lcd_Chr_CP(48+ch);            Lcd_Chr_CP('A');            Delay_ms(10);            //Putere            Pw = V*A/100;            ch = Pw/10000;            Lcd_Chr(2,7,48+ch);            ch = (Pw/1000) %10;            Lcd_Chr_CP(48+ch);            ch = (Pw/100) %10;            Lcd_Chr_CP(48+ch);            ch = (Pw/10) %10;            Lcd_Chr_CP(48+ch);            ch = (Pw/1) %10;            Lcd_Chr_CP(48+ch);            Lcd_Chr_CP('W');            Delay_ms(10);      }}
http://imageshack.us/a/img819/8706/0pyc.png

http://imageshack.us/a/img27/7217/vd8d.png

http://imageshack.us/a/img4/9046/mxkp.png

http://imageshack.us/a/img194/4376/8fxy.png

http://imageshack.us/a/img198/6471/a8pb.png

http://imageshack.us/a/img822/5728/y4z2.png

http://imageshack.us/a/img811/1658/il1f.png

http://imageshack.us/a/img201/2496/1bf9.png

 

Si hex-ul:

[attachment=0]Bratueduard#2.rar[/attachment]

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