Skocz do zawartości

Użycie uC jako rozszerzenia możliwości RaspberryPi


decoo

Pomocna odpowiedź

Hej,
chciałbym zbudować robota, którego silniki będą sterowanie za pomocą Atmega8, w zależności od stanów na wejściu. Główną jednostką sterującą ma być RaspberryPi (docelowo jako access point i sterowanie smartfonem) a uC chcę wykorzystać jako sterownik silników. Docelowo chciałbym sterować czterema silnikami - coś jak https://www.youtube.com/watch?v=QIdfbgPAz8A. Niestety podpięcie dwu L293 do Raspberry Pi zajmuje praktycznie wszystkie GPIO, stąd pomysł na wykorzystanie uC. Nie bardzo jednak wiem jak to zaprogramować. Chcę wykorzystać maksymalnie 5 wyjść GPIO, (czyli 5 bitów). Docelowo chciałbym również sterować prędkościami dwu par silników (strona prawa/lewa). Gdybyście mieli jakieś wskazówki - chętnie poczytam 😉

Pozdrawiam

Link do komentarza
Share on other sites

Po pierwsze, moim zdaniem masz słabe podejście: "chcę coś zrobić jak najmniejszym nakładem pracy", ja zawsze miałem "zróbmy coś, bym nauczył się jak najwięcej"... No ale do tematu.

Do komunikacji z uC możesz skorzystać z wbudowanych w RPI interfejsów (SPI, I2C). Więc masz proste i przyjemne połączenie z (prawie) dowolną ilością modułów z uC. Jeżeli jednak chciałbyś wykonać to na samych GPIO (bez uC) to możesz skorzystać z jakiegoś expandera GPIO, którego obsłużenie też byłoby przyjemne i eliminowałoby konieczność użycia uC. Możliwości jest wiele, ale jak wspomniałem, sceptycyzm mnie ogarnia, jak czytam Twój brak entuzjazmu 😋

Link do komentarza
Share on other sites

Wydawało mi się, że entuzjazmu mi nie brakuje 😉 - Po Twojej (danioto) reakcji widzę, że tylko wydawało... Niemniej jednak entuzjazmem do wykonania pałam; oczekując Waszej (forumowiczów) pomocy.

Na początek nie chciałem używać żadnej z magistrali - gdyż po prostu jeszcze tego nie ogarniam, a użycie przypisanych stanów wydało mi się łatwiejsze do zrealizowania (zarówno ze strony zaprogramowania RPi jak i Atmega). Nie ukrywam, że czekam z niecierpliwością na kolejne części kursu C które pomogłyby mi zrealizować to zamierzenie.

Jest jeszcze kwestia poziomów logicznych - lepiej użyć konwerterów, czy zasilić uC 3v3?

Link do komentarza
Share on other sites

Na początku warto byłoby określić jakie sobie stawiasz wymagana co do konstrukcji. Nie wgłębiałem się czy GPIO RPI ma możliwość wyprowadzenia sygnału PWM, jeśli tak, to faktycznie można to zrobić na samym GPIO, jeżeli nie to zostaje Ci magistrala (bo chcemy przecież sterować prędkością silników, tak?)

Jeśli chodzi o poziomy logiczne, to już jak Ci będzie wygodniej. Albo możesz spróbować zrobić to na 3.3 woltowych ATmegach, albo zastosować jakieś konwertery (74LVC1T45, MAX3373). Pamiętaj tylko, że RPI nie ma żadnego zabezpieczenia przed zbyt dużym prądem/napięciem, więc łatwo spalić to cacko 🙂

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

Kontynuując więc założenia:

- na początek wystarczy mi ustalenie stałej wartości PWM - sterowanie prędkością później.

- chce użyć silników 3V (na początku 2 szt + kulka) - jeśli zasilę l293 5v to PWM w zasadzie posłuży do obniżenia wartości skutecznej do 3v

- planowałem użyć Atmega8 - czy będzie pracował "normalnie" na zasilaniu 3v3? (przez stabilizator np 7803) jeśli nie, to myślałem o konwerterze sparkfun.

- niestety nie wiem jak zbudować szkielet programu na uC - chętnie przyjrzałbym się jakiemuś przykładowi z PWM na dwa silniki i sterowaniem L293 ...

Jedną z idei wykorzystania uC jest własnie zabezpieczenie RPi. danioto - zainteresowałeś mnie tymi magistralami... muszę poszperać 😉

Link do komentarza
Share on other sites

Każdy głos mile widziany 😉

Zbudowałem mały prototyp - i prosty program do uC i mogę powiedzieć, że Atmega8 (1MHz) z tym programem (- głównie funckja switch 😉) steruje ww. mostkiem H wedlug założeń (tablica stanów). Jako zasilanie użylem GPIO 3v3 - i choć raczej to poprawne nie jest - zadziałało. Oczywiście budżetowy robot to nie jest... Za to daje duże możliwości rozwoju 😉 Teraz wypadałoby się dokształcić z magistral... BTW OldSkull - mógłbyś podzielić się jakimiś szczegółami?

decoo_cambot.c

Link do komentarza
Share on other sites

Na SPI są chociażby popularne układy serii 74595. Albo mozesz uzyć np. PCA9685 - 16 wyjść PWM bądź 1/0 sterowanych po I2C - jednym układem bez problemu wysterujesz kilka modułów. Jednakze cenowo układy na I2C wychodzą już o tyle drożej, że taniej może być uzyć mały procesor.

Link do komentarza
Share on other sites

Dzięki za wskazówkę - na adafruit znalazłem jakiś gotowy układ za 15 dolarow na PCA9685 - sterowanie 16 silnikami brzmi ciekawie, szczególnie, że powinno działać na 3v3... BTW ciekawe jakimi układami steruje się roboty przemysłowe - tam zdaje się są dość duże prądy...

Link do komentarza
Share on other sites

Dzięki za wskazówkę - na adafruit znalazłem jakiś gotowy układ za 15 dolarow na PCA9685
Zamówiłeś już? Bo jeśli nie, to chętnie bym dorzucił drugą sztukę i podzielił na pół przesyłkę ($12 jeśli dobrze widzę).

Na Kamami mają za 2x drożej, ale jeśli wziąć $15+$12 to w sumie wychodzi na zero.

[edit]

Wróć.. w sumie to mi na jedno wychodzi, bo netto w Kamami wychodzi 70zł, a $15+$6 też koło 70. Odpuszczam więc, bo w Kamami mam pewność otrzymania faktury.

Link do komentarza
Share on other sites

Tylko pamiętajcie, że ten z Adafruit na PCA9685 jest sterownikiem dajacym sygnały PWM, do sterowania silników jeszcze trochę potrzeba. Warto też sprawdzić czy są jakieś inne gotowe układy.

Link do komentarza
Share on other sites

Na razie się rozglądam - nic nie zamawiam... 😉

Mam taki luźny pomysł. Czytałem ostatnio relację Treker'a z RoboGames i moją uwagę przykuła kategoria Combat - ciekawe jak by sobie poradziła w pełni automatyczna/autonomiczna jednostka...

Harnas - może jakieś przykłady? Czy ktoś może próbował zrobić LF lub bardziej uniwersalnego robota wykorzystując jako "mózg" PC lub właśnie RPi?

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.