Sinus eines Funktionsgenerators AD-Umsetzen

Gast #624033
Lesenswert?

Hallo,
ich würde gerne die Sinusschwingung eines Funktionsgenerators mit dem 
Atmega8 digitalisieren und dann über die USART ausgeben lassen. Jetzt 
habe ich festgestellt, dass der Funktionsgenerator über den ADC0-Eingang 
in die Schaltung zurückwirkt, d.h. immer wiedere in periodischen 
Abständen wird der analoge Sinus falsch interpretiert.
Ist der EIngang des Atmega8 überhaupt geeignet, ein 
"potentialunabhängiges Signal" zu interpretieren oder muss das 
Signal-GND mit dem des Atmega8 übereinstimmen.
Ich habe bei meiner Schaltung einfach den Masseanschluss des 
Funktionsgenerators mit dem Masseanschluss des Atmega verbunden und dann 
entsprechende den Siganalausgang(0-5V sinusförmig)an den Eingang ADC0 
gelegt. Gibt es eine andere Möglichkeit???
Gruß
adrian
Gast #624047
Lesenswert?

Wird denn nicht durch verbinden der GND, das Potential des 
Funktionsgenerators auf das des Atmega gezogen?
Und ist es möglich, dass der Funktionsgenerator das AD-Wandlung stört?
habe nicht gedacht, dass die Sinusspannung über den ADC-Einggang 
zurückwirken kann. Aber ich sehe dutlich, dass bei abgeschalteter 
Versorgungsspannung des Atmega über ein 7805 die Power LED pulsiert.
Für die Auswertung eines Funktionsgenerators ist ein ATmega, also nicht 
fähig?
Gast #624056
Lesenswert?

Gehen sollte das schon. Wenn der Mega nicht gespiesen wird, fliesst das 
Signal in den Mega und speist so die gesammte Schaltung. Der 
Funktionsgenerator hat wahrscheinlich 50 Ohm, da kommen dann 100mA 
zusammen. Ich koennt mir vorstellen, dass das UART den ADC stoert, 
zeitlich, meine ich. Kommt auf das Timing und die pufferung an.
Gast #625965
Lesenswert?

hallo,
hat denn noch jemand einen Einfall, woran es liegt, dass ich periodisch 
immer wieder einen falschen Wert empfange?
habe heute mit einem Osszi, mit angelegtem Sinus des 
Funktionsgenerators, die Uref gecheckt aber die ist stabil.
Hilfe! Mir fällt nix mehr ein!
adrian
Gast #626380
Lesenswert?

hi zusammen,
habe noch mal bischen getestet.
Wenn ich das USART RX Interrupt komplett herauskommentiere, dann bekomme 
ich einen Sinus ohne "Abweichungen" => also ist wohl ein Fehler im Rx 
Interrupt. Komisch ist, dass während der Messungen das Interrupt nicht 
aktiv ist oder nicht sein sollte, weil ich kein Zeichen sende. Warum 
kann der Interrupt dennoch meine Messung beeinflussen?
Bekomme über einen Zeitraum von 15sec. beim Programm mit Rx_I. 
300Messpunkte, beim Prog ohne Rx_I nur 150Messpunkte?!
Würde mich auch über kleine Tipps freuen!
gruß
adrian
Gast #626487
Lesenswert?

Da ist einiges falsch. Der timer0 kann den ADC im interrupt neu starten, 
nicht im main das TIFR abfragen. Un dann dann den ADC interrupt 
verwenden,um das resultat in einem buffer wegzuschreiben.
Gast #626513
Lesenswert?

ich dachte es sei besser die Interrupts nicht so voll zu schreiben und 
deswegen die AD-Wandlung in der main.
Also den ADU-Code ins Timer Interrupt und dann sollte doch jeder Wert 
über USART einzeln versendet werden. Buffer?
ber der Hauptfehler muss doch auch im RxI stecken!?
#627181
Lesenswert?

ich hab den ADC auch ohne Interrupt gemacht. Das mag Ansichtssache oder 
projektabhängig sein.
Auf jeden Fall sind mir die SEI im Interrupt aufgefallen. Die sollten 
raus. So wie ich das sehe, läuft das Ganze auch langsam ab. Müßte daher 
ansonsten laufen. Ich habe für den Uart einen Puffer verwendet, damit 
das schneller abläuft. Ich habe keine Wartezeiten drin, sondern es wird 
geprüft, ob der MC noch etwas tun kann. Möglicherweise liegt ein 
Timingproblem vor. Ich hatte das gehabt, daß der MC nichts empfangen 
hat, obwohl das Programm richtig ist. Der Fehler lag daran, daß ich im 
PC den UART Pufferspeicher ausgeschaltet hatte. Es wurden ständig Daten 
vom MC zum PC übertragen und da war keine Zeit für die Übertragung vom 
PC.
Mal prüfen, ob der Mux während einer Umsetzung gesetzt wird. Mux im 
Uartempfang hätte ich nicht gemacht.

mfg
Gast #627408
Lesenswert?

Hi!
mal so am Rande,
>Ich habe bei meiner Schaltung einfach den Masseanschluss des
>Funktionsgenerators mit dem Masseanschluss des Atmega verbunden
Dein Funktionsgenerator macht nicht zufällig +/- 2,5V(5V) gegen GND?
Wäre jedenfalls ungesund für den AVR wenn die Spannung am Eingang 
negativ wird.

Viel Erfolg, Uwe
Gast #627429
Lesenswert?

Wenn der Timer kommt und meint der ADC sollte mal, so wird das dem main 
signalisiert. Wenn nun ein UART interrupt kommt, so wird das Starten des 
ADC verzoegert, da das main unterbrochen wird.
Gast #627503
Lesenswert?

hallo zusammen,

>Dein Funktionsgenerator macht nicht zufällig +/- 2,5V(5V) gegen GND?
>Wäre jedenfalls ungesund für den AVR wenn die Spannung am Eingang
>negativ wird.
also der Funktionsgenerator macht nur im Bereich von 0 bis +5V eine 
Sinusschwingung, keine negative Halbwelle.

>Wenn nun ein UART interrupt kommt, so wird das Starten des
>ADC verzoegert, da das main unterbrochen wird.
Grundsätzlich möcht ich durch das senden des Zeichens "A","B" oder "C" 
ja einen neuen AD-Eingang wählen und auch damit eine neue ADW einleiten.

Kann es sein, dass die die Werte im UDR nicht nur als zu sendende Werte 
interpretiert werden, sondern das mir damit der RxInterr.startet und 
kurzfristig die Ausgänge wechselt?
Wodurch erkennt der Atmega8, das sich im UDR ein Empfangenes Zeichen 
befindet und nicht ein zu sendendes?

gruß
adrian
Gast #628454
Lesenswert?

Hallo zusammen,
habe jetzt mal das Prog. von Jörg X.
>Autor: Jörg X. (Gast)
>Datum: 04.08.2007 13:59
>Dateianhang: adcsend.asm
genutzt und noch ein wenig umgestrickt.
Aber auch hierbei die gleichen Fehler bei der Aufnahme des Sinus.
Jetzt habe ich mir noch einen ATmega8 gekauft, weil ich dachte es kann 
doch nur am Chip liegen und immer noch diese Fehler.
Schicke mal als Anhang das Prog. wenn jemanden was auffällt, einfach 
schreiben!
gruß
adrian
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren