Popularny post Harnas Napisano Maj 2, 2011 Popularny post Udostępnij Napisano Maj 2, 2011 Chciałbym Wam przedstawić mojego pierwszego robota.Jest to konstrukcja bardzo podobna do powstających od niedawna linefollowerów 🙂. Oczywiście nie jest pozbawiona wad, ale najważniejsze to wyciągnąć wnioski. Mechanika Jest on napędzany dwoma silnikami Pololu HP 30:1. Koła to pololu 32x7mm. Przednia kulka to klik . Całość (z akumulatorem i wyświetlaczem)waży około 230g. Elektronika Posiada 16 czujników KTIR0711S podłączonych do przetwornika ADC mikrokontrolera Atmega164P, taktowanego kwarcem o częstotliwości 20MHz. Czujniki ułożone zostały bardzo podobnie jak w Inferno/Mefisto. Jako mostków do sterowania silnikami użyłem TB6612. Silniki zasilane są przez przetwornice LM2576 napięciem 6V. Źródłem zasilania jest lipol 3S 1000mAh, który jest nieco za ciężki. Całością steruje algorytm PID który jest jednak niedopracowany, i pewnie zwykłe ify lepiej by sobie radziły 😳 Program napisany jest w C w środowisku WinAVR, i przy wyłączonej optymalizacji zajmuje 10.7kB, a przy optymalizacji ustawionej na 1 już 7.4kB. ADC taktowany jest przez preskaler 64 co daje taktowanie przetwornika 321.5khz dzięki czemu wykonuje około 23k próbek na sekundę, więc mamy około 1.4k próbek na sekundę z jednego czujnika, co jest wystarczające w moim LF. Parę słów o multipleksowaniu. Niektórych może ciekawić, jak podłączyłem 16 czujników po 8 kanałów ADC. Otóż wykorzystałem prosty sposób multipleksowania. Jako iż cały schemat przedniej płytki jest nieco nie czytelny pokarzę tylko jego fragment, który powinien wystarczyć do zrozumienia całej idei. Czujniki są połączone w pary(jedna para do jednego wejścia). Do pojedynczego wejścia ADC (na schemacie jako wyjście) podłączone są kolektory z 2 czujników oraz jeden rezystor tworzący dzielnik. W danym momencie może być aktywny tylko jeden czujnik w danej parze (na jednym emiterze musi być 1 a na drugim 0). Odczyt pojedynczej pary przebiega w następujący sposób: Ustawiamy 1 na EN1 i 0 na EN2. Dokonujemy odczytu z kanału ADC do którego jest podłączone jest Wyjście1. Ustawiamy 0 na EN1 i 1 na EN2. I ponownie dokonujemy odczytu z kanału ADC do którego jest podłączone jest Wyjście1. Jest to jednak niezbyt dobra metoda gdyż na liniach EN1 i EN2 przy dużej szybkości przetwarzania występują dość wysokie częstotliwości (do kilku kHz) które można w prosty sposób zmniejszyć (o ile mamy więcej niż jedną parę): Ustawiamy 1 na EN1 i 0 na EN2. Dokonujemy odczytu z kanału ADC 0. Dokonujemy odczytu z kanału ADC 1. . . . Dokonujemy odczytu z kanału ADC 7. Ustawiamy 0 na EN1 i 1 na EN2. Dokonujemy odczytu z kanału ADC 0. Dokonujemy odczytu z kanału ADC 1. . . . Dokonujemy odczytu z kanału ADC 7. ADC taktowany jest przez preskaler 64 co daje taktowanie przetwornika 321.5khz co daje około 23k próbek na sekundę, więc mamy około 1.4k próbek na sekundę z jednego czujnika, co jest wystarczające w moim LF. Jako iż aktualnie nie mam możliwości zrobienia żadnego filmiku, wstawię znaleziony w tym temacie, finałowy przejazd z Robotic Tournament jedyny udany z 3 finałowych przejazdów na których nie wiedzieć czemu gubił linie (dla tego na tym filmie tak wolno go puściłem 🙂 ) Dzięki temu uzyskałem w kategorii LF 6 miejsce z czasem 14s (aby uzyskać 5 miejsce musiałbym mieć czas <9.7s). Widok od spodu (wyszło jak by był wypukły po środku lecz to wina aparatu) Chętnie odpowiem na wszystkie pytania. Narazie nie będę wprowadzał większych zmian, gdyż w najbliższym czasie biorę się za prostego humanoida a później hexapoda 🙂 9 Cytuj Link do komentarza Share on other sites More sharing options...
Bobby Maj 2, 2011 Udostępnij Maj 2, 2011 Niby nic nowego, ot kolejny lfr, ale miło zobaczyć jakieś nowe, ciekawe rozwiązania sprzętowe/software'owe - multipleksacja czujników. Właśnie, jak tylko zobaczyłem w jaki to sposób robisz, nasunęło mi się pytanie - dlaczego nie zastosowałeś jeszcze po bramce not (zwykły npn) przy jednej z linii enable (jeden czujnik zasilany z inwertera, drugi z pinu gpio), mógłbyś wtedy zmniejszyć ilość linii enable o połowę, a tranzystorki w sot23 zajmują niewiele miejsca, zmniejszyłbyś liczbę ścieżek, a wolne gpio by mogły zostać wykorzystane chociażby do ledów (lub przycisków, do nastawiania stałych regulatora na przykład). Chętnie bym zerknął na schemat, co tam masz powrzucane i jak 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Naelektryzowany Maj 2, 2011 Udostępnij Maj 2, 2011 Mnie podoba się najbardziej sposób jazdy tego LFa. Prasę pokonuję bardzo płynnie i nie robi dużych łuków na kontach prostych. Widać PID wyregulowany bardzo dobrze. Wydaje mi się, że na tych silniczkach mógłby być szybszy, przypuszczam jednak, że spora masa stanowi pewien problem. Mam pytanie jaką rolę odgrywają - jak robot reaguje na wykrycie linij przez te trzy czujniki znajdujących się najbliżej środka robota? Cytuj Link do komentarza Share on other sites More sharing options...
soban Maj 2, 2011 Udostępnij Maj 2, 2011 Jeździ b.dobrze za co wielki + 😉 ale te gluty i jakość wytrawienia aż prosi o poprawę ^ ^ Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Treker (Damian Szymański) Maj 2, 2011 Udostępnij Maj 2, 2011 Jak wysoko masz czujniki nad podłożem? Przez tę kulkę wygląda jakby była tam dość duża przerwa. Cytuj Link do komentarza Share on other sites More sharing options...
Sabre Maj 3, 2011 Udostępnij Maj 3, 2011 Mnie podoba się najbardziej sposób jazdy tego LFa. Prasę pokonuję bardzo płynnie i nie robi dużych łuków na kontach prostych. Widać PID wyregulowany bardzo dobrze. Nie robi dużych łuków bo jedzie wolno, sporo poniżej 1m/s. O pomstę do nieba woła niezabezpieczona przed utlenianiem miedź na laminacie no i luty, ale jeśli to twój pierwszy lfr to i tak nieźle. Cytuj Link do komentarza Share on other sites More sharing options...
Armir Maj 3, 2011 Udostępnij Maj 3, 2011 Jakiej to jest kulka 0,5 cala. Wygląda że czujniki są bardzo wysoko. To może być powodem nie wykrywania linii. A robot fajny. Cytuj Link do komentarza Share on other sites More sharing options...
Carpe Diem Maj 3, 2011 Udostępnij Maj 3, 2011 Jakiej to jest kulka 0,5 cala. Tak, jest link i tam jest napisane 1,27cm, a cal= ok. 2,55cm Cytuj Link do komentarza Share on other sites More sharing options...
Harnas Maj 3, 2011 Autor tematu Udostępnij Maj 3, 2011 Niby nic nowego, ot kolejny lfr, ale miło zobaczyć jakieś nowe, ciekawe rozwiązania sprzętowe/software'owe - multipleksacja czujników. Właśnie, jak tylko zobaczyłem w jaki to sposób robisz, nasunęło mi się pytanie - dlaczego nie zastosowałeś jeszcze po bramce not (zwykły npn) przy jednej z linii enable (jeden czujnik zasilany z inwertera, drugi z pinu gpio), mógłbyś wtedy zmniejszyć ilość linii enable o połowę, a tranzystorki w sot23 zajmują niewiele miejsca, zmniejszyłbyś liczbę ścieżek, a wolne gpio by mogły zostać wykorzystane chociażby do ledów (lub przycisków, do nastawiania stałych regulatora na przykład). Chętnie bym zerknął na schemat, co tam masz powrzucane i jak 🙂 Nie myślałem o tym ale zyskał bym tylko jedną linie. Aktualnie płytka z czujnikami jest 9mm nad podłożem, ale na zawodach były dodatkowe podkładki dzięki czemu była około 5mm nad podłożem. Prasę pokonuję bardzo płynnie i nie robi dużych łuków na kontach prostych. Widać PID wyregulowany bardzo dobrze. Wydaje mi się, że na tych silniczkach mógłby być szybszy, przypuszczam jednak, że spora masa stanowi pewien problem Może nie tyle co masa, ale program. Aktualnie silniczki mimo wymiany szczotek mają bardzo duże opory ruchu. jakość wytrawienia aż prosi o poprawę Płytka wyszła dobrze, tylko toner z obrysu płytki nieco odpadł (zresztą jak zawsze w moim przypadku 🙂 ) O pomstę do nieba woła niezabezpieczona przed utlenianiem miedź na laminacie no Solder maski nie robiłem, bo myślałem że sama kalafonia w spirytusie wystarczy (zwykle wystarczała), lecz na pierwszych zawodach z powodu potu miedź się utleniła. Czujniki spokojnie wykrywają linie, przy każdym uruchomieniu jest przeprowadzana kalibracja, lecz największą wadą tej konstrukcji jest tylko jedna kulka z przodu (wystarczy zakręt i czujniki mimo że są na białym zwracają nieco inne wartości. Cytuj Link do komentarza Share on other sites More sharing options...
Armir Maj 3, 2011 Udostępnij Maj 3, 2011 Czujniki są zdecydowanie za wysoko. Ja mam je na wysokości tak na oko 2,5mm. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Maj 3, 2011 Udostępnij Maj 3, 2011 Czujniki spokojnie wykrywają linie, przy każdym uruchomieniu jest przeprowadzana kalibracja, lecz największą wadą tej konstrukcji jest tylko jedna kulka z przodu (wystarczy zakręt i czujniki mimo że są na białym zwracają nieco inne wartości. To może granicę reakcji masz źle ustawioną? Mi z czasem wydaje się, że osobna kalibracja dla każdego z czujnika jest zbędna. Przecież i tak, jak się ustawi granicę np.: na 500 to zawsze będzie ładnie działało dla każdego z czujników i nie będzie problemów z niepewnymi odczytami. Cytuj Link do komentarza Share on other sites More sharing options...
Harnas Maj 3, 2011 Autor tematu Udostępnij Maj 3, 2011 Czujniki spokojnie wykrywają linie, przy każdym uruchomieniu jest przeprowadzana kalibracja, lecz największą wadą tej konstrukcji jest tylko jedna kulka z przodu (wystarczy zakręt i czujniki mimo że są na białym zwracają nieco inne wartości. To może granicę reakcji masz źle ustawioną? Mi z czasem wydaje się, że osobna kalibracja dla każdego z czujnika jest zbędna. Przecież i tak, jak się ustawi granicę np.: na 500 to zawsze będzie ładnie działało dla każdego z czujników i nie będzie problemów z niepewnymi odczytami. Właśnie w moim przypadku jest to dosyć dziwne. Czujniki przy krawędziach na białym tle zwracają wartości ADC około 700 gdy czujniki w środku zwracają wartości w granicach 200. Przy włączaniu robota ustawiam go na białym tle trasy i procek zapamiętuje wartości czujników. Potem co odczyt danego czujnika wykonuje operacje (Wartość czujnika - wartość kalibracji)*5 . Dzięki temu z każdego czujnika na białym mam 0 a gdy jest na linii wartość powyżej 1000 którą ograniczam do 1000. Jednak wystarczy żeby nieco przejechał albo docisnąć lekko jedną stronę to już na białym tle jest niekoniecznie 0. Może do czasów zawodów w Krakowie spróbuje zmienić to, aby zamiast wartości czujników które wylicza PID zamiast 0-1000 było tylko 0 lub 1. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Maj 3, 2011 Udostępnij Maj 3, 2011 Jeśli masz tak różne odczyty to zdecydowanie jest coś nie tak (jakieś zwarcia?) albo czujniki są za wysoko. Te czujniki mają dość dobre parametry odchyłki w pomiarach nie powinny być większe niż 20 (w skali do 1024). Po co do PID'a podajesz wartość z ADC? Dawało to jakieś wymierne korzyści? Cytuj Link do komentarza Share on other sites More sharing options...
Harnas Maj 4, 2011 Autor tematu Udostępnij Maj 4, 2011 Żadnych zwarć nie ma. Podawanie wartości ADC Teoretycznie powinno dać większą płynność ruchów, lecz nie wiem jak spisuje się podawanie wartości 1/0. Cytuj Link do komentarza Share on other sites More sharing options...
Razonek Maj 10, 2011 Udostępnij Maj 10, 2011 A mi się podoba robot 😃 Też chcę poskładać LF ale na razie co poskładam to nie działa ;/ Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!