Forum: Mikrocontroller und Digitale Elektronik Probleme mit INT0


von Ralf Bode (Gast)


Lesenswert?

Also ich habe den Ausgang (4,02V bzw. 0V) eines OPV mit dem INT0 Eingang 
meines ATmega8 verbunden, um mit diesem Signal ein Interrupt auszulösen.

Mit einem Voltmeter messe ich auch richtiges Verhalten, also der Pegel 
am OPV geht von 4,02V kurzzeitig auf 0V und dann wieder auf 4,02V hoch. 
In BAscom habe ich int0 so konfiguriert, um auf eine fallende Flanke zu 
reagieren.
Auch habe ich den internen Pullup von Pind.2 aktiviert und zusätzlich 
einen Pullup vom Ausgang des OPV nach +5V gezogen. (10kOhm)

Trotzdem wird der Interrupt zwar ausgelöst, aber dies viel zu oft. 
Eigentlich sollte er ja nur einmal kommen, doch anscheiend kommt er so 
oft, wie das SIgnal unter ca. 2V ansteht, was totaler mist ist.

Muss noch irgendwo in meine Schaltung ein Kondensator rein, oder was? 
Ich weiß ja auch nicht direkt, wie das Signal am Ausgang des OPVs 
aussieht. Vielleicht ist es ein wenig verschlissen oder zappelt etwas 
herum. Also, was könnte ich da machen?

DANKE euch.

von Michael (Gast)


Lesenswert?

also, wenn dein eingangspegel unter 2V sinkt kann es schon sein das ein 
interrupt ausgelöst wird. die frage ist eher was ist das für ein signal 
und was willt du mit machen?

von crazy horse (Gast)


Lesenswert?

wird wohl an deiner OP-Schaltung liegen. Je nach Kombination Typ und 
Schaltung und Hysterese(?) kommt es zum Schwingen am OP-Ausgang, sieht 
man mit dem Scope deutlich. Erste Lösung sollte natürlich sein, dieses 
in Ordnung zu bringen. Gibt aber auch die Möglichkeit, den Int nach 
Auftreten für eine gewisse Zeit zu sperren (1ms z.B.).
Also Int tritt auf, normale Int-Bearbeitung und sperrt sich selbst 
(GIMSK.INT0=0), reti.
Eine Timer-ISR prüft den Zustand des INT0-Flags, wenn == 0, beim 
nächsten Mal wieder frei geben, dabei auch das INTF0 löschen.
Aber wie gesagt, besser wärs, das Eingangssignal in Ordnung zu bringen.

von Sonic (Gast)


Lesenswert?

Oder hast du etwa den INT0 auf Lowpegel eingestellt?
Mach' einen 100 Ohm-Widerstand zwischen OP-Ausgang und µC-Eingang 
(verhindert Schwingen), die Pullups kannst du dir sparen, da der 
OP-Ausgang einen niedrigen Ausgangswiderstand hat.

von Ralf Bode (Gast)


Lesenswert?

Also eigentlich sperrt sich meine Int0_ISR unter bascom schon selbst. 
Das habe ich schon softwaremäßig entprellt mit einem Flag, dass dort 
gesetzt und von dem Timer1 nach etwa 250ms wieder zurückgesetzt wird. 
Solange macht die ISR ja kaum etwas.

Da ich kein Oszilloskop zur verfügung habe, kann ich mir leider mein 
signal nicht vernünftig anschauen und ein voltmeter ist ja ziemlich 
träge.
Also ich löte mal einen Längswiderstand vom Ausgang zum eingang, mal 
schauen was passiert...
Und ein paralleler Kondensator vom OPV-Ausgang nach gnd oder +5V hätte 
keinen verbesserungseffekt?

Mein OPV ist übrigens ein TLC271!

Ach ja, da fällt mir, dass ich noch nen fetten Kondensator (1uF) 
zwischen gnd und +5V in der Schaltung des OPVs habe. Kann dadurch 
irgendwie ein Schwingen entstehen?

danke

von crazy horse (Gast)


Lesenswert?

Tja, ohne Programm und ohne Schaltung wirds hier wohl nicht weitergehen.

von Ralf Bode (Gast)


Lesenswert?

Also meine Schaltung habe ich nach folgendem Link zusammengebaut:

http://www.robotmaker.de/linie.html

Dabei ist mir nicht klar, warum der Kondensator mit 1uF so groß ausfällt 
und ob ich den PullDown am Ausgang wirklich benötige? Sonst verwendet 
man doch immer einen Wert von 100nF.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Der TLC271 soll wohl als Komparator (nicht als Verstärker) betrieben 
werden. (Nein, er wird als Komparator betrieben!)

Allerdings sollte man ihm noch einen Gegenkopplungswiderstand (1MOhm) 
spendieren, damit das Ding nicht bei "grau" wie wild zappelt.
Eigentlich sollte man die CNY70 auch direkt am Controller betreiben 
können...(notfalls den ADC benutzen).
Modulation der LED würde auch vor Fremdlicht schützen.
Das von Ralf beschriebene mehrfache Auslösen ist auf die fehlende 
Hysterese zurückzuführen.
(Dem Text nach, waren da wieder "Experten" unterwegs; wer benutzt sonst 
einen LM741 an 5V?)

>Dabei ist mir nicht klar, warum der Kondensator mit 1uF so groß ausfällt
>und ob ich den PullDown am Ausgang wirklich benötige? Sonst verwendet
>man doch immer einen Wert von 100nF.

Solange es kein Elko, sondern ein Kerko, Folienkondensator oder 
ähnliches ist, ist die Kapazität relativ egal. Beim Verwendungszweck 
geht es ja um die "Bunker-Wirkung", also die Möglichkeit, kurzfristig 
Strom zur Verfügung zu stellen, der aufgrund des Tiefpass-Verhaltens der 
Stromleitungen nicht zur Verfügung steht.

von Ralf Bode (Gast)


Lesenswert?

Du meinst also, ich solle noch einen 1MOhm vom Ausgang zum neg. Eingang 
des OPV schalten, um das Ganze gegenzukoppeln?

von inoffizieller WM-Rahul (Gast)


Lesenswert?

In diesem Fall (laut Bezeichnung auf dem Bild):
1MOhm (kann auch etwas kleiner sein) zwischen Pin 6 und Pin 3.
Und diesen "komischen" pull-down-Widerstand solltest du dir sparen 
können.
Und ich bin immer noch der Meinung, dass man sich das Tamtam mit dem OP 
sparen kann. (Eine Theorie meinerseits...)

von crazy horse (Gast)


Lesenswert?

ne, sollst nicht gegenkoppeln, sondern mitkoppeln. Und das heisst, vom 
Ausgang einen Widerstand zum +Eingang. Das ergibt dann eine Hysterese, 
deren Betrag vom Widerstandswert abhängt. Kann man berechnen, aber mit 
1M liegst du erstmal ganz gut. Zu kleiner Wert: Schaltung funktioniert 
nicht mehr (Eingangsänderung reicht nicht aus, die Hysterese zu 
überwinden), zu grosser Wert Wirkung zu gering.

von Ralf Bode (Gast)


Lesenswert?

Einige Beiträge vorher habe ich aber etwas von Gegenkopplungswiderstand 
gelesen...
Naja!

Die Werte schwanken im folgenden Bereich:

silber: 95ß - 970mV
rot:   1050 - 1200mV

Der "Störabstand" sollte demnach eigentlich ausreichen... (ca. 100mV)
Ich stell das Poti auf 1V ein und löte jetzt erstmal einen 100 Ohm 
Längswiderstand vom Ausgang auf den Eingang des uC und zusätzlich einen 
1MOhm Widerstand von Pin 6 auf Pin 3. Alle PullUps und Downs fliegen 
raus...

Gucken was passiert...

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.