Skocz do zawartości

Pomocna odpowiedź

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.

DSC01473.thumb.JPG.c1b6be5620a5bf1649933cb7713ee8ec.JPG

  • Lubię! 2
Link do komentarza
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

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

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

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

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

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

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

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.