Skocz do zawartości

Czujnik odbiciowy - Attiny13


piotreks-89

Pomocna odpowiedź

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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.

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

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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°

Link do komentarza
Share on other sites

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 ?

Link do komentarza
Share on other sites

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 🤣

Link do komentarza
Share on other sites

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ę.

Link do komentarza
Share on other sites

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 😉

Link do komentarza
Share on other sites

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 😉

Link do komentarza
Share on other sites

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).

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.