Aktualizacja: Obecnie zmieniam kilka rzeczy w projekcie. Skorzystałem z niektórych rad. Zmieniłem silnik krokowy na serwo RC (kontrolowane przez PWM) i jeśli napotkam jakieś problemy i nie mogę ich rozwiązać, zapytam. Dzięki za pomoc!
Pracuję nad projektem z przyjacielem i po raz pierwszy korzystam z Arduino. Używamy Arduino do pobierania danych z czujnika (akcelerometru), a następnie włączania silnika (6 V, DC).
Robiłem kopanie i wydaje się, że moc z Arduino może nie być wystarczająca dla silnika i czujnika w tym samym czasie. Może jakieś opóźnienie mogłoby zadziałać (czy byłoby to możliwe?).
Zastanawiam się nad użyciem tarczy silnika . Czy nadal będę w stanie kontrolować przyspieszeniomierz wraz z silnikiem?
Próbuję użyć jednego zewnętrznego źródła zasilania (maksymalnie: 6 baterii AA; Próbuję ograniczyć ilość baterii, ponieważ staramy się zachować przenośność), więc istnieje sposób na użycie jednego źródła, ponieważ Arduino i tarcza silnika potrzebują dwóch różnych zasilaczy (z mojego zrozumienia).
Odpowiedzi:
Problem 1 : Kierowanie silnikiem bezpośrednio z Arduino
Nie zaleca się napędzania silnika bezpośrednio ze styków Arduino z wielu powodów:
Podczas gdy każdy pin Arduino dla Arduinos opartych na ATmega ma wartość 40 mA, ja osobiście wolę utrzymać ciągłe obciążenie poniżej 30 mA, ale twój apetyt na ryzyko może być inny. Nie widząc arkusza danych silnika, nie można przewidzieć, ile prądu potrzebuje silnik
Wsteczne pole elektromagnetyczne to w zasadzie napięcie wsteczne generowane przez cewki silnika (lub dowolne obciążenie indukcyjne przy wyłączaniu), stany przejściowe (skoki), które mogą chwilowo znacznie przekroczyć dopuszczalny zakres napięcia, który mogą być tolerowane przez styki mikrokontrolera.
Wsteczne oddziaływanie pola elektromagnetycznego pozostaje ryzykiem, aczkolwiek zmniejszonym, nawet jeśli szybka dioda jest podłączona w odwrotnym kierunku przez przewody silnika, co jest zdecydowanie zalecaną praktyką.
Jeśli nie masz doświadczenia w posługiwaniu się podstawową elektroniką, można to również osiągnąć, podłączając bezpośrednio odpowiedni układ scalony sterownika silnika i diody flyback. ( Edycja : Jest to doskonale opisane w odpowiedzi Manisheartha )
Sterownik silnika, czy to tarcza, czy układ scalony, powinien być zasilany niezależnie od Arduino, ale z połączonymi ze sobą dwoma liniami uziemienia źródła zasilania. Zobacz dalej.
Problem 2 : Kontrolowanie akcelerometru i osłony silnika jednocześnie
Dla wygody poszukaj tarczy silnika z układanymi w stos nagłówkami, tj. Ze stykami nagłówka Arduino powielonymi na tarczy silnika w celu dołączenia dodatkowego sprzętu, w twoim przypadku akcelerometru. Nie wszystkie tarcze zapewniają nagłówki, które można ustawiać jeden na drugim. W ten sposób komplikuje się użycie pinów nieużywanych przez ekran, wymagających lutowania drutów do odpowiednich padów na płytce drukowanej lub jakiegoś takiego układu.
Przy małej szansie, że wybrana osłona silnika zużywa wszystkie piny GPIO, podobnie jak w przypadku osłon do napędzania wielu silników, możesz mieć problem. Ponieważ ma być napędzany tylko 1 silnik, unikaj ekranów wielosilnikowych, które nie pozostawiają wystarczającej ilości nieużywanych styków GPIO.
Problem 3 : Rozdział mocy między Arduino a osłoną silnika
źródło
Większość osłon zajmuje kilka pinów, a resztę pozostawia dla Ciebie (dlatego wiele z nich ma na sobie replikę systemu pinów Arduino za pomocą nagłówków ustawianych jeden na drugim). Są zaprojektowane tak, aby były możliwie bezproblemowe, więc zdobycie tarczy jest najłatwiejszym sposobem na obejście tego.
Ja osobiście nie zasilam silników bezpośrednio z płyty; zamiast tego używam do tego sterowników silnika, takich jak L293D. Piny nie są tak naprawdę dobre do pobierania prądu i ogólnie lepiej jest zasilać czujniki bezpośrednio, niż za pośrednictwem pinów Arduino. Pamiętaj, że piny mają limit prądu, a jeśli je przeładujesz, wypalą się.
Korzystanie z L293D jest łatwe:
Podłącz piny 1,9,16 do źródła Vcc (dodatni zacisk dowolnego źródła 5V, którym zasilasz Arduino. Dla mnie jest to na ogół linia wyciągnięta z LM7805). Teraz podłącz piny 4,5,13,12 do GND (zacisk ujemny). Teraz podłącz styk 8 do źródła o wyższym napięciu (6 V, 12 V lub cokolwiek, co chcesz zasilić silniki). Należy pamiętać, że ujemne zaciski wszystkich źródeł napięcia muszą być zwarte do masy.
Teraz podłącz silnik przez dwa styki wyjściowe w jednym miejscu (3,4 po lewej). Podłącz piny wejściowe (2,7) do dwóch różnych pinów w Arduino. Po podaniu tego samego sygnału (WYSOKI lub NISKI) na oba piny, silnik zatrzymuje się. Jeśli podasz WYSOKI z jednego styku, a NISKI z drugiego, silnik przejdzie w prawo lub w lewo, w zależności od tego, który styk uzyskał który sygnał.
Jeśli chcesz silnik jednokierunkowy i chcesz zapisać piny, zewrzyj jeden z pinów wejściowych do GND. Teraz, gdy drugi pin wejściowy jest NISKI, silnik będzie wyłączony, a gdy będzie WYSOKI, silnik będzie włączony.
Jeśli chcesz, możesz podłączyć inny silnik, wykonując tę samą procedurę na przeciwległym końcu układu.
L293D pobiera niewielką ilość prądu z Arduino i zasila silnik z prądu pobieranego przez pin 8, i zwykle jest idealny w takich sytuacjach.
źródło