Forum: Mikrocontroller und Digitale Elektronik ADC und Schmitt-Trigger


von Markus Reichert (Gast)


Lesenswert?

Hallo zusammen,

ich habe folgendes Problem: ich lese bei einem ATTiny2313 über den ADC
eine Spannung ein. Wenn diese größer wie 2,5 V wird, wird eine LED
eingeschaltet und ein Befehl über UART abgesetzt. Diese Spannung wird
mit einem LDR erzeugt.

Jetzt habe ich das Problem, dass wenn die Lichtverhältnisse gerade so
sind, dass +/- 2,5V entstehen, die LED flackert und der Zustand immer
hin und her springt.

Jetzt habe ich mir überlegt, ob ich einen Schmitt-Trigger dazu
verwenden kann, dass der Zustand stabil bleibt, sobald die
Schaltschwelle einmal überschritten wurde.

Leider habe ich noch keinerlei praktische Erfahrung mit
Schmitt-Trigger-Bauteilen. Hat mir vielleicht jemand einen Tip, welcher
zu meinem Problem passen würde? Habe im Forum schon gesucht und auch
einen gefunden, aber ich weiß nicht, ob Schmitt-Trigger mir bei meinem
Problem generell überhaupt helfen.

Bin für jeden Tip dankbar.

Danke und Gruß
Markus

von Thomas O. (Gast)


Lesenswert?

mach es einfach so das wenn 2,5V erreicht sind die LED an geht und erst
wieder aus wenn ein bestimmter Wert unterschritten wird. Also einen
Schmitt Trigger per Software.

von THM (Gast)


Lesenswert?

Auch 'Hysterese' genannt. Könntest Du nicht den Analog-Comparator
benutzen, oder brauchst Du den Analogwert noch für andere Zwecke? Ist
einfacher als ADC zu handhaben.

von Markus Reichert (Gast)


Lesenswert?

Den Analog-Comparator habe ich auch schon probiert, aber da geht es auch
nicht. Wie könnte ich das ganze mit dem Comparator realisieren?

von Hubert.G (Gast)


Lesenswert?

Seit wann hat der Tiny2313 ADC? Im Datenblatt steht nichts davon. Da
gibt es nur einen Analogcomparator.

von Detlev (Gast)


Lesenswert?

@Markus Reichert

Also Schmitt-Trigger ist schon der richtige Ansatz. Den sollte man aber
mit einem OpAmp realisieren, um die Schaltschwellen im Griff zu haben.
Alternativ kann man dazu auch den internen Komparator verwenden. Da der
Ausgang aber nicht direkt nach außen geführt wird, muss man das noch in
Software nachbilden. Also nach dem Auslesen des Komparatorausganges
dieses Bit auf einem anderen Port ausgeben und so die Rückkopplung
realisieren.

von THM (Gast)


Lesenswert?

Bei AC-Interrupt-Auslösung einen Timer (immer wieder von vorne) starten
und eine erneute Ausführung der Aktion (LED schalten usw.) erst nach
ablauf einer bestimmten Zeit freigeben.

von Markus Reichert (Gast)


Lesenswert?

@Hubert.G

sorry, falsche Bezeichnung erwischt: ist ein Mega8


@Detlev

wie würde denn eine Schaltung so grob mit einem OpAmp aussehen? Ich
habe noch nie so etwas in der Richtung auch nur ansatzweise realisiert
und wäre für ein paar Tips für den Einstieg sehr dankbar. :-)


@THM
Diese Lösung kommt leider nicht in Frage. Trotzdem danke. :-)

von Detlev (Gast)


Lesenswert?


von Michael U. (Gast)


Lesenswert?

Hallo,

ich wäre ja jetzt sowas von gemein... ;)
Wenn ich noch einen freien Portpin hätte: Reihenwiderstand von 1..10k
zwischen ankommender Spannung und ADC.Eingang.
Zwischen dem freien Portpin und dem ADC-Eingang hochohmigen Widerstand
(keine Lust jetzt zu rechnen, vermutlich 1M).
Portbit auf L. Wenn jetzt die Spannung das erste mal über 2,5V steigt,
den Portpin auf H. Jetzt ist die Spannung durch den 1M über der alten
Schaltschelle. Beim ersten unterschreiten Portpin wieder auf L.
Ist ein Schmidt-Trigger in Software...
Das Widerstandsverhältnis bestimmt die Hysterese, der Quellwiderstand
der Spannung geht da aber mit ein.

Gruß aus Berlin
Michael

von Sonic (Gast)


Angehängte Dateien:

Lesenswert?

Hi nochmal, hab die OP-Grundschaltungen mal zusammengeschmiert. Für
genaueres kannst Du Googeln, gibt's jede Menge Stoff drüber!

von Hubert.G (Gast)


Lesenswert?

Ich verstehe nicht warum du die Hysterese nicht SW-mäßig einstellst,
warum diesen zusätzlichen Hardwareaufwand?

von Markus Reichert (Gast)


Lesenswert?

@Sonic

vielen Dank fürs "zusammenschieren"... ;-)


@Hubert.G

wie kann man die Hysterese SW-mäßig einstellen? Davon habe ich noch gar
nichts gehört, dass das geht...

von Sonic (Gast)


Lesenswert?

Dafür muss man die Spannung kontinuierlich messen und den Grenzwert
entsprechend auslösen (max oder min). Der Rückschaltwert wird nach
Abzug/Addition der entsprechenden Hysterese ausgelöst.

von Hubert.G (Gast)


Lesenswert?

Wie @Sonic schon geschrieben hat. Du misst ja jetzt auch die Spannung am
ADC-eingang. Weiss nicht mit was du programmierst aber es müsste so etwa
aussehen
if(ADC-Wert >=135) schalte LED ein

If(ADC-Wert <=125) schalte LED aus

Wenn der Wert >135 ist wird eingeschaltet und wenn er dann kleiner als
125 wird wieder ausgeschaltet. Eine Hysterese von 10.

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.