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;
}
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. |
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.
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.
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?
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.
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
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.
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
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.
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.

