- Bezrdzeniowy silnik prądu stałego do samochodów RC
- Wymagane materiały
- Joystick RF do samochodu RC przy użyciu Arduino
- Schemat obwodu samochodu Arduino RC
- Wykonanie PCB dla Arduino RC Car
- Montaż PCB
- Koła do druku 3D i mocowanie silnika
- Programowanie Arduino
- Działanie Arduino RC Car
Samochody RC są zawsze fajne do zabawy, osobiście jestem wielkim fanem tych zdalnie sterowanych samochodów i często się nimi bawiłem (nadal robię). Większość z tych samochodów zapewnia dziś ogromny moment obrotowy do pokonywania trudnych terenów, ale jest coś, co zawsze było opóźnione, jego prędkość !!.. Więc w tym projekcie zbudujemy zupełnie inny typ samochodu RC przy użyciu Arduino, głównego celem tego samochodu jest osiągnięcie maksymalnej prędkości, dlatego postanowiłem wypróbować bezrdzeniowy silnik prądu stałego do samochodu RC. Silniki te są zwykle używane w dronach i są oceniane na 39000 obr / min co powinno wystarczyć, aby ugasić pragnienie szybkości. Samochód będzie zasilany małą baterią litową i będzie można nim sterować zdalnie za pomocą modułu RF nRF24L01. Alternatywnie, jeśli szukasz czegoś prostego, możesz również sprawdzić te projekty Simple RF Robot i Raspberry Pi Bluetooth Car.
Bezrdzeniowy silnik prądu stałego do samochodów RC
Coreless silnik prądu stałego, który jest używany w tym projekcie jest pokazany na rysunku poniżej. Możesz je łatwo znaleźć, ponieważ są szeroko stosowane w mini dronach. Wystarczy poszukać magnetycznego mikrordzeniowego silnika bezrdzeniowego 8520, a znajdziesz je.
Istnieją pewne wady stosowania silników prądu stałego w samochodach RC. Po pierwsze zapewniają bardzo niski moment rozruchowy, dlatego nasz samochód RC powinien być tak lekki, jak to tylko możliwe. Dlatego zdecydowałem się zbudować cały samochód na płytce drukowanej przy użyciu komponentów SMD i maksymalnie zmniejszyć rozmiar płytki. Drugim problemem jest jego duża prędkość, 39000 RPM (obr / min wału) jest trudna do obsługi, dlatego potrzebujemy obwodu kontroli prędkości po stronie Arduino, który zbudowaliśmy za pomocą MOSFET-u. Po trzecie, silniki te będą zasilane pojedynczą baterią litowo-polimerową o napięciu roboczym od 3,6 V do 4,2 V, więc musimy zaprojektować nasz obwód tak, aby działał na 3,3 V. Dlatego użyliśmy 3,3 V Arduino Pro minijako mózg naszego samochodu RC. Po rozwiązaniu tych problemów przyjrzyjmy się materiałom potrzebnym do zbudowania tego projektu.
Wymagane materiały
- 3,3 V Arduino Pro Mini
- Arduino Nano
- NRF24L01 - 2szt
- Moduł joysticka
- MOSFET SI2302
- Dioda 1N5819
- Bezrdzeniowe silniki BLDC
- AMS1117-3.3V
- Bateria litowo-polimerowa
- Rezystory, kondensatory,
- Przewody łączące
Joystick RF do samochodu RC przy użyciu Arduino
Jak wspomniano wcześniej, samochód RC będzie sterowany zdalnie za pomocą joysticka RF. Ten Joystick zostanie również zbudowany przy użyciu Arduino wraz z modułem RF nRF24L01, użyliśmy również modułu Joystick do sterowania naszym RC w wymaganym kierunku. Jeśli nie znasz tych dwóch modułów, możesz rozważyć przeczytanie artykułów Łączenie Arduino z nRF24L01 i Łączenie joysticka z Arduino, aby dowiedzieć się, jak one działają i jak z nich korzystać. Aby zbudować zdalny joystick Arduino RF, możesz postępować zgodnie z poniższym schematem obwodu.
Obwód joysticka RF może być zasilany przez port USB karty nano. Moduł nRF24L01 pracuje tylko na 3,3V, stąd użyliśmy pin 3,3V na Arduino. Zbudowałem obwód na płytce stykowej i wygląda jak poniżej, w razie potrzeby możesz również utworzyć płytkę drukowaną do tego.
Kod Arduino dla obwodu RF Joystick jest dość prosta, musimy odczytać wartość X i wartość Y z naszego Joystick i wysłać go do samochodu RC przez nRF24L01. Kompletny program tego obwodu można znaleźć na dole tej strony. Nie będziemy tego wyjaśniać, ponieważ omówiliśmy to już w udostępnionym powyżej łączu do projektu interfejsu.
Schemat obwodu samochodu Arduino RC
Pełny schemat obwodu dla naszego zdalnie sterowanego samochodu Arduino pokazano poniżej. Schemat obwodu zawiera również opcję dodania dwóch modułów TCRT5000 IR do naszego samochodu. Zaplanowano to, aby nasz samochód RC mógł pracować jako robot podążający za linią, tak aby mógł pracować samodzielnie, bez zewnętrznego sterowania. Jednak ze względu na ten projekt nie będziemy się na nim koncentrować, czekaj na kolejny samouczek dotyczący projektu, w którym spróbujemy zbudować „Fastest Line Follower Robot”. Połączyłem oba obwody na jednej płytce drukowanej, aby ułatwić budowanie, możesz zignorować czujnik podczerwieni i sekcję wzmacniacza operacyjnego w tym projekcie.
WcześniejszeSamochód RC będzie zasilany z akumulatora Lipo podłączonego do zacisku P1. AMS117-3.3V służy do regulowania 3.3V dla naszego nRF24L01 i nasze pro-mini-planszy. Możemy również zasilać płytkę Arduino bezpośrednio na surowym pinie, ale wbudowany regulator napięcia 3,3 V na pro mini nie będzie w stanie dostarczyć wystarczającej ilości prądu do naszych modułów RF, dlatego użyliśmy zewnętrznego regulatora napięcia.
Do napędzania naszych dwóch silników BLDC użyliśmy dwóch tranzystorów MOSFET SI2302. Ważne jest, aby upewnić się, że te tranzystory MOSFET mogą być zasilane napięciem 3,3 V. Jeśli nie możesz znaleźć dokładnie tego samego numeru części, możesz poszukać równoważnych tranzystorów MOSFET o poniższych właściwościach przenoszenia
Silniki mogą pobierać prąd szczytowy do 7 A (ciągły został przetestowany na 3 A z obciążeniem), stąd prąd drenu MOSFET powinien wynosić 7 A lub więcej i powinien włączać się całkowicie przy 3,3 V. Jak widać tutaj, wybrany przez nas MOSFET może zapewnić 10 A nawet przy 2,25 V, więc jest to idealny wybór.
Wykonanie PCB dla Arduino RC Car
Najfajniejszą częścią budowy tego projektu było opracowanie PCB. Płytka drukowana nie tylko tworzy obwód, ale działa również jako podwozie dla naszego samochodu, więc zaplanowaliśmy samochód, który będzie wyglądał dla niego z opcjami łatwego montażu naszych silników. Możesz także spróbować zaprojektować własną płytkę drukowaną za pomocą powyższego obwodu lub możesz użyć mojego projektu PCB, który po ukończeniu wygląda następująco.
Jak widać, zaprojektowałem płytkę PCB, aby łatwo zamontować akumulator, silnik i inne komponenty. Możesz pobrać plik Gerber dla tej płytki drukowanej z linku. Gdy jesteś gotowy z plikiem Gerber, czas na jego wykonanie. Aby łatwo wykonać PCBGOGO, wykonaj poniższe czynności
Krok 1: Wejdź na www.pcbgogo.com, zarejestruj się, jeśli to Twój pierwszy raz. Następnie w zakładce PCB Prototyp wprowadź wymiary swojej płytki PCB, liczbę warstw i liczbę potrzebnych PCB. Moja płytka ma wymiary 80 cm × 80 cm, więc zakładka wygląda tak poniżej.
Krok 2: Kontynuuj, klikając przycisk Cytuj teraz . Zostaniesz przeniesiony na stronę, na której możesz ustawić kilka dodatkowych parametrów, jeśli to konieczne, takich jak zastosowany materiał, rozstaw ścieżek itp. Ale głównie wartości domyślne będą działać dobrze. Jedyne, co musimy tutaj wziąć pod uwagę, to cena i czas. Jak widać, czas budowy wynosi tylko 2-3 dni i kosztuje tylko 5 USD dla naszego PSB. Następnie możesz wybrać preferowaną metodę wysyłki w oparciu o swoje wymagania.
Krok 3: Ostatnim krokiem jest załadowanie pliku Gerber i kontynuacja płatności. Aby upewnić się, że proces przebiega bezproblemowo, PCBGOGO sprawdza, czy Twój plik Gerber jest ważny przed przystąpieniem do płatności. W ten sposób możesz mieć pewność, że Twoja płytka drukowana jest przyjazna dla produkcji i dotrze do Ciebie zgodnie z zaangażowaniem.
Montaż PCB
Po zamówieniu płytki dotarła do mnie po kilku dniach, choć kurier w ładnie opisanym, dobrze zapakowanym pudełku i jak zawsze jakość PCB była niesamowita. Udostępniam kilka zdjęć poniższych tablic do oceny.
Włączyłem lutownicę i przystąpiłem do montażu płytki. Ponieważ Footprints, pady, przelotki i sitodruk są idealne pod względem odpowiedniego kształtu i rozmiaru, nie miałem problemu ze złożeniem płytki. Deska była gotowa już po 10 minutach od rozpakowania pudełka.
Poniżej kilka zdjęć płytki po wlutowaniu.
Koła do druku 3D i mocowanie silnika
Jak być może zauważyłeś na powyższym obrazku, musimy wykonać 3D nasze mocowanie silnika i koła robota. Jeśli korzystałeś z naszego udostępnionego powyżej pliku Gerber PCB, równie dobrze możesz użyć modelu 3D, pobierając go z tego łącza.
Użyłem Cura do pokrojenia moich modeli i wydrukowałem je przy użyciu Tevo Terantuala bez podpór i wypełnienia 0% w celu zmniejszenia wagi. Możesz zmienić ustawienie zgodnie z naszą drukarką. Ponieważ silniki obracają się bardzo szybko, trudno mi było zaprojektować koło, które będzie dobrze i ciasno pasowało do wału silnika. Dlatego zdecydowałem się użyć ostrzy drona wewnątrz koła, jak widać poniżej
Okazało się, że jest to bardziej niezawodne i wytrzymałe, jednak eksperymentuj z różnymi konstrukcjami kół i daj mi znać w sekcji komentarzy, co zadziałało w Twoim przypadku.
Programowanie Arduino
Kompletny program (zarówno Arduino nano, jak i pro mini) dla tego projektu można znaleźć na dole tej strony. Objaśnienie twojego programu RC jest następujące
Program uruchamiamy od dołączenia wymaganego pliku nagłówkowego. Zauważ, że moduł nRF24l01 wymaga dodania biblioteki do Twojego Arduino IDE, możesz pobrać bibliotekę RF24 z Github, korzystając z tego linku. Poza tym zdefiniowaliśmy już minimalną i maksymalną prędkość dla naszego robota. Minimalny i maksymalny zakres to odpowiednio od 0 do 1024.
#define min_speed 200 #define max_speed 800 #include
Następnie w funkcji setup inicjalizujemy nasz moduł nRF24L01. Użyliśmy 115 pasm, ponieważ nie są one zatłoczone i ustawiliśmy moduł na pracę z niskim poborem mocy, można też pobawić się tymi ustawieniami.
void setup () {Serial.begin (9600); myRadio.begin (); myRadio.setChannel (115); // 115 pasm powyżej sygnałów WIFI myRadio.setPALevel (RF24_PA_MIN); // Minimalna moc niskiej mocy myRadio.setDataRate (RF24_250KBPS); // Minimalna prędkość}
Następnie w głównej funkcji pętli wykonamy tylko funkcję ReadData, za pomocą której będziemy stale odczytywać wartość wysyłaną z naszego modułu joysticka Transmitter. Należy zwrócić uwagę, że adres potoku podany w programie powinien być taki sam, jak ten wymieniony w programie przetwornika. Wydrukowaliśmy również wartość, którą otrzymujemy do celów debugowania. Po pomyślnym odczytaniu wartości wykonamy funkcję Control Car, aby sterować naszym samochodem RC na podstawie wartości otrzymanej z
modułu Rf.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Który potok odczytać, 40-bitowy Adres myRadio.startListening (); // Zatrzymaj transmisję i rozpocznij sprawdzanie if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.print ("\ nReceived:"); Serial.println (data.msg); otrzymane = dane.msg; Control_Car (); }}
Wewnątrz funkcji Control Car będziemy sterować silnikami podłączonymi do pinów PWM za pomocą funkcji zapisu analogowego. W naszym programie nadajnika przekonwertowaliśmy wartości analogowe z pinów A0 i A1 w Nano na 1 do 10, 11 do 20, 21 do 30 i 31 do 40 do sterowania samochodem odpowiednio do przodu, do tyłu, z lewej i prawej strony. Poniższy program służy do sterowania robotem w kierunku do przodu
if (odebrane> = 1 && odebrane <= 10) // Przesuń dalej {int PWM_Value = map (Otrzymane, 1, 10, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, PWM_Value); }
Podobnie, możemy również napisać trzy dodatkowe funkcje dla sterowania wstecz, w lewo iw prawo, jak pokazano poniżej.
if (odebrane> = 11 && odebrane <= 20) // Przerwa {int PWM_Value = map (odebrane, 11, 20, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, 0); } if (odebrane> = 21 && odebrane <= 30) // Skręć w lewo {int PWM_Value = map (odebrane, 21, 30, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, 0); } if (odebrane> = 31 && odebrane <= 40) // Skręć w prawo {int PWM_Value = map (odebrane, 31, 40, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, PWM_Value); }
Działanie Arduino RC Car
Gdy skończysz z kodem, prześlij go na swoją pro-mini-tablicę. Wyjmij baterię i płytkę przez moduł FTDI w celu przetestowania. Uruchom kod, otwórz baterię szeregową i powinieneś otrzymać wartość z modułu joysticka nadajnika. Podłącz akumulator, a silniki również powinny zacząć się obracać.
Pełne działanie projektu można znaleźć w wideo, do którego link znajduje się na dole tej strony. Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy. Możesz również skorzystać z naszych forów, aby uzyskać szybkie odpowiedzi na inne pytania techniczne.