Zrobiłem sobie układ w którym znajduje się uC Attiny2313, który generuje sygnał 36kHz dla diody IR sygnał ten podawany jest na diodę przez ULN 2004 i odbierany jako odbity od przedmiotu przez TSOP1736 dla TSOP'a zastosowałem filtr zasilania dodatkowo kondensator 100nF na wyjściu aby nie łapał np śmieci ze świetlówek.
Żeby było ciekawie po układzie wciąż latają mi szpilki z generowanych 36kHz co powoduje przypadkowe zadziałanie układu wtedy kiedy powinien zostać w spoczynku. W ogóle jeśli wysyłam sygnał w paczkach po 1ms to każde włączenie generacji powoduje zadziałanie układu. Jedynie ciągłe działanie generatora powoduje zadziałanie przypadkowe.
W schemacie są niewielkie różnice znaczy ULN2003 zamiast ULN2004 i AT90S2313 Attiny2313 ale nie było ich w bibliotekach.
Aha dodawałem już duży kondensator do zasilania (akumulator 6V), mały lub większy kondensator w szeregu z diodą, duży kondensator + mały. I wciąż nic.
Z niecierpliwością czekam na jakieś sugestie bo pomysły mi się skończyły jak się pozbyć tych szpilek
WYmień 100R na 100uH w zasilaniu odbiornika podczerwieni + 100nF równolegle do elektrolita, dlaczego bufor ULN , lepiej sprawdziłby się zwykły tranzystor (BC337-25), dodatkowo do procesora mały elektrolit, no i masa bufora/tranzystora osobną ścieżką do - wspólnego zasilania.
Czemu TSOP przez kondensator - jego podpina się prosto pod pin procesora, najlepiej przerwania.
Owszem podpina się bezpośrednio pod PIN procesora i jak załączysz na przykład stado świetlówek to jest sygnał szpileczka kilka ns ale startuje układ. Co do bufora na 337 to się tez zastanawiałem i jutro chyba sprawdzę.
ULN dlatego że tym samym prockiem sterowane są diodki LED które po prostu mają migać.
No i dlatego stosuje się transmisję kodowaną np. RC5, szpila się pojawi i zniknie, a oprogramowanie zakwalifikuje czy to sygnał użyteczny czy zakłócenie.
Robiłem kiedyś układ naprowadzania krawędzi dla maszyn drukarskich wykorzystuje on podobny sposób do sprawdzania czy rolka idzie równolegle do krawędzi czy gdzieś ją ściąga. Układ składał się z oświetlacza liniowego w podczerwieni oraz liniowej diody podczerwieni. Podstawą konstrukcji tych układów jest silny filtr optyczny, eliminujący część zakłóceń, dodatkowo diody nadajnika i odbiornika umieszczane są w wąskich szczelinach mających dodatkowo chronić je przed refleksami i światłem padającym pod kątem. Z kolei oprogramowanie sterujące generuje pęczki impulsów modulujących nośną 36kHz i to jest porównywane z wzmocnionym sygnałem z odbiornika i na tej podstawie dopiero oblicza się całą resztę.
Musisz zrobić sobie tor synchroniczny - otwierać przerwanie na czas nadawania to już eliminuje część zakłóceń, drugą sprawą jest kodowanie transmisji. Taki sposób jak masz teraz będzie działał tylko w ciemnym pomieszczeniu bez zakłóceń.
Wadą scalonych odbiorników w tym zastosowaniu jest soczewka, która zwiększa czułość na promieniowanie z szerokiego kąta - łatwiej złapać jakieś odbicie, zamontuj odbiornik i nadajnik w rurce pod kątem względem siebie i dopiero taki zespół nakieruj na przeszkodę.
rufio pisze:W ogóle jeśli wysyłam sygnał w paczkach po 1ms to każde włączenie generacji powoduje zadziałanie układu.
Odbiorniki IR zwykle wymagają aby wiązka oświetlająca 36kHz przychodziła w paczkach o czasie świecenia/przerwy rzędu ms (dla poprawnego działania ARW) - sprawdź w pdf.
Edit: Cytat z pdf-a: "The data signal should fullfill the following condition:
• Carrier frequency should be close to center
frequency of the bandpass (e.g. 38kHz).
• Burst length should be 10 cycles/burst or longer.
• After each burst which is between 10 cycles and 70
cycles a gap time of at least 14 cycles is neccessary.
• For each burst which is longer than 1.8ms a
corresponding gap time is necessary at some time in
the data stream. This gap time should have at least
same length as the burst.
• Up to 1400 short bursts per second can be received
continuously."
Więc układ został zmodyfikowany w sposób jaki radziliście. I pojawia się dla mnie zupełnie niezrozumiała sytuacja. Używam sygnału odbitego który ma zasięg 30 cm. kiedy układ znajdzie sygnał i go rozpozna wszystko jest ok poza tym że po wyjściu z tego stanu układ zachowuje się jakby się wzbudzał , odbioru sygnału nie obserwuje na oscyloskopie, a układ miga że odbiera sygnał a następnie że go rozpoznał Żeby było jeszcze ciekawiej jak zasłonię nadajnik to układ przechodzi w stan normalnego czuwania. Wygląda to tak jakby po jednym dobrym rozpoznaniu sygnału jego zasięg wzrastał do 1,5 metra. A po uspokojeniu stanu czułość i zasięg spadał do około 30 cm.
Aha jest jeszcze dodatkowy szczegół jeśli wysyła się do układu jakieś inne dane niż ma rozpoznać a jest w stanie wzbudzenia to wzbudza się tak długo aż sobie taki sygnał dopasuje. Pomaga jedynie całkowite zakrycie nadajnika.
rufio pisze:[...] odbioru sygnału nie obserwuje na oscyloskopie, a układ miga że odbiera sygnał a następnie że go rozpoznał
Dobrze, że wiemy czym dekodujesz
Generalnie wybrałeś kiepskie rozwiązanie - odbiorniki IR z wbudowanym wzmacniaczem są przystosowane do odbioru sygnałów impulsowych (zobacz specyfikację RC5). Jeśli taki odbiornik nic nie odbiera, ARW powoduje, że czułość bardzo wzrasta. W takim stanie może reagować nawet na minimalne zakłócenia przenoszące się np. po zasilaniu. Sygnał jest nadawany przez procesor, więc dokładnie wie co powinien dekodować - wykorzystaj to.
Dekoduję dokładnie tak jak radziliście odbieram sygnał przez TSOP i wejściem Rx w Attiny czekam na znak który wysyłam. Więc o pomyłce w rozpoznaniu znaku raczej nie powinno być mowy, a jednak
Generowanie odbywa się z prędkością 2400 bps przez wyjście Tx a 36kHz podane jest z licznika OC1A w trybie CTC. Wysyłany jest 1 bajt danych co 500ms.
Na oscyloskopie sygnały wyglądają jak najbardziej poprawnie.
No właśnie to ARW jest dla mnie zagadką. Czemu zaraz po odebraniu sygnału czułość tak drastycznie wzrasta a po wygaszeniu jest tak niewielka Wydawałoby się, że po wygaszeniu powinien szukać sygnału z dużą czułością
Wiem że wybór gotowego TSOP jest dość niefortunna ale to proste rozwiązanie a cały układ właśnie taki ma być. Cały układ ma wykrywać w odległości około metra że ktoś obok przechodzi. Może macie jakieś ciekawsze pomysły niż TSOP i IR w kosztach po "chińsku" że tak powiem. Procesor to Attiny2313.
rufio pisze:Generowanie odbywa się z prędkością 2400 bps przez wyjście Tx a 36kHz podane jest z licznika OC1A w trybie CTC. Wysyłany jest 1 bajt danych co 500ms.
Nie zaprzegaj do tego UARTa (ten zawsze cos odbierze) ani CTC (sieje ciągle na częstotliwości odbiornika). Po prostu wyślij kilkanaście impulsów o okresie 27.7us (36kHz) a przerwaniami INT albo wejściem T0 zlicz ile przyszło.