Forum: Mikrocontroller und Digitale Elektronik Lichtschranken mit TSOP17xx, TSAL6200 und ATmega16.


von Martin J. (martin_j)


Lesenswert?

Hallo,

ich beschäftige mich erst seit Kurzem wieder mit Mikrocontrollern und 
Elektronik. Ich habe dazu einige Grundlagen vor vielen Jahren während 
meiner Ausbildung erlernt.

Folgendes Problem soll gelöst werden.

Acht kurze Strecken (20cm) sollen mittels Lichtschranken überwacht 
werden. Immer wenn jemand eine der Strecken mit der Hand durchkreuzt, 
soll die Nummer der Lichtschranke an einen angeschlossenen Rechner per 
serieller Schnittstelle übermittelt werden. Das system muss bei 
Temperaturen zwischen 5 und 40 Grad Celsius stabil laufen.

Folgende Dinge habe ich schon geschafft.

ATmega16 mit 8MHz externen Takt ist auf Steckbrett aufgebaut. Dieser 
kann programmiert werden. Ich nutze dazu AVR Studio 4 und WINAVR. Ich 
programmiere also in C. Als Lichtschranken-Ersatz sind momentan Taster 
angeschlossen und die Übermittlung an den Rechner funktioniert.

Kommen wir nun zum eigentlichen Problem.

Die Lichtschranken müssen die Taster ersetzen. Damit Fremdlichteinflüsse 
vermieden werden, soll gepulstes Licht verwendet werden. Als Empfänger 
bieten sich dadurch die TSOP17xx Bausteine an. Diese können direkt an 
den µC angeschlossen werden. Mein Problem ist aber die Signalerzeugung 
für die Senderdiode (TSAL6200).

Wie kann ich das benötigte Signal mit dem ATmega16 erzeugen? Das Signal 
muss z.B. beim TSOP1738 38kHz betragen und nach 10 bis 70 cycles für 
min. 14 cycles unterbrochen werden.

Ich habe schon einige Tutorials und Anleitungen zu Timern und PWM 
gelesen, aber noch nichts passendes dabei gefunden. Freue mich auf eure 
Anregungen.

Viele Grüße,
Martin

von ajkaner (Gast)


Lesenswert?

Hallo Martin

Denke ein TSOP1738 ist nicht gerade der beste Kandidat zum bau einer 
Lichtschranke. Der IS471F-SH ist dafür spetziell gemacht. Einziger 
Nachteil ist sein Preis von 5€

von Martin J. (martin_j)


Lesenswert?

Hallo AJKANER,

danke für den Tipp. Der Preis ist nicht das Problem, zumal die Dinger 
für
ca. 2,50EUR zu beschaffen sind. Hat jemand damit Erfahrungen gemacht?

Die Strecke zwischen Diode und Empfänger ist ca.20cm lang und die Hand 
kann sehr dicht am Empfänger die Strecke unterbrechen.... unter 
http://www.hc08.eu/de/articles.php?article_id=3 habe ich gefunden, dass 
dies ein Problem sein kann, da die Gegenstände 7 bis 10 CM entfernt sein 
sollen?

von Karl H. (kbuchegg)


Lesenswert?

Eine relativ einfache Möglichkeit ist es immer, den Empfänger mit einer 
Blende zu versehen, so dass er nach Möglichkeit nur den Sender sieht. Zb 
ein Einbau in ein Röhrchen gewährleistet dies meistens schon.

von Karl H. (kbuchegg)


Lesenswert?

> Ich habe schon einige Tutorials und Anleitungen zu Timern und PWM
> gelesen, aber noch nichts passendes dabei gefunden.

38kHz liegt noch im machbaren Bereich bei 8Mhz.
Du nimmst den Timer 1 und den Modus 14 oder 15, bei dem du den Top-Wert 
vorgeben kannst. Die 8-Bit Timer haben leider keinen derartigen Modus.

8000000 / 38000 = 210

Also Top Wert auf 210, den OCR Wert auf die Hälfte davon und du hast 
deine 38kHz.

von pata (Gast)


Lesenswert?

Ein TSOP spricht bei 38 kHz innerhalb von 7 Impulsen von off nach on an 
und innerhalb von 15 Impulsen von on nach off. Das sind bei 38 kHz 180 
bzw. 390 µsec. Du musst dir halt im klaren darüber sein, ob eine solche 
Verzögerung für Deine Anwendung tragbar ist.

von Martin J. (martin_j)


Lesenswert?

die 38kHz bekomm ich also recht leicht erzeugt. Muss ich denn beim 
TSOP17xx eine Sendepause haben oder gehen die auch bei "Dauerbeschuss" 
mit 38kHz? Wie könnte ich die Sendepause einrichten und den 
Schaltvorgang erst dann erkennen wenn die Pause mehrfah 
vorbeigeschritten ist? Die Verzögerung bis ca. 250ms ist bei der 
Anwendung kein Problem.

Ich werde mir heute Abend auf jedenfall mal einige IS471F-SH und 
TSOP17xx bei Conrad holen (Haben einen in Dresden) und morgen beides 
ausprobieren.

von Bernhard M. (boregard)


Lesenswert?

Normalerweise sind die TSOPs nicht für Dauerbeschuss, wollen also eine 
Sendepause.
Wenn 250msec ok sind, dann würde ich es mit 10msec senden, 90 msec Pause 
probieren, das entspricht in etwa den gängigen IR 
Fernbedienugsprotokollen (und dafür sind die TSOPs ausgelegt).

von Martin J. (martin_j)


Lesenswert?

@Bernhard,

kann ich denn die Sendepause auf Empfängerseite irgendwie wieder 
wegbekommen (Kondensatore oder so)? Ich bräuchte ja ein stabielen 5V / 
0V Pegel..... Wenn ich das senden einfach unterbreche, ist auch der 
Pegel unterbrochen und der ATmega würde reagieren.

von Bernhard M. (boregard)


Lesenswert?

Der ATmega kann doch wohl auswerten, ob die Unterbrechung > 100msec 
ist...

von Bernhard M. (boregard)


Lesenswert?

Wenn man ins Datenblat schaut braucht man minimal:
- 10 Zyklen Burst (max. 70), dann
- 14 Zyklen Pause.

Bei mehr als 1.8msec Burst sollte die Pause auch mindestens so lange wie 
der Burst sein.

Bis zu 1800 short Bursts pro sekunde (was immer das genau bedeuted).

von Martin J. (martin_j)


Lesenswert?

Bernhard M. schrieb:
> Der ATmega kann doch wohl auswerten, ob die Unterbrechung > 100msec
> ist...

Wie würde ich das machen? Hab doch noch nicht soooooo viel Programmiert 
mit Microcontrollern..... Danke für eure hilfe.....

von Martin J. (martin_j)


Lesenswert?

Hallo,

ich habe gestern mit drei Lichtschranken, bestehend aus IS471F-SH  und 
IR Diode, das System getestet. Scheint soweit erstmal alles zu 
Fuktionieren.

Vielen Dank für den Tipp.

Martin

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.