Skocz do zawartości

Czujnik odbiciowy - Attiny13


Pomocna odpowiedź

Napisano

Witam!

Po ukończeniu płytek do nowego robota zacząłem pisac testowe programy i już na pierwszym kroku napotkałem problem. Chodzi o to, że przeliczyłem się z moimi umiejętnościami praktycznymi w programowaniu. Zrobiłem sobie taki czujnik odbiciowy:

Idea była prosta. W zależnośi od położenia przeszkody robot wystawia dwa różne stany na dwóch różnych wyjściach (pb.4 i pb.3). Miał wykrywac położenia: lewy, prawy, środek.

Napisałem program:

$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 21
$swstack = 23
$framesize = 21

Config Portb.0 = Output
Config Portb.1 = Output

Config Pinb.2 = Input

Config Portb.4 = Output
Config Portb.3 = Output

Config Portb.1 = Output
Config Portb.0 = Output

Ocr0b = 16
Ocr0a = 16

Tccr0a = &B01010010

Do
Waitus 30
  Tccr0b = 1
If Pinb.2 = 1 Then Portb.3 = 1 Else Portb.3 = 0
Waitus 30
  Tccr0b = 0

Waitus 30
  Tccr0a = 1
If Pinb.2 = 1 Then Portb.4 = 1 Else Portb.4 = 0
Waitus 30
  Tccr0a = 0

Waitus 30
  Tccr0a = 1
  Tccr0b = 1
If Pinb.2 = 1 Then Portb.4 = 1 Else Portb.4 = 0
Waitus 30
  Tccr0a = 0
  Tccr0b = 0
Waitus 30
Delay

Loop

End

I wiem, że na pewno są w nim błędy.

Algorytm miał wyglądać następująco:

1) Konfiguracja

2) Wysyłanie wiązki podczerwonej z lewej diody IR i sprawdzenie czy wiązka powróciła, następnie wystawienie odpowiednio stanu L lub H na PORTB.3

3) Wysyłanie wiązki podczerwonej z prawej diody IR i sprawdzenie czy wiązka powróciła, następnie wystawienie odpowiednio stanu L lub H na PORTB.4

3) Wysyłanie wiązki podczerwonej z obu diod IR i sprawdzenie czy wiązki powróciły, następnie wystawienie odpowiednio stanu L lub H na PORTB.3 i PORTB.4

Mam nadzieję, że chociaż wy zrozumiecie i mi pomożecie.

W kwestii programowej się nie wypowiem, ale co do algorytmu to może zrób tak: wysyłasz wiązkę z lewej diody i sprawdzasz, potem wysyłasz z prawej i sprawdzasz, potem np obrót o 60 stopni albo pojedź kawałek po łuku i znowu wiązka z lewej, sprawdzasz...

Nie rozumiem zbytnio co miałoby na celu wysłanie wiązki z dwóch diod na raz, załóżmy że któraś wiązka wróci, ale co dalej? Nie wiesz przecież która wiązka wróciła.

Idea ogólnie jest dobra, tylko tak na pierwszy rzut oka coś nie tak sterujesz Timerem. Znaczy się chyba go źle startujesz wpisując niewłaściwe dane do Tccr0b, zapominasz o flagach FOC0A i FOC0B, które są powiązane z pinami OC0A i OC0B.

No i skąd wziołeś te 1,2MHz ❓ skoro w nocie pisze że RC oscylator można wybrać miedzy 4,8MHz a 9,6MHz. no chyba że chcesz dzielić 4,8MHz przez 4, ale to ci brakuje kodu ustawiającego preskaler.

Dzięki za odpowiedzi i proszę o dalsze. Jak na razie jestem na wyjeździe i nie mam dostępu do programatora i procka.

Co do programu to specjalnie mam włączone te 1,2Mhz, wcześniej miałem te 9,6Mhz, ale wyłączyłem. Jeśli chodzi o program to jest to nieco przerobiona wersja kodu z czujnika KD93.

A tak na marginesie po co chcesz wysyłać wiązka z obu diod IR ? To właściwie do niczego nie prowadzi, bo tak, jeżeli zapalisz lewą i coś wykryjesz, ustawiasz H, zapalasz prawą i coś wykryjesz zapalisz H na pinie od 2 diody, więc już w tym momencie wiesz że coś jest na wprost.

Resumując, jest to marnowanie cyklu, na sprawdzenie czegoś co już wiesz po 2 pierwszych próbach, a zapalając obie diody możesz sobie zafałszować wynik.

  • 4 tygodnie później...

