INHOUDSOPGAWE:
Video: Hoekposisionele beheer van 28BYJ-48-stapmotor met Arduino en analoog joystick: 3 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Dit is 'n beheerskema vir die 28BYJ-48-stapmotor wat ek ontwikkel het om te gebruik as deel van my proefskrif vir die laaste jaar. Ek het dit nog nie voorheen gesien nie, so ek het gedink ek sal dit wat ek ontdek het, oplaai. Hopelik sal dit iemand anders daar buite help!
Die kode laat basies 'n stepper motor toe om die hoekposisie van 'n analoog joystick te "kopieer", dit wil sê as u die joystick vorentoe stoot, wys die motor na "noord". druk die joystick na die weste, die motor draai om in dieselfde rigting te wys.
Vir my implementering het ek vereis dat die motor terugkeer na die "huis" rigting as die joystick losgelaat word, dit wil sê geen hoekposisie het nie. Die huisrigting is ooswaarts, en die motor (of teenoor die wyser / toestel wat u aan die uitsetas gekoppel het) moet ook in hierdie rigting wees wanneer dit aangeskakel word.
Voorrade
Arduino Uno of soortgelyk
broodbord en seleksie van draaddrade (manlik tot manlik, manlik tot vroulik)
5V kragtoevoer
Analoge joystick -module (ideaal met 'n kort drukknop -funksie, dit maak die rusting van die "tuis" posisie makliker
28BYJ-48 stepper motor en ULN2003 stepper driver
Pen, papier en blu-tac (of enige ander wysertoestel om aan die motor te koppel!)
Stap 1: Stap 1: Opstel
Koppel die stappermotor aan die stepper -aandrywer en verbind die penne soos volg:
IN1 - Arduino -pen 8
IN2 - Arduino -pen 9
IN3 - Arduino -pen 10
IN4 - Arduino -pen 11
Koppel u 5v -kragtoevoer aan die toevoerrails op u broodbord en koppel die ULN2003 5v -insette aan die toevoerrails. verbind die grondrail met die grond op u Arduino.
vir die joystick, sluit soos volg aan:
Skakelpen - Arduino -pen 2
X -as - Arduino A0 (analoog in 0)
Y -as - Arduino A1
+5V - Arduino 5V -uitset
GND - Arduino GND
Verbind uiteindelik die grond van u broodbord met die ander Arduino GND -pen
Stap 2: Stap 2: Verduideliking van die kode
Ek het die volledige Arduino -kode ingesluit wat u kan aflaai en gebruik. Maar ek sal my bes doen om die relevante dele hier te verduidelik.
Die teorie agter hierdie kode is dat die ruimte wat die joystick inneem, in 'n grafiek verdeel is, met 0, 0 in die middel. Die joystick -insette rus egter op (ongeveer) 512 in die middel, sodat hierdie funksies gebruik word om die waarde van die X- en Y -as te "nul". Afhangende van die kragtoevoer wat u gebruik, moet u moontlik die waardes in die funksies ZeroX en ZeroY verander sodat u joystick 'n betroubare lesing van 0 gee as u rus.
As die X-, Y -waardes gelees word, word dit eers omgeskakel na radiale met behulp van die funksie atan2 () in die wiskundeh biblioteek. Die verduideliking van hierdie funksie val buite die omvang van hierdie instruksies, maar gaan kyk gerus - dit is 'n redelike eenvoudige meetkunde -truuk!
Ten slotte, om die lewe makliker te maak vir ons wat vroeër in grade as rads gewerk het, word die rad -waarde wat deur atan2 () bereken word, omgeskakel na grade.
Bo -aan die lus is 'n klein stukkie kode waarmee u op die kortstondige knoppie op die joystick kan klik om die 'tuis' -ligging te skuif. Dit was ongelooflik handig tydens die toets van die kode, maar ek het dit gelos omdat ek kan sien hoe dit in sommige gevalle nuttig kan wees.
Gaan nou na die grootste deel van die kode! Ons begin met die lees van die joystick X, Y -koördinate twee keer geskei deur 'n vertraging van 10 ms en kyk dan of dit dieselfde is - ek het gevind dat die joystick af en toe sporadiese metings sou lewer, en hierdie geringe vertraging was genoeg om te keer dat die motor draai op grond van hierdie. Dit is ook 'n kort genoeg vertraging dat dit skynbaar nie met opsetlike insette inmeng nie.
Die res van die kode is baie duidelik en ek het my bes gedoen om dit te dokumenteer; 'N Reeks IF -stellings vergelyk die huidige joystickhoek met die motorhoek en skuif die motor na die hoek. Die 28BYJ-48 het 5.689 stappe per graad, daarom vermenigvuldig ons die vereiste beweging met hierdie oënskynlik onewe getal!
Die een deel van die kode wat die meeste verduidelik moet word, is wat ek die 'omhulsel' genoem het. In die selfs dat die joystick & motor by bv. +175 °, en die joystick het daarna na -175 ° beweeg ('n beweging van slegs 10 ° op die joystick, van net noord van wes tot net suid van wes), sou die motor 350 ° in die verkeerde rigting beweeg! hiervoor is die spesiale geval geskryf.
Die omhulsel begin deur te kyk of die motor en joystick teenoorgestelde tekens het, dit wil sê die motor is positief en die joystick negatief, of andersom. Dit kontroleer ook dat die som van die absolute (dit wil sê positiewe waardes) van die joystick en motor bo 180 ° is.
As albei hierdie stellings waar is, kyk die funksie dan of die motor met die kloksgewys moet beweeg (die motorwaarde is negatief) of linksom (as die motorwaarde positief is).
Die absolute waardes van die motorhoek en joystickhoek word in totaal afgetrek en van 360 ° afgetrek om die afstand te bepaal wat bepaal moet word. Laastens word die motorhoek (wat nou die joystickhoek weerspieël) as sodanig bygewerk.
Stap 3: afgerond
Al wat u hoef te doen is om die kode na u Arduino op te laai en uit te voer! Sien die video hierbo vir 'n goeie idee van hoe die projek funksioneer. Dit sal handig wees vir kameras, robotarms en vele ander toepassings!
Laat weet my as u die kode gebruik, en as u sien waar die kode verbeter kan word, hoor ek graag u terugvoer.
Aanbeveel:
2 servo's beheer met behulp van analoge joystick: 5 stappe (met foto's)
Beheer oor 2 servo's met behulp van analoog joystick: Hallo ouens, dit is my eerste instruksie, en in hierdie pos deel ek hoe ek analoog joystick kan gebruik om servo's te beheer met behulp van Arduino UNO. Dit
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Die beheer van verskeie LED's met Python en die GPIO -penne van u Framboos Pi: 4 stappe (met foto's)
Die beheer van verskeie LED's met Python en die GPIO -penne van u Raspberry Pi: Hierdie instruksie demonstreer hoe u meer GPIO -penne op u RaspberryPi kan beheer om 4 LED's aan te dryf. Dit sal u ook kennis maak met parameters en voorwaardelike stellings in Python. Ons vorige instruksies met behulp van die GPIO -penne van u Raspberry Pi om
Beheer van 7-segment LED-skerm met behulp van ESP8266-webbediener: 8 stappe (met foto's)
Beheer van 7-segment LED-skerm met behulp van ESP8266-webbediener: My projek het 'n Nodemcu ESP8266 wat 'n 7-segment-skerm deur die http-bediener beheer met behulp van html-vorm
Raspberry Pi GPIO -kringe: Die gebruik van 'n LDR analoog sensor sonder 'n ADC (analoog na digitaal omskakelaar): 4 stappe
Raspberry Pi GPIO -kringe: Die gebruik van 'n LDR analoog sensor sonder 'n ADC (analoog na digitale omskakelaar): In ons vorige instruksies het ons u gewys hoe u die GPIO -penne van u framboos Pi aan LED's en skakelaars kan koppel en hoe die GPIO -penne hoog kan wees of Laag. Maar wat as u u Raspberry Pi met 'n analoog sensor wil gebruik? As ons 'n