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 to post
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 to post
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 to post
Share on other sites

Tolo, rozumiem, że przełączenie multiplekserem następuje gdy przetwornik ADC zdąży przekonwertować już napięcie z jednego czujnika.

Link to post
Share on other sites
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 to post
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 to post
Share on other sites
  • Gieneq zmienił tytuł na: Snab I
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

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.