Sisukord:

28BYJ-48 samm-mootori nurgapositsioonikontroll koos Arduino ja analoog juhtkangiga: 3 sammu
28BYJ-48 samm-mootori nurgapositsioonikontroll koos Arduino ja analoog juhtkangiga: 3 sammu

Video: 28BYJ-48 samm-mootori nurgapositsioonikontroll koos Arduino ja analoog juhtkangiga: 3 sammu

Video: 28BYJ-48 samm-mootori nurgapositsioonikontroll koos Arduino ja analoog juhtkangiga: 3 sammu
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, September
Anonim
28BYJ-48 samm-mootori nurgapositsioonikontroll koos Arduino ja analoog juhtkangiga
28BYJ-48 samm-mootori nurgapositsioonikontroll koos Arduino ja analoog juhtkangiga

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: