Innehållsförteckning:
Video: Vinkellägesstyrning av 28BYJ-48 stegmotor med Arduino och analog joystick: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Detta är ett kontrollschema för stegmotorn 28BYJ-48 som jag har utvecklat för att använda som en del av mitt sista års avhandlingsprojekt. Jag har inte sett detta gjort förut så tänkte ladda upp det jag upptäckte. Förhoppningsvis hjälper detta någon annan där ute!
Koden tillåter i princip en stegmotor att "kopiera" vinkelpositionen för en analog joystick, det vill säga om du trycker joysticken framåt pekar motorn mot "norr". tryck joysticken mot väster, motorn roterar för att peka i samma riktning.
För min implementering krävde jag att om joysticken släpps, dvs inte har någon vinkelläge, återgår motorn till "hem" -riktningen. Hemriktningen är vänd åt öster, och motorn (eller vid leasning av vilken pekare / enhet du har anslutit till utgående axel!) Måste också riktas mot denna riktning när den slås på.
Tillbehör
Arduino Uno eller liknande
brödbräda och val av bygelkablar (hane till hane, hane till hona)
5V strömförsörjning
Analog joystick -modul (helst med en tillfällig tryckknappsfunktion, detta gör det lättare att vila "hem" -positionen
Stegmotor 28BYJ-48 och ULN2003 stegdrivrutin
Penna, papper och blu-tac (eller någon annan pekarenhet att fästa på motorn!)
Steg 1: Steg 1: Konfigurera
Anslut stegmotorn till stegdrivrutinen och anslut stiften enligt följande:
IN1 - Arduino -stift 8
IN2 - Arduino stift 9
IN3 - Arduino pin 10
IN4 - Arduino -stift 11
Anslut din 5v strömförsörjning till matningsskenorna på din brödbräda och anslut ULN2003 5v ingångarna till matningsskenorna. anslut markskenan till marken på din Arduino.
för joysticken, anslut enligt följande:
Brytare - Arduino pin 2
X -axel - Arduino A0 (analog i 0)
Y -axel - Arduino A1
+5V - Arduino 5V -utgång
GND - Arduino GND
Anslut slutligen marken på din brödbräda till den andra Arduino GND -stiftet
Steg 2: Steg 2: Förklara koden
Jag har inkluderat hela Arduino -koden för dig att ladda ner och använda. Men jag kommer att göra mitt bästa för att förklara de relevanta delarna här.
Teorin bakom denna kod är att det utrymme som joysticken upptar delas upp i en graf, med 0, 0 i mitten. men joystickingångarna vilar på (cirka) 512 i mitten, så för att övervinna detta används två funktioner för att "nollställa" värdet avläst från X- och Y -axeln. beroende på vilken strömförsörjning du använder kan du behöva ändra värdena i funktionerna ZeroX och ZeroY så att joysticken ger en tillförlitlig avläsning av 0 när du vilar.
När X, Y -värdena läses omvandlas de först till radianer med funktionen atan2 () i math.h -biblioteket. Att förklara denna funktion ligger utanför ramen för denna instruerbara, men sök gärna upp den - det är ett ganska enkelt geometri -trick!
Slutligen, för att göra livet enklare för oss som brukade arbeta i grader snarare än rad, konverteras radvärdet beräknat av atan2 () till grader.
Högst upp i öglan finns ett litet kodavsnitt som låter dig klicka i den tillfälliga knappen på joysticken för att flytta "hem" -platsen. Det här var otroligt användbart när jag testade koden, men jag har lämnat den eftersom jag kan se hur den kan vara användbar i vissa fall.
Nu till huvuddelen av koden! Vi börjar med att läsa joysticken X, Y -koordinater två gånger separerade med en 10 ms fördröjning och sedan kontrollera om de är desamma - jag fann att joysticken ibland skulle mata ut sporadiska avläsningar, och denna lilla fördröjning var tillräckligt för att stoppa motorn att vrida baserat på dessa. Det är också en tillräckligt kort fördröjning för att det inte verkar störa avsiktliga ingångar.
Resten av koden är ganska självförklarande och jag har gjort mitt bästa för att dokumentera den; En serie IF -uttalanden jämför den aktuella joystickvinkeln med motorvinkeln och flytta motorn till den vinkeln. 28BYJ-48 har 5.689 steg per grad, så det är därför vi multiplicerar den nödvändiga rörelsen med detta till synes udda tal!
Den ena delen av koden som kräver mest förklaring är vad jag har kallat "omslutningsfallet". I det jämna som joysticken & motorn var på t.ex. +175 °, och joysticken flyttades därefter till -175 ° (en rörelse på endast 10 ° på joysticken, från strax norr om väst till strax söder om väst), skulle motorn röra sig i FELRIKTEN med 350 °! för att redogöra för detta skrevs specialfallet.
Omslutningsfodralet börjar med att kontrollera att motorn och joysticken har motsatta tecken, dvs motorn är positiv och joysticken negativ, eller vice versa. Den kontrollerar också att summan av de absoluta (det vill säga positiva värden) för joysticken och motorn är över 180 °.
Om båda dessa påståenden är sanna, kontrollerar funktionen sedan om motorn måste röra sig medurs (motorvärdet är negativt) eller moturs (om motorvärdet är positivt).
De absoluta värdena för motorvinkeln och joystickvinkeln summeras och subtraheras från 360 ° för att bestämma avståndet att flytta. Slutligen uppdateras motorvinkeln (som nu återspeglar joystickvinkeln) som sådan.
Steg 3: FÄRDIG
Så det är bara att ladda upp koden till din Arduino och köra den! Se videon ovan för en bra uppfattning om hur projektet fungerar. Detta skulle vara användbart för kamerakardlar, robotarmar och många andra applikationer!
Om du använder koden, vänligen meddela mig, och om du ser någon där koden kan förbättras, skulle jag gärna höra din feedback.
Rekommenderad:
28BYJ-48 5V stegmotor och A4988-drivrutin: 4 steg
28BYJ-48 5V stegmotor och A4988-drivrutin: Har du någonsin velat få en robot att vrida i en exakt vinkel, med bara några få utgångar från din Arduino eller mikro: bit? Allt detta billigt? Det är det instruerbara för dig! I denna instruerbara kommer vi att se hur man kör en mycket billig stegmotor med endast
Hur man använder 28BYJ-48 stegmotor med 3 tryckknappar: 5 steg
Hur man använder 28BYJ-48 stegmotor med tre tryckknappar: Vill du styra din stegmotor med tryckknappar? Det kan göra medurs, moturs och sedan stoppa? Då är den här videon något för dig
Stegmotorstyrd stegmotor - Stegmotor som roterande kodare: 11 steg (med bilder)
Stegmotorstyrd stegmotor | Stegmotor som roterande kodare: Har ett par stegmotorer liggande och vill göra något? I denna instruerbara, låt oss använda en stegmotor som en roterande kodare för att styra en annan stegmotors position med en Arduino -mikrokontroller. Så utan vidare, låt oss ge
Hur man använder stegmotor som roterande kodare och OLED -display för steg: 6 steg
Så här använder du stegmotor som roterande kodare och OLED -skärm för steg: I denna handledning lär vi oss hur du spårar stegmotorstegen på OLED -skärmen. Titta på en demonstrationsvideo. Kredit för den ursprungliga handledningen går till YouTube -användaren " sky4fly "
Välja en stegmotor och drivrutin för ett Arduino Automated Shade Screen Project: 12 steg (med bilder)
Välja en stegmotor och drivrutin för ett Arduino Automated Shade Screen Project: I denna instruktionsbok kommer jag att gå igenom stegen som jag tog för att välja en Step Motor och Driver för ett prototyp Automated Shade Screen -projekt. Skärmskärmarna är de populära och billiga Coolaroo handvävda modellerna, och jag ville byta ut