7 segment display Árammérő arduinoval

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Üdv!

Készítettem egy árammérőt mely 7 segment display-en jelezné ki a mért értéket.
Amikor mérnék vele akkor van amikor nagyon vibrál és az érték nem olvasható le a kijelzőről.
Nem tudom milyen hibát követtem el, esetleg valaki rátudna nézni egy kis tanácsot adni merre induljak el?
Egy kis tanács segítség jól jönne.

végül a program:

Kód: Egész kijelölése

int a;
int vin;
int input=A0;
int disp1=2;
int disp2=3;
int disp3=4;
int segA=5;
int segB=6;
int segC=7;
int segD=12;
int segE=11;
int segF=10;
int segG=9;
int segDP=8;
void setup()
{
pinMode(disp1, OUTPUT);
pinMode(disp2, OUTPUT);
pinMode(disp3, OUTPUT);
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(segDP, OUTPUT);
pinMode(input,INPUT);
}
void loop()
{
vin=analogRead(input);
vin=(vin/2.046)/0.47;
a = vin%10;
digitalWrite(disp1,HIGH);
digitalWrite(disp2,HIGH);
digitalWrite(disp3, LOW);
//digitalWrite(segDP,HIGH);
display(a);
delay(5);
vin = vin/10;
a = vin%10;
digitalWrite(disp3,HIGH);
digitalWrite(disp2,LOW);
//digitalWrite(segDP,HIGH);
display(a);
delay(5);
vin=vin/10;
a=vin;
digitalWrite(disp2,HIGH);
digitalWrite(disp1,LOW);
digitalWrite(segDP,LOW);
display(a);
delay(5);

}
int display (int a)
{
switch (a)
{
case 0:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;

case 1:
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;

case 2:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
break;

case 3:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
break;

case 4:
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;

case 5:
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;

case 6:
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;

case 7:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;

case 8:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;

case 9:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
}}


Köszi Tamás
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: Robert »

Az elv nem jó:
Szegmenseket illetve helyiértéket kapcsolsz, ekkor:

eleje:
Összes helyiérték LOW
legmagasabb érték szegmensek beállítása
legmagasabb helyiérték HIGH
5 ms várakozás
legmagasabb helyiérték LOW
0,1msecvár
középső érték szegmensek beállítása
középső helyiérték HIGH
5 ms várakozás
középső helyiérték LOW
0,1msecvár
legkisebb szegmensek beállítása
legkisebb helyiérték HIGH
5 ms várakozás
legkisebb helyiérték LOW
0,1msecvár
Vissza elejére
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Akkor mit tanácsolsz?
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Nekem közös anódos a kijelzőm ha "low ra rakom mind világítani fog, mivel mindegyiket egy pnp tranyo kapcsolja.
Bekapcsolás után 5ms után kapcsoljam ki 0,1 ms ig?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: Robert »

Akkor negált logikában gondolkodj...
Az elvet írtam le :)
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Köszönöm jó lett, de egy valamit nem értek. Ha csatlakoztatva van a gépre usb-n keresztül akkor miért mutat más értéket mint amikor simán külső tápról járatom?
Ha usb a gépen van akkor tök jó értéket mutat, de viszont ha leveszem a gépről akkor dupla annyit jelez ki ez normális?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: Robert »

Az analog feszültséged v. 5V-od mászik el.
Azaz a tápfeszültséged körül bibi van...
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Igazad volt a munkahelyemen nem valószínű nem jó a táp amit ráakasztottam, mert otthon rendes tápommal tesztelve jó lett.

De viszont egy problémát szeretnék orvosolni ha lehet.
Most úgy néz ki a dolog hogy 3 digitem
3.digit 10mA ként kéne váltson
2. 100 mA
1. 1000 mA

10mA-hoz tartozó digit nagyon ugrál.
Hogyan tudnám ezt az ugrálást megszüntetni?
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: csegebiga »

többféle megoldás létezik problémádra
anno a voltmérő műszerednél alkalmazott módszer az volt, hogy a legkisebb helyi értéken kerekítettél 0-ra vagy 5-re
lustítsd el a legkisebb érték kijelzését, pl a legutolsó 3 mérés átlagát írja ki
tegyél egy integráló rc tagot a bemenetre, ami lenyeli a pici változásokat.

mondjuk az amperes nagyságrendnél már a 10mA az relativ 1%ot jelent, ne csodálkozz, ha ugrál
tényleg 9.99A-ig mérsz a műszereddel?
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Nem, nem Kell 9.99 A ig mérni max 5.00A a cél.
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: csegebiga »

milyen áramot, milyen feszültségen mérnél?
kapcs rajzot nem küldtél, nem mondtál semmit,
de megfontolandó néhány szempont:
1. mit mérsz?
bármilyen áramot mérsz, ha a feszültség összemérhető a mérőellenálláson eső max 5Vhoz, (pl akku töltőárama) az áram függvényében nagymértékben fog változni a kimeneti kapocsfeszültség. pl bemenő 12V 5A esetén a kimeneten 7V 5A jelenik meg.
1 mvel méred?
ha átfolyó áramot mérsz mérőellenállással, akkor az ellenálláson eső feszültséget méred
ennek a méretezése:
az avr analóg bemenete 0-5Vig mér, tehát az R értéke
R= Umax/Imax=5V/5A=1 Ohm
viszont az eldisszipált teljesítmény:
Pmax=Umax*Imax=5V*5A=25W és ez sok!

(ugyanez 10A esetén 0,5 Ohm és 50W lenne)

ha hálózati feszültség áramát méred, akkor életveszélyes a fázisba sorosan bekötött mérőellenálláson eső feszültséget galvanikus leválasztás nélkül mérni!
és akkor még szükséges egyenirányítani, effektív értékre skálázni a mért értéket estébé
ott a fezültségesés nem számottevő, viszont a teljesítmény disszipáció ugyanúgy jelentkezik.

meggondolandó egy másfajta mérési módszer alkalmazása, például tized akkora mérőellenállás plusz egy 10x erősítőfokozat
vagy a webshopban is kapható hal-elemes árammérő modul alkalmazása
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Sima DC áramot mérnék tápfeszültség 19V Max áram 5V
Kapcsolás nagyon egyszerű: egyszerűen egy 5W 0.47 Ohmos ellenálláson eső feszültséget mérem a A0 bemeneten.
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Még azt elfelejtettem, amikor mérek akkor 1A felett nagyon nagy az eltérés.
200mA Pár mA az eltérés, de ahogy megyek feljebb úgy durvul a hiba.
Tehát 1.8A mérve a kijelzett erték 2.3A

Ez lehet attól, hogy csak az ellenáláson mérek?
Ha betenék egy műveleti erősítős fokozatot az javítana a helyzeten?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: Robert »

Egy kapcsolasi rajz eleg sokat segitene... Itt elvi hiba lesz...
mtom75
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2015. május 7. csütörtök, 18:47

Re: 7 segment display Árammérő arduinoval

Hozzászólás Szerző: mtom75 »

Nos rájöttem mi volt a gong csak nem értem miért van.
Tehát ha rajta van a gépen usbn keresztül akkor jó értéket mutat.
Mivel nem lesz gépen és az arduino lapkán lesz az egész, igy adtam 5v-ot az usb résznek és innen jó.
Ha ezt valaki megfejtené annak örülnék, hogy miért van mert nem igazán értem.
Válasz küldése