Forum: Mikrocontroller und Digitale Elektronik atmega328p ADC Problem mit OP


von Paul (Gast)


Lesenswert?

Hi ich finde meinen Fehler im Aufbau nicht.

Ich habe einen atmega328p als Arduino UNO Board. Von dem nutze ich den 
ADC, was auch soweit funktioniert (habe ich mit einem verstellbaren 
Netzteil geprüft). Desweiteren habe ich einen invertierenden OP, der 
Funktioniert auch so wie er soll (mit einem Oszi getestet).
Nun mein Problem, wenn ich den OP an den Arduino anschließe bricht der 
ein.

Danke im Vorraus für die Hilfe.

von Ingo L. (corrtexx)


Lesenswert?

Paul schrieb:
> Nun mein Problem, wenn ich den OP an den Arduino anschließe bricht der
> ein.
Gehts zur Not auch etwas präziser? Was bricht ein? Schaltplan zeigen 
würde auch helfen...

von Pat P. (tsag)


Lesenswert?

Stabileren Tisch/Ablage nutzen.....


Bisschen mehr Infos. Wer bricht ein (Arduino oder OP)? Gibts einen 
Schaltplan?

von Achim S. (Gast)


Lesenswert?

Paul schrieb:
> Nun mein Problem, wenn ich den OP an den Arduino anschließe bricht der
> ein.

Versucht der invertierende OPV eine negative Spannung an den ADC 
anzulegen? Das wird nicht gehen: wenn die Spannung ein paar hundert mV 
ins negative geht beginnt die ESD-Diode im ADC-Eingang zu leiten und die 
Spannung zu begrenzen (auf ca. -0,7V)

von Adam P. (adamap)


Lesenswert?

Achim S. schrieb:
> Versucht der invertierende OPV eine negative Spannung an den ADC
> anzulegen? Das wird nicht gehen:

Das Problem hatte ich auch mal in einer Schaltung.

OP hat trotz Begrenzerdioden (negativ Spannung) -0.2 V an den internen 
ADC geliefert - ZACK, da war schon das Problem:

- Übersprechen auf andere ADC
- Werte nicht mehr nachvollziehbar

Die internen ADC vom µC mögen keine negativ Spannung!

von Paul (Gast)


Angehängte Dateien:

Lesenswert?

Das ist der Schaltplan. Ich habe mittlerweile einen anderen OP drinnen, 
den TS1851.

Negative Spannungen sollte es nicht geben da ich einen Offset von Vcc/2 
(2,5V) habe und ich den OP von V+ 5V bis V- 0V betreibe.

Der OP bricht ein der Arduino läuft weiter.

von Sebastian R. (sebastian_r569)


Lesenswert?

Du kannst dem OP am Ausgang auch noch einen 1k-Serienwiderstand 
spendieren. Wenn du die Feedbackleitung dahinter legst, wird der 
Spannungsabfall über den 1k ausgeregelt. aber etwaige Ströme auf ein 
paar Milliampere begrenzt und es arbeiten nicht zwei Treiberstufen 
gegeneinander.

Die nächste spannende Frage wäre dann: Hast du den Pin vom Arduino aus 
Versehen als Ausgang definiert und auf Low geschaltet?

von Stefan F. (Gast)


Lesenswert?

Paul schrieb:
> Der OP bricht ein

Meinst du damit, dass seine Ausgangsspannung absackt? Auf welchen Wert?

von Christian S. (roehrenvorheizer)


Lesenswert?

> Der OP bricht ein
>
> Meinst du damit, dass seine Ausgangsspannung absackt? Auf welchen Wert?

Wo bricht der OP ein? Nach was könnte er suchen? Benutzt er dazu 
Werkzeug oder gar einen Verstärker?

MfG

: Bearbeitet durch User
von Paul (Gast)


Lesenswert?

Der Pin ist im uC weder als Eingang noch als Ausgang deklariert.

Der OP bricht auf 0-0,5V zusammen sobald ich ihn an dem uC anschließe.


Er bricht am Ausgang zusammen.

von Stefan F. (Gast)


Lesenswert?

Dann hast du vermutlich einen Kurzschluss im Aufbau.

Oder er ist doch (warum auch immer) ein Ausgang. Kannst ja zum Test mal 
eine LED dranhängen.

von M.A. S. (mse2)


Lesenswert?

Wenn Du zwei Teilsysteme hast, die jedes für sich funktionieren, wie sie 
sollen aber zusammen nicht, dann liegt es wahrscheinlich an der Art und 
Weise, wie sie miteinander verbunden sind (dazu zählt auch die genaue! 
Art und weise der Spannungsversorgung(en) der beiden Teilsysteme).

Poste also ein Blockschaltbild (1), das die Zusammenschaltung sowie die 
Spannungsversorgung zeigt.
Evtl. ein Foto vom Aufbau (2).
Denn nicht selten besteht der Fehler in Abweichungen zwischen (1) und 
(2).

von A. S. (Gast)


Lesenswert?

Irgendwann ist C1 Mal voll.

Schließ den kurz, nimm ein statisches signal, dass 3V am Ausgang ergibt 
und messe mit Multimeter einige Stellen vor und nach Abschluss an ADC.

von Einer K. (Gast)


Lesenswert?

Paul schrieb:
> Der Pin ist im uC weder als Eingang noch als Ausgang deklariert.

Das geht nicht!
Zumindest beim AVR gibts nur die beiden Möglichkeiten.
(mal abgesehen von irgendwelchen Sonderfunktionen)

Paul schrieb:
> Er bricht am Ausgang zusammen.
Dann arbeitet er gegen eine "Mauer".

Denn er kann ja immerhin 15mA treiben.
Das reicht für einen AVR Input, mehr als aus.

von Paul (Gast)


Angehängte Dateien:

Lesenswert?

Stefanus F. schrieb:
> Oder er ist doch (warum auch immer) ein Ausgang. Kannst ja zum Test mal
> eine LED dranhängen.

Led bleibt aus.

Blockschaltbild ist im Anhang.
Aufbau der Schaltung ist auf einem Breadboard und mit den Standardkabeln 
darauf verbunden.

A. S. schrieb:
> Schließ den kurz, nimm ein statisches signal, dass 3V am Ausgang ergibt
> und messe mit Multimeter einige Stellen vor und nach Abschluss an ADC.

Ändert leider nichts am Ergebnis.

Arduino Fanboy D. schrieb:
> Das geht nicht!
> Zumindest beim AVR gibts nur die beiden Möglichkeiten.
> (mal abgesehen von irgendwelchen Sonderfunktionen)

Ich programmiere mit dem Atmelstudio falls das hilft.
Den Pin habe jetzt explizit als Eingang deklariert
DDRC |= ~(1 << DDC4);
und für die Auswahl des Pins zum ADC so:
ADMUX |= (1 << MUX2);

von Fred Sabber (Gast)


Lesenswert?

Paul schrieb:
> Den Pin habe jetzt explizit als Eingang deklariert
> DDRC |= ~(1 << DDC4);

Heute ist Freitag!

von Ingo L. (corrtexx)


Lesenswert?

Paul schrieb:
> DDRC |= ~(1 << DDC4);
Versuch ma DDRC &= ~(1<<DDC4);
So wie du es jetzt hast, hast du alle IO außer DDC4 auf Ausgang 
geschaltet

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Paul schrieb:
>> Oder er ist doch (warum auch immer) ein Ausgang. Kannst ja zum Test mal
>> eine LED dranhängen.
>
> Led bleibt aus.

Dann hast du sie wahrscheinlich falsch angeschlossen, aber wer weiß das 
schon (ohne Plan)?

von Paul (Gast)


Lesenswert?

Ingo L. schrieb:
> Versuch ma DDRC &= ~(1<<DDC4);

Ergebnis bleibt gleich.

Macht es Sinn den Internen Pullup zu aktivieren?

von Stefan F. (Gast)


Lesenswert?

Paul schrieb:
>> Versuch ma DDRC &= ~(1<<DDC4);
> Ergebnis bleibt gleich.

Logisch, das st auch falsch.

Der Pin ist ein Ausgang, wenn das Bit gesetzt ist.

Bit setzen: DDRC |= (1<<DDC4);
Bit löschen: DDRC &= ~(1<<DDC4);

von Ingo L. (corrtexx)


Lesenswert?

Paul schrieb:
> Macht es Sinn den Internen Pullup zu aktivieren?
Nee, wozu? Wie wäre es mal den gesamten Code zu zeigen?

Paul schrieb:
> DDRC |= ~(1 << DDC4);
Hieraus leite ich ab, dass du noch sehr wenig Kenntnisse besitzt

von Paul (Gast)


Lesenswert?

Stefanus F. schrieb:
> Dann hast du sie wahrscheinlich falsch angeschlossen, aber wer weiß das
> schon (ohne Plan)?

Schaltplan ist weiter oben als Bild. Angeschlossen habe ich das Kabel 
vom Ausgang des OPs auf den Analog A4

von Stefan F. (Gast)


Lesenswert?

> Logisch, das st auch falsch.

Sorry, könnte ein Moderator bitte diesen Bullshit löschen? Meinetwegen 
auch den ganzen Beitrag? Ich schäme mich.

von Fred Sabber (Gast)


Lesenswert?

Was ist denn "DDC4"?

von Ingo L. (corrtexx)


Lesenswert?

Stefanus F. schrieb:
> Der Pin ist ein Ausgang, wenn das Bit gesetzt ist.
Ja, deswegen will er ja auch auf Eingang stellen

von Ingo L. (corrtexx)


Lesenswert?

Fred Sabber schrieb:
> Was ist denn "DDC4"?
Eine 4

von Stefan F. (Gast)


Lesenswert?

Paul schrieb:
> Stefanus F. schrieb:
>> Dann hast du sie wahrscheinlich falsch angeschlossen, aber wer weiß das
>> schon (ohne Plan)?
> Schaltplan ist weiter oben als Bild. Angeschlossen habe ich das Kabel
> vom Ausgang des OPs auf den Analog A4

Der Schaltplan zeigt nicht, wie du die LED angeschlossen hast. Das 
brauche ich aber, um zu beurteilen, ob du sie richtig angeschlossen 
hast.

Wenn die Leitung auf Low gezogen wird (von wem oder was auch immer), 
müsste eine LED leuchten, wenn sie so angeschlossen ist:
1
Pin o----[===]---|<|---o VCC

Das würde beweisen, dass die Leitung tatsächlich aktiv auf Low gezogen 
wird.

von Fred Sabber (Gast)


Lesenswert?

Ingo L. schrieb:
> Fred Sabber schrieb:
>> Was ist denn "DDC4"?
> Eine 4

Oder vielleicht 0x10?

von Ingo L. (corrtexx)


Lesenswert?

Eine weitere Möglichkeit wäre, denn µC zu löschen und die Komponenten im 
ungeflashten Zustand zu verbinden, dann ist der µC absolut passiv. Liegt 
der Fehler dann immernoch vor, ist es nicht das Programm

von Ingo L. (corrtexx)


Lesenswert?

Fred Sabber schrieb:
> Oder vielleicht 0x10?
Nein

von Stefan F. (Gast)


Lesenswert?

Ingo L. schrieb:
> Eine weitere Möglichkeit wäre, denn µC zu löschen und die Komponenten im
> ungeflashten Zustand zu verbinden, dann ist der µC absolut passiv. Liegt
> der Fehler dann immernoch vor, ist es nicht das Programm

Einfach Reset Knopf gedrückt halten, während man misst.

von Ingo L. (corrtexx)


Lesenswert?

Stefanus F. schrieb:
> Einfach Reset Knopf gedrückt halten, während man misst.
Ich vergesse immer das die Leute ein Aduino nutzen, der sowas hat. Meine 
Schaltungen haben nie einen Reset Knopp.

von Paul (Gast)


Lesenswert?

Ingo L. schrieb:
> Stefanus F. schrieb:
>> Der Pin ist ein Ausgang, wenn das Bit gesetzt ist.
> Ja, deswegen will er ja auch auf Eingang stellen

Der Bootloader konnte das Programm nicht laden. Ich hatte hTerm noch 
verbunden. . . der hat die Schnittstelle blockiert. Es war die 
Deklaration. Vielen Dank für die Hilfen.

von Stefan F. (Gast)


Lesenswert?

Ingo L. schrieb:
> Ich vergesse immer das die Leute ein Aduino nutzen, der sowas hat. Meine
> Schaltungen haben nie einen Reset Knopp.

Meine auch nicht. Ich stecke immer einen Jumper auf den ISP Stecker, 
wenn es denn mal sein muss.

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.