Skocz do zawartości

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


Treker

Pomocna odpowiedź

Ok, w sumie logiczne.

Natomiast bardziej mi chodzi o to, czy jesteśmy w stanie zrobić robota "stealth". Czyli jego ściany nie byłyby matowe, tylko błyszczące - oraz pochłaniające. Przy pojawiających się konkurancjach minosumo na dużym ringu, takie coś ma ogromny sens.

Zastanawiam się nad jakimiś prostymi materiałami. Kiedyś malowałem robota czarną farbą w sprayu Games Workshop (do modeli) - i dawało trochę, ale nie dość (sharp analogowy miał jakieś 40-45cm zasięgu powyżej którego myślał, że sygnał nie wraca, ale ściany miałem raczej prostopadłe). Chodzi mi raczej o zrobienie właśnie takiej a'la piramidki, która będzie odbijać promienie w górę oraz je pochłaniać. Taki kształt na ultradźwięki też powinien działać.

Link do komentarza
Share on other sites

Niestety masz dobry pomysł. Niestety, bo próbujemy tu wymyślić dobry czujnik wykrywający np. robota a tu proszę, do jakich ciekawych rzeczy dochodzimy 🙂

Tak, czarna, matowa piramidka wydaje się idealna. Gdyby chodziło tylko o podczerwień, to nawet nie trzeba upychać tego w ostrosłupie. Wystarczyłoby zrobić boczne ściany o powierzchni nazywanej "retroreflecting" czyli czegoś pokrytego rowkami o takim przekroju by odbijały wszystko np. pod kątem 60° w górę. To pewnie dałoby się wyfrezować lub wydrukować. Potem malowanie na czarny mat i jesteśmy czarną dziurą w przestrzeni.

Gorzej z ultradźwiękami - tutaj muszę się zastanowić. Oczywiście duża płaska, ukośna powierzchnia bez wyraźnych krawędzi (tam fala ulega dyfrakcji i pewnie tam powstaje też echo) czyli właśnie delikatnie zaokrąglona piramidka wyłożona.. hm, czarnym, matowym pluszem 🙂 byłaby idealna.

Być może da się coś wymyślić ciekawszego na podstawie założenia, że większość ludzi używa czujników 40kHz ± kilka procent. Fala ma wtedy ok. 8mm i być może da się zrobić taką powierzchnię, która tego nie odbija. Pierwszy pomysł na gorąco: rowki o głębokości 2mm. Jeżeli złożymy odbicie od górnej powierzchni rowka z tym od dolnej, to fala wypadkowa będzie złożeniem dwóch o przesunięciu 180° (bo to co wpadnie w rowek będzie miało do pokonania drogę o 2x2=4mm dłuższą) i dla częstotliowości 40kHz prawie nic nie powinno wracać - to taki rodzaj filtra interferencyjnego wygaszającego falę odbitą akurat w tym paśmie.

Być może rowki będą tłumiły bardziej niż górna powierzchnia i wtedy stosunek powierzchni rowka do reszty powinien być inny niż 1:1? Być może rowki będą działały jak rezonatory i będzie jeszcze gorzej lub przesunięcie fazy będzie inne niż wyobrażenia totalnego lamera?

Ech, przydałby się ktoś od akustyki, żeby ocenił czy nie są to zupełne brednie.

Link do komentarza
Share on other sites

Mini Stelth. Też nad czym takim dumałem.

Pierwszy aspekt to kształt robota, piramidka jest najprostsza.

Z czego to teraz wykonać ? Jeżeli przyjmiemy propozycję kolegi Marka 1707, to ścianki musiałby być dosyć grube, bo ok 4mm, aby zachować jednocześnie wytrzymałość, na uderzenia, i twarde.

Drugi problem to zakres fal dla TSOPów od 30KHz do 56KHz, sporo a jest to tylko zakres podstawowy, bo istnieją TSOPy na ponad 400KHz.

Trzeci problem. Jak zabudować nasze czujniki, aby, nie zakłucić kształtu bryły ?

Czwarta sprawa. My też musimy mieć jakieś czujniki do wykrycia przeciwnika, więc ? Tak naprawdę nie znikniemy całkowicie, bo będziemy do wykrycia, właśnie z tego powodu.

Co możemy uzyskać ? Stelth to nie duch, pojazd nie stanie się przeźroczysty jak powietrze. Natomiast możemy skutecznie, opóźnić jego wykrycie, minimalizujac czas na reakcje przeciwnika, co daje większe szanse na jego zaskoczenie, atakiem z niespodziewanej strony.

I tutaj pojawia się kwestia czujników, też powinny być niestandardowe, aby utrudnić, nasze wykrycie, czujnikom przeciwnika. My chcemy widzieć, ale tak, aby nie było widać nas.

PS. Można koncepcję Stelth też próbować odwrócić, czyli stać tak bardzo widocznym, że zaczniemy sie w oczach przeciwnika dwoić i troić, a problem nie stanie się, gdzie jesteśmy, tylko który "my" jest prawdziwy. Ale ta koncepcja w MS odpada, bo taki system byłby aktywnym układem zakłucającym pracę czujników przeciwnika.

Link do komentarza
Share on other sites

Z tymi TSOPa to coś nie teges, bo pisałem o ultradźwiękach a to są chyba układy podczerwone.

W sumie to ciekawe rzeczy tutaj wychodzą. Dziś wydaje mi się, że zrobienie "niewidzialnego" robota jest łatwiejsze niż zrobienie porządnego czujnika. Chyba najgorsza sytuacja jest właśnie w ---sumo, bo nawet jeśli udałoby się zrobić dobry czujnik wykrywający "czarny plusz" z metra i na dodatek z pomiarem odległości, to będzie to w warunkach amatorskich duże i drogie. Umieszczenie tego np. na obrotowej podstawie, żeby mieć ogląd całego otoczenia jest niepraktyczne a ponieważ pomiar odległości musi mieć z założenia dość wąski kąt widzenia to takich czujników nieruchomych trzeba by wbudować pewnie kilka na jedną stronę - jeszcze gorzej.

A wracając do wątku robienia czujników. Ostatnio skończyłem na prostym układzie ze wzmacniaczem i filtrem pasmowoprzepustowym. Ta technika jest tak prosta, że chyba nie trzeba tu już nic wyjaśniać. Mamy sygnał z zakłóceniami, bierzemy fototranzystor z małym opornikiem by nic go nie ośłepiło, sygnał wzmacniamy, odfiltrowujemy tylko to co nas interesuje, przepuszczamy przez detektor robiący z AC sygnał stałoprądowy i mierzymy to przetwornikiem A/C lub komparatorem. Proste. Gdyby ktoś miał ochotę przerobić układ dla innej częstotliwości to polecam narzędzie Texasa:

http://www.ti.com/tool/filterpro

Teraz chcę pokazać troszkę inne podejście. Jakiś czas temu zrobiliśmy układ przetwornika I/U, który został wykorzystany w systemie wieloczujnikowym. Jeden wyróżniony fototranzystor mierzył światło z otoczenia a wszystkie inne dostawały ten sygnał i odejmowały go sobie tak, by na wyjściu dostać czysty sygnał z odbicia od przeszkody. Wykorzystajmy tę samą technikę odejmowania raz jeszcze po to, by zrobić czujnik odbiciowy z automatyczną kompensacją oświetlenia oraz wstępnym filtrowaniem zakłóceń.

Na początek znany już fototranzystor podłączony do przetwornika I/U. Takie coś nazywane jest w literaturze wzmacniaczem transimpedancyjnym (transimpedance amplifier) i najczęściej - choć nie zawsze, występuje w parze fotodiodą lub innym elementem dającym sygnał prądowy. Wzmocnienie normalnego wzmacniacza napięciowego określane jest w [V/V] i często podawana w opisach wzmacniaczy operacyjnych wartość, przykładowo 100V/mV oznacza, że na każdy 1mV zmiany na wejściu otrzymamy 100V zmiany na wyjściu, co w oczywisty sposób oznacza wzmocnienie x100000 V/V. We wzmacniaczu transimpedancyjnym na wejściu mamy prąd a na wyjściu napięcie, tak więc jego wzmocnienie będziemy wyrażać np. w V/A. Ponieważ V/A to są Ω, często w literaturze wzmocnienie takiego układu podawane jest właśnie w jednostkach rezystancji. Wielu z Was już się zapewne domyśliło, że budując prosty wzmacniacz trans..itd za jego wzmocnienie odpowiada wyłącznie opornik sprzężenia zwrotnego. Jeśli wstawimy tam 2kΩ to właśnie takie wzmocnienie ma nasz wzmacniacz a oznacza to, że po pobudzeniu prądem np. 100uA dostaniemy na wyjściu zmianę napięcia o U=I*R czyli 100uA*2kΩ tj. o 200mV. Wiedząc to możemy zupełnie spokojnie szacować działanie zespołu fototranzystor-wzmacniacz transimpedancyjny:

W powyższym układzie na wyjściu będzie normalnie 1.5V i napięcie to będzie się zwiększało o 2mV na każdy 1uA prądu fototranzystora. Napięcie 1.5V utrzymuje się jednocześnie na kolektorze fototranzystora i raczej nie powinniśmy tam planować mniej niż 1V. Oczywiście z drugiej strony te 1.5V zawęża nam zakres zmian napięcia wyjściowego a np. przy LM324 i Vcc=5V zostaje nam już tylko jakieś 2-2.5V ruchu w górę. Trzeba dobrze wybrać.

Ponieważ układ ten jest zupełnie bezbronny w stosunku do oświetlenia zakłócającego (bo równie dobrze wzmacnia składową stałą, 50Hz, 100Hz jak i nasz sygnał kHz) to musimy go ulepszyć. Wiemy już jak oddzielić zakłócenia od sygnału użytecznego: użyjemy filtra. Tym razem prosty filtr dolnoprzepustowy wydzieli nam z całości wyjścia tylko to, czego użyjemy do kompensacji punktu pracy: składową stałą i niechciane 50/100Hz:

Co dalej? Teraz to już wystarczy lekko ten sygnał wzmocnić i zamknąć pętlę sprzężenia zwrotnego do węzła sumującego prądy, czyli do kolektora fototranzystora:

Otrzymaliśmy układ, który ma całkiem niezłe wzmocnienie określone opornikiem Rfb, ma wydzielanie niechcianych sygnałów w filtrze dolnoprzepustowym RF1/CF1 oraz automatyczną kompensację punktu pracy fototranzystora. Na pewno już wiecie jak to działa.

Jeżeli czujnik zobaczy światło stałe, popłynie jakiś stały prąd kolektora który wymusi wzrost napięcia na wyjściu U1A wg znanego wzoru U=Ic*Rfb. Ten wzrost z łatwością przedostanie się przez filtr RC. Wzmacniacz nieodwracający U1B trochę to wzmocni a opornik R3 zamieni sygnał napięciowy z jego wyjścia na sygnał prądowy. Ten prąd wypływający z wyjścia wzmacniacza U1B "zasypie" stały prąd Ic, który płynie przez fototranzystor i przywróci równowagę napięcia na wyjściu U1A. To samo dzieje się z niskimi częstotliwościami. One też przechodzą przez filtr i dzięki sprzężeniu zwrotnemu są silnie tłumione już na samym wejściu. Im wyższa częstotliwość, tym gorzej przechodzi przez filtr RC i tym słabiej kompensacja oddziaływuje na wejście i tym więcej tego sygnału mamy na wyjściu.

Takie coś zbudowane na podwójnym wzmacniaczu operacyjnym (tu dałem przykładowy LM258) może być fajnym punktem wyjścia do dalszych eksperymentów już w samym procesorze. Po spróbkowaniu sygnału w ADC można napisać programowe filtry pasmowoprzepustowe i detektor, można rozbudować układ o detekcję synchroniczną itd. W każdym razie dobrze dobrane wzmocnienie główne (Rfb), prawidłowo dobrany filtr RC oraz opornik sprzężenia zwrotnego R3 pozwolą na bardzo dobrą kompensację oświetlenia stałego przy zachowaniu dużej czułości układu.

Następnym razem doczepimy do tego sprzętowy detektor synchroniczny. Nie będzie trzeba liczyć żadnych filtrów strojonych a układ i tak będzie wydzielał tylko tę częstotliwość, z jaką mruga nasza LED i od razu pokazywał to na wyjściu jako napięcie stałe, gotowe do zmierzenia w ADC. Przygotujcie więcej wzmacniaczy - LM324 będzie w sam raz 🙂

EDIT: Po ponownym przeczytaniu dodałem kilka zdań wyjaśnień.

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

Pewnie wielu z Was poświęca ostatnio cały swój wolny czas na dopracowanie konstrukcji przez zawodami w Łodzi. Mnie obowiązki trochę przycisnęły i dopiero dziś mogę dopisać obiecany ciąg dalszy. A więc do rzeczy: doszliśmy do układu wzmacniacza wejściowego odpornego na oświetlenie stałe. Dzięki sprzężeniu zwrotnemu potrafi on dopasować swój punkt pracy tak, by napięcie na tranzystorze było zawsze takie, jak sobie ustaliliśmy wcześniej. Umiemy zmieniać też czułość układu (opornik Rfb) a po dołączeniu filtra pasmowoprzepustowego możemy wydzielać sygnał użyteczny. Potem wystarczy dołączyć na wyjściu prostownik diodowy (lub inny) i mamy napięcie stałe pokazujące ile naszego sygnału zmiennego jest tym co odbiera fototranzystor. Czy to jest proste? Idea chyba tak, ale realizacja filtrów, ich liczenie, dobieranie oporników i kondensatorów wcale już takie miłe nie jest. A co zrobić gdy chcemy zmienić częstotliwość? Cóż, trzeba przeliczyć wszystko raz jeszcze, wylutować wiele elementów, wymienić i zrobić ponowne testy. Na szczęście nie jest to jedyne rozwiązanie.

Dawno temu ludzie nauczyli się przeprowadzać na sygnałach nie tylko proste operacje dodawania i odejmowania - co każdy może sobie z łatwością wyobrazić, ale także np. mnożenie. To ostatnie ma m.in. tę ciekawą właściwość, że oprócz oddawania iloczynu wartości chwilowych, dokonuje jakby porównania znaków. Na wyjściu dostaniemy sygnał > 0 gdy oba sygnały będą miały ten sam znak a wyjście będzie < 0, gdy znaki wejść będą różne. Nawet jeżeli operację mnożenia dwóch sygnałów o takich samych częstotliwościach i fazach będziemy wykonywać ze znakiem i oba sygnały będą zmieniać swoją polaryzację, to na wyjściu układu mnożącego dostaniemy tylko przebieg dodatni a ten - zawiera składową stałą. Wielkość tej składowej będzie w oczywisty sposób zależała od amplitudy przebiegów wejściowych ale nie tylko. Zmiany fazy też będą wpływały na wartość wyjściowej składowej stałej. Najciekawszy jest jednak fakt, że jeśli częstotliwości mnożonych przebiegów nie będą identyczne, składowej stałej (uśrednionej za dłuższy czas) nie będzie.

Być może w pierwszej chwili wydaje się to trochę zakręcone, ale po kilku rysunkach wszystko staje się jasne 🙂

Wyobraźmy sobie układ mnożący, na którego oba wejścia podaliśmy ten sam sygnał sinusoidalny. Na wyjściu dostajemy jego kwadrat: częstotliwość jest dwa razy większa (co nas akurat nie obchodzi ale w wielu aplikacjach jest istotne) oraz pojawia się składowa stała - przebieg wyjściowy nie jest już symetryczny względem zera.

To było proste. Teraz zmieniamy amplitudy. Jeden sygnał wejściowy (żółty) dostanie 0.8V a drugi (zielony) 1.5V:

W wyniku prostego mnożenia otrzymaliśmy sygnał niebieski o amplitudzie 0.8*1.5=1.2V i składowej stałej = 0.6V.

Zobaczmy co się stanie, gdy przesuniemy przebiegi wejściowe w czasie, czyli trochę zmienimy im fazę. Opóźnię przebieg źółty o 200us czyli o 1/5 okresu (72 stopnie):

Sygnał wyjściowy (niebieski) zachował swoją amplitudę ale co się stało ze składową stałą? Sinusoida wyraźnie się obniżyła. Jeżeli przepuścimy ją przez filtr dolnoprzepustowy dużo "wolniejszy" niż sam sygnał, to dostaniemy właśnie wartość składowej stałej. Chętni mogą policzyć jak zmienia się wielkość składowej stałej w zależności od kąta przesunięcia fazy 🙂

Tym razem wyjście z filtru uśredniającego iloczyn (10k/1uF) dostało kolor magenta. Mimo iż powoli narasta (tak działa filtr) to widać, że z pewnością nie dąży do 0.6V, jaką miało poprzednio.

Dlaczego tak krążę wokół tej składowej stałej? Już się pewnie domyślacie - to ona jest sygnałem wyjściowym naszego detektora. Wypróbujmy zatem jego działanie na sygnałach o różnych częstotliwościach. Niech będzie 1kHz i 1.2kHz:

Widać, że mimo oscylacji sygnału z filtra jego składowa stała jest zerowa. Gdybyśmy zrobili filtr o jeszcze niższej częstotliwości odcięcia (np. 100k/1uF) to oscylacje były mniejsze ale i zmiany sygnału wyjściowego były by dużo wolniejsze. Układ dawałby mniejsze zakłócenia ale kosztem wolniejszego działania. Czyli jak zwykle: handlujemy coś za coś.

Dobra, jak to ma działać? Proste: Otrzymujemy z fototranzystora sygnał pełen zakłóceń, szumów i innych rzeczy. Wśród tego bałaganu jest tam gdzieś sygnał naszej podczerwonej (choć wcale niekoniecznie) diody nadawczej. Może on być wielokrotnie słabszy od reszty ale ma jedną podstawową cechę: znamy jego częstotliwość i fazę - przecież sami go nadajemy. A to, jak się właśnie przekonaliście jest wystarczająca wiedza by zaprząc do roboty detektor synchroniczny. Wystarczy sygnał z fototranzystora wymnożyć z sygnałem prostokątnym naszej LEDy, odfiltrować składową stałą i mamy echo przedmiotu stojącego przed czujnikiem. Jak mnożyć w prosty sposób bez użycia drogich układów mnożących i jak wygląda cały układ - następnym razem, dzisiaj już padam.

Na koniec tylko obraz z oscyloskopu.

Zrobiłem prosty układ, w którym dioda nadawacza wysyła falę 5kHz przez 1/2 sekundy. Przez drugie pół jest cisza. Dioda sterowana jest z małego tranzystora npn prądem ok. 200mA w impulsie. Symuluje to pokazywanie się przeszkody albo świecenie w pustkę, gdzie kompletnie nic nie wraca do fototranzystora. Rzeczywistą przeszkodą był w tym przypadku mój kot siedzący w odległości ok. 1 metra od czujnika. Ciekawe czy koty widzą podczerwień?

Niebieski to sygnał ze wzmacniacza - na wejściu układ z poprzedniego postu plus wzmacniacz bez żadnego filtrowania. Na żółto sygnał wyjściowy z detektora synchronicznego. Ponieważ podstawa czasu była bardzo wolna, 1s/dz to udało mi się na kilka sekund włączyć lampkę ze ściemniaczem na triaku. Układ ten daje bardzo fajne zakłócenia przechodzące przez wzmacniacze wejściowe jak nóż przez masło. Jak widać detektor synchroniczny nie jest nimi zainteresowany. Niezależnie od poziomu zakłóceń wykrywa kota (który niestety rozglądał się w tym czasie trochę, lampa mu wyraźnie przeszkadzała) bez żadnego problemu. Oczywiście sygnał rośnie kwadratowo z malejącą odległością więc machnięcie dłonią z 50cm wywala żółty przebieg poza ekran. To samo stalowy drut 3mm z odległości 20cm.

Oczywiście do myszy czy LFów taka czułość nie jest potrzebna ale już przy omijaniu jakichś przeszkód czy poszukiwaniu kogoś "na ubitej ziemi", przyda się na pewno. A gdy zmniejszymy czułość wzmacniaczy wejściowych nadal pozostanie fantastyczna odporność detektora synchronicznego na zakłócenia 🙂 OK, na dzisiaj to już naprawdę koniec..

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

OOj Marku, nawet sobie nie zdajesz sprawy jak pomagasz 🙂 byłbym wdzięczny za (nawet krótki) ciąg dalszy, tym bardziej, że za 2 tygodnie roboticarena, na którą chciałbym zdążyć z minisumo.

Link do komentarza
Share on other sites

Schemat? Acha, to bierzemy wzmacniacz z układem DC serwo stabilizującym punkt pracy, układ mnożący, filtr i.. co? Mnożący? Ech.. O ile dodawanie i odejmowanie jest względnie proste, o tyle mnożenie już takie nie jest. I to zarówno w technice cyfrowej (układ kombinacyjny - czyli mnóstwo bramek albo układ sekwencyjny - czyli mnóstwo czasu) jak i analogowej. Najbardziej znaną metodą mnożenia sygnałów analogowych jest tzw. układ Gilberta, wykorzystywany z pewnymi ulepszeniami w "dorosłych" scalonych mnożarkach. Jeśli ktoś jest bliżej zainteresowany tematem, proponuję krótkie wprowadzenie:

http://www.analog.com/static/imported-files/tutorials/MT-079.pdf

Analogowe układy mnożące są względnie drogie, ponieważ muszą być bardzo precyzyjnie wykonane. Taka technologia, trymowanie osobno każdej struktury krzemowej laserem kosztuje masę czasu i sprzętu, co w bezpośredni sposób przekłada się na koszt scalaka. A co zrobić, gdy wypada zrobić coś takiego jak poniżej?

Uniwersalny detektor synchroniczny tzn taki, który wykrywa dowolny (a już w szczególności sinusoidalny) sygnał musi gdzieś mieć układ mnożący. Dzisiaj produkowane do celów laboratoryjnych takie przyrządy coraz częściej mają wbudowany bardzo szybki procesor sygnałowy, dobre przetworniki A/C i tam mnożenie oraz całą dalszą obróbkę sygnału wykonuje program. Chcący zaopatrzyć się w taki sprzęt powinni szukać hasła "lock-in amplifier" bo tak jest to nazywane. Czy jesteśmy na to skazani w naszych prościutkich konstrukcjach?

Niekoniecznie. Możemy bowiem skorzystać z pewnej cechy naszego sygnału, mianowicie z tego, że poszukiwanym "wzorcem" jest przebieg prostokątny. Takie coś, generowane przez procesor i wpuszczane do drivera diody LED ma przecież (z dobrym przybliżeniem) tylko dwa stany: wysoki i niski. Jeżeli przyjmiemy, że wysoki to +1 a niski to -1, to w odbiorniku mnożenie x*(+1) oraz x*(-1) możemy zastąpić prostą operacją zmiany znaku. Prostą, bo łatwiejszą niż analogowe mnożenie ale jednak.. jak to zrobić?

Zobaczmy: mamy sygnał analogowy ze wzmacniacza wstępnego. Musimy go teraz przepuścić przez coś tak, by w czasie "górek" sygnału nadawanego (czyli czasie świecenia diody LED) nasz układ miał wzmocnienie +1 a w czasie "dołków" wzmocnienie -1. Jeśli już coś czytaliście o wzmacniaczach operacyjnych to zapewne pamiętacie, że mogą one pracować w dwóch podstawowych konfiguracjach: odwracającej i nieodwracającej. Każda z nich opiera się na wzmacniaczu z pętlą sprzężenia zwrotnego zamkniętą dwoma opornikami. Układ odwracający ma wzmocnienie przykładowo -(R1/R2) a nieodwracający 1+(R1/R2). I właśnie ta jedynka jest rozwiązaniem. Jeżeli R1=R2 to ten pierwszy będzie miał wzmocnienie -1 a drugi +2. Czy to wystarczy? Tak, bo można zrobić układ w którym sygnał podamy na oba wejścia 🙂 i dodamy prosty przełącznik:

Jeżeli na bramkę podamy stan wysoki, tranzystor jest załączony i praktycznie zwiera to wszystko co miałoby dostać się na wejście (+). Wzmacniacz widzi wtedy sygnał tylko na wejściu (-) a ponieważ R1=R2 to wzmocnienie wynosi -1. Jeśli tranzystor wyłączymy, przestaje on w układzie istnieć. Sygnał dochodzi zarówno do gałęzi (-) i tam mamy wzmocnienie -1 oraz do gałęzi (+), gdzie wzmocnienie wynosi +2. Jakie będzie wzmocnienie sumaryczne? Tak, +1. Mamy więc układ "mnożący" przez +1 lub -1 🙂

Ja jednak nie użyłem czegoś takiego w moim modelu. Powyższy układ działa fajnie gdy wzmacniacz jest zasilany napięciem symetrycznym. Co prawda dałoby się podłączyć tranzystor MOSFET do napięcia masy pozornej i tym samym zmusić wzmacniacz do pracy przy zasilaniu niesymetryczym ale.. pociąga to kolejne problemy - rozwiązałem to inaczej.

Przypomnijmy sobie co z sygnałem dzieje się dalej. Po układzie mnożącym musi być filtr dolnoprzepustowy po to, by wydzielić składową stałą. Składowa stała to w tym przypadku nic innego jak różnica pomiędzy wszystkim tym co przyszło do nas w czasie "górki" a tym co przyszło w czasie "dołka". Kondensator filtra jest jakby "przeciągany" na stronę dodatnią w czasie górek i na ujemną w czasie dołków. Jeżeli przebieg wejściowy jest rzeczywiście losowy i nie zawiera żadnych śladów naszego sygnału (czyli czegoś co jest zgodne w częstotliwości i w fazie z naszym prostokątem) to górki będą średnio takie same jak dołki i składowa stała będzie zerowa. To może, zamiast robić jeden układ mnożący i uśrednianie w czasie, rozdzielić sygnał w przestrzeni?

Ja właśnie tak zrobiłem i to działa 🙂 Wyobraźcie sobie, że napływa do nas strumień "górek" i "dołków" ze wzmacniacza wstępnego. Te pierwsze kierujemy przełącznikiem do jednego zbiornika a te drugie do drugiego. Co będzie się w zbiornikach gromadzić? W pierwszym będziemy mieć same "górki" a drugim same "dołki". Jeżeli napięcia w obu zbiornikach będą równe to znaczy, że obie części były takie same i naszego sygnału nie odbieramy. Kiedy równowaga zostanie zachwiana to znaczy, że mamy na wejściu coś co jest zgodne w fazie i częstotliwości z tym czego oczekujemy 🙂 Teraz wystarczy już tylko układ wykrywający różnicę napięć, czyli.. wzmacniacz operacyjny w układzie wzmacniacza różnicowego:

Przełącznikiem analogowym został u mnie multiplekser 4052 bo akurat taki wpadł mi w ręce, ale może to być dowolny układ tego typu: dwie bramki 4066, multiplekser 4053 itp. Istnieją też malutkie przełączniki analogowe, dokładnie takie jak tu potrzebny (tzw. SPDT), które zaoszczędzą wiele miejsca i zamiast 14 czy 16 nóżkowej obudowy mają np. SOT23-6.

4052 - dokładnie tak jak przekaźnik (tylko milion razy szybciej) przełącza nam sygnał z wejścia Y na wyjście Y0 albo Y1 w zależności od stanu wejścia adresowego A. To właśnie jest to rozdzielanie sygnału "w przestrzeni". Sygnał prostokątny który "napędza" naszą diodę LED podajemy na wejście A. Stan wysoki podłącza nam Y1: oczekiwane "górki" wpadają do kondensatora C1. Stan niski podłącza wyjście Y0 i "dołki" wpadają do C2. Wzmacniacz różnicowy pokazuje na na wyjściu różnicę między napięciami obu "zbiorników" - kondensatorów C1 i C2. Przy okazji różnicę tę wzmacnia 560k/22k czyli ponad 25 razy a napiecie wyjściowe jest odniesione do masy 🙂 Dzięki temu nie muszę zastanawiać się gdzie jest zero sygnału - jest na 0V. Prosty filtr obcina zakłócenia na wyjściu wzmacniacza różnicowego a napięcie z kondensatora C4 mierzę to przetwornikiem A/C albo wypuszczam na oscyloskop i widzę.. np. szaro-burego kota.

Następnym razem spróbuję sklecić jakiś kompletny schemat choć już teraz na pewno jesteście w stanie zrobić to sami. Wiele zależy od oczekiwanych czułości, od posiadanych elementów optoelektronicznych itp. ale z drugiej strony łatwość regulacji wzmocnień w poszczególnych stopniach i elastyczność układu na pewno zachęca do własnych eksperymentów. Opiszę też jak w poszukiwaniu większych zasięgów dotarłem do progu czułości fototranzystorów, jak to się objawia i dlaczego musiałem wyszperać i zamontować fotodiody. Te - mimo dużo słabszego sygnału sprawują się rewelacyjnie nie tylko w jasnym pokoju ale też w kompletnej ciemności a to - jak się okazuje wcale nie jest takie oczywiste i nie ma związku z zakłóceniami.

BTW: Multiplekser 4052 jest tutaj dużym nadmiarem ale zauważcie, że może obsłużyć jednocześnie dwa tory odbiorcze. Jeżeli tylko oba pracują z tym samym sygnałem nadawanym, to oba będą poszukiwać tego samego śladu w sygnałach ze swoich wzmacniaczy. To daje możliwość wykorzystania kanału X układu 4052. Multiplekser 4053 ma nawet trzy takie przełączniki i nadal - jak jego brat 4052 - kosztuje poniżej złotówki 🙂

http://www.tme.eu/pl/details/4052-smd/uklady-logiczne-rodziny-cmos/#

http://www.tme.eu/pl/details/4053-smd/uklady-logiczne-rodziny-cmos/#

Coś mniejszego? W TME znalazłem SPDT w MSOP8, 4 razy mniejsze (i co najmniej tyle razy droższe) niż powyższe CMOSy:

http://www.tme.eu/pl/details/adg719brmz/multipleksery-i-przelaczniki-analogowe/analog-devices/#

Link do komentarza
Share on other sites

Hm, niedobrze, zaczynam rozmawiać sam ze sobą...

Czas na małe podsumowanie. Nie będę cofał się do kamieni łupanych (tj. fototranzystora z opornikiem) i zacznę od układu mającego jakieś praktyczne zastosowanie. Niech wykrywane obiekty nie będą ani czarne ani pluszowe ani nawet nie będą daleko, np. ściana w labiryncie myszy. Robimy taki układ wejściowy:

a jego wyjście podłączamy do przetwornika A/C w procesorze. Tak, to zwykły wzmacniacz ze stabilizacją punktu pracy. Jak z tego zrobić detektor synchroniczny "dla ubogich"? Cóż, programowo. Trzeba pamiętać, że dioda LED musi być napędzana przebiegiem prostokątnym, najlepiej o wypełnieniu 50%. Po każdym zboczu - zarówno opadającym jak i narastającym, trzeba wyzwolić przetwornik A/C i zmierzyć. Ja swój trochę podkręciłem powyżej specyfikacji ale dzięki temu zdążam zrobić 6 pomiarów w czasie każdego półokresu prostokąta 2kHz. W czasie "górki" pomiary sumuję do jednej zmiennej a w czasie "dołka" sumuję do drugiej. Na końcu cyklu liczę różnicę i przekazuję ją do zmiennej globalnej, skąd program może to odczytać. Musi tylko pamiętać, że wynik jest pomnożony x6 ale przecież to tylko kwestia skali.

Mój detektor wyposażony w fototranzystor HPTB3B-14D wykrywa żółtą kartkę 82x82mm dając następujące, stabilne i niezależne od oświetlenia wyniki (już po przeskalowaniu przez 1/6):

>30cm: 0

20cm: 6

10cm: 36

5cm: 160

3cm: 211

2cm: 308

Moim zdaniem do pewnego wykrywania bliskich przeszkód - nadaje się. Poniżej 2cm wyniki spadają bo fotoelementy są w odległości ok 1cm od siebie i po prostu fototranzystor widzi coraz mniejszą część kółka "rysowanego" diodę LED.

Wracając do układu:

Założyłem, że Vcc=5V. R1/R2 stanowią dzielnik napięcia wyznaczający poziom masy pozornej 1.7V. Jeśli ktoś zrobi to na lepszym wzmacniaczu, takim co to pracuje od 0 do Vcc na wejściu i wyjściu, może ten poziom podwyższyć do 2.5V - będzie miał większy zakres zmian napięcia wyjściowego. Czułość regulowana jest potencjometrem R4 a jego rezystancja działa tak jak w typowym układzie fototranzystora z opornikiem w kolektorze. Jeśli ktoś typowo stosuje 22k - proszę bardzo, tyle może ustawić. Wartość 500k jest graniczna i raczej przy tej klasie wzmacniaczy lepiej tego nie przekraczać. To naprawdę jest wtedy czuły układ. Oczywiście w docelowym układzie można zbadać jaka czułość jest potrzebna i zamiast R3+R4 wstawić jeden opornik. Stabilizację punktu pracy zapewnia drugi wzmacniacz pobierający sygnał z filtra dolnoprzepustowego R5/C2. Pętla stabilizacji zamknięta jest rezystorem R8. W przypadku naprawdę silnego oświetlenia, gdy kompensacja może już nie dawać rady (wtedy wyjście wzmacniacza U1B podjeżdża do poziomu ok 3.5V) R8 można zmniejszać nawet do 1k.

Jak widać programowa detekcja synchroniczna jest jednak wymagająca. Kilka pomiarów, a nawet choćby jedna konwersja w każdym półokresie przebiegów kilku-kHz to już zauważalne obciążenie dla procesora. Przy kilku kanałach zaczyna się robić cienko z prędkością przetwornika. Warto to sobie dobrze przemyśleć i tak zaprojektować system, by miał jeszcze siłę robić cokolwiek innego. Mając jeden przebieg prostokątny napędzający jedną lub kilka - to nie ma znaczenia - LEDów, można spróbować zaraz po zboczu odpalać przetwornik w trybie Free Running i w obsłudze przerwania od ADC zmieniać kanały wlocie bez zatrzymywania. Tą metodą da się zmierzyć 4 różne kanały odbiorcze jedną serią ADC. Potem stop przetwornika i czekamy na kolejne zbocze sygnału nadawanego. Do myszy powinno wystarczyć.

Na dobranoc obraz z oscyloskopu.

Niebieski: przebieg 2kHz wysyłany przez diodę LED w przestrzeń.

Żółty: przerwania od ADC obsługiwane programowo. Pierwsza konwersja jest odpalana tuż po zboczu niebieskim ale trwa (jak to pierwsza) dwa razy dłużej. Potem każda następna to już ok. 30us. Po szóstej wyłączam przetwornik (ADCSRA=0) i nic nie robię aż do przerwania od kolejnego niebieskiego zbocza.

Jutro dodam wzmacniacz zmiennoprądowy, by troszkę jednak zasięg podciągnąć a wciąż móc używać ADC w procesorze z sensownym odstępem sygnału od szumu kwantyzacji.

EDIT: No i zapomniałem o wklejeniu rysunków, już poprawiam.

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

Tak patrzę na ten ostatni schemat...:

1. Po co jest ten drugi op-amp? Nie za bardzo rozumiem jak to działa i nie mogę znaleźć opisu podobnego układu... mógłbyś to dokładniej rozpisać co się dzieje?

Próbowałem to zasymulować, ale z wykresów dużo nie wychodzi (jak odetnę drugi op-amp to mamy piękny układ prąd->napięcie. Jak dodam drugi wzm.op. to cały wykres się przesuwa, ale nie za bardzo mogę sobie wyobraźić co wychodzi po odjęciu wyników na ADC

2. Możesz pokazać na oscyloskopie jak układ działa przy samej ledzie i przy ledzie z dodatkowym mocnym szumem? + co dają wyniki z obliczenia na mikrokontrolerze takiego szygnału bez szumu i z szumem?

Dla mnie układ z poprzedniego posta wydaje się lepszy, bo cała "magia" jest robiona na analogówce i tylko czytamy wyniki na ADC... w tym tygodniu powinienem mieć chwilę żeby go złożyć i zobaczyć jak działą w praktyce.

Link do komentarza
Share on other sites

Już Ci odpowiadam. Przede wszystkim to nie jest układ w jakikolwiek spsób tłumiący "szum" przez który - jak rozumiem - nazywasz zakłócenia szerokopasmowe. Oczywiście ma on granice pasma przenoszenia związane z możlwościami samych wzmacniaczy ale nie ma tu specjalnego mechanizmu do ograniczania tego pasma. Masz rację, lewy wzmacniacz jest przetwornikiem prąd-napięcie, o tym pisałem wcześniej. Jest rzeczą oczywistą, że będzie on chorował na to samo co jest bolączką zwykłego fototranzystora z opornikiem: na dobrą czułość na oświetlenie stałe. Właśnie tylko po to został wprowadzony filtr i drugi wzmacniacz. Z filtra dostajemy składową stałą przebiegu ze wzmacniacza transkonduktancyjnego a drugi opamp pracuje w konfiguracji wzmacniacza nieodwracającego ale "postawiony jest" na potencjale masy pozornej. De facto dostajemy więc z niego wzmocnioną różnicę między wyjściem filtra a 1.7V. Jest to nic innego jak sygnał błędu. To ten sygnał mówi nam o tym jak bardzo jest nasz fototranzystor nękany stałym oświetleniem. Tylko tyle i aż tyle. Wpuszczając to na wejście przez rezystor dostajesz automatyczną kompensację punktu pracy. Możesz świecić temu czujnikowi prosto w oczy a jedynym efektem będzie wzrost napięcia stałego na wyjściu prawego wzmacniacza. Sygnał zmienny nałożony na to zakłócenie (oraz wszelki inny "szum") będzie widocznty na wyjściu jak na dłoni. Właśnie dlatego opisałem metodę programowej detekcji synchronicznej by się tych "szumowych" zakłóceń pozbyć. W najprostszym przypadku mógłbyś (zamiast ADC) do wyjścia podłączyć zwykły detektor diodowy i dostałbyś obwiednię, w której byłyby ukryte wszystkie zakłócenia łącznie z Twoim sygnałem użytecznym.

Co jeszcze? Acha. Cóż, mi też podoba się układ sprzętowego detektora ale nie każdy będzie chciał go zbudować (i co to znaczy "lepszy"?). To dwa scalaki i jednak trochę zabawy. Oczywiście, czułość ma dużo większą, nie ma problemu z częstotliwością nośną - możesz sobie wybrać 40kHz i też będzie działał, podczas gdy tak szybkie zrobienie tego z wykorzystaniem ADC w AVR jest niemożliwe. W wersji programowej kilka kHz jest szczytem możliwości. Każdy ma inne upodobania.

Jeśli będziesz symulował ten układ, odpal transient analysis. Najpierw wypracuj sobie sygnał wejściowy: generator np. sinusoidalny lub impulsowy dający np. 5kHz/20mV zsumuj z generatorem impulsowym o okresie bardzo długim ale opóźnionym tak, byś dostał skok składowej stałej np. o 100mV w 10ms po starcie symulacji. Teraz przepuść tę sumę przez sterowane źródło V-I o skali 1 i taki sygnał prądowy wpuść na wejście zamiast fototranzystora. Dostaniesz swój słaby sygnał a po chwili (po 10ms) skok składowej stałej oznaczający zapalenie światła w pokoju. Możesz oczywiście dowolnie kształtować czasy narastania by było to bardziej realne. Wtedy widać jak to działa i jak układ serwo DC koryguje punkt pracy tranzystora.

Drugi wzmacniacz jest właśnie po to, by zwiększyć wzmocnienie sygnału błędu i odseparować filtr (który nie powinien być niczym obciążany - łatwiej się wtedy liczy) od punktu sumowania który potrzebuje sygnału prądowego.

Analiza AC pokaże Ci jak to działa w częstotliwości i fazie (no jasne, po to jest..). Zobacz, że układ tłumi bardzo dobrze składową stałą a im wyższa częstotliwość tym lepeij to przenosi. To właśnie zasługa filtra i pętli DC serwo. Zakłócenia 50Hz jeszcze się w słabym przenoszeniu łapią ale niezbyt rewelacyjnie więc będzie ich trochę na wyjściu. Wszystko tutaj zależy od filtra - możesz go dobierać dowolnie, choć trzeba bardzo uważnie patrzeć na cześć fazową Bode plot'a. Każde zniekształcenie fazy (znaczy jej przesunięcie) powoduje wprowadzenie ułomności w działaniu pętli sprzężenia zwrotnego. Żeby filtr działał dobrze i było tłumione pewne pasmo, nie może wprowadzać w tym paśmie opóźnienia. Dlatego filtr nie może ciąć ostro tuż powyżej np. 50 czy 100Hz bo wtedy te częstotliwości będą bardzo blisko jego Fo i zniekształcenia fazy będą niedopuszczalnie duże. Ten tutaj starałem sie wybrać optymalnie.

Nie wiem co powiedzieć na stwierdzenie, że nie znalazłeś podobnego układu. Ja nie biorę tego z internetu tylko siedzę i wymyślam. Układy serwo DC znane są od dawna. Jego odmianą może być konfiguracja, w której prawy wzmacniacz jest odwracający a jego wyjście jest zapętlone do wejścia (+) lewego wzmacniacza. To działa bardzo podobnie, ale wzmacniacz odwracający obciąża filtr - i to mi się nie podoba. W literaturze zwykle układy na wzmacniaczach operacyjnych wykorzystują symetryczne zasilanie - wtedy układ jest prostszy na schemacie, prostszy w zrozumieniu, odpadają pewne problemy no i zwykle działa lepiej. Gdybym tu zaczął rysować takie rzeczy i zaproponował robienie ujemnego zasilania tylko po to by wzmocnić jakiś fototranzystor to byście mnie wyśmiali. Analizując ukłąd staraj się obedrzeć go z dodatków (masa pozorna, kompensacje częstotliwościowe itp) a wtedy zostanie czysta idea i tę z pewnością ludzie już dawno wymyślili. Nie mam wątpliwości.

-------------------------

EDIT: Dopiero wieczorem, po ponownym przeczytaniu dopatrzyłem się babola. W opisie symulacji napisałem, że sterowane źródło V->I powinno mieć skalę 1. Przy podanych wartościach napięć wejściowych powinno mieć skalę 0.001 a więc tysiąc razy zmniejszającą, bo napięcia generatorów są w mV a potrzebujemy prądów w uA. Alternatywą jest oczywiście zmniejszenie napięć sterujących do poziomu uV 🙂

Link do komentarza
Share on other sites

Dzięki wielkie za wytłumaczenie - właśnie brakowało mi opisu jak ten układ działa. Po ostatnim poście wszystko stało się jasne.

Co do symetrycznego zasilania op-ampa to czasami wg. mnie jest to lepsze od wysilania się z napięciem odniesienia. Wystarczy jakiś TC7660 i masz napięcie ujemne, a układ pobiera bardzo mały prąd i nie zabiera części napięcia w którym pracuje sygnał mierzony.

Korzystając z rezystorów do stworzenia napięcia odniesienia dużo prądu idzie w kanał na rezystorach. Można użyć wzmacniacza, ale to znowu kolejny układ...

Link do komentarza
Share on other sites

Czy narysowany wczoraj stopień wejściowy wystarczy? Do bliskich obiektów na pewno, ale jeśli i tak mamy w planie detektor synchroniczny potrzebujący jeszcze jednego wzmacniacza na wyjściu albo po prostu chcemy trochę dalej widzieć, można teraz wstawić kolejny stopień.

Zastanówmy się: mamy już składową stałą na poziomie 1.7V i na jej tle nasz sygnał. Możemy dobudować kolejny stopień, najlepiej nieodwracający żeby nie bawić się w pamiętanie, że coś po drodze nam odwraca sygnał - wtedy trzeba by zamienić wyjścia przełącznika analogowego w detektorze. Niestety stopień nieodwracający ma tę wadę, że jego sprzężenie zwrotne będzie musiało "stać" na masie pozornej, a wszystko co do niej spływa zaburza jej poziom i to nie jest dobre. Ja zrobiłem to tak:

Dzięki temu, że scalak zmienił się na 14 końcówkowy mamy teraz dodatkowy stopień i jeszcze jeden wolny wzmacniacz na ostatni stopień detektora. Ponieważ sprzężenie zwrotne jest tutaj zmiennoprądowe, to wszystko mu jedno na jakim potencjale jest postawione i równie dobrze może być na masie. Wzmacniacz sam sobie ustala potencjał wejścia (-) a wzmocnienie tego stopnia ustalamy trymerem R11 w zakresie (jak już zapewne umiecie policzyć) od x2 do x52.

To było brakujące ogniwo mojego toru odbiorczego. Do tego trzeba dospawać detektor opisany wczoraj i można zaczynać bawić się w machanie rękami, pokazywanie karteczek lub tego wszystkiego co zwykle na biurku leży 🙂

Na schemacie wrysowany jest fototranzystor lub fotodioda. Dlaczego? Podczas prób z coraz większymi czułościami i coraz większymi zasięgami miałem do czynienia z coraz słabszymi sygnałami. Niestety taka zabawa ma swoje granice. Zejście poniżej pewnego progu oświetlenia (a ściślej prądu bazy wywołanego w fototranzystorze światłem) powoduje stopniowy spadek czułości tranzystora. Po prostu jego wzmocnienie spada przy małych prądach tak samo jak przy bardzo wielkich. Zjawiska które to powodują są zupełnie różne ale skutek jest podobny: w kompletnej ciemności odebranie echa kota z odległości 2 metrów przy pomocy fototranzystora jest raczej niemożliwe. Wciąż mówię o świeceniu podczerwoną diodą LED 200mA w impulsie. Doświetlenie pokoju choćby jedną żarówką poprawia sytuację co najmniej kilka razy 🙁 Co to znaczy? Że układ jest nieliniowy, pamiętacie? Jeden sygnał wpływa na sposób przetwarzania innego i nie ma metody by to obejść i potem na wyjściu oba sygnały rozdzielić - to zjawisko jest wbudowane w fototranzystor. Jeśli ktoś może założyć, że nie będzie się bawił w nocy przy zgaszonym świetle lub oczekuje obiektów wyłącznie blisko (gdzie odbite oświetlenie z diody LED przekracza próg słabego działania) - OK, niech zaczyna z fototranzystorami. Mają dużo większą czułość i nie trzeba tak podkręcać wzmocnień. Jeżeli jego robot będzie właził do piwnicy i ma tam wykrywać obiekty oddalone bardziej niż kilkanaście cm - trzeba poszukać fotodiody. Daje ona wielokrotnie słabszy sygnał, konieczne są duże wzmocnienia i jednak w skrajnych warunkach lepsze wzmacniacze, ale daje ten sygnał liniowo przez (o ile pamiętam) 7 rzędów wielkości natężenia oświetlenia(!). To naprawdę imponujące.

Acha, i jeszcze jedno. Pracując z małymi sygnałami trzeba pamiętać, że zakłócenia włażą wieloma drogami. Jeżeli obok na pokładzie mamy nadajnik sygnału podczerwonego, który szarpie z zasilania impulsy setek mA o bardzo stromych zboczach to należy podejrzewać, że na Vcc pojawi się dokładnie taki sam lub trochę wygładzony przebieg o amplitudzie np. 50mV. Jeśli nasze czułe wzmacniacze pracujące z sygnałami rzędu uV są zasilane z tej samej szyny, to warto im ułatwić życie wstawiając odpowiednie filtry. Ja nadajnik zrobiłem tak:

Oporniki R1/R2 wyznaczają prąd bazy, R4 jest właściwym ogranicznikiem prądu diody, R5 jest opornikiem pomiarowym prądu: mierzę napięcie na TP1 i jeśli przebieg ma 50% wypełnienia to multimetr pokazuje 50mV na każde 100mA prądu w impulsie. Filtrem jest opornik R3 wraz z kondensatorami. Oba muszą być szybkie, ceramiczne i zamontowane bezpośrednio przy reszcie nadajnika. Driverem jest u mnie jakiś BCX npn w SOT89.

Sam układ wzmacniacza/detektora zasilam z szyny Vcc przez opornik 22R plus oczywiście dwa kondensatory jak powyżej. Opornik może być większy niż w nadajniku, bo nawet 4 wzmacniacze pobierają tylko kilka mA a nie są one tak czułe na bezwzględny poziom napięcia zasilającego jak na jego szybkie zmiany (patrz wykres PSRR vs freq w danych katalogowych).

Cóż, to.. powodzenia 🙂

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

Powodowany ciekawością zrobiłem kilka pomiarów ostatnio opisywanego czujnika. Wziąłem układ wzmacniacza wejściowego z kompensacją oświetlenia uzupełniony o jeden stopień wzmocnienia. W sumie były więc 3 wzmacniacze operacyjne bez przełącznika analogowego i dalszej części. Na wejściu postawiłem fotodiodę. Wyjście wzmacniacza podłączyłem wprost do ADC procesora ATmega644.

Chciałem mieć trochę statystyk żeby dowiedzieć się jak silne oświetlenie żarówkowe (100W z 50cm) wpływa na wyniki pomiarów. Każda seria pomiarowa składała się z 10 tysięcy pomiarów. Procesor łapał to, robił histogram wyników i liczył proste parametry: średnią i odchylenie standardowe. Ponieważ częstotliwość przebiegu IR wynosiła 2kHz, akwizycja całej serii zajmowała 5 sekund. Jeszcze tylko o metodzie uśredniania. W zależności od parametru w każdej "górce" i w każdym "dołku" sygnału pobierałem 1, 3 lub 6 próbek. Obraz łapania 6 próbek w jednym strzale ADC pokazałem kiedyś na obrazie oscyloskopowym. To je właśnie uśredniałem i tak powstawała wartość "górki" lub "dołka". Potem je od siebie odejmowałem i to był wynik danego pomiaru. Za każdym razem Pomiar 1, 2 i 3 były robione w oświetleniu żarówkowym rozproszonym (ok. 100W pod sufitem, jesienne popołudnie) a Pomiar 4, 5 i 6 z włączoną dodatkowo żarówką 100W wiszącą w połowie drogi miedzy czujnikiem a obiektem. Tym razem było nim pudełko z szarej tektury o wielkości widocznej ścianki ok. 10x15cm, umieszczne w odległości ok. 50cm.

A teraz rysunki:

Widać, że:

1. Silne oświetlenie zwiększa szum pomiaru spłaszczając tym samym rozkład wyników ale nie jest to pogorszenie tragiczne. Odchylenie standardowe zwiększało się w następujący sposób:

a. 2.65 → 3.74

b. 2.63 → 3.74

c. 1.86 → 3.21

więc nawet nie dwukrotnie. Ponieważ znakomita większość pomiarów (ponad 99%) mieści się w przedziale ±3 sigma, to wciąż mamy błędy pomiarowe na poziomie kilku procent.

2. Oświetlenie praktycznie nie przesuwa wielkości pomiaru. To dobra wiadomość 🙂

3. Uśrednianie w ramach jednej próbki działa, ale nie jest warte czasu na nie poświęconego. Prawie równie dobrze można łapać jeden strzał ADC w każdej górce i dołku a zaoszczędzony czas przetwornika wykorzystać na pomiary innych kanałów.

Właśnie, kupiłem ostatnio fotodiodę odbiorczą o widzenia 120° czyli dość sporo i zamierzam wykorzystać ją do zrobienia czujnika widzącego w 1/3 kąta pełnego:

http://www.tme.eu/pl/details/sfh203pfa/fotodiody/osram/#

Pomysł polega na fakcie, że sterowanie diodami nadawczymi jest dużo łatwiejsze niż robienie kolejnych odbiorników. Biorę więc 6 diodek IR o kącie świecenia ±10°:

http://www.tme.eu/pl/details/tsal5100/diody-nadawcze-ir/vishay/#

i rozkładam je w wachlarz co 20°. Zapalam je po kolei z częstotliwością przemiatania 5kHz. Każda diodka świeci przez 100µs a potem przez tyle samo czasu jest przerwa, co daje 200µs na diodkę. W każdym okresie "zapalenia" i "zgaszenia" próbkuję napięcie z wyjścia wzmacniacza podłączonego do szerokokątnej diody odbiorczej. W ciągu 1.2ms mam "objechane" 6 segmentów przestrzeni po 20° każdy. Program składa tych 6 pomiarów w obraz przeszkód w otoczeniu i już 😐 Hm, na razie nie wiem jak zrobić ostatni z tych etapów czyli jak przełożyć wyniki z układu biegunowego na obecność i ruchy konkretnych celów, ale na pewno coś wymyślę 🙂 W końcu każdy radar ma ten sam problem. Dwa takie czujniki pokryłyby przód i boki pojazdu a nawet sporo do tyłu. Wydaje się fajne, prawda? Jak zadziała dam znać.

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

Daję znać: działa 🙂

A teraz kilka szczegółów.

Procesor ATmega644 8MHz wyposażyłem w zewnętrzny dekoder 74HC138 żeby oszczędzić linie portów. Na trzy piny doprowadzone do wejść A, B, C dekodera wypuszczam numer aktualnie mającej się zapalić diodki. Numery zwiększają się od 0 do 5 i tyle wyjść dekodera wykorzystuję. Do każego z 6 wyjść (aktywne w stanie niskim) podłączyłem prosty klucz pnp włączający diodę IR. Ponieważ z zasady działania dekodera wynika, że nigdy nie zapali się wiecej niż jedna dioda na raz, wszystkie razem dostały wspólny opornik wyznaczający prąd świecenia - to dość wygodne przy eksperymentach. Poza tym klucze pnp ciagną do plusa zasilania więc opornik stoi sobie na masie i łatwo wtedy zmierzyć prąd rzeczywisty diodek poprzez pomiar napięcia na nim względem masy (no niestety, oscyloskopem).

Po stronie odbiornika mam szerokokątną fotodiodę PIN, stopień wejściowy z kompenasacją oświetlenia stałego i dwa stopnie wzmacniaczy. I tak miałem 4 wzmacniacze operacyjne więc mogłem poszaleć 🙂 a poza tym więcej stopni to mniejsze wzmocnienia i szersze pasmo - na tym i trochę zależało. Tym razem wybór padł na CMOS-owy, 10MHz, poczwórny wzmacniacz operacyjny RRIO o małych prądach polarazacji i dużej impedancji wejściowej, świetnie nadający się na pierwszy stopień czyli przetwornik prąd-napięcie diody PIN:

http://www.tme.eu/pl/details/mcp6024-i_p/wzmacniacze-operacyjne-tht/microchip-technology/#

Dwa pozostałe stopnie dostały potencjometry do regulacji wzmocnienia w zakresie 1-50.

Zasada działania pozostała bez zmian - mierzymy podczas górki, potem podczas dołka, odejmujemy i już - choć w szczegółach programowych układ ten trochę różni się od prostego odbiornika jednokanałowego.

Do "napędzania" maszynki zatrudniłem timer 1 w trybie CTC Z wartością końcową trzymaną w OCR1A:

TCNT1 = 0;
OCR1A = 99;
OCR1B = 10;
TCCR1A = _BV(COM1A0);
TCCR1B = _BV(WGM12) | _BV(CS11);

Timer pracuje z podzielnikiem = 1/8 a wartość OCR1A= 99 wyznacza okres "obrotu" na 100 cykli, czyli z 8MHz dostajemy 100us. Co tyle czasu timer zeruje się i odwraca stan wyjścia OC1A (ustawiony bit COM1A0). Ten sygnał - falę prostokątną 5kHz dociągnąłem do pinu 6 dekodera co pozwoliło mi "bramkować" świecenie diodek. Teraz wystarczy, by program podał numer diodki na wejścia A, B i C dekodera a odpowiednia diodka zapali się dokładnie na czas 100us podczas trwania stanu wysokiego na OC1A.

Teraz ADC. Ponieważ mega644 ma fajny mechanizm sprzętowego wyzwalania pomiarów, żal byłoby go nie wykorzystać. Włączyłem to przez odpowiednie zaprogramowanie rejestrów ADC:

ADMUX = _BV(REFS0);
ADCSRB = 5;
ADCSRA = (_BV(ADEN) | _BV(ADATE) | _BV(ADIF) | _BV(ADIE)) + 4;

Referencją jest u mnie Vcc. Tak ustawiony przetwornik wykona pierwszy pomiar gdy nastąpi komparacja TCNT1 z jego rejestrem OCR1B. Dla tego właśnie w poprzednim fragmencie była odpowiednia instrukcja łądująca ten rejestr. Co więcej, ten mechanizm umożliwia mi bardzo cenne, sprzętowe rozsuwanie w czasie momentu zapalenia/zgaszenia diodki i startu przetwornika. Przecież napięcie na wyjściu wzmacniacza - z powodu ograniczonego pasma przenoszenia - musi mieć czas narosnąć po zapaleniu i spaść po zgaszeniu diody. Nie można mierzyć od razu, bo wynik będzie nieprawdziwy. OCR1B=10 oznacza, że start przetwornika będzie przesunięty zawsze o 10us względem chwili wyzerowania timera, gdy nastąpiła zmiana pinu OC1A i tym samym zapalenie/zgaszenie diody. Teraz wystarczy tylko obsłużyć przerwanie od ADC, sprawdzić w nim stan pinu OC1A (diodka zapalona czy zgaszona) i w zależności od tego:

- gdy OC1A=1 - mamy gotowy pomiar "górki", zapamiętujemy wynik z ADC w zmiennej statycznej np. adc_tmp,
- gdy OC1A=0 - mamy gotowy pomiar "dołka", odejmujemy adc_tmp - ADC a wynik wysyłamy do tablicy przechowującej pomiary poszczególnych kanałów. Zwiększamy licznik kanałów i wystawiamy go na 3 piny portu sterujące dekoderem. Ponieważ w tym momencie żadna diodka nie świeci (bo przecież OC1A=0 i dekoder jest zablokowany), zmiana wejść adresowych dekodera niczego nie zmienia na jego wyjściach, i sprzęt spokojnie czeka na ponowne ustawienie OC1A już z nowym adresem/numerem diodki.

Procesor zajmuje się tylko obsługą przerwań od ADC i co 6 przerwań ma komplet danych o ostatnim skanie przestrzeni. Być może trzeba jeszcze uśredniać wyniki z kilku ostatnich skanów, ale to wyjdzie mi w dokładniejszych pomiarach. Kolejne skany z 6 kanałów są dostępne co 1.2ms więc bardzo często - uśrednianie zmniejszy tę częstotliwość, ale poprawi stabilność pomiarów. Na razie program wyświetla mi 6 liczb na terminalu i nie jest to zbyt efektowne. Widać wyraźnie, że wyniki podążają za moją dłonią przesuwaną 20cm przed czujnikiem. Spróbuję zrobić jakąś prezentację graficzną, to będzie lepiej widać.

Potrzebny schemat czy jakoś to sobie wyobrażacie?

Mam pomysł jak rozszerzyć kąt skanowania do ponad 200° bez budowania drugiego odbiornika, ale skończyły mi się 10° diodki IR 😐 Chyba czas napisać do Mikołaja...

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.