Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Microcontroller IR lichtsluis

Pagina: 1
Acties:
  • 178 views sinds 30-01-2008
  • Reageer

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
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 (kan iemand 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?

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Verwijderd

In eerste instantie vroeg ik me ff af wat je draadloos wilde doen. Maar ik begrijp uit je verhaal dat je de zender en ontvanger die aan beide kanten van de deur komt draadloos wil maken. Want als je de RS-232 communicatie draadloos wil maken zit je met een probleem omdat jij zegt dat de communicatie maar één kant op gaat. RS-232 moet heen en terug kunnen babbelen want hoe weet de microcontroller wanneer de pc klaar is voor data te ontvangen (als op dat moment de datastroom onderbroken wordt zou je alle data van een complete dag kwijt zijn). Maar goed, dit is niet van toepassing.
Wat ik niet begrijp is dat je 2 microcontrollers wil gebruiken. Je kunt dat toch heel simpel met een NE555 of iets dergelijks (volgensmij moet dat haalbaar zijn). Wanneer dit niet haalbaar is met een NE555 zijn er nog heel veel andere schakelingen waarmee je een hele mooie blokpuls kunt genereren zonder een microcontroller daar voor te gebruiken (want dat is echt OVERKILL!!).
En toch zou ik voor de reflector gaan omdat je dan maar van 1 voeding afhankelijk bent.

Die ATMega8515 is inderdaad een beetje erg dik voor je project maar goed om eens mee te spelen en daarna eens te kijken welke microcontroller je wel kan gebruiken (de AT90S2313 met UART en 4 Kb aan geheugen bijvoorbeeld).

Ik zou proberen een schakelingetje te maken die het 36Khz. signaal kan detecteren en een uitgang hoog maakt. Wanneer dit signaal weg valt geeft hij een laag uit. Deze voer je naar een interrupt pin van je microcontroller (zoals je al vertelde).

Ik zat er net aan te denken om een of ander ic aan je microcontroller te hangen die de tijd bijhoud (uren/seconden,etc..). Dit is niet nodig omdat wanneer je met de pc de data uitleest je weet wanneer de laatste data weggeschreven is en vanaf daar terug kunt tellen. Kortom, de pc kan zelf de tijden bepalen.

Verder nog een zeer belangrijke tip, zorg dat je meer dan 24 uur kunt bewaren! Wanneer je elke nacht om 12 uur de data uitleest heb je een probleem wanneer je net iets telaat bent (dus 24 uur en 1 seconden). Je bent dan minimaal 1 uur aan data kwijt!

Misschien dat je er ook nog een ledje op kunt maken die aangeeft dat er meer dan 24 uur aan data in je microcontroller aanwezig is (en dat 't hoogtijd wordt om hem leeg te maken).

En dan nog een tip, zorg dat de pc ook uit kan lezen wanneer de tellers in overflow gegaan zijn (wanneer er niet optijd data uitgelezen is en je een deel kwijt bent). Dat is makkelijk voor je administratie later:).

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
De reden dat ik niet met reflector heb gekozen te werken, is omdat ik uit diverse bronnen op het web het idee heb gekregen dat er de kans bestaat dat signaal A en B elkaar overlappen, of dat ontvanger B nog beetje van zender A ontvangt, echter is dit misschien eenvoudiger te verhelpen dan het 100% juist tegen overelkaar plaatsen van de zender en ontvanger.

De reden dat de NE555 niet als optie wordt gekozen is omdat deze niet nauwkeurig genoeg is in te stellen. Nu kreeg ik echter een ander idee, ik kwam een site tegen met een chip die afhankelijk van het cristal dat je er aan sluit een puls genereerd, eentje van exact 40kHz, dit is ideaal voor een TSOP1740, moet ik dus alleen even andere TSOP halen, geen probleem.

Ik weet alleen niet of ik nu op 36kHz aan - uit moet doen of op 72kHz aan - uit, zodat altijd er op 36kHz altijd een hoog is...

code:
1
2
3
4
_ _ _ _ _ _
 _ _ _ _ _ _  72kHz
__  __  __
  __  __  __ 36kHz


Bij 72kHz is het bij iedere puls van de 36kHz hoog.

Kan je me iets vertellen over de draaggolf, daar ben ik niet helemaal zeker van hoe dat zit.

De ATmega8515 heb ik toevallig liggen, en wat daar op werkt werkt straks ook op een andere.

Mocht ik de zender en ontvanger als 1 module maken, denk ik wel dat ik de microcontroller ga gebruiken voor het zenden, dan zou ik een timer kunnen gebruiken voor het aansturen, dit wordt dan onderbroken als het signaal wordt verbroken omdat er een interupt binnen komt. Als de interupt afgehandeld is kan de IR zender weer beginnen... (eemm hardop denken modus)

edit:
De PC zal eigenlijk iedere dag rond 18u data ophalen, de data wordt pas gereset bij het ophalen, dus mocht het een dag niet gebeuren dan wordt het de volgende dag er bij opgeteld. Heb zitten denken over 2d array voor iedere dag 1 array van 24 ints, dus in totaal 7x24 ints, 336 bytes aan geheugen.

[ Voor 10% gewijzigd door Parcye op 23-01-2004 00:08 . Reden: Stukje vergeten ]

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Using CD4060:
              +-\/-+
      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 >----------------------+


Deze timer zou eigenlijk prima zijn, 40khz gebruiken met een TSOP1740 en ik ben weer een stap verder. En dan kan de 40 hz frequentie als draaggolf dienen. (nog altijd niet zeker hoe het zit met de draag golf)

Of... juiste cristal gebruiken om 36kHz te kunnen genereren.

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


Verwijderd

Je vertelde dat 36Khz. misschien al een probleem zou kunnen zijn. Waarom kies je dan voor 40 Khz.? Misschien dat een lagere frequentie net zo goed werkt.
(ok, ben nu ff zat maar zou nuchter ook deze vraag gesteld hebben).

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Nou met deze IC kan je heel stabiel 40kHz halen, dat kan niet met een NE555...

Dus daaom moeite met 36kHz maar dit lost het probleem van timer wel op lijkt me...

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Weet iemand wat de afstand is dat een LD274 kan zenden?

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • JaWi
  • Registratie: Maart 2003
  • Laatst online: 20-09 21:57

JaWi

maak het maar stuk hoor...

Parcye schreef op 28 januari 2004 @ 14:45:
Weet iemand wat de afstand is dat een LD274 kan zenden?
Ligt eraan wat je ermee wilt doen. Als je -zoals in jouw geval- wilt detecteren of iemand de IR-straal onderbreekt, dan kun je makkelijk zo'n 6-10 meter overbruggen.

Maar, wat ik niet goed begrijp is je afkeer van die NE555 optie om 36/40KHz te genereren. De TSOP serie heeft een bepaalde marge waarin hij nog netjes de infrarood zender kan `zien' (+- 2KHz dacht ik, maar dat zou je in de specs na moeten kijken). Bovendien kun je -als je je schakeling netjes maakt- met een NE555 een behoorlijke preciesie krijgen * JaWi zoekt het even op in de datasheet van Philips en ziet dat de NE555 typisch een nauwkeurigheid heeft van 0.75-1.0%.

Als ik het mij goed herinner heeft er ooit in de Elektuur een simpel digitaal schakelingetje gestaan waarin met een aantal logische poortjes een richtingsdetector werd gemaakt. Precies geschikt voor jouw project dus. Ik zal eens kijken of ik dat schemaatje boven water kan toveren... In dat geval hoef je met je microcontroller slechts nog het tijdstip bij te houden en de richting uitlezen van je logische schakeling.

(BTW: problemen met reflecties van je `andere' IR-straal kun je gemakkelijk verhelpen, door je IR-sluisjes niet continue, maar een-voor-een aan te zetten; dan weet je nl. zeker dat een ontvangen straal ook van de juiste zender komt).

Statistics are like bikinis. What they reveal is suggestive, but what they hide is vital.


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Op dit moment ben ik aan het kijken naar de Cd 4060 chip, deze deelt de gekregen frequentie van een cristal op, eerst door 16 dan door 2... dus als ik stabiel 40kHz wil hebben is het een 640kHz cristal op de CD 4060 aansluiten.

Op dit moment heb ik een TSOP1736 tegenover een IR staan die op 36kHz uitzend met een afstand van 2cm.

Timer2 van me ATmega8515 maakt de 36kHz frequentie en Timer1 maakt de blokgolf/draaggolf (wat is nou de juiste term) van 1mSec, dus 100 keer per seconde, dus 100Hz.

De TSOP ingang poort zit nu aan INT0 en als de signaal verbroken is en weer terug komt, krijgt deze een interupt, (rising edge heb ik hem staan, moet net anders om, falling edge) echter het vreemde is dat hij lang niet alle onderbrekingen 'ziet'. Het lijkt wel alsof hij maar 1 keer in de zoveel tijd een onderbreking kan detecteren.

Ben nu bezig het schema te maken van de CD 4060, deze post ik dadelijk.

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Nieuw 'probleem'

Ik stuur nu 36kHz uit in een blokgolf van 1000Hz, dat signaal ziet er dus zo iets uit:
code:
1
2
_ _ _ .      ._ _ _ .      .
 _ _ _.______. _ _ _.______.


De . luid een nieuwe golf in, het is dus 1ms frequentie, 1ms geen frequentie.

De ontvanger geeft bij de 1ms geen frequentie geen spanning af, wat er voor zorgt dat de intrupt getriggerd wordt, dit wil ik dus niet want dan detecteer ik iedere ms een bezoeker...

Wat ik nu op aanraden wil doen is zorgen dat de die gegevens wordt ook even wordt vast gehouden in een condensator.... dus tijdens de frequentie laad de condensator op en als de spanning wegvalt ontlaad de condensator zich, waardoor er continu een spanning is.

Nu heb ik gelezen dat er een formule is, tijd in sec = RC

Mijn tijd in seconde is 0.001 maar ik heb begrepen dat het 5 keer nodig heeft om 100% geladen te zijn... dat zou dus 0.005 seconde zijn dat is dus te lang.

Ik moet dus 0.0002 seconde als laad tijd hebben, dat kan dus bijvb door 200ohm en 1uF. Dat levert 0.0002 op.

Wie dit bevestigen of ontkennen? Of is dit niet helemaal duidelijk?

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002

Pagina: 1