Forum: Mikrocontroller und Digitale Elektronik ATmega8 ADC Sampel probleme?


von m. S. (marek)


Lesenswert?

Hi @ all,

ich hab schon in einen anderen Beitrag meine frage gestellt aber hir mal 
unter einer neuen Überschrift die vielleicht besser past. Ich hab ein 
Problem mit dem ADC des Atmega8. Wenn ich direkt 1V gleichspannung an 
den ADC lege griege ich über das Hyperterminel von MS 1V angezeigt. Aber 
sobalt ich zwischen der 1V gleichspannung und dem ADC eingang einen 1k 
Widerstandschalte bricht die Spannungzusammen. Mir wurde gesagt das kann 
was mit der Sampelrate zu tun haben. Ich betreibe den µC mit einem 16Mhz 
Quarzoszillator, der Vorteiler ist auf 128 gestelt dammit ich unter den 
200kHz bin die im Datenblatt beschrieben stehen. Ich weis nicht wie ich 
dem problem entgegen wirken kann der 1k Widerstand ist nur zu 
testzwecken dranne sonst hängt da ein Impedanzwandler mit 
Ausgangswiderstand von 50 Ohm dranne. Ich hab keine idee was ich machen 
kann und würde mich über jede Hilfe freuen. Ich danke euch schon jetzt.

mfg
m.s.

Hier mal die ADC initialiesirung:

#include "global.h"

void adc_init (void) // (Hinzugefügt 20.06)
{
  uint16_t result;      // Zwischenwariable für das erste Auslesen wird 
dan verworfen

  ADMUX |= (1<<REFS0);    // AVcc als Referenzspannung nutzen (5V)
  ADCSRA |= (1<<ADPS0) | (1<<ADPS1)  | (1<<ADPS2);    //   | 
Frequenzvorteiler = 128 -> 125kHz
  ADCSRA |= (1<<ADEN);    // ADC Aktievieren

  /* Nach der Aktivierung des ADC wird ein "Dummy-Readout" empfohlen, 
man liest
     also einen Wert und verwirft diesen, um den ADC "warmlaufen zu 
lassen" */

  ADCSRA |= (1<<ADSC);    // ADC Wandlung
  while ((ADCSRA & (1<<ADIF))==0)  // Warten bis Konvertierung fertig
  {}
  result = ADCW;

}

uint16_t adc_lesen (uint8_t Kanal)  //ADC Einzelmessung  (Hinzugefügt 
20.06)
{
  ADMUX |= (ADMUX & ~(0x1F)) | (Kanal & 0x1F);   // Kalnal Auswahl ohne 
andere Bits zu beeinflussen
  ADCSRA |= (1<<ADSC);              // Eine Wandlung "singel conversion"
  while ((ADCSRA & (1<<ADIF))==0)            // Warten bis Konvertierung 
fertig
  {}
  return ADCW;

}

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

m. S. schrieb:
> Aber sobalt ich zwischen der 1V gleichspannung und dem ADC eingang
> einen 1k Widerstandschalte bricht die Spannungzusammen.
Welche Spannung bricht da zusammen?

Mit 1kOhm solltest du noch kein Problem bekommen:
1
The ADC is optimized for analog signals with an output impedance of 
2
approximately 10 kΩ or less. If such a source is used, the sampling 
3
time will be negligible.

von m. S. (marek)


Lesenswert?

Das ist ja das schlimme es solte nicht es ist aberleider so. Wenn der 1k 
dazwischen ist dann felt der eine Volt komplet über dem Widerstand ab. 
Eigentlich laut Datenblat solte es funktionieren ich hab das auch schon 
mit anderen eingängen probiert. Selbes ergebnis.

mfg
m.s.

von Anon Y. (avion23)


Lesenswert?

m. S. schrieb:
 Ich betreibe den µC mit einem 16Mhz
> Quarzoszillator, der Vorteiler ist auf 128 gestelt dammit ich unter den
> 200kHz bin die im Datenblatt beschrieben stehen.

Wie kommst du auf die Idee? Eingestellt hast du das nicht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

m. S. schrieb:
> Wenn der 1k
> dazwischen ist dann felt der eine Volt komplet über dem Widerstand ab.
Ist der Widerstand kaputt? Oder falsch? Wie sieht die Beschaltung aus?

von m. S. (marek)


Lesenswert?

Das habe ich doch mit dieser zeile gemacht:
  ADCSRA |= (1<<ADPS0) | (1<<ADPS1)  | (1<<ADPS2);// Frequenzvorteiler = 
128 -> 125kHz
und das mit den 16 MHz hab ich über die fusses gemacht.

Laut datenblatt sollte diese konfiguration ja dem Teilungsfaktor von 128 
entsprechen oder sehe ich da was falsch.

mfg
m.s.

von m. S. (marek)


Lesenswert?

Der Widerstand funktioniert hab auch gerade mal einen anderen genommen. 
http://www.mikrocontroller.net/articles/Datei:Adc_connection.png fehlt 
nur der Quarz und die restlichbeschaltung zum programmieren und 
ausgeben. Gleichspannungsquellen massen verbunden die ein für Vcc 5V die 
ander 1V zum testen zwischen ADC0 und 1V liegt der 1k.

ADC0 ----|1K|-----1V

mfg

von m. S. (marek)


Angehängte Dateien:

Lesenswert?

Das ist j anur mal zum testen gewesen um fehler zu suchen. Was da 
eigentlich dranne hängt ist ein Spitzenwertmesser. Ausgang des 
Impedanzverstärkers ist 50 Ohm der dan auf den ADc geführt wird. Im 
anhang bilder einmahl ohne µc und einmal mit angeschlossenem µc.

mfg
m.s.

von spess53 (Gast)


Lesenswert?

Hi

>Im anhang bilder einmahl ohne µc und einmal mit angeschlossenem µc.

Das (mit__c) passt aber nicht zu dem Timing eines ADC. Die Sample&Hold 
Phase, in der die Quelle belastet wird, dauert 1,5 Takte. Die gesamte 
Wandlung idR. 13 Takte. Ich bezweifle, das dein Fehler vom ADC kommt.

MfG Spess

von Anon Y. (avion23)


Lesenswert?

m. S. schrieb:
> Das habe ich doch mit dieser zeile gemacht:
>   ADCSRA |= (1<<ADPS0) | (1<<ADPS1)  | (1<<ADPS2);// Frequenzvorteiler =
> 128 -> 125kHz
> und das mit den 16 MHz hab ich über die fusses gemacht.

Entschuldigung, die Zeile habe ich überlesen.

Der ADC funktioniert bei mir auch mit 10k Spannngsteilern. Darüber fängt 
man sich aber schoneinen merklichen Fehler ein.

von m. S. (marek)


Lesenswert?

@ Spess du hast recht ich hab den Spitzenwertgleichrichter mal abgeklämt 
bzw. verbindung aufgetrent der leiterbahn und mal einen auf nem 
Steckbrett aufgebaut. Jetzt geht das ich denke der 
Spitzenwertgleichrichter den ich davor drann hate hat den geist 
aufgegeben da an ihm nicht mehr die Signale anliegen an den einzellen 
punkte die ich erwartet habe also kann sein das ich da unbeabsichtig 
etwas kaput gemacht habe, was vor paar tagen noch ging. Deswegen hab bin 
ich davon ausgegangen das das noch klapt was ja nun nicht der fall ist.
Aber trotzdem danke an alle die mitgeholfen haben.

mfg
M.s.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.