Microcontroller IR Lichtsluis

Algemeen
Ik heb al in verschillende topics besproken over mijn problemen met mijn project, ik ben nu een stap verder, ik heb wat meer in de gate wat kan en niet en kan inmiddels het programmeren van mijn project realiseren.

Mijn project zal bestaan uit 2 losse delen. De IR zender en de IR ontvanger, de reden is simpel. Ik wil niet met draden of reflexie werken.

De ontvanger
De ontvanger zal via RS232 aan de PC gekoppeld zijn, de ontvanger zal zelf met een microcontroller bijhouden hoevaak er iemand de lichtsluis heeft doorbroken.

Het ontvangen wil ik met een TSOP1... doen, de keuze is nog vrij. De twee TSOP's zullen ieder een eigen IR signaal ontvangen, zodat ik de looprichting kan bepalen. De TSOP geeft bij ontvangen een 0 en als deze wordt verbroken wordt dit hoog. Ik wil dan de microcontroller op de 'rising edge' een intrupt laten genereren, op dat moment wordt er in de Microcontroller geset dat het signaal A of B is verbroken.

De main lus die zal continu kijken welk poortje eerst verbroken is en de de bezoeker registreren in een array van 24 (voor ieder uur een). Op het moment dat de computer wil, kunnen deze gegevens over gezonden worden. De tijd van de dag ga ik bepalen door een timer die iedere msec afgaat.

Op dit moment heb ik een TSOP1736 en een ATMega8515, de ATMega zal vervangen worden door een ATtiny als het project uit prototype status is.

De zender
De zender is tricky, hoe ben ik er zeker van dat ik 36khz haal? Niet met een NE555, daarnaast, heb ik begrepen dat ik niet continu 36khz kan uit zenden want daar is de TSOP serie niet voor bedoeld (Wouter van Ooijen, kan jij hier wat meer over vertellen?). Mijn zender zal dus ook gaan bestaan uit een microcontroller, deze zal 2 timers gebruiken, een om de 36khz frequentie te maken en daarmee de led aan te sturen. (mij vraag is, moet ik dan iedere keer dat ik de timer interupt krijg de led aan en dan weer uit zetten, of moet ik op 72khz de led aan en dan weer uit zetten?) en de andere timer om een draag golf te generen om te voorkomen dat je continu 36khz uitzend.

De leds die ik ga gebruiken zijn de LD274, deze schakeling zou eigenlijk niet veel voor hoeven te gaan stellen omdat het slechts een uC paar weerstanden, condenstatoren en 4 leds nodig heeft (2 IR 2 Status).

Vragen
Wat voor AVR microcontroller zou het beste schikken voor deze deel projecten?
Kan iemand mijn verhaal bevestigen dat het in theorie zou werken? (praktijk zorg ik wel voor ;))
Iemand ervaring met een TSOP als IR detector in een lichtsluis?

Rob Keij zou jij misschien mij een prijslijst kunnen mailen?

Heb misschein een oplossing gevonden voor het zend gedeelte, dit kan namelijk ook met een CD4060, welke afhankelijk van je pulsgenerator diverse frequenties aflevert.

code:

Here is the pinout of the CD4060 (frequencies are assuming a 640khz input signal into pins 10/11/12 - circuit shown below):

               +-\/-+
      160hz  1 |    | 16  Vcc
       80hz  2 |    | 15  625hz
       40hz  3 |    | 14  2.5khz
      10khz  4 |    | 13  125hz
      20khz  5 |    | 12  \
       5khz  6 |    | 11   >---- see sub-circuit below
      40khz  7 |    | 10  /
        GND  8 |    |  9  NC
               +----+


Sub-circuit for a 640khz ceramic resonator:

      12 >----------------------+
                         740pf  |    (you may be able to obtain
      11 >-------+----+---|(----+     a resonator with builtin
                 |    |         |     capacitors and three leads)
        640khz  ---   \         |
         res.    O    / 1Mohm   |
                ---   \         |
                 |    |         |
      10 >-------+----+---|(----+
                         740pf  |
     GND >----------------------+

Heeft iemand hiermee ervaring?

De zender is tricky, hoe ben ik er zeker van dat ik 36khz haal? Niet met een NE555

Ik heb zelf ooit een lichtsluis gemaakt met de TSOP38. Deze 38 kHz werd gewoon opgewekt door een NE555. Werkt prima. Op de NE555 zit een reset-ingang, hiermee kun je de 38 kHz dan weer moduleren...

TDM-Electronics....

Hoe heb je het dan opgelost? Want volgens wat ik heb begrepen is de NE555 niet stabiel genoeg (die van de lichtsluis op deze site) omdat je met een potmeter werkt.

Kan je de werking van het moduleren aan mij uitleggen?

[Bericht gewijzigd door Parcye op 26 januari 2004 00:05:39 ]

Mmm... ik zou niet weten waarom de 555 niet stabiel genoeg zou zijn... Misschien dat je met grote temperatuursverschillen een probleem krijgt omdat de 555 idd met weerstandjes werkt. Maar nogmaals, ik heb hier geen problemen mee gehad.

Het principe achter het moduleren werkt als volgt:

De TSOP38 wil graag een amplitude-gemoduleerd signaal van 38 kHz ontvangen, de TSOP filtert nl. DC-spanningen, constante 38 kHz signalen en alle signalen met een andere frequentie...

Wat wil amplitude-modulatie nou eigenlijk zeggen? Bij het gebruik van de 555 is het niet veel meer dan het aan/uit schakelen van het 38 kHz signaal. De ene keer is de amplitude 5 volt (of meer... hangt af van de spanning die je op de 555 zet) en de andere keer is de amplitude 0 volt. Ik heb dit aan/uit schakelen gedaan met een frequentie van ongeveer 500 Hz. Het leuke van de TSOP is dat je deze 500 Hz direct terug ziet aan de uitgang...

Met de reset-pin van de 555 kun je zorgen dat het 38 kHz signaal 500 keer/seconde aan/uit gaat... Heel simpel eigenlijk :)

Nu kun je zeggen dat je het signaal van 38 kHz amplitude-moduleert met een frequentie van 500 Hz.

Die 500 Hz kun je bijvoorbeeld opwekken met een tweede 555 (je kunt dus een 556 nemen voor het projectje) of je wekt deze frequentie op met de microcontroller. Je zou ook met de microcontroller alles kunnen oplossen en op deze manier kunnen zorgen dat je een frequentie uitstuurt van 38 kHz, maar dat was mij toen te veel werk...

TDM-Electronics....

Ik heb ongeveer hetzelfde als jou gemaakt alleen de schakeling op deze pagina gebruikt Infrarood lichtsluis
Ik heb 2 ontvangersnaast elkaar gezet. Wanneer ontvanger 1 doorbroken werd en dan 2 dan ging iemand naar binnen en andersom naar buiten. Misschien heb je er wat aan.

Je hebt bier en je hebt Grolsch... Biertje?!

Ik wil het dus zo maken dat het op geslagen kan worden dus heb ik een uC nodig, anders kon ik volstaan met het schema van deze site...

Ik heb in eerste instantie voor de test de zender nagemaakt maar de ontvanger kan veel eenvoudiger dan daarstaat.

Maar het idee dat te gebruiken heb ik zelf al gehad, bedankt iig voor je bijdragen.

Jammer genoeg hebben Wouter en Rob nog niet gereageerd :(

Ik ben bezig me TSOP aan INT0 te koppelen, dit is PD2 (pin 3 van poort D), weet iemand of ik daar bij het instellen van me poort rekening mee dien te houden of dat als ik het als output poort heb staan ik het nog altijd als interupt kan gebruiken?

Dit werkt nu :)

Nu eens kijken of ik kan achterhalen wat de afstand is dat het IR signaal zend. Is dit te berekenen zonder 'trail eroor' metingen te doen?

[Bericht gewijzigd door Parcye op 26 januari 2004 15:52:20 ]

IR straat
Hoe ver straal IR licht uit? Is dat te meten zonder de ontvanger steeds verder en verder te zetten? Of is er een berekening voor?

Op 26 januari 2004 12:24:18 schreef Parcye:
Jammer genoeg hebben Wouter en Rob nog niet gereageerd :(

Ik? Waar zou ik op moeten reageren?

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog

Jij had me iets verteld over het generen van een blokgolf/draaggolf voor de 36kHz frequentie, ik zou hier graag meer over weten. Want ik heb nergens theorie er over gevonden die overeen kwam met wat je mij zei.

Op 28 januari 2004 16:24:37 schreef Parcye:
Want ik heb nergens theorie er over gevonden die overeen kwam met wat je mij zei.

TDM-Electronics zegt precies hetzelfde:

Wat wil amplitude-modulatie nou eigenlijk zeggen? Bij het gebruik van de 555 is het niet veel meer dan het aan/uit schakelen van het 38 kHz signaal. De ene keer is de amplitude 5 volt (of meer... hangt af van de spanning die je op de 555 zet) en de andere keer is de amplitude 0 volt. Ik heb dit aan/uit schakelen gedaan met een frequentie van ongeveer 500 Hz. Het leuke van de TSOP is dat je deze 500 Hz direct terug ziet aan de uitgang...

Lees anders de datsheet van een TSOP eens door. Op mijn winkel pagina staat de link.

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog

zoals ik het dus begrijp is het dit

36kHz:

code:

IR led-aan __  
IR led-uit   __

Dit gebeurt dan 36.000 keer per seconde

En iedere 1/500ste seconde gebeurt er

code:

IR led-aan _  
IR led-uit  ___
of
IR led-aan __ _ 
IR led-uit   _

Dus dat halverwege de puls deze wisselt in aan of in uit

of moet ik iedere keer aan - uit doen? Dan krijg je

code:

IR led-aan __  
IR led-uit   _|_

Dat je even een piek of een dal krijgt, net hoe je het uitkomt... even een onderbreking.

Of moet de 36kHz frequentie dan helemaal opnieuw beginnen?

Ik heb de datasheet voor me liggen, maar ik vind niet wat er bedoeld wordt :S

> Ik heb de datasheet voor me liggen, maar ik vind niet wat er bedoeld wordt

bijvoorbeeld p3: one of the disturbances taht are suppressed ... a continuous 38 kHz signal

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog

The data signal should fullfill the following condition:
Carrier frequency should be close to center
frequency of the bandpass (e.g. 38kHz).
Burst length should be 10 cycles/burst or longer.
After each burst which is between 10 cycles and 70
cycles a gap time of at least 14 cycles is neccessary.
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.
Up to 1400 short bursts per second can be received
continuously.

TSOP moet minimaal 10 reeksen van 01 hebben...
Na 10 tot 70 reeksen 01 moeten er minimaal 14 reeksen 0 voorbij komen
Voor iedere 01 reeks die langer duurt dan 1.8 ms, moet er 1.8ms rust zijn
En ik kan maximaal op 1400Hz reeksen 36kHz hebben.

Some examples for such disturbance signals which
are suppressed by the TSOP17.. are:
DC light (e.g. from tungsten bulb or sunlight)
Continuous signal at 38kHz or at any other
frequency
Signals from fluorescent lamps with electronic
ballast (an example of the signal modulation is in the
figure below).

Hij kan 38kHz aan en geen last van zonlicht of van lichtgevende bronnen uit filteren.

Oke, dus ik heb het nu zo...

Om 1mSec een keers 36kHz en een reeks niets en een reeks 36kHz...

dit is dus 1000Hz...

Maar ik wil dus me TSOP aan me interupt koppelen, en die geeft dus iedere mSec een intrupt, en niet bij het onderbreken. Dus nu zit ik daar met een probleem.

Ik snap nu wat er bedoelt wordt maar interperteerde het steeds anders.

code:

_ _ _ _      _ _ _ _
 _ _ _ ______ _ _ _
       .     .

De . is een msec, dit is dus nu mijn signaal. En mijn trupt trigger dus ook bij de . en dat moet juist bij de onderbreking van het signaal...

Of moet ik eerst het signaal langer laten lopen? bijvb eerst 5minuten laten lopen voor ik verder kan?

> Of moet ik eerst het signaal langer laten lopen? bijvb eerst 5minuten laten lopen voor ik verder kan?

gewoon de hele tijd 36/38 kHz, aan/uit geschakeld op bv 1kHz. Dan krijg je een 1kHz blokgolf op de uitgang van je TSOP. Dat vind jij niet leuk. Wat krijg je als je een condensator op de uitgang van je TSOP aansluit?

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog

Hoe wil je dat dan doen met een condensator?

Een condensator houd de spanning bij en ontlaad als de spanning er af is... Dus op het moment dat er frequenties ontvangen worden laad de condensator op, frequenties uit, de condensator ontlaad... dus er is nog altijd spanning op de lijn...

Ik onderbreek de frequentie en de condensator ontlaad en er is op dat moment geen spanning meer omdat het signaal doorbroken is en omdat de concensator leeg is... maar hoe weet ik dan welke condensator het best zal werken?

code:

       R
 +-+--[]-------------o 5v
 ( |-------------+
 +-+----+        |
TSOP    |        |   C
        |        +--[]-| GND
        -        |
       GND       |
            +----+--------+
            |  AVR        |
            +-------------+

Dit is dan een ascii schema tekening... van hoe het dan zou moeten worden, maar ik vraag me af hoe weet ik welke condensator ik dan moet hebben om meteen te kunnen detecteren dat het IR signaal doorbroken is omdat er iemand doorheen loopt...

Op 29 januari 2004 00:51:29 schreef Parcye:
maar hoe weet ik dan welke condensator het best zal werken?

Rekenen, of proberen. Je kunt niet meteen detecteren, maar binnen bv 50 ms zal wel genoeg zijn denk ik. Dat zijn 50 pulsen, dus je condensator moet in combinatie met een pull-up weerstand (10k) gegarandeerd niet ontladen (tot voorbij de dremple van de uC pin) in 1 pauze, maar gegarandeerd wel in cycli = 100 pauzes. Marge genoeg lijkt me.

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog

50ms is 1/500 van een seconde, dat moet wel gedetecteerd kunnen worden als iemand er door heen loopt.

Weet je hoe je dat kan uitrekening?

Ik was al naar software oplossingen aan het zoeken. Maar hardware is natuurlijk ook een optie.

> 50ms is 1/500 van een seconde

Rekenen is niet je sterkste kant?

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog

Haha, nou eigenlijk wel (tijdens mijn studie), dit is een foutje...

50ms = 50/1000 is 5/100 seconde.

Ik heb juist meer kennis van software dan van hardware... helaas.

[Bericht gewijzigd door Parcye op 29 januari 2004 11:47:43 ]

> 5/100 seconde.

dus 1/20. klinkt al een stuk minder kort. als iemand hard loopt komt hij er missvhien nog wel onder. rekenen maar!

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog