Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03
Jest to schemat sterowania silnikiem krokowym 28BYJ-48, który opracowałem do wykorzystania w ramach mojego ostatniego roku pracy doktorskiej. Nie widziałem tego wcześniej, więc pomyślałem, że wrzucę to, co odkryłem. Mam nadzieję, że pomoże to komuś innemu!
Kod w zasadzie pozwala silnikowi krokowemu „skopiować” położenie kątowe joysticka analogowego, to znaczy, że jeśli popchniesz joystick do przodu, silnik będzie skierowany na „północ”. popchnij joystick w kierunku zachodnim, silnik obraca się w tym samym kierunku.
Do mojej realizacji wymagałem, aby w przypadku puszczenia joysticka, czyli braku położenia kątowego, silnik wracał do kierunku „domu”. Kierunek domu jest skierowany na wschód, a silnik (lub przynajmniej dowolny wskaźnik / urządzenie, które podłączono do wału wyjściowego!) Musi również być skierowany w tym kierunku po włączeniu.
Kieszonkowe dzieci
Arduino Uno lub podobny
płytka stykowa i wybór przewodów połączeniowych (męski na męski, męski na żeński)
Zasilanie 5V
Moduł analogowego joysticka (najlepiej z funkcją chwilowego przycisku, co ułatwia odpoczynek w pozycji "domowej")
Silnik krokowy 28BYJ-48 i sterownik krokowy ULN2003
Długopis, papier i blu-tac (lub inne urządzenie wskazujące do przymocowania do silnika!)
Krok 1: Krok 1: Konfiguracja
Podłącz silnik krokowy do sterownika krokowego i podłącz styki w następujący sposób:
IN1 - pin Arduino 8
IN2 - pin Arduino 9
IN3 - pin Arduino 10
IN4 - pin Arduino 11
Podłącz zasilacz 5 V do szyn zasilających na płytce stykowej i podłącz wejścia 5 V ULN2003 do szyn zasilających. podłącz szynę uziemiającą do ziemi w swoim Arduino.
dla joysticka podłącz w następujący sposób:
Pin przełącznika - pin Arduino 2
Oś X - Arduino A0 (analog we 0)
Oś Y - Arduino A1
+5V - wyjście Arduino 5V
GND - Arduino GND
Na koniec podłącz uziemienie płytki stykowej do drugiego pinu Arduino GND
Krok 2: Krok 2: Wyjaśnienie kodu
Dołączyłem pełny kod Arduino do pobrania i użycia. Ale zrobię co w mojej mocy, aby wyjaśnić istotne części tutaj.
Teoria stojąca za tym kodem polega na tym, że przestrzeń zajmowana przez joystick jest podzielona na wykres, z 0, 0 pośrodku. jednak wejścia joysticka znajdują się na (około) 512 w środku, więc aby przezwyciężyć te dwie funkcje są używane do "zerowania" wartości odczytanej z osi X i Y. w zależności od używanego zasilacza może zajść potrzeba zmiany wartości w funkcjach ZeroX i ZeroY, aby joystick dawał wiarygodny odczyt 0 podczas spoczynku.
Kiedy wartości X, Y są odczytywane, są najpierw konwertowane na radiany za pomocą funkcji atan2() w bibliotece math.h. Wyjaśnienie tej funkcji wykracza poza zakres tej instrukcji, ale proszę, sprawdź to - jest to dość prosta sztuczka geometrii!
Wreszcie, aby ułatwić życie tym z nas, którzy pracowali w stopniach, a nie w radach, wartość rad obliczona przez atan2() jest konwertowana na stopnie.
W górnej części pętli znajduje się mały fragment kodu, który umożliwia kliknięcie przycisku chwilowego na joysticku, aby przenieść lokalizację „domową”. Było to niezwykle przydatne podczas testowania kodu, ale zostawiłem to, ponieważ widzę, jak może być przydatne w niektórych przypadkach.
Teraz przejdźmy do głównej części kodu! zaczynamy od dwukrotnego odczytania z joysticka współrzędnych X, Y oddzielonych opóźnieniem 10ms, a następnie sprawdzenia, czy są takie same - stwierdziłem, że joystick czasami wyprowadzał sporadyczne odczyty, a to niewielkie opóźnienie wystarczyło, aby zatrzymać pracę silnika na ich podstawie. Jest to również na tyle krótkie opóźnienie, że nie wydaje się kolidować z celowymi danymi wejściowymi.
Reszta kodu jest raczej oczywista i zrobiłem co w mojej mocy, aby ją udokumentować; Seria poleceń JEŻELI porównuje aktualny kąt joysticka z kątem silnika i przesuwa silnik do tego kąta. 28BYJ-48 ma 5.689 kroków na stopień, dlatego pomnożymy wymagany ruch przez tę pozornie nieparzystą liczbę!
Jedyną częścią kodu, która wymaga najwięcej wyjaśnień, jest to, co nazwałem „zawijanym przypadkiem”. Mimo że joystick i silnik były m.in. +175°, a następnie drążek przesunął się do -175° (ruch drążka o zaledwie 10°, z północnego zachodu na południe od zachodu), silnik przesunąłby się W NIEWŁAŚCIWYM KIERUNKU o 350°! aby to wyjaśnić, napisano specjalny przypadek.
Sprawa zawijana zaczyna się od sprawdzenia, czy silnik i joystick mają przeciwne znaki, tj. silnik jest dodatni, a joystick ujemny lub odwrotnie. Sprawdza również, czy suma wartości bezwzględnych (to znaczy wartości dodatnich) joysticka i silnika jest większa niż 180°.
Jeśli oba te stwierdzenia są prawdziwe, funkcja sprawdza, czy silnik musi się poruszać zgodnie z ruchem wskazówek zegara (wartość silnika jest ujemna) czy przeciwnie do ruchu wskazówek zegara (jeśli wartość silnika jest dodatnia).
Wartości bezwzględne kąta silnika i kąta joysticka są sumowane i odejmowane od 360° w celu określenia odległości do przemieszczenia. Wreszcie, kąt silnika (który teraz odzwierciedla kąt joysticka) jest aktualizowany jako taki.
Krok 3: ZAKOŃCZONE
Pozostało więc tylko przesłać kod do Arduino i uruchomić go! Obejrzyj powyższy film, aby dowiedzieć się, jak działa projekt. Byłoby to przydatne w przypadku gimbali kamer, ramion robotów i wielu innych zastosowań!
Jeśli użyjesz kodu, daj mi znać, a jeśli zauważysz, że kod można poprawić, chętnie wysłucham Twojej opinii.
Zalecana:
Jak korzystać z silnika krokowego 28BYJ-48 z 3 przyciskami: 5 kroków
Jak używać silnika krokowego 28BYJ-48 z 3 przyciskami: Czy chcesz sterować silnikiem krokowym za pomocą przycisków? Co może zrobić zgodnie z ruchem wskazówek zegara, przeciwnie do ruchu wskazówek zegara, a następnie zatrzymać funkcję? W takim razie ten film jest dla Ciebie
Wybór silnika krokowego i sterownika do zautomatyzowanego projektu ekranu cieniowania Arduino: 12 kroków (ze zdjęciami)
Wybór silnika krokowego i sterownika do zautomatyzowanego projektu ekranu cieniowania Arduino: W tej instrukcji przejdę przez kroki, które podjąłem, aby wybrać silnik krokowy i sterownik do prototypowego projektu automatycznego ekranu cieniowania. Osłony przeciwsłoneczne to popularne i niedrogie modele z korbą ręczną Coolaroo i chciałem zastąpić
Zabawne projekty z zestawem Super Start Elegoo Uno R3 - sterowanie joystickiem dla silnika prądu stałego: 4 kroki
Zabawne projekty z zestawem Super Start Elegoo Uno R3 - Sterowanie joystickiem dla silnika prądu stałego: W tej instrukcji spróbuję kontrolować kierunek i prędkość silnika prądu stałego za pomocą joysticka za pomocą Arduino, użyj komponentów z Elegoo Uno R3 Super Start Kit dostępny na Amazon.com
Oprawa testowa silnika krokowego: 3 kroki
Urządzenie do testowania silnika krokowego: Nie miałem doświadczenia w prowadzeniu silników krokowych, więc przed zaprojektowaniem, wydrukowaniem, montażem i zaprogramowaniem zegara analogowego z automatyczną korekcją „Antyczny” (https://www.instructables.com/id/Antique-Auto-Correcting -Zegar analogowy/) za pomocą silnika krokowego
Hermetyzacja silnika krokowego serwo ze sterowaniem szeregowym przez Arduino za pomocą drukarki 3D - Pt4: 8 kroków
Hermetyzacja silnika krokowego serwo ze sterowaniem szeregowym przez Arduino za pomocą drukarki 3D - Pt4: W tym czwartym filmie z serii Motor Step wykorzystamy to, czego nauczyliśmy się wcześniej, aby zbudować serwomotor krokowy ze sterowaniem przez komunikację szeregową i rzeczywistym sprzężenie zwrotne położenia za pomocą enkodera rezystancyjnego monitorowanego przez Arduino. W