Troszkę rozruszam temat. Otuż ja też chcę zastosować w swoim robocie te idę. natomiast pytanie brzmi, jakie jest optymalne rozłożenie, diod nadawczych ?

Znaczy sie mi się zmieści MAX coś takiego.

IMG_4e6c76bdbd2dc6960.jpg

Tylko lepiej diody rozchylić na boki. czy pozostawić prosto przed siebie ? IRedy bedą 3mm, o kacie świecenia 50°

BlackJack to już musisz sam przetestować. Oczywiście wszystko zależy od użytych podzespołów, ale to niestety trzeba dobrać doświadczalnie 😕

Obrazki umieszczaj zgodnie z regulaminem 😉

Tzn. Mi chodzi czy ktoś może się podzielić swoim doświadczeniem, w tej kwestii, bo ja jak wywiercę już otwory w płycie czołowej, to po ptokach niczego nie przestawię. Mogę je wywiercić prościutko, albo delikatnie pod kątem, aby diody świeciły lekko na boki. Tylko ze TSOP będzie po środku i sztywno zabudowany.

Co do regulaminu, no to chyba tak się lepiej czyta posta, niż klikać na miniaturkę obrazka ❓

PS. piotreks-89 a tak w ogóle to uruchomiłeś w końcu ten swój czujnik ?

BlackJack ja doświadczenia w tej w kwestii nie mam. Ale musisz wziąć pod uwagę rozpraszanie się światła. Tzn jak diody nie wyjdą w czubkiem ponad panel czołowy (tzn nie będą wystawały przed panel) to światło podczerwone rozproszy się w boki i przód.

[ Dodano: 11-09-2011, 11:12 ]

BlackJack no właśnie jeszcze nie 😃 Tzn uruchamiałem, bawiłem się programem, ale coś mu się nie chciało działać. Jak będę maił dzisiaj czas to się pobawię nim 😉 Wszytko jest ładnie wytrawione, ale jeszcze programiku brak 🤣

Znaczy sie ja chcę je osadzić w czymś takim.

rtp-30hb-chrom.jpg

Czyli płyta ta będzie jeszcze przebudowana, znaczy się u dołu zostanie doklejony odpowiedni element.

Ktoś powie przeginam, ale to zboczenie zawodowe 😅 Z zawodu jestem projektantem mebli, i mam wpojone że jak coś się robi to musi też być estetyczne z wyglądu. Dla tego jak oceniam zawsze jakiegoś robota, to bądźcie pewni, że pierwsze na co patrzę to czy z wyglądu nie jest karakanski 😕 , potem oceniam resztę.

BlackJack z tym nie powinno być problemów, ale nie gwarantuję 😉 Masz duży kąt świecenia, więc jednak mogą się pojawić, ale będą znikome 😉 Oczywiście to są tylko moje rozważania. Jak chcesz mieć większą pewność zapytaj się ludzi, którzy mają z tym doświadczenie 😉

Z tego co zaobserwowałem kiedyś w czujniku z TSOP i diody IR, to im bliżej siebie była dioda i odbiornik, tym większy zasięg dało się uzyskać.

Uruchomiłem czujnik - wcześniej nie działał. A tu nagle zaobserwowałem, że jeśli ręka szybko przejdzie przed czujnikiem to się zapala dioda (są dwie do wykrywania kierunków). Coś już o tym czytałem, ale zapomniałem 🤣 Trzeba nowy program napisać 😉 Będę tu zamieszczał nowe wersje wraz z obserwacjami, może uda się zrobić idealny 😉

Ja. osadziłem na razie w płycie tylko Sharpha 2D120X, na diody przyjdzie czas kiedy dostanę oprawki z TME, co może potrwać bo przy okazji zamówiłem sobie układy LM5110-1M, których nie maja na stanie.

Ale droga i tak jeszcze daleka do Ledów, bo muszę teraz zbudować ściętą poprzeczką w której osadzę, IRedy i TSOPa. Ale jak wszystko będzie dobrze to diody będą tak 15-16mm od środka TSOPa i 30-32mm od siebie.

Co do Sfotu, no cóż ja nie chcę angażować do tego osobnego CPU, więc będzie to obsługiwał prawdopodobnie główny procesor.

Czy BASCOM czy C nie wiem, to zależy jaki procek wyląduje w środku, czy będzie to ATTIny861 czy PIC16F690 (tutaj akurat bardziej podoba mi się moduł PWM).

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...