Skocz do zawartości

Teoretyzowanie przed praktyką #1 - podczerwień w robotyce amatorskiej


Treker

Pomocna odpowiedź

O, fajnie, że zabrałeś się za eksperymenty. Na pewno wyjdzie z tego coś ciekawego 😃 Oby więcej chętnych.

5kHz to mało? Dla audiofila na pewno, dla radiowca prąd zmienny zaczyna się tak gdzieś od 500MHz więc może faktycznie masz rację. Moją diodę wybrałem tak, by jej pojemność była mała - dla 2V ma tylko kilka pF ale nie wiem jakich użyje Bobby a przecież są diody mające po kilkadziesiąt pF. Nie mogę powiedzieć w ciemno: rób, będzie dobrze. Przy 100pF pojemności kilku diodek (i doprowadzeń) połączonych równolegle i oporniku 510k w sprzężeniu zwrotnym dostajesz stałą czasową 51us a to już tragicznie zmniejsza margines fazy takiego stopnia (opóźnienie w pętli ujemnego sprzężenia zwrotnego!) i praktycznie na 100% zapewnia wzbudzenie się wzmacniacza. Zauważ, że mój skaner potrzebuje pasma ze 100kHz, by sygnał miał szansę narosnąć do wartości stabilnej w kilkadziesiąt us.

Musisz się zdecydować w jakim trybie będzie pracować Twoja fotodioda. Albo dajesz jej napięcie polaryzacji wstecznej (jak u mnie) i wtedy pracuje jak źródło prądowe albo podłączasz ją (odwrotnie!) bez żadnego napięcia wstępnego i wtedy masz mocno nieliniowe fotoogniwo dające napięcie. To dwa różne rodzaje pracy, dwie różne ch-ki częstotliwościowe, szumowe itd. oraz dwa zupełnie inne stopnie wejściowe. Teraz masz bez polaryzacji (bo wejście + wzmacniacza stoi na masie) i przetwornik I/U - sprzeczność, ale gdy zmienisz to na masę pozorną, dostaniesz napięcie na diodzie chyba, że podłączysz ją do tej nowej masy. W każdym razie zwracam uwagę na ten szczegół.

Opisałeś układ działający wg metody opisanej tu miesiąc temu: wzmacniacz + filtr. Jest prosty, hurra, wstawiłeś dwa wzmacniacze: przetwornik I/U, obciananie składowej stałej i stopień x100. No tak, działa bo przenosi 36kHz? A co z sygnałem użytecznym? Jaki on ma być? Czy mrugasz diodą LED właśnie 36kHz, 500kHz czy świecisz na stałe? Był tu narysowany tor z filtrowaniem pasmowoprzepustowym. Nie przenosił ani 50Hz ani 36kHz. Też działał. Cieszymy się? Nie, bo był tylko do jakiegoś zastosowania. Ktoś robiący czujnik jednokanałowy może to brać w ciemno. Mi chodził po głowie skaner przestrzeni (no dobra, jednego biurka) a taki układ musi mierzyć wiele kanałów i to szybko. Chciałem też jakoś odróżniać odległą ścianę oświetloną słońcem od przeszkody oświetlonej moją LEDą. To udało się w detektorze synchronicznym, ale układ taki z definicji musi być szybki. Na AVRku nie daje się zrobić szybszego niż kilkanaście kHz bo takie jest ograniczenie ADC, więc u mnmie jest 5kHz. I to jakoś wyznacza szybkość skanowania obszaru a co za tym idzie czas odpowiedzi czujnika.

Gdy będziesz robił robota lawirującego z prędkością 1m/s między nieznanymi przeszkodami - i nie myślę tutaj o myszy jeżdżącej w sterylnie dobranym labiryncie - to z pewnością tak wolnego czujnika nie użyjesz. Zrobisz wtedy rozwiązanie na FPGA z przetwornikiem 1Msps i z głowy. Takie rozwiązanie też możemy zrobić, ale nie od razu Kraków.. Popatrz, już teraz dyskusja ucichła. Jeśli nie boisz się zakłóceń od 36kHz to mój skaner daje kilkaset odczytów na sekundę.

Musimy być albo grubo poniżej tych magicznych 36kHz i odsiewać je przez filtrowanie dolnoprzepustowe (moje uśrednianie tak właśnie działa) albo dobrze powyżej (np. 1MHz) i wtedy zarówno 50Hz jak i 36kHz są dla nas "prądem stałym". Tu zrobiłeś układ pracujący właśnie na 36kHz. Czy dobrze rozumiem? Jak jest jego zastosowanie? Jak to się ma do walki z obcymi czujnikami? Napisz coś wiecej.

Opisując nowe rozwiązanie pokaż wszystkie jego zalety i wady tak, żeby czytający mogli porównać układ z innymi. Opisz jaki sygnał chcesz wykrywać, metodę jaką przyjąłeś w celu filtrowania zakłóceń i jakie masz rezultaty. FFT przebiegu wyjściowego pokazuje, że mamy prążek - super, podałeś coś na wejście i na wyjściu się pokazało. To może pokaż Bode plot albo chociaż opisz go w kilku słowach? To pozwoli szybko ocenić możliwości oddzielania różnych częstotliwości oraz zniekształcenia fazy czyli pośrednio opóźnienia. Wtedy będzie o czym rozmawiać. Do symulacji używaj modeli konkretnych wzmacniaczy - wtedy wychodzi, czy to coś jest w zasięgu naszych kieszeni 🙂

Zakłócenia? W moim układzie zbliżenie ręki na 1cm do obwodów wejściowych powoduje znikanie sygnału odbieranego w szumie. To samo po włączeniu triakowego ściemniacza do lampki. Nie widzę istotnych zmian w wartościach wyświetlanych przez"radar" ale tylko dlatego, że mam silne uśrednianie. W szybszym układzie takie numery nie przejdą. Naprawdę uważasz, że układ pracujący na prądach sub-mikroamperowych nie jest czuły na zakłócenia i nie trzeba o tym myśleć? Prosty przykład: na wyjściu pierwszego stopnia mam 20mV sygnału użytecznego. Jakim prądem jest sterowany przetwornik I/U wyposażony w opornik 510k?

[ Dodano: 17-12-2013, 23:33 ]

Narysowałem na podłodze półokrąg o średnicy 20cm i podzieliłem go na segmenty o szerokości 10° każdy. Mój skaner 6-kanałowy ustawiłem tak, by jego dioda odbiorcza znalazła się dokładnie w środku pola. Zrobiłem też "obiekt" czyli żółtą karteczkę z podstawką po to, by stała pionowo. Przesuwałem ją po okręgu co 10° zachowując odległość 20cm i prostopadłe ułożenie obiektu w stosunku do fotodiody odbiorczej. Otrzymałem takie wyniki:

Wiem, wykresy są trochę kanciaste. Jutro spróbuję zrobić to samo z większą rozdzielczością kątową i mniejszym (albo dalej umieszczonym) obiektem. Do tego muszę jednak wydrukować lepsze pole, np. z segmentami co 5°.

Mam nadzieję, że już teraz widać jak to mniej więcej działa. Każda dioda IR oświetla jeden segment o szerokości 20° i gdy przeszkoda obija jej promieniowanie, sygnał z diody odbiorczej rośnie. Ponieważ procesor wie która dioda akurat świeci to wie także gdzie jest obiekt.

Karteczka w odległości 20cm pokrywała ok. 20° pola widzenia więc akurat jeden segment. To dlatego zakresy widzenia zachodzą na siebie mniej więcej w połowie. Mniej więcej, bo dokładność kątowa była w tym pomiarze raczej słaba - rysowanie ołówkiem po podłodze nie jest w domu mile widziane, teraz i ja to wiem 😐

Sensor nie jest czuły na oświetlenie rozproszone ani na mocną lampę żarówkową. Niestety rodzaj powierzchni i współczynnik odbicia promieniowania podczerwonego mają duże znaczenie - jak to w pomiarze energii odbitej. Cieszy duża dynamika sygnału. Poziom 600 - gdy obiekt jest w środku segmentu jest wyraźnie inny od 30 - gdy dany segment jest pusty 🙂

Wielkości odczytywane z poszczególnych kanałów powinny być przeskalowane zgodnie z charakterystyką kierunkową diody odbiorczej bo ta przecież z boków jest słabsza niż od czoła. Podawany przez producenta kąt 120° oznacza, że po odchyleniu wiązki o 60° w którąś stronę czułość spada do 50% tego co jest maksimum dla 0°. Z tego powodu spodziewałem się wyraźnie słabszych wyników w kanałach 1 i 6, ale być może moje rysunki na podłodze miały na tyle odchylone kąty, że z jednej strony trafiłem na środek segmentu a z drugiej nie. Być może też diody LED mają różne jasności albo skupienia wiązki, będę musiał to sprawdzić.

Link do komentarza
Share on other sites

Tak śledzę z uwagą temat, i może sam coś poeksperymentuję przez święta.

Mam też trochę pytań. na pewno będę zaczynał od nadajnika.

IMG_528bdc6c2ccf79064.gif

Domyślam sie że opornik 2R2 ma wartość 2,2Ω. Natomiast obliczałeś wartości kondensatorów, i opornika R3 dla tego filtru, czy wziąłeś jakiś taki sprawdzony schemat ?

Pytam bo ja będę pewnie eksperymentował, na samym początku dla F dostępnego dla TSOPów, czyli w granicy od 20 do nawet 500KHz.

Chyba że jest jakiś myk na obliczanie tego filtru, przy założonym prądzie diody IR i Fnośnej.

Mam też scalone ciekawe układy TLS2xx ,które mają fotodiodę i wzmacniacz na pokładzie, i wypluwają już sygnał analogowy z siebie.

Link do komentarza
Share on other sites

BLackJack:

Ten filtr służy tylko ograniczeniu szumów dla szyny zasilania. W takim wypadku przy zachowaniu prądu diody wyższa częstotliwość pracy układu będzie lepiej filtrowana przez duży kondensator.

Jak zależy Tobie na miejscu / cenie to możesz wtedy myśleć o optymalizacji tego kondensatora i wykorzystaniu mniejszego, ale do testów nie ma to większego sensu. Oczywiście obliczenia to standardowe dla filtra dolnoprzepustowego f = 1 / ( 2 * pi * R * C ) itd. - http://pl.wikipedia.org/wiki/Filtr_dolnoprzepustowy

Link do komentarza
Share on other sites

Tak jak napisał Mirek, filtr służy temu, by na szynie zasilania nie pojawiały się składowe wyższych częstotliwości w momencie gdy dioda LED jest załączana lub wyłączana. Stabilizator napięcia nie jest na tyle szybki by reagować na takie stany przejściowe i wtedy na Vcc widać wyraźne dołki (gdy włączamy LED) i górki (gdy wyłączamy) natomiast powinien utrzymać poziom napięcia gdy zapotrzebowanie na prąd rośnie wolno (np. w 20us a nie w 100ns). Kondensator 10uF absolutnie nie jest w stanie pokryć potrzeb diody sterowanej prądem wieluset mA w czasie 100us (jak u mnie), ale powinien być ceramiczny żeby miał niski ESR i żeby to z niego właśnie dioda czerpała prąd w pierwszych mikrosekundach pracy.

Oprócz tych 100nF i 10uF możesz jeszcze dopakować jakiś bardzo dobry elektrolit np. coś z diektrykiem organicznym typu OS-CON z ESR na poziomie kilku-kilkunastu miliomów. Wtedy taki filtr bardzo ładnie wyrówna impulsy prądu i stabilizator będzie widział prawie prąd stały 🙂 , ale elektrolit to duży klocek (a dobry kosztuje sporo) i nie wiem czy warto.

Układy TSL2xx są przeznaczone raczej do pomiaru natężenia oświetlenia rozproszonego np. w układach automatyki kontrastu LCD czy czasu naświetlania. Są dość wolne (max. 10-20kHz?) ale nie znam wszystkich typów tej rodziny i może znajdziesz taki, który odbierze chociaż 36kHz. No i jeśli nie budujesz skanera szerokokątnego 🙂 to trzeba im robić optykę bo odbierają wszystko jak leci (140°?).

EDIT: Przykład tego co się dzieje z wyjściem stabilizatora masz nawet w danych katalogowych. Ja mam akurat LM1117:

http://www.ti.com/lit/ds/symlink/lm1117-n.pdf

i tam wykres Figure 16 pokazuje jak wyglądają zapady gdy prąd 500mA rośnie i maleje w ok. 3us - czyli i tak dużo wolniej niż tranzystor załącza diodę LED. Dodanie filtra o stałej czasowej 2.2*10u czyli 22us robi mojemu stabilizatorowi naprawdę dobrze 🙂 Nie widzę żadnych szpilek oprócz minimalnego i łagodnego spadku napięcia spowodowanego skończoną rezystancją wyjściową stabilizatora i spadkami DC na ścieżkach, ale to normalne. Opornik 1R na masie jest opcjonalny, ale wszystkie trzy szeregowo musisz wliczyć do sumarycznej rezystancji ograniczjącej prąd przewodzenia diody LED.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Mirku Miniaturyzacja na potrzeby eksperymentów, nie będzie miała dla mnie znaczenia. Wiem że to tylko filtr zasilania, natomiast ciekawiło mnie czy kolego go obliczał, czy zrobił metodą intuicyjną.

Co do tego czujnika znalazłem go to TSL262R, a wspomniałem o nim bo w nocie kat jest wzmianka o wykorzystaniu go do odbierania częstotliwości. Piszę o nim bo skoro go mam na stanie, czemu by się nim nie pobawić ?

Jak się nie mylę, to tak 2x7us (typowy czas odpowiedzi na zmiany zbocza) + 3us, na czas trwanie stanu Hi, to daje 20us, czyli 1sek / 0,00002 sek, to ten układ powinien łyknąć tak w granicy 25KHz MAX (bo te 20us to pół okresu). Nawet gdyby w praktyce okazało się że użyteczne jest tylko 20KHz, to dla was, jak robicie eksperymenty na 2-5KHz, może układ przydatny, do osiągnięcia miniaturyzacji ? I tak rozpatrujecie niestandardowy czujnik.

Zresztą tutaj fragment wstawię.

PS. Ogólnie przepraszam jak moje pytania są lamerskie, z zawodu jestem projektantem mebli nie elektronikiem.

[Edit]

Tak szybko policzyłem, na granicy możliwości tego układu wychodzi 35 714,285 Hz (14us pół okresu), czyli to co standardowo generuje, większość Timerem dla 36KHz.

Link do komentarza
Share on other sites

Ok, to próbuj. Ten najszybszy układ ma jednocześnie najmniejszą czułość. Ciekawe jak to się sprawdzi w tym co chcesz zrobić. Pamiętaj, że na wyjściu dostaniesz dokładnie sumę wszystkiego co pada na fotodiodę: żarówek, słońca i wreszcie sygnału z LED. Jeśli chcesz pracować z sygnałem AC, to musisz na początku zrobić obcinanie składowej stałej i potem jakieś wzmocnienie. TSL ma stopień wyjściowy pracujący tylko do Vcc-1.5V więc przy 5V dostaniesz sygnał 0-3.5V. Musisz tak ograniczyć pole widzenia, by zakłócenia np. od oświetlenia nie padały na odbiornik i sygnał wyjściowy nie zbliżał się do napięcia nasycenia bo zaczniesz tracić kontakt z otoczeniem.

Powodzenia 🙂 Napisz potem co planowałeś i co wyszło. Wiesz, jaki nadajnik, jaki LED, jakie prądy, odległości, jaki sygnał wyjściowy i jak mierzony.

Link do komentarza
Share on other sites

Tak dziś jakoś tak zebrało mi się aby wypróbować ten mój TLS260.

Ponieważ fajnie pasi do płytki PICKIT2 Demo board, to go podpiąłem pod nią i oscyloskop.

Ku mojemu zdziwieniu ten układ bez problemu łyknął sygnał z pilota SONY który chyba chodzi na 40KHz.

W eksperymencie nr 2. Bezczelnie świeciłem mu latarką LED w oczko z odległości ok 4cm, i nadal byłem w stanie odebrać sygnał z pilota.

Co do innych warunków eksperymentu, naprzeciwko układu jest monitor 23' z Podświetlaniem LED, na biurku lampka z żarówką LED. W pokoju wszystkie żarówki są energooszczędne, ok 1400 Lm jasności jedna barwy zimnej druga cieplej.

Dziś już mi się nie chce szukać, ale przydało by się, jeszcze postawić mu obok zwykłą 100W żarówkę i zobaczyć co mu sie zmieni.

A.. wyjście TLSa jest na płytce obciążone diodą LED przez opornik 470Ω, tak po prostu przypadkiem wychodzi na tym PCB.

PS. Zrobiłem jeszcze jeden eksperyment. Przyłożyłem tą latarkę LED, praktycznie do obudowy TLSa, odległość jakieś 3mm może, nadal można odebrać kod z pilota. Napięcie na wyjściu ustaliło sie na ok 50% nap. zasilania.

Link do komentarza
Share on other sites

To chyba ja czegoś nie rozumiem. Masz czujnik TSL260 (AMS, dawny TAOS, dawny Texas Instruments) :

http://www.ams.com/eng/Products/Light-Sensors/Light-to-Voltage-Sensors/TSL260

z wyjściem analogowym, który daje wyższe napięcie gdy widzi więcej energii w odbieranym paśmie IR, tak? To przecież nie jest TSOP z wyjściem cyfrowym, specjalizowany do odbioru i demodulacji fali IR z nośną kilkadziesiąt kHz, więc jak rozumiem spodziewałeś się na wyjściu przebiegów 40kHz.

Tak więc mam kilka pytań:

1. Czy zaobserwowałeś zmiany "analogowe" na wyjściu?

2. Gdzie tu widzisz odbiór 40kHz? Ba ja widzę, że odbiornik kompletnie się nie wyrabia i widzimy tylko obwiednię tego co przychodzi. Nic już dalej z tym nie możesz zrobić, bo wszelka informacja o nośnej zginęła w ograniczonym paśmie wzmacniacza.

3. Czy w chwilach nadawania fali IR 40kHz na wyjściu widać uśrednione(?) napięcie wyjściowe proporcjonalne do energii promieniowania? Czy to napięcie zmienia się z odległością pilota?

4. Czy "górki" na obrazie z osyloskopu są odpowiednikiem większego napięcia? Jak wygląda prawdziwa obwiednia kodu z tego pilota odbierana np. TSOPem? Co w takim razie przedstawia zdjęcie prawe górne? Raczej nie ma kodów zdalnego sterowania z tak dużymi wypełnieniami, bo jest to marnowanie energii z baterii. To raczej powinny być waskie szpilki i dłuższa cisza albo co najwyżej 50%. Tu jest jakby odwrotnie..? Mógłbyś to wyjaśnić?

5. Producent proponuje obciążenie wyjścia 10kΩ do masy i dla takiego opornika podaje napięcia wyjściowe. Jak podłączyłeś tą diodę LED (do plusa czy do masy) i czy mierzyłeś coś bez niej, bo przecież obciążenie wcale tutaj nie jest konieczne a tak silne jak LED jest wręcz szkodliwe dla wzmacnaicza wyjściowego.

Link do komentarza
Share on other sites

Po takiej dawce nudziarstwa i teoretycznego ględzenia przyszła wreszcie pora na tytułową praktykę 🙂

Niestety, chyba będziecie zawiedzeni - w temacie TSOPów nie ma wiele do zrobienia. Żadnych skomplikowanych układów z tymi... no, jak im tam, wzmacniaczami operacyjnymi, żadnego liczenia filtrów, robienia detektorów, przetworników itp. Tutaj na szczęście wystarczy kupić TSOPa, podłączyć zasilanie, może jakiś opornik, kondensator i gotowe.

No to do dzieła. Wziąłem kawałek procesora - dwa timery wystarczyły, tranzystor, jakieś oporniki, diodę IR i dwa TSOPy. Krótki program umożliwił mi ustawianie z terminala częstotliwości fali nośnej, długości paczki impulsów oraz grupowanie paczek w serie o zadanej długości i przerwie. Dodatkowo miałem możliwość regulacji wypełnienia samej fali nośnej, czyli średniego prądu diody nadawczej. Postawiłem ją na krawędzi płytki uniwersalnej tak, by świeciła w przestrzeń pokoju. Tuż obok niej, po jednej stronie postawiłem TSOP34838 (mały) a po drugiej TSOP1136 (duży). Nie znalazłem dwóch o takiej samej częstotliwości, więc żeby żadnemu nie było przykro, ustawiłem nośną po środku, na 37kHz.

Przypadek 1: czysta fala nośna.

Prawie milion tranzystorów w procesorze mega644 robi za generator LM555 🙂 Ponieważ fala ciągła 37kHz zupełnie nie jest podobna do kodu zdalnego sterowania, nie mogłem liczyć na jakiekolwiek sensowne działanie czujnika odbiciowego i nie zawiodłem się. Umieszczone obok siebie dioda nadawcza i TSOPy wcale sobie nie przeszkadzają. Przy wypełnieniu fali nawet 50% żaden nie widzi świecącej obok diody. Dłoń wykrywana jest przez małego TSOPa dopiero z odległości 15cm. Duży ma inną automatykę wzmocnienia i (chyba) układ obróbki obwiedni i nie daje się tak łatwo oszukać. Jeżeli przeszkoda pojawi się w wiązce IR szybko, to duży ją wykrywa, ale już po sekundzie zawahania uznaje, że fala ciągła to nie jest jego ulubiony temat i wyłącza wyjście. Co ciekawe tym sposobem (szybkim ruchem) można zmusić go do wykrycia dłoni nawet z odległości 40cm. Niestety, zero na wyjściu pojawia się tylko na ułamek sekundy. Z małym TSOPem ta sztuczka udaje się tylko do ok. 25cm, a wyjście utrzymywane jest wstanie aktywnym jeszcze krócej. Moim zdaniem to dyskwalifikuje jakiekolwiek rozwiązania z generatorkiem na pojedynczym 555.

Przypadek 2: paczki po 20 impulsów + 20 impulsów przerwy.

Tu już widzę znaczną poprawę czułości. Z wykresu w danych katalogowych (Max. Envelope Duty Cycle vs. Burst Length) wychodzi, że 50% sekwencje paczka-przerwa przy długości paczki = 20 impulsów spokojnie mieszczą się w wymaganiach obu TSOPów.

Przy maksymalnej mocy nadawanej tj. wypełnieniu fali nośnej 50% nie jestem w stanie zbudować z czarnego kartonu takich osłon, by TSOPy nie widziały świecenia diody IR. Po osłonięciu diody dwoma warstwami czarnej rurki termokurczliwej, zbudowaniu "domków" wokół odbiorników oraz przycięciu wypełnienia nośnej do 7%, mogę zacząć eksperymenty.

Znów przeszkodą jest moja dłoń i znów zaczynam od powolnych ruchów. Już pierwszy test pokazuje, że TSOPy również i do tak poszatkowanej fali umieją się "przyzwyczaić". Jeżeli wjeżdżam dłonią z prędkością ok. 1cm/s to mogę zrobić to nawet w odległości 5cm przed nosem czujnika a i tak sygnału nie dostanę. Znacznie szybsze ruchy pokazują, że jednak coś tam się odbiera. Mały pokazuje stabilne zero w odległości ok 20cm, duży nawet przy ponad 30cm. Bardzo gwałtowny ruch ręką (1m/s?), czyli gwałtowne wjechanie dłonią w wiązkę IR i zatrzymanie umożliwia jej pewne wykrycie z odległości nawet 40cm obu TSOPom. Co najważniejsze, sygnał wyjściowy pozostaje aktywny w czasie obecności przeszkody czyli - jakby coś działa 😐 choć ja zadowolony nie jestem. Nie każdy buduje tak szybkie roboty, by obiekty dawały tak szybkie czasy narastania promieniowania IR - bo przecież do tego cale to machanie się sprowadza.

Przypadek 3: paczki i przerwy jak poprzednio (20/20), ale rozmieszczone w grupach po 5 paczek z długą ciszą.

Przed tą próbą zastanawiałem się jak podejść TSOPa by jednak zechciał pokazać całe swoje możliwości i wymyśliłem. E tam, żadne to odkrycie: trzeba udawać jakąś transmisję, jakiś kod zdalnego sterowania do którego był projektowany. Nie musi to być oczywiście nic konkretnego, ale ważne jest by paczki były zgrupowane obok siebie a potem następowała dłuższa przerwa. Wtedy TSOP "odpoczywa" i jego automatyka ma czas, by ustawić się znów na duże wzmocnienie. Przerwa nie musi być długa - u mnie wystarczyła ok. 20ms i TSOP był gotowy do odbioru następnej grupy paczek. Tak generowane oświetlenie IR pozwalało pewnie wykryć dłoń z odległości ok. 60cm (mały) i 40cm (duży). Mnie w białej koszulce mały dostrzega już z ok. 2m. Teraz dopiero widać różnicę w czułości obu odbiorników deklarowaną przez producenta (0.08 względem 0.15W/m²). Co więcej, odbierane paczki zaczynają być "analogowe". Otóż nie każda grupa 5 paczek produkuje 5 impulsów wyjściowych. Na granicy zasięgu raz są one trochę dłuższe, raz krótsze a niektórych nie ma wcale. Program może sprawdzać, czy na końcu każdej paczki dostał stan niski z TSOPa i na podstawie liczby wygenerowanych paczek w grupie oraz liczby odpowiedzi szacować jak daleko jest przeszkoda. Dzięki czasowi "odpoczynku" TSOP za każdym razem jest nastawiony na pełną czułość i każdą grupę odbiera z największym możliwym zasięgiem. Tak, to zwalnia reakcję czujnika, przykro mi, ale za 5zł dostajemy kompletny tor odbiorczy - nie ma co wybrzydzać. Można tu eksperymentować z czasami ciszy między grupami, bo np. mały TSOP "odpoczywał" już przy 10ms i właściwie tyle mu wystarczało by znów był w pełni gotowy do odbioru kolejnej paczki. Duży natomiast przy 10ms wciąż "widział" następną grupę jako kontynuację poprzedniej i powracał syndrom "szybkiego machania" i słabego zasięgu.

We wszystkich eksperymentach 5mm diodkę IR napędzałem prądem 50mA a dodatkowo w próbach 2 i 3 musiałem zmniejszyć 37kHz PWM do 8% tylko z tego powodu, że nie umiałem zrobić wystarczających osłon pomiędzy diodą a TSOPami. To pokazuje, że odpowiednie przygotowanie nadawanego sygnału ma dużo większe znaczenie (i jest dużo bardziej sensowne) niż pchanie setek mA w nadajnik tylko po to, by rozwiązać problem "siłowo".

Na koniec kilka obrazków.

Jedna paczka 20 impulsów fali nośnej oraz opóźnienie sygnału z TSOPa:

To samo, ale sygnał IR jest dużo słabszy. Pojawiają się zniekształcenia impulsu wyjściowego. Tak działa TSOP na granicy zasięgu:

Paczki po 20 impulsów z przerwami o długości 20 okresów fali nośnej. TSOP dał się podejść szybkim machnięciem dłoni i na wyjściu prezentuje śliczny prostokąt:

Samotna grupa 5 paczek (20 impulsów / 20 okresów przerwy). Brak przeszkody w stożku promieniowania IR, więc i brak sygnału wyjściowego:

Coś się pojawia na granicy zasięgu. Procesor obserwuący impulsy "powrotne" zaliczy pewnie jeden lub dwa co znaczy, że przeszkoda jest mała i daleko (lub np. blisko i bardzo czarna) - jak w czujniku analogowym 🙂

Tym razem to kartka A4 w odległości 1m - pewne 5 impulsów odpowiedzi:

Grupy po 5 paczek z 10ms ciszą między nimi - TSOP1136 jeszcze zadziała (na kanale niebieskim jego odpowiedź na dłoń z 40cm), ale ten mniejszy już się zbuntuje i trzeba mu grupy rozsunąć na min. 20ms:

To chyba wszystko, jeśli coś mi jeszcze przyjdzie do głowy, dam znać.

Pytania jak zwykle mile widziane 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Do wyprodukowania przebiegów jakie opisałem wczoraj potrzebne mi były dwa timery: jeden pracował w trybie PWM z programowanym okresem - temu jednokrotnie wystarczyło ustawić 37kHz i czasami, na żądanie zmieniać tylko wypełnienie. Drugi pracował u mnie w trybie free run z tym samym zegarem co pierwszy. Wykorzystałem tu przerwanie od komparacji i wpisywałem do odpowiedniego rejestru OCR następny stan timera przy którym chcę przerwanie dostać. Dzięki temu nie gubiłem ani jednego okresu zegara, bo nie zatrzymywałem timera. Ponieważ pracowały synchronicznie, to przerwania wypadały dokładnie wtedy gdy sobie to wyliczyłem i mogłem w funkcji obsługi manipulować bitami odpowiedzialnymi za sterowanie wyjściem OC pierwszego timera. Dzięki kilku licznikom programowym powstawały paczki a potem całe grupy wraz z okresami ciszy.

Mając jakiś większy procesor (np. mega128), można do tego wykorzystać specjalny modulator. Jest on podłączony do wyjść dwóch timerów i potrafi samodzielnie włączać i wyłączać przebieg PWM na jednym z wyjść OC. Takie coś zrobi "sprzętowo" paczki i odstępy. Teraz wystarczy już tylko co jakiś czas (np. co 30ms) startować grupę a za chwilę (np. po czasie wystarczającym do wysłania 5 paczek) wyłączać cały interes.

Do wstępnych prób nie trzeba nawet używać procesora. Trzy układy 555 połączone szeregowo zrobią to samo. Wyjście pierwszego trzeba podłączyć do wejścia RST drugiego i analogicznie, wyjście drugiego do RST trzeciego. Pierwszy będzie wyznaczał całe grupy i czasy ciszy, drugi będzie w czasie grupy robił paczki a trzeci w czasie każdej paczki wyśle 36kHz fali nośnej. Na końcu diodka IR sterowana wprost z wyjścia. Zwykły, bipolarny 555 może sterować obciążeniem do 200mA więc jest to i tak o wiele więcej niż trzeba.

Każdy 555 trzeba wyposażyć w dwa potencjometry: jeden do zmany częstotliwości a drugi do zmiany wypełnienia. Na końcu i tak przyda się oscyloskop żeby wiedzieć, co akurat jest ustawione i żeby zapamiętać czasy, przy których ten akurat TSOP działa najlepiej.

Widać, że działanie TSOPów bardzo zależy od rodzaju AGC jaki Vishay wbudował do środka. Ciekaw jestem Waszych doświadczeń na tym polu z uwzględnieniem klasy AGC (1,2,3,4..?), do jakiej dany odbiornik należy. Jedne kody zdalnego sterowania mają specjalne, długie rozbiegówki służące stabilizacji poziomu wzmocnienia (np. NEC) i tutaj wystarczą TSOPy z wolno "przyzwyczajającą" się automatyką a inne mają tylko dwa zwykłe bity (np. RC5) i już układ powinien być gotowy do bezbłędnego odbioru pozostałej, najważneijszej części transmisji. W naszym przypadku dłuższe czasy są gorsze, bo zmuszają nas do dłuższych odstępów między grupami i zwalniają działanie czujnika.

Teraz wpadłem na pomysł jeszcze jednego pomiaru: jak na czułość wpływa długość grupy? Jeżeli w grupie zawrzemy nie 5 a np. 50 paczek (chyba nie ma tak długich kodów zdalnego sterowania, ale niektóre TSOPy są rekomendowane do odbioru ciągłych danych cyfrowych), to czy pod koniec takiej serii TSOP będzie już "przyzwyczajony" do poziomu sygnału i ogon grupy zawsze będzie odbierany dobrze? Tego akurat nie chcemy, bo przecież wszystkie te próby miały na celu właśnie wyeliminowanie automatyki wzmocnienia i zmuszenie TSOPa do pracy z maksymalnym (lub jakimś innym, ale w miarę stałym) wzmocnieniem. Dlatego wydaje mi się, że długość grupy powinna być raczej krótka. 5 paczek na pewno działało OK 🙂

Link do komentarza
Share on other sites

Mając jakiś większy procesor (np. mega128), można do tego wykorzystać specjalny modulator. Jest on podłączony do wyjść dwóch timerów i potrafi samodzielnie włączać i wyłączać przebieg PWM na jednym z wyjść OC. Takie coś zrobi "sprzętowo" paczki i odstępy. Teraz wystarczy już tylko co jakiś czas (np. co 30ms) startować grupę a za chwilę (np. po czasie wystarczającym do wysłania 5 paczek) wyłączać cały interes.

Dużo zabawy. Zwłaszcza że połowy nie zrozumiałem 🙂.A nie prościej wysyłać jakiś kawełek kodu w rc5 ? Jakiś tam rzadko używany przcisk czy coś takiego i tak sygnał powracający trzeba demodulować a dzięki takiemu rozwiązaniu możemy to obsłużyć trzema linijkami w Bascomie .

Link do komentarza
Share on other sites

@Tolo: w ogóle można z modulacją fajne rzeczy robić. Np. modulować wysyłany sygnał sygnałem z UARTa na różnych diodach i sprawdzać odebrane bajty - robi się taki niby "radar" (LIDAR 😉 ). Z ukłądów jedyne co potrzebujemy to procesor oraz multiplekser. W przerwaniu od wysłania bajtu byłby przełączany kanał MUXa oraz łądowany kolejny znak. Trzeba by co prawda tak dobrać znaki, aby dawały ten sam zasięg, ale jest do zrobienia dość prosto. Z drugiej strony zwykłe pakietowanie można zrobić na głupim ATtiny13 i mieć gotowy zintegrowany czujnik.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.