Go Down

Topic: Probleme mit analogRead (Read 1 time) previous topic - next topic

chd87

Hallo,

kurz zum Projekt: Ich habe eine iPhone Ladestation gebaut. Hier lade ich die Geräte mit 1A. An meinem Regelkreis der die 5V für den USB Port bereitstellt, wird ein HAL Sensor (ACS714) (dieser stellt weitergehend die 5V am USB Port und misst diesen) angeschlossen, der über einen AD820n eine Signalverstärkung bekommt.

Nun schließe ich den Ausgang des OPs (sind unbelastet 2,5V, mit iPhone dran, 2,3V) an einen analogen PIN am Arduino an.

Problem: Ist nichts angeschlossen zeigt er auf allen PINs schon ca 200 Bit (ca 1V) an, wieso?
Schließe ich den OP Ausgang an einen Pin, bekomme ich an Werte zwischen 0 und 1023 (0-5V) was ja irgendwie nicht sein sollte.
Mache ich was falsch?

Zweck des Ganzen, ich will den Strom messen mit dem das iPhone geladen wird. Ausgeben tu ich über ein Webinterface des Arduinos. Ethernetnetshield ist aufgedockt und stellt die Verbindung zum Rechner her. Das funktioniert auch alles.


kleiner Auszug:
Zuvor wurden die Spannungen (Spannung1 = 1) definiert. 1 steht für den Analogpin 1.

"            //client.print("Ladestatus Port 1 ");
            //client.print(" = ");
            Spannung1 = analogRead(iPhone1);
            Spannung2 = analogRead(iPhone2);
            Spannung3 = analogRead(iPhone3);
            Spannung4 = analogRead(iPhone4);
            Spannung5 = analogRead(iPhone5);
           
           
            client.print(Spannung1);
            client.print(" <br> ");
            client.print(Spannung2);
            client.print(" <br> ");
            client.print(Spannung3);
            client.print(" <br> ");
            client.print(Spannung4);
            client.print(" <br> ");
            client.print(Spannung5);


Danke schonmal!

Joghurt

Analoge Pins die "in der Luft hängen" gelassen werden fangen ganz furchtbar an zu streuen, und das zweite, größere Problem daran ist dass sie die sie umgebenden Pins auch noch beeinflusst!

Generell aktiviere ich bei nicht benutzte Pins pauschal den internen Pull-Up des Arduino oder aber lege sie manuell auf einen festen Pegel; Masse oder so...

chd87

Ich hatte mal den test gemacht, indem ich nur einen Port benutze und alle anderen auf Masse legen und gleichzeitig als pinMode (x, OUTPUT) definiere. Half leider nichts, denn der angeschlossene Pin zeigt mir weiter 0, 1023, 0, 1023 ab und zu mal was dazwischen an. Ankommen und weitergehen zum Arduino ausgehend vom Ethernetshield tun meine 2,5V. Also hatte ich erwartet einen Bitwerk um 512 zu bekommen (5V = 1023 Bit).

Noch wer eine Idee wieso der Arduino warlos zwischen 0 und 1023 umherschießt?

uwefed

Hast Du die Masse deines Ladegeräts mit der Masse von Arduino verbunden?
Grüße Uwe

chd87

Einmal mit der Masse der Platine und einmal mit der vom Arduino. 100mV Unterschied.

Joghurt


0, 1023, 0, 1023
...
erwartet einen Bitwerk um 512

Hmm, und wenn das tatsächlich korrekt ist? Wenn es sich um eine getaktete Spannung handelt, quasi wie bei einem Schaltregler?

Hast Du Zugang zu einem ein Oszilloskop...?

chd87

Hatte mich verlesen. Dachte Messgerät. Nein hab ich nicht. Soll ich das mal machen?

chd87

#7
Dec 21, 2011, 09:51 am Last Edit: Dec 21, 2011, 10:03 am by chd87 Reason: 1
Ja habe ein Oszilloskop. Die Spannung ist konstant. Der HAL-Sensor gibt bei 0 Ampere die halbe VCC aus also 2,5V bei 5V Grundspannung. Pro Ampere steigert er sich um 185mV. Am HAL Sensor habe ich ca. 140mV mehr wenn ich ein iPhone anschließe also ca 0,7-0,8 A.

Die Spannung am OP die das Signal verstärken soll (dieser zeigt bei Belastung komischer Weise 2,3V an also 200mV weniger, kP wieso aber ist auch egal denn ich teste zZ noch mit 0A und den 2,5V)

Also das sind stabile 2,5 V :( ...



Also wenn ich die anderen Ports auf Masse lege, wird immerhin der Wert im Leerlauf schonmal kleiner. Aber häng ich meinen HAL Sensor bzw OP Ausgang dran, wieder en geflatter zwischen 0 und 1023.

chd87

Haha cool funktioniert. Danke für den Tip mit der Masse. Habe nun 2,5V und ca. 511 Bit :)


Riesen Danke :)

Go Up