mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC zieht Spannung runter?


Autor: Oliver H. (snatch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein größeres Problem mit meiner Strommessung (s. Anhang).

Funktiosbeschreibung:
Am Knotenpunkt R62, R62 und D24 messe ich eine Spannung, die dem Strom 
entspricht der über GND -> K1 nach "Zur Kaskade" fließt. Der Filter R62, 
L2 und C41 dient zum Filtern der doch sehr unsauberen Spannung. Danach 
siehst aber sehr gut aus.

Das funktioniert soweit auch, messe ich mit einem Multimeter am 
Knotenpunkt, dann messe ich genau die Spannung im gleichen Verhältniss 
zum Strom. Wenn 200 µA fließen also 200 mV.

Sobald ich aber nun den ADC "Zum ADC0" des ATMega128 drann hänge, zieht 
dieser mir die Spannung total in den Keller. Kann mir das jemand 
erklären? Ich steig da nämlich gerade garnicht durch.

Gruß
Snatch

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht denn der Rest der Schaltung aus?
Welche Masse hat der uC?

> zieht dieser mir die Spannung total in den Keller.
Hast du dazu auch einen Wert?
Ist der uC richtig konfiguriert (ADC-Eingang)?

Autor: T. C. (tripplex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahrscheinlich ist der Port als Ausgang Initialisiert welcher auf Low
steht und dann halt die Spannung "runterzieht"

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wahrscheinlich ist der Port als Ausgang Initialisiert welcher auf Low
steht und dann halt die Spannung "runterzieht"

...oder dem ADC fehlt die Betriebsspannung

Autor: Oliver H. (snatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich arbeite mit Bascom.
Ddrf.0 = 0                                                  
portf.0 = 0                                                   

Das was ihr schreibt ist richtig. Hatte den Fehler am Anfang auch 
gemacht, weil ich vom A16 auf den A128 portiert habe und den Code nicht 
dazu angepasst habe. Aber jetzt ist alles korrekt. Port F als eingang 
und Pullups aus. Er zieht die Spannung zwar nicht mehr so weit runter 
aber immer noch weit genug (in einem Beispiel von 100 mV auf 70 mV)

Gibt es noch etwas zu beachten?

Was mit aufgefallen ist, wenn ich den Filter weglasse, also R62 abtrenne 
und den ADC direkt an R63 am Knotenpunkt hänge, dann zieht der die 
Spannung nicht mehr runter, sondern sie geht ums 4 fache hoch.

Nun ist aus mit Verständniss :(

Gruß
Snatch

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ist entweder was faul in Deiner Hardware oder Software.
Die ADCs sind sehr hochohmig. Ich hab am ATmega8 nen 1M in Reihe und 
100nF gegen GND am ADC und der mißt ohne Probleme.

Die Drossel kannste weglassen, hat keinerlei Wirkung.
Der 1k hat auch kaum Wirkung, ich würde mindestens 10k..100k nehmen.


Peter

Autor: Oliver H. (snatch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja, da ist was faul, ich weis nur nicht was. Den ATmega habe ich bereits 
3x getauscht. Die Software ist gerade sehr minimal (s. unten).
Die Schaltung der Platine ist auch sehr minimal da dies nur ein 
Testboard ist (s. Anhang).

Die Schaltung ist auch sehr minimal, da dies nur ein Testboard ist (s. 
Anhang) Aber vielleicht seht ihr ja was was ich nicht sehe. Im Prinzip 
hängt der ADC direkt am Pin aus dem Anhamg im ersten Posting.

$regfile = "m128def.dat"
$crystal = 16000000                                   

Dim Adcwert2 As Word

Ddrf.0 = 0
Portf.0 = 0
Ddrf.1 = 0
Portf.1 = 0
Ddrf.2 = 0
Portf.2 = 0
Ddrf.3 = 0
Portf.3 = 0
Ddrf.4 = 0
Portf.4 = 0
Ddrf.5 = 0
Portf.5 = 0
Ddrf.6 = 0
Portf.6 = 0
Ddrf.7 = 0
Portf.7 = 0

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Enable Adc

Do

Adcwert2 = Getadc(1)

Loop
End

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> zieht dieser mir die Spannung total in den Keller. Kann mir das jemand
> erklären?

Mit dem Multimeter am ADC0 gemessen ?

Ansonsten wäre es ziemlich ratsam auch ADC0 auszulesen, und nicht ADC1 
wie in Deinem Code. :D

> ...Getadc(1)

Autor: Oliver H. (snatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sorry, ich lese den richtigen aus. Mir gehts auch weniger ums auslesen, 
sondern ich messe den Spannungsabfall mit dem Multimeter direkt am Pin.
Ob ich den nun in der Software auslese oder nicht ist ja egal, er würde 
ja die zu niedere Spanung auslesen die ich auch mit dem Multimeter am 
Pin messe.

Gruß
Snatch

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> er würde ja die zu niedere Spanung auslesen die ich auch mit dem
> Multimeter am Pin messe.

Das ist richtig, nur war aus Deinem Post nicht ersichtlich, ob auch per 
Multmeter gemessen wurde.

So kurz der Code auch ist, so hast Du es doch geschafft zwei massive 
Fehler reinzuschreiben, einmal falscher Pin, und dann noch Enable Adc, 
das erlaubt den ADC Interrupt, nur ist keiner definiert, dafür sind 
wenigstens die Interrupts global auch nicht erlaubt.

Wenn sich diese Sorgfalt in der Hardware fortsetzt, dann ist mir klar 
warum das nicht hinhaut, da ist irgendein Murks in der Schaltung.

Die Eingänge des PortA sind auf jeden Fall sehr hochohmig und werden, 
falls korret beschaltet, das Messergebnis nicht beeinflussen.

Autor: Oliver H. (snatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sorry, ich bin schon Sorgfälltig. Das kommt nur, vom hin und her 
kompieren und schnell schnell machen weil ich ne Antwort will. Ich sehe 
das wie du, es sollte das Messergebniss nicht beeinflussen, tut es aber 
dennoch.

Ich habe heute keine Zeit mehr, werde morgen mal den kompletten 
schaltplan posten.

GRuß
Snatch

Autor: Oliver H. (snatch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe mal den Schaltplan eben für hier ins Forum neu dahingezeichnet. 
Ist nur eine Skizze soll aber die Schaltung im groben zeigen.

Problem ist auch Schaltplan beschrieben. Bitte keine nicht verbundenen 
Kontakte bemängeln, soll mehr zum Verständniss dienen :D

Die Frage lautet, warum zeigt das Voltmeter die Spannung richtig an, und 
sobald der µC drann kommt steigt diese. Was macht das Voltmeter richtig, 
dass der µC falsch macht.

hier noch der Abgespekte CODE
$regfile = "m128def.dat"
$crystal = 16000000

Config Lcdmode = Port                                       
Config Lcd = 16 * 2                                         
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.4 , Rs = Portc.5       
Initlcd                                                    
Config Lcdbus = 4                                          

Waitms 150
Cursor Off Noblink                                          
Cls

Dim Adcwert2 As Word

Ddrf.0 = 0
Portf.0 = 0

Config Adc = Single , Prescaler = Auto , Reference = Avcc  Referencespannung Avcc = 5 V
Enable Adc                                                  

Do
Adcwert2 = Getadc(0)

Locate 1 , 1
Lcd Adcwert2
Waitms 500
Cls

Loop

End


Danke und Gruß
Snatch

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gehört beim BASCOM nicht ein "Start Adc" mit dazu ???
In den Beispielen ist es immer mit drin...

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies doch mal, was die Leute schreiben.

MWS schrieb:
> und dann noch Enable Adc,
> das erlaubt den ADC Interrupt, nur ist keiner definiert, dafür sind
> wenigstens die Interrupts global auch nicht erlaubt.

Autor: Oliver H. (snatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, nochmals zu software. Auch so bleibt das Problem bestehen.
Selbst wenn ich den ADC-Teil weg lasse geht es nicht.
Problem wie oben beschrieben bleibt bestehen.

Es sollte nicht an der Software hängen.
$regfile = "m128def.dat"
$crystal = 16000000

Config Lcdmode = Port                                       
Config Lcd = 16 * 2                                         
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.4 , Rs = Portc.5       
Initlcd                                                    
Config Lcdbus = 4                                          

Waitms 150
Cursor Off Noblink                                          
Cls

Dim Adcwert2 As Word

Ddrf.0 = 0
Portf.0 = 0

Config Adc = Single , Prescaler = Auto , Reference = Avcc  Referencespannung Avcc = 5 V
Enable Adc                                                  

Do
Adcwert2 = Getadc(0)

Locate 1 , 1
Lcd Adcwert2
Waitms 500
Cls

Loop

End


Auch mit dieser Verion geht es nicht.
$regfile = "m128def.dat"
$crystal = 16000000

Ddrf.0 = 0
Portf.0 = 0
                                        

Do

Loop

End


Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich den Schaltplan richtig lese, dann liegt am Widerstand 
WECHSELspannung an. Das kann der ATMega nicht!

Autor: Oliver H. (snatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Route_66 schrieb:
> Wenn ich den Schaltplan richtig lese, dann liegt am Widerstand
> WECHSELspannung an. Das kann der ATMega nicht!

Ja, könnte man denken, aber ist nicht so. Das Oszi zeigt eine fast 
Saubere gleichspannung an. Des weiteren liegt der ADC ja im Pfad der 
Ausgangsspannung der Kaskade und somit wieder in einem 
Gleichspannungspfad.
Das Multimeter an diesem Punkt ist auch auf Gleichspannungsmessung 
eingestellt und mist ohne den µC ja den richtigen Wert.

Komisch oder?

Was macht das Multimeter denn so anders?

Gruß
Snatch

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denis H. schrieb:

> Was macht das Multimeter denn so anders?


Wie jetzt?
Steigt die Spannung, oder fällt sie, wenn du den µC anklemmst
Am Anfang war von 'die Spannung fällt, sobald der AVR drannhängt' die 
Rede. Irgendwo in einem der letzten Posts wars dann plötzlich 'die 
Spannung steigt, sobald der AVR drannhängt'

Autor: Oliver H. (snatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, im Moment steigt sie an, am Anfang fiel sie.
Ich habe nun herrausgefunden, dass es etwas mit der Masse zu tun haben 
muss.
Jenadem wo ich die Masse (ERDE) verbinde, bekomme ich unterschiedliche 
Werte. Obwohl ich alle ERDEN am Netzteil an einem Kotenpunkt 
zusammengeführt habe.

GRuß
Snatch

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denis H. schrieb:
> Ich habe nun herrausgefunden, dass es etwas mit der Masse zu tun haben
> muss.
Du schliesst also nicht "nur" den Pin an, sondern die ganze uC-Schaltung 
incl. deren Masse? Was kommt raus, wenn du den Pin ablötest und 
hochbiegst?

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Jenadem wo ich die Masse (ERDE) verbinde, bekomme ich unterschiedliche
> Werte. Obwohl ich alle ERDEN am Netzteil an einem Kotenpunkt
> zusammengeführt habe.

Da fehlen im Schaltplan die Details, Masse kann man nur einmal 
verbinden, µC Masse muss natürlich gleich Masse an der Kaskade/Fuß von 
R1 sein, sonst fehlt der Bezugspunkt.

Das hört sich alles so an, als ob eine Ableitung über den µC ergfolgt, 
da der Massepunkt nicht richtig definiert ist.

Würde man aber auch rausbekommen, indem man die Verbindung zwischen 
PortA.0 und Strommeßwiderstand öffnet und dort das Voltmeter reinhängt, 
bzw. zwischen µC Masse und Strommeßwiderstand.

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich PortF.0, nicht A.

Autor: Oliver H. (snatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MWS schrieb:
>> Jenadem wo ich die Masse (ERDE) verbinde, bekomme ich unterschiedliche
>> Werte. Obwohl ich alle ERDEN am Netzteil an einem Kotenpunkt
>> zusammengeführt habe.
>
> Da fehlen im Schaltplan die Details, Masse kann man nur einmal
> verbinden, µC Masse muss natürlich gleich Masse an der Kaskade/Fuß von
> R1 sein, sonst fehlt der Bezugspunkt.
>
> Das hört sich alles so an, als ob eine Ableitung über den µC ergfolgt,
> da der Massepunkt nicht richtig definiert ist.
>
> Würde man aber auch rausbekommen, indem man die Verbindung zwischen
> PortA.0 und Strommeßwiderstand öffnet und dort das Voltmeter reinhängt,
> bzw. zwischen µC Masse und Strommeßwiderstand.

So ist es. Ich habe das ganze Board an der Stromklemme mit ERDE 
verbunden. Habe also einen geerdeten -. Alle Masseflächen auf dem Board 
sind Sternförmig mit diesem Punkt verbunden. Und genau so sieht es nun 
auch besser aus. Hatte vorher die Schaltung auf einem Steckbrett und die 
Masse (ERDE) wo anders her geholt.

Jetzt funktioniert es soweit. Weder geht die Spannung hoch noch runter, 
wenn ich den µC Dranhänge.

Teste jetzt gerade die ergebnisse in allen Lastbereichen und lasse Sie 
auf dem LCD anzeigen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.