atmega328p ADC Problem mit OP

Gast #5657026
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.
Gast
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)
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!
Gast
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.
Angehängte Dateien:
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?
Gast
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.
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).
Gast
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.
Gast
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.
Gast
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);
Angehängte Dateien:
Gast
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);
Gast
> Logisch, das st auch falsch.

Sorry, könnte ein Moderator bitte diesen Bullshit löschen? Meinetwegen 
auch den ganzen Beitrag? Ich schäme mich.
Gast
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.
Gast
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.
Gast
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.
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.