Skocz do zawartości
KD93

Czujnik optyczny

Pomocna odpowiedź

Jacek31, co ty tam chcesz napisać żeby nie zmieścić się w tiny13? 😃

Udostępnij ten post


Link to post
Share on other sites

np. komunikacja przez I2C z generowaniem przerwań, skanowanie przestrzenne. wybór częstotliwości nośnej, kodowanie w SIRC, no chyba ze znajdę opis kodowania w pierwszych pilotach IR (RESC80), którego dziś się już nie używa, to by było lepsze, bo uodporniło by na zakłócenia z pilotów RTV.

Ale spoko pierwsze podejście będzie prostsze na TINY13, bo mi taka leżakuje w SMD, a i z TSOPem na 40KHz trzeba coś zrobić.

Udostępnij ten post


Link to post
Share on other sites

Używał ktoś z was bibliotek ( w C) od Atmela do obsługi USI w trybie i2C slave ?

Idea 💡 czujnika który chcę budować.

Udostępnij ten post


Link to post
Share on other sites

Fajne, Częstotliwość wyeliminuje zakłócenia ze strony światła, ja zawsze robiłem na diodzie i fototranzystorze i było to niestety czułe na światło zewnętrzne. uProcesor mogłeś dać smd bo jest tańszy i zajmuje mniej miejsca 🙂

Udostępnij ten post


Link to post
Share on other sites

Dałem taki jaki aktualnie miałem w domu 😉

Udostępnij ten post


Link to post
Share on other sites

Witam

Mam pytanie bo użyłem wszystkich części taki jak autor lecz mój czujnik to tsop34836

który też jest na 36kHz podłączyłem go zgodnie z Datasheet i schematem . I gdy do wyjścia podłączyłem diodę to czujnik działa tylko przez pierwszą sekundę gdy podłączam i odłączam diodę ir a później nie reaguje a dioda cały czas świeci. Gdy spróbowałem ne555 tak żeby miał 36kHz to tak samo a jednym pilotem to działa też tak samo a jak wiozłem inny to działał lepiej i wykrywał przeszkody lecz żeby czujnik coś zobaczył to musiałem ręką machnąć przed nim a jak powoli przesuwałem to nic nie wykrywał.A gdy ręką przesuwałem prosto na czujnik to też nic a poza tym to działa z drugim pilotem. Co może być przyczyną ?

Udostępnij ten post


Link to post
Share on other sites

Nie zacinający się, tylko działajacy całkowicie prawidłowo. Warto poczytać dokumentację TSOPa, tam jest podane, że w przypadku odebrania długiego pakietu (dłuższego niż określona liczba impulsów) przestaje widzieć - możliwe, że zmienia próg widzialności.

Udostępnij ten post


Link to post
Share on other sites

Można ten problem rozwiązać włączając i wyłączając diodę co kilka ms, i sprawdzać odbicie w okresie świecenia.

Udostępnij ten post


Link to post
Share on other sites

Dziękuję za odpowiedzi. Spróbuję coś tu dopisać żeby dioda włączała i wyłączała co kilka ms .Ale nie wiem czy uda mi się to napisać i czy ktoś by mógł pomóc to napisać ?

Udostępnij ten post


Link to post
Share on other sites

Są co najmniej 4 sposoby na zrobienie tego.

Można zaprząc drugi timer (chociaż nie wiem czy tiny13 posiada więcej niż 1) i w przerwaniu od niego włączać i wyłączać pierwszy (ten od generowania nośnej), wtedy w pętli głównej próbkujemy sobie stan nóżki TSOPa (ewentualnie można dodać eliminację false triggeringów itp, aby uodpornić się jeszcze bardziej na zakłócenia).

Można zrobić w przerwaniu od timera odpowiedzialnego za generację nośnej warunek, że co X impulsów zrobi przerwę trwającą Y przerwań, do tego potrzeba by zmiennej przechowującej ilość impulsów i timer nie może działać w trybie CTC, pseudokod:

if(zmienna < X)
{
*zamień stan nóżki na przeciwny*
zmienna = zmienna + 1
}
else
{
zmienna + 1
}
if(zmienna > (X+Y))
{
zmienna = 0
}

Można włączać timer co X czasu w pętli głównej, tylko przy użyciu delay'i/wait'ów stan byłby próbkowany bardzo rzadko, zamiast wyżej wymienionych można użyć pętli for, z bardzo dużą ilością powtórzeń (tyle, żeby całe wykonanie pętli trwało te kilkanaście impulsów, po forze może być już delay lub wait).

Można podłączyć diodę jedną stroną do jednego pinu i drugą do drugiego i na jednym mieć ciągle nośną, a drugim ją włączać lub wyłączać, a stan sprawdzać tylko gdy dioda jest włączona, można wykorzystać pętle for, delaye (ale wtedy próbkowanie będzie rzadkie). Wtedy timer od generacji nośnej może działać w trybie CTC, ale trzeba poświęcić dodatkowy pin.

Jak na razie do głowy przychodzą mi tylko te sposoby, ale raczej są też inne. Osobiście zwykle używam sposobu z ifami, tylko musisz uważać na jedną rzecz przy przerwaniach - żeby zdążyło się ono wykonać, zanim wykona się następne lub to kolejny raz.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Witam!

Mam takie pytanie dotyczące tego czujnika przy wykorzystaniu Attiny13.

Co muszę użyć dokładnie jakich diod nadawczych i jaki odbiornik podczerwieni aby osiągnąć zasięg około 100 cm? Czy jest to w ogóle możliwe?

Zadanie tego czujnika ma polegać na wykryciu osoby w nocy jak i za dnia oraz przy oświetleniu sztucznym 🙂

Pozdrawiam!

Udostępnij ten post


Link to post
Share on other sites

Nie lepiej zrobić tzw. barierę optyczną? Dioda laserowa z jednej strony (albo laser z bazarku, dla 1m powinien wystarczyć), fototranzystor z drugiej, dobrze wycelować i voilla. Jeśli ktoś przetnie wiązkę lasera, będziesz miał spadek napięcia na odbiorniku - wystarczy to obsłużyć np. mikrokontrolerem.

Udostępnij ten post


Link to post
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!

Gość
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...