Tolo Napisano Luty 18, 2014 Udostępnij Napisano Luty 18, 2014 Witam ! Jakiś czas temu ukończyłem budowe mojego drugiego (po robocie z "przepisu") line followera konstrukcja jak to zwykle bywa z robotami mojej konstrukcji jest niezmiernie prosta i pozbawiona wodotrysków. A więc robot powstał w sumie w niecały miesiąc jak tylko sobie uświadomiłem, mój budżet nie pozwoli mi na ukończenie pierwszej wersji robota do której zresztą miałem już płytki. Wygrzebałem więc z szuflady dwa silniczki HL149 20:1 i zacząłem działać. Przy budowie wykorzystałem pomysł kolegi Mirka który podsunął mi pomysł wykorzystania multipleksera i tak oto do ATmega8 udało mi się podłączyć... 16 czujników to całkiem nieźle biorąc pod uwagę że zużyłem tylko 5 nóżek uC. To rozwiązania sprawia również ,że robot to chyba jedyna taka konstrukcja na forbocie! Na początek może krótka specyfikacja: Jako że jestem leniwy to nie chciało mi się robić nowej płytki więc płyta główna pochodzi ze Zniszczyciela II link Reszta elementów to : Zasilanie: Li-po 1000mAh 3S Czujniki 16 x KTIR0711S Multiplexer : HEF4067 Napęd 2x Hl149 Prędkość według obliczeń 0,4 m/s 🤣 (za duże przełożenie silników) No dobrze ale na czym polega ten bajer z multiplekserem ? Otóż podstawowym problemem ograniczającym liczbę czujników w LF jest niewystarczająca liczba pinów zwłaszcza pinów ADC multiplexer pozwala nam obsłużyć nawet 16 czujników na jednym kanale ADC ! Jak on to robi ? Dosyć prosto to działa trochę tak jak przełącznik 16 pozycyjny za przełączanie go odpowiadają nóżki adresowe układu w przypadku 4067 jest ich 4 (4^2=16) więc jak widać pojawienie się na nich jakieś kombinacji bitów np. 0100 "zwiera" wejście układu do kanału adc ustawiając po kolei wszystkie kobinacje na nóżkach adresowych możemy w łatwy sposób sprawdzić 16 czujników podłączonych do wejść multiplexera. To chyba tyle z opisu schematu nie ma bo nigdy nie powstał druga płytka zawiera tylko multiplexer i złącze czujników. To teraz trochę zdjęć : I filmik : Program sterujący: Ponieważ rozwiązanie układowe jest nietypowe to również program wygląda trochę inaczej niż zwykle opiszę więc kawałek kodu. A3 = 0 : A2 = 1 : A1 = 0 : A0 = 1 'ustawiamy bity adresowy multipleksera Gosub Wczytaj_stany_przetwornikow 'pomiar ADC If W > Granica Then 'sprawdzmy czy jesteśmy na linii X = 4 'jeśli tak to wartosc czujnika = 4 D = 0 + X 'liczymy pseudo P Z = Kp * D Pwm1b = Tp + Z Pwm1a = Tp - Z End If Delay 'czekamy na przeladowanie bramki Czyli działa to tak wybieramy czujniki (piewsza linijka) sprawdzamy czy jest na linii jeśli tak to liczymy PWM jeśli nie to sprawdzmy kolejny. I tyle 😃 Oczywiście program to na razie wersja beta więc nie ma jeszcze uśredniania wyników i tak dalej. 2 Link do komentarza Share on other sites More sharing options...
Lukaszm Luty 18, 2014 Udostępnij Luty 18, 2014 Rozwiązanie z multiplekserem ciekawe i pytanie w związku z tym: korzystając z tego sposobu, ile razy w ciągu sekundy uzyskujesz pełny zestaw wartości odczytanych z czujników? Link do komentarza Share on other sites More sharing options...
Tolo Luty 19, 2014 Autor tematu Udostępnij Luty 19, 2014 ile razy w ciągu sekundy uzyskujesz pełny zestaw wartości odczytanych z czujników? Według noty katalogowej opóźnienie bramki wynosi 40nS ja po każdej pętli warunkowej daje komendę delay która wynosi 1000uS teraz mam ją razy 16 więc sprawdzam całą linijkę w 0,016 tzn. 62,5 raza na sekundę ale jak widać możliwości układu są większe i to opóźnienie można na pewno znacznie zmniejszyć. Co ciekawe według noty katalogowej im wyższe napięcie tym mniejszy czas przełączania i tak przy zasilaniu z 15V opóźnienie wynosi już tylko 20nS więc całą linijkę można by było sprawdzić...to chyba sobie sam każdy policzy przepraszam ale po prostu nie mam w tej chwili kalkulatora pod ręką 🙂 Oczywiście polecam zweryfikować te dane z notą katalogową układu bo naturalnie mogłem coś źle przeczytać Link do komentarza Share on other sites More sharing options...
Sabre Luty 19, 2014 Udostępnij Luty 19, 2014 Tolo, rozumiem, że przełączenie multiplekserem następuje gdy przetwornik ADC zdąży przekonwertować już napięcie z jednego czujnika. 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
Tolo Luty 21, 2014 Autor tematu Udostępnij Luty 21, 2014 Tolo, rozumiem, że przełączenie multiplekserem następuje gdy przetwornik ADC zdąży przekonwertować już napięcie z jednego czujnika. Hmmm co masz na myśli ? Udostępniłem fragment kodu odpowiedzialny za sprawdzanie czujnika jak widać przełączenie następuje po konwersji i odczekaniu opóźnienia Jeszcze może wrzucę szkic koncepcyjny do następnej konstrukcji : Takie rozwiązanie pozwala na odczyt już 8 czujników naraz możemy już w zasadzie standardowo uśredniać wyniki pomiarów co na pewno będzie o wiele wygodniejsze a także sterowanie samym multiplekserem jest prostsze (tylko dwa piny) oraz czas przełączania całej linijki jest o wiele krótszy 😅 Swoją drogą jak napisać w bascomie precyzyjne opóźnienia o zadanym czasie ? Np. 40nS ? Link do komentarza Share on other sites More sharing options...
Sabre Luty 21, 2014 Udostępnij Luty 21, 2014 Hmmm co masz na myśli ? Udostępniłem fragment kodu odpowiedzialny za sprawdzanie czujnika jak widać przełączenie następuje po konwersji i odczekaniu opóźnienia Nie czytałem kodu, myślałem, że może przełączasz multiplekserem przed zakończeniem pomiaru. Prawdę mówiąc nie wiem jak działa pomiar napięcia w Bascomie, czy napięcie jest próbkowane i dochodzi do konwersji, czy napięcie jest potrzebne przez cały czas konwersji. Jeśli byłoby tak jak w pierwszej opcji to można by od razu po rozpoczęciu konwersji przełączyć kanał. Niestety Bascom zwalnia z myślenia i zagłębiania się w dokumentację stąd sam nie wiem jak przebiega konwersja napięcia w AVRach. Link do komentarza Share on other sites More sharing options...
bart266 Luty 26, 2014 Udostępnij Luty 26, 2014 A nie myślałeś po prostu o użyciu timera? Ustawiasz tylko sobie flagę co te wyliczone 40ns. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »