Forum: Mikrocontroller und Digitale Elektronik Doppellichtschranke mit ATmega8 und TSOP1736


von Thorben S. (thorben)


Lesenswert?

Hallo!

Ich habe vor eine IR-Doppellichtschranke zu bauen, welche erkennen soll, 
in welcher Richtung die Lichtschranke durchschritten wurde.
Die Schaltung soll später einmal (erweitert um DCF-Uhr und Datenlogger) 
zur Protokollierung der Ein- und Ausflüge in einem Nistkasten dienen. 
Das heißt bei jeder Unterbrechung, sollen Datum, Uhrzeit und Richtung 
erfasst und gespeichert werden. Das ganze soll möglichst Batteriebetrieb 
funktionieren.

Zunächst einmal geht es mir aber hauptsächlich um die Lichtschranke. 
Diese könnte man mit einer IR-LED und dem TSOP1738 als Empfänger 
realisieren. Als Mikrocontroller soll zunächst ein ATmega8 zum Einsatz 
kommen. Die Programmierung erfolg mit Bascom.

Ursprünglich dachte ich, die einfachste Möglichkeit sei folgendes:

Sender:
Die IR-LED wird an PB1/OC1A des ATmega8 angeschlossen.
Timer1 erzeugt die benötigte Frequenz von 36 kHz (ohne Unterbrechung).

Empfäger:
Die Ausgänge der beiden TSOP1736 werden direkt an Ports des ATmega8 
angeschlossen.
Die Software übernimmt die gesamte Auswertung

Jetzt lese ich aber im Datenblatt des TSOP1736, dass der Empfänger nicht 
ununterbrochen mit der Trägerfrequenz bestrahlt werden darf. Laut 
Hersteller soll jeweils nach 10 bis 70 Impulsen eine Pause folgen 
("After each burst which is between 10 cycles and 70 cycles a gap time 
of at least 14 cycles is neccessary.").

Das macht die Sache aufwendiger. Das Sender-Signal kann nun nicht mehr 
vom Timer1 selbständig erzeugt werden (oder doch?).
Und auch die Auswertung erfordert eine viel höhere CPU-Belastung.

Ist diese Einhaltung der Pausen wirklich notwendig?
Andererseits bedeutet der ununterbrochene Berieb der IR-LED ja auch 
einen erhöhten Stromverbrauch.
Macht es Sinn die Signalerzeugung und die Auswertung komplett vom uC 
durchführen zu lassen oder sollte man lieber eigene Schaltungen dafür 
aufbauen?

von Matthias (Gast)


Lesenswert?

Macht es Sinn die Signalerzeugung und die Auswertung komplett vom uC
durchführen zu lassen oder sollte man lieber eigene Schaltungen dafür
aufbauen?

JA. Der hat bei dem Beispiel eh nicht viel zutun. Und das oben 
beschriebene Problem mit der Lücke, ist ja auch mit dem Timer machbar. 
Ich würde folgendes empfehlen:
Timer läuft auf 36kHz im PWM-Mode mit 25% (oder kleiner) Tastverhältnis. 
Somit kannst du die LED mit mehr Strom pulsen (nat. nur soviel wie nötig 
für die Lichtschranke)
Die 10..70 Impulse beziehen sich meines WIssens auf eine Anwendung einer 
IR-Fernbedienung (Fernseher o.so) und NICHT auf die 36kHz-Impulse. Also 
kannst du nach zB 1Sekunde eine Pause einlegen. (Inwieweit das ein 
Problem beim Vögelzählen ist weiß ich nixht)

Die Auswertung der Empfänger kann über Interrupt erfolgen, (evtl sogar 
ICP).
Somit kann ein zweiter (?) Timer als Zeitbasis dienen. Dieser könnte 
Seknunden, Minuten, Hunderstel... liefern...

von Thorben S. (thorben)


Lesenswert?

Vielen Dank für die Antwort!
Wenn ich dich richtig verstehe, muss ich in meinem Anwendungsfall keine 
Pausen/Lücken berücksichtigen, sondern kann den Empfänger ununterbrochen 
mit 36 kHz bestrahlen. Die Frequenz lässt sich mit einem Timer erzeugen 
und durch Einstellen eines geringeren Tastverhältnisses lässt sich der 
Stromverbrauch des Senders verringern. Ist das so richtig?
Welches Tastverhältnis benötigt denn der TSOP1736, um fehlerfrei zu 
arbeiten?
> Timer läuft auf 36kHz im PWM-Mode mit 25% (oder kleiner) Tastverhältnis.
> Somit kannst du die LED mit mehr Strom pulsen
Was meinst du damit? Dass die LED bei kleinerem Tastverhältnis einen 
höheren Strom verkraftet als bei einem größeren?




von Rahul, der Trollige (Gast)


Lesenswert?

>Die 10..70 Impulse beziehen sich meines WIssens auf eine Anwendung einer
>IR-Fernbedienung (Fernseher o.so) und NICHT auf die 36kHz-Impulse.

Dann stimmt dein Wissen nicht mit dem Datenblatt überein:
"After each burst which ist between 10 cycles and 70 cycles a gap time 
of at least 14 cycles is necessary."
und
"For each burst which is longer than 1.8ms a corresponding gap time is 
necessary at some time in the data stream. This gap time should have at 
least same length as the burst."

http://www.vishay.com/docs/82030/82030.pdf

>Was meinst du damit? Dass die LED bei kleinerem Tastverhältnis einen
>höheren Strom verkraftet als bei einem größeren?

Ja. das ist richtig. Es kann aber sein, dass der TSOP damit Probleme 
bekommt...

Das einfachste ist doch, den Timer konstant mit der Frequenz laufen zu 
lassen und den OC-Pin an dem die LED hängt nach einer gewissen Anzahl 
von Durchläufen auszuschalten und nach der Pause wieder einzuschalten.
Diese Pause muß man natürlich bei der Lichtschrankenabfrage 
berücksichtigen.
Ich würde übrigens vorschlagen, den TSOP1740 zu verwenden, da man aus 
dessen Betriebsfrequenz auch eine Zeitbasis für die Uhr erzeugen 
kann...(nein, man braucht keine externe RTC! Zumindest nicht bei dieser 
Anwendung, da der Controller sowieso die ganze Zeit läuft.)

von Peter D. (peda)


Lesenswert?

Die Sensoren haben ne AGC, damit sie sich auf wechselnde Entfernungen 
und Umgebungslicht einpegeln können.

Dazu ist aber dieses Pulsen/Pause Spielchen notwendig, damit sich die 
AGC mit der Triggerschwelle genau dazwischen einpegelt.


Peter

von Thorben S. (thorben)


Lesenswert?

> Das einfachste ist doch, den Timer konstant mit der Frequenz laufen zu
> lassen und den OC-Pin an dem die LED hängt nach einer gewissen Anzahl
> von Durchläufen auszuschalten und nach der Pause wieder einzuschalten.
Wie würde man dieses Ein- un Ausschalten denn bewerkstelligen?

> Ich würde übrigens vorschlagen, den TSOP1740 zu verwenden, da man aus
> dessen Betriebsfrequenz auch eine Zeitbasis für die Uhr erzeugen kann...
Könntest du das etwas genauer erklären? Meinst du, dass der zur 
Erzeugung der Senderfrequenz verwendete Timer dann auch das Zeitsignal 
liefern kann, oder dass dann ein Quarz verwendet werden kann, der sowohl 
für die Erzeugung des Sendersignals mit dem einen Timer als auch für die 
Erzeugung des Sekundentakts mit dem zweiten Timer gut geeignet ist?
Was für einen Quarz würde man denn sinvollerweise einsetzen?

von Rahul, der Trollige (Gast)


Lesenswert?

>Wie würde man dieses Ein- un Ausschalten denn bewerkstelligen?
über die COMxy-Bits in einem der Timer-Control-Register.

>Könntest du das etwas genauer erklären?
40kHz ergibt eine Periodendauer von 25µs. Daraus könnte man ohne grosses 
Rumgerechne eine sekundentaugliche Zeitbasis basteln.

Naja, eigentlich ist egal. Bei der einen Frequenz zählt man 36.000 
Durchläufe und bei der anderen 40.000, um auf eine Sekunde zu kommen -
passt beides in eine 16-Bit-Variable.

von Thorben S. (thorben)


Lesenswert?

Hallo,
vielen Dank für eure Antworten. Ihr habt mir damit schon ein gutes Stück 
weitergeholfen.
Ich denke, eine solche Doppellichtschranke sollte ich nun aufgebaut 
kriegen. Wo ich mir noch nicht so sicher bin, ist, ob die Schaltung für 
meine späteren Zwecke (Datenlogger für Nistkasten) gut geeignet ist. 
Insbesondere denke ich da an den Stromverbrauch der Schaltung, die ja 
mit einer Batterie betrieben werden soll.

Zu den einzelnen Komponenten habe ich mir da folgende Gedanken gemacht:

Mikrocontroller:
Der ATmega8 ist sicher nicht optimal geeignet. Er verbraucht relativ 
viel Strom und ist für meine Zwecke vielleich auch überdimensioniert. 
Bisher habe ich nur mit dem M8 gearbeitet. Ich gehe aber davon aus, dass 
im Endeffekt ein kleinerer AVR, der vielleicht auch bei einer geringeren 
Spannung arbeitet, zum Einsatz kommt.

TSOP:
Die benötigten 5V könnten für Batteriebetrieb ungünstig sein. Der wegen 
der AGC nötige Pulsbetrieb verhindert, dass man den AVR so lange in den 
Sleep-Modus schicken kann, bis eine Unterbrechung des Lichstrahls 
erfolgt. Das gleiche gilt für die benötigte Trägerfrequenz, die nicht 
ganz ohne CPU-Belastung erzeugt werden kann (Sehe ich das richtig?).

IR-LED:
Der Stromverbrauch der LED lässt sich über drei Parameter verringern:
- über das Tastverhältnis der Trägerfrequenz (welches Tastverhältnis 
erwartet der TSOP?)
- über das Tastverhältnis der Signale (Bursts/Gaps)
- über die Stromstärke, mit der sie betrieben wird?

Sind meine Überlegungen richtig? Was könnte man ändern? Was für Bauteile 
wären besser geeignet?

Wäre toll wenn ihr mir nochmal auf die Sprünge helfen könntet.

von Thorben S. (thorben)


Lesenswert?

Hallo,
hat niemand einen Tipp für mich?

von Sonic (Gast)


Lesenswert?

Das Problem wird eher die Hardware sein. Theoretisch ist das ja alles 
wunderbar, aber versuche erst einmal eine normale serielle Übertragung 
bei Tageslicht oder direkter Sonneneinstrahlung zu realisieren. Ohne 
Filterscheiben und Abschattungen (matt-schwarz) wird das nix werden!
- Können Vögel eigentlich im Infrarotbereich sehen? Vielleicht stört 
sie's ja? ;-)

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Vieleicht waere es auch möglich das du eine Phototransistor nimmst.
Wenn die Helligkeit Sprunghaft sich ändert ist ein Objekt 
vorbeigeflogen.
Den AVR kannst du dabei in den Sleep schicken und wenn eine ADC wandlung 
fertig ist weckt er sich automatisch wieder auf, dazu noch ein Timer im 
1s takt.

von Sonic (Gast)


Lesenswert?

Gib den Viechern Stechkarten und montier' eine Stechuhr! :-))
Im Ernst, Infrarot ist da wohl nicht grade die preisgekrönte Sau! Du 
könntest da ganze auch über zwei kleine gespannte (gleich lange) Drähte 
oberhalb und unterhalb (oder rechts und links) machen und den einen mit 
ein paar MHz beaufschlagen. mit dem Anderen wird gemessen und die 
Feldstärke ausgewertet. Bei uns im Geschäft funktioniert ein 
Objektschutz-Zaun auf diese Weise. Ist natürlich 'n bische aufwändiger, 
aber dafür zuverlässig und witterungsunabhängig.

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.