Sisukord:
Video: 28BYJ-48 samm-mootori nurgapositsioonikontroll koos Arduino ja analoog juhtkangiga: 3 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
See on samm-mootori 28BYJ-48 juhtimisskeem, mille olen välja töötanud oma viimase aasta lõputöö projekti raames. Ma pole seda varem näinud, nii et arvasin, et laadin üles selle, mida avastasin. Loodetavasti aitab see kedagi teist!
Kood võimaldab põhimõtteliselt samm -mootoril analoog -juhtkangi nurgaasendit "kopeerida", st kui juhtkangi edasi lükata, osutab mootor "põhja" poole. lükake juhtkangi lääne poole, mootor pöörleb samas suunas.
Oma rakendamiseks nõudsin, et kui juhtkangi lahti lastakse, st tal pole nurgaasendit, pöördub mootor tagasi "kodu" suunas. Kodusuund on suunatud ida poole ja mootor (või rendilepingul mis tahes osuti / seade, mille olete väljundvõlli külge kinnitanud!) Peab ka sisselülitamisel olema selles suunas.
Tarvikud
Arduino Uno või sarnane
leivaplaat ja hüppajajuhtmete valik (isaselt isasele, isaselt naisele)
5V toide
Analoog -juhtkangi moodul (ideaaljuhul koos hetkelise nupuvajutusega, see muudab koduasendi kergemini puhata)
28BYJ-48 samm-mootor ja samm-juht ULN2003
Pliiats, paber ja blu-tac (või mõni muu osutusseade mootori külge kinnitamiseks!)
1. samm: 1. samm: seadistamine
Ühendage samm -mootor samm -ajamiga ja ühendage tihvtid järgmiselt:
IN1 - Arduino tihvt 8
IN2 - Arduino tihvt 9
IN3 - Arduino tihvt 10
IN4 - Arduino tihvt 11
Ühendage oma 5v toiteplokk oma leivalaua toitesiinidega ja ühendage ULN2003 5v sisendid toitesiinidega. ühendage maandusriba oma Arduino maapinnaga.
juhtkangi jaoks ühendage järgmiselt:
Lüliti tihvt - Arduino tihvt 2
X -telg - Arduino A0 (analoog 0 -s)
Y -telg - Arduino A1
+5V - Arduino 5V väljund
GND - Arduino GND
Lõpuks ühendage oma leivaplaadi alus teise Arduino GND tihvtiga
2. samm: 2. samm: koodi selgitamine
Lisasin allalaadimiseks ja kasutamiseks täieliku Arduino koodi. Kuid ma annan endast parima, et selgitada asjakohaseid osi siin.
Selle koodi teooria seisneb selles, et juhtkangi poolt hõivatud ruum on jagatud graafikuks, mille keskel on 0, 0. juhtkangi sisendid asuvad aga (umbes) 512 keskel, nii et selle ületamiseks kasutatakse kahte funktsiooni X ja Y teljelt loetud väärtuse nullimiseks. Sõltuvalt kasutatavast toiteallikast peate võib -olla muutma funktsioonide ZeroX ja ZeroY väärtusi, nii et teie juhtnupp annab puhkeolekus usaldusväärse väärtuse 0.
Kui X, Y väärtusi loetakse, teisendatakse need kõigepealt radiaanideks, kasutades math.h raamatukogu funktsiooni atan2 (). Selle funktsiooni selgitamine ei kuulu selle juhendi reguleerimisalasse, kuid palun otsige see üles - see on üsna lihtne geomeetria trikk!
Lõpuks, et lihtsustada meie, kes varem töötasime kraadides, mitte radides, elu lihtsustamist, teisendatakse atan2 () abil arvutatud rad väärtus kraadideks.
Silmuse ülaosas on väike koodilõik, mis võimaldab "kodu" asukoha teisaldamiseks klõpsata juhtkangi hetkelisel nupul. See oli koodi testimisel uskumatult kasulik, kuid olen selle jätnud, sest näen, kuidas see võib mõnel juhul kasulik olla.
Nüüd koodi põhiosa juurde! alustame juhtkangi X, Y koordinaatide lugemisega, mis on kaks korda eraldatud 10 ms viivitusega, ja seejärel kontrollime, kas need on samad - leidsin, et juhtkang väljastab aeg -ajalt juhuslikke näitu ja sellest väikesest viivitusest piisas mootori pöörlemise peatamiseks nende põhjal. See on ka piisavalt lühike viivitus, mis ei näi tahtlikke sisendeid segavat.
Ülejäänud kood on üsna iseenesestmõistetav ja olen andnud endast parima, et seda dokumenteerida; IF -lausete seeria võrdleb juhtkangi praegust nurka mootori nurgaga ja liigutab mootori selle nurga alla. 28BYJ-48-l on 5,689 sammu kraadi kohta, seega korrutame nõutava liikumise selle näiliselt paaritu arvuga!
Koodi üks osa, mis nõuab kõige rohkem selgitamist, on see, mida olen nimetanud "ümbrisjuhtumiks". Isegi siis, kui juhtkang ja mootor olid nt. +175 ° ja juhtkangi nihutati seejärel -175 ° -ni (juhtkangi liikumine vaid 10 °, lääne põhjast läände veidi lõuna pool), liiguks mootor 350 ° võrra vales suunas! selle selgitamiseks kirjutati erijuhtum.
Ümbrusjuhtum algab kontrollides, kas mootoril ja juhtkangil on vastupidised märgid, st mootor on positiivne ja juhtkang negatiivne, või vastupidi. Samuti kontrollib see, et juhtkangi ja mootori absoluutarvude (st positiivsete väärtuste) summa oleks üle 180 °.
Kui mõlemad väited on tõesed, kontrollib funktsioon, kas mootor peab liikuma päripäeva (mootori väärtus on negatiivne) või vastupäeva (kui mootori väärtus on positiivne).
Mootori nurga ja juhtkangi nurga absoluutväärtused liidetakse kokku ja lahutatakse 360 ° -st, et määrata liikumiskaugus. Lõpuks uuendatakse mootori nurka (mis nüüd kajastab juhtkangi nurka).
3. samm: VALMIS
Niisiis, jääb üle vaid kood Arduinosse üles laadida ja see käivitada! Vaadake ülaltoodud videot, et saada hea ülevaade projekti toimimisest. See oleks kasulik kaamera kardaanide, robotkäepidemete ja paljude muude rakenduste jaoks!
Kui kasutate koodi, andke mulle sellest teada ja kui näete mõnda kohta, kus koodi saab täiustada, oleks hea meel kuulda teie tagasisidet.
Soovitan:
Juhtkangiga juhitav ratastool koos takistuste jälgijaga: 3 sammu (piltidega)
Juhtkangiga juhitav ratastool koos takistuste jälgijaga: füüsilise puudega inimeste ohutuks sõitmiseks hõlbustamiseks kasutatakse ultraheliandurit, mis jälgib teel olevaid takistusi. Joystick'i liikumise põhjal hakkavad mootorid ratastooliga sõitma suvalises neljas suunas ja kiirusel
28BYJ-48 5V samm-mootor ja A4988 juht: 4 sammu
28BYJ-48 5V samm-mootor ja A4988 draiver: Kas olete kunagi tahtnud saada robotit pöörama täpselt nurga all, kasutades vaid mõnda teie Arduino või micro: bit väljundit? Seda kõike odavalt? See on teile õpetatav! Selles juhendis näeme, kuidas juhtida väga odavat samm -mootorit, kasutades ainult
Isejuhtiv ja PS2 juhtkangiga juhitav Arduino auto: 6 sammu
Isejuhtiv ja PS2 juhtkangiga juhitav Arduino auto: Tere, minu nimi on Joaquín ja ma olen Arduino harrastaja. Eelmisel aastal sattusin Arduino kinnisideeks ja hakkasin just igasuguseid asju tegema ning see automaatne ja juhtkangiga juhitav auto on üks neist. Kui soovite midagi sarnast teha
Juhtkangiga juhitav servo Arduino abil (koos programmeerimisega): 4 sammu
Juhtkangi juhitav servo Arduino abil (koos programmeerimisega): Selles õpetuses valmistame juhtkangi juhtimisservo, kasutades Arduino Uno. Servo liigub vastavalt juhtkangi liikumisele
WiFi-juhitav FPV Roveri robot (koos Arduino, ESP8266 ja samm-mootoritega): 11 sammu (koos piltidega)
WiFi-juhitav FPV Roveri robot (koos Arduino, ESP8266 ja Stepper Motorsiga): see juhendab, kuidas kavandada kaugjuhtimisega kaherattaline robot-rover WiFi-võrgu kaudu, kasutades ESP8266 WiFi-mooduliga ühendatud Arduino Unot ja kaks samm -mootorit. Robotit saab juhtida tavaliste Interneti -kulmude kaudu