Përmbajtje:

Menyja e Kontrollit të Shpejtësisë Stepper Drejtuar për Arduino: 6 Hapa
Menyja e Kontrollit të Shpejtësisë Stepper Drejtuar për Arduino: 6 Hapa

Video: Menyja e Kontrollit të Shpejtësisë Stepper Drejtuar për Arduino: 6 Hapa

Video: Menyja e Kontrollit të Shpejtësisë Stepper Drejtuar për Arduino: 6 Hapa
Video: Octopus Max EZ V1.0 - Basics 2024, Korrik
Anonim
Menuja e kontrollit të shpejtësisë Stepper e drejtuar për Arduino
Menuja e kontrollit të shpejtësisë Stepper e drejtuar për Arduino
Menuja e kontrollit të shpejtësisë Stepper e drejtuar për Arduino
Menuja e kontrollit të shpejtësisë Stepper e drejtuar për Arduino
Menuja e kontrollit të shpejtësisë Stepper e drejtuar për Arduino
Menuja e kontrollit të shpejtësisë Stepper e drejtuar për Arduino

Kjo bibliotekë SpeedStepper është një rishkrim i bibliotekës AccelStepper për të lejuar kontrollin e shpejtësisë së motorit stepper. Biblioteka SpeedStepper ju lejon të ndryshoni shpejtësinë e caktuar të motorit dhe më pas përshpejton/ngadalëson në shpejtësinë e re të caktuar duke përdorur të njëjtin algoritëm si biblioteka AccelStepper. Biblioteka SpeedStepper gjithashtu ju lejon të vendosni kufirin plus dhe minus dhe një pozicion "shtëpi". Ekziston një urdhër goHome për t'u kthyer në pozicionin e shtëpisë.

Kufizimet: Biblioteka SpeedStepper drejton vetëm daljet e drejtimit dhe hapave dhe kështu duhet të lidhet me një drejtues motori, siç është Easy Driver, për të drejtuar në fakt motorin stepper. Biblioteka AccelStepper ofron më shumë mundësi drejtimi të cilat mund të kopjohen në këtë bibliotekë nëse kërkohet.

Janë dhënë tre skica shembullore, secila prej të cilave mund të ekzekutohet pa motor ose drejtues motori. skica speedStepperPlot nxjerr shembull komandat e shpejtësisë dhe komandën goHome dhe gjeneron një komplot të shpejtësisë dhe pozicionit që rezulton. Skica speedStepperSetup siguron një konfigurim të drejtuar nga menuja për të vendosur shtëpinë dhe kufijtë e motorit dhe më pas drejtoni motorin dhe rregulloni shpejtësinë lart e poshtë dhe shkoni në shtëpi për të përfunduar. Skica speedStepperProfile tregon një shembull të krijimit dhe ekzekutimit të një profili të shpejtësisë.

Ndërsa biblioteka AccelStepper siguron kontroll të mirë të pozicionit, kontrolli i shpejtësisë ishte i nevojshëm për Prototipin e Shkrirjes së Akullit për Grumbullimin e Mostrave Biologjike në Evropë. Këtu është një video e një versioni të mëparshëm të prototipit, i cili përdorte peshë në vend të një motori. Rishikimi 1.1 shtoi profile të shpejtësisë pasi një përdorues kërkoi një mjet për të kontrolluar profilin e shpejtësisë së një pompë.

Kjo bibliotekë funksionon në Arduino Uno dhe Mega2560, por për prototipin u përdor një memorie më e madhe / procesor më i shpejtë SparkFun Redboard Turbo.

Ky udhëzues është gjithashtu i disponueshëm në internet në Bibliotekën e Stepper Speed Control për Arduino

Furnizimet

Për të ekzekutuar skicat e shembullit nevojiten vetëm një Arduino UNO ose Mega2560 dhe bibliotekat e softuerit

Për testimin e stolit të bibliotekës, një SparkFun Redboard Turbo u përdor me një Driver Easy, një 200 hapa/rrotullim, një motor stepper 12V 350mA dhe një furnizim 12 DC 2A ose më të madh, p.sh. https://www.sparkfun.com/products/14934. USB A në kabllo mikro USB në TTL Serial Cable Arduino IDE V1.8.9 dhe një kompjuter për ta ekzekutuar atë. Biblioteka SpeedStepperpfod Biblioteka parsuese për mos bllokimin e hyrjeve dhe klasave pfodBufferedStream millis Biblioteka e vonuar për mos bllokimin e vonesave

Hapi 1: Funksionet e Bibliotekës

Biblioteka SpeedStepper drejton motorin stepper të kufizuar nga kufijtë e vendosur nga biblioteka. Shikoni skedarin SpeedStepper.h për metodat e ndryshme të bibliotekës në dispozicion. Këtu është një përmbledhje e logjikës që qëndron pas tyre.

Pozicioni i hapit gjurmohet duke numëruar numrin e hapave (impulseve). Biblioteka kufizon pozicionin që të jetë midis pozicioneve setPlusLimit (int32_t) dhe setMinusLimit (int32_t). Kufiri plus është gjithmonë> = 0 dhe kufiri minus është gjithmonë <= 0. Në fillimin pozicioni i motorit është 0 (shtëpi) dhe kufijtë vendosen në numra shumë të mëdhenj +/- (rreth +/- 1e9 hapa). setAcceleration (noton) përcakton se sa shpejt motori do të ndryshojë shpejtësinë lart ose poshtë. Ndërsa motori i afrohet kufirit plus ose minus ai do të ngadalësohet me këtë ritëm derisa të ndalet në kufi. Me fillimin, nxitimi vendoset në 1.0 hapa/sek/sek. Vendosja e nxitimit është gjithmonë një numër +ve. Shenja e cilësimit setSpeed (float) përcakton drejtimin që motori do të lëvizë.

setSpeed (noton) vendos shpejtësinë për të përshpejtuar / ngadalësuar motorin në, nga shpejtësia e tij aktuale. Shpejtësia që mund të vendoset nëpërmjet setSpeed (noton) është e kufizuar, në vlerë absolute, nga cilësimet, setMaxSpeed (noton), parazgjedhur 1000 hapa/sek dhe setMinSpeed (noton), parazgjedhje 0.003 hapa/sek. Këto parazgjedhje janë gjithashtu kufijtë absolutë të shpejtë të koduar të vështirë që biblioteka do të pranojë për setMaxSpeed () dhe setMinSpeed (). Nëse dëshironi të vendosni një shpejtësi maksimale> 1000 hapa/sek do t'ju duhet të redaktoni rreshtin e parë në skedarin SpeedStepper.cpp për të ndryshuar maxMaxSpeed (1000) në shpejtësinë maksimale që dëshironi. Në praktikë, shpejtësia maksimale është gjithashtu e kufizuar me kohën midis thirrjeve në metodën e drejtimit () të bibliotekës. Për 1000 hapa / sek metoda run () duhet të thirret të paktën çdo 1mS. Shihni seksionin e Vonesës më poshtë.

Përpjekja për të vendosur një shpejtësi më të vogël se shpejtësia e min do të bëjë që motori të ndalojë. Secili prej këtyre vendosësve ka një grumbullues përkatës, shihni skedarin SpeedStepper.h. Për shpejtësinë, getSetSpeed () kthen shpejtësinë që keni vendosur nëpërmjet setSpeed (), ndërsa getSpeed () kthen shpejtësinë aktuale të motorit e cila ndryshon ndërsa përshpejton/ngadalëson tek ju shpejtësinë e caktuar. Nëse motori nuk po shkon në drejtimin që mendoni për a +ve mund të telefononi invertDirectionLogic () për të ndërruar drejtimin që lëviz motori për +ve shpejtësi.

getCurrentPosition () kthen pozicionin aktual të motorit në krahasim me 'shtëpi' (0). Ju mund të anashkaloni pozicionin aktual të motorit të vendosurCurrentPosition (int32_t). Pozicioni i ri është i kufizuar të jetë brenda kufijve të caktuar plus/minus.

Fillimisht motori është ndalur në pozicionin 0. Thirrja e setSpeed (50.0) do të bëjë që ai të fillojë të përshpejtojë në drejtimin +ve në një shpejtësi maksimale prej 50 hapash/min. Thirrja e hardStop () do të ndalojë menjëherë motorin aty ku është. Nga ana tjetër, thirrja e metodës stop () do të vendosë shpejtësinë në zero dhe do të ngadalësojë motorin në një ndalesë. Thirrja e stopAndSetHome () do të ndalojë motorin menjëherë dhe do të vendosë pozicionin e tij në 0. Vlerat e kufijve plus/minus nuk ndryshojnë, por tani i referohen këtij pozicioni të ri 0 (shtëpi). Thirrja e goHome () do ta kthejë hapin në këtë pozicion 0 (në shtëpi) dhe do të ndalet. Thirrja e setSpeed () do të anulojë shkuarjen në shtëpi.

Biblioteka SpeedStepper gjithashtu siguron kontroll të profilit të shpejtësisë përmes metodave setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), për të ndërprerë një profil drejtues dhe isProfileRunning (). Shikoni skicën e shembullit speedStepperProfile.

Hapi 2: Drejtimi i shembullit SpeedStepperPlot pa motor

Drejtimi i shembullit SpeedStepperPlot pa motor
Drejtimi i shembullit SpeedStepperPlot pa motor

Instaloni Arduino IDE V1.8.9Shkarkoni dhe instaloni bibliotekën SpeedStepper Save the SpeedStepper.zip dhe më pas përdorni artikullin e menysë Arduino IDE Sketch → Include Library → Add. ZIP bibliotekë për të importuar bibliotekën Shkarkoni dhe instaloni edhe bibliotekën millisDelay

Hapni skicën e shembujve → SpeedStepper → speedStepperPlot (Rinisni IDE nëse është e nevojshme). Kjo skicë është konfiguruar të punojë me Serial, p.sh. UNO dhe Mega etj. Për funksionimin në SparkFun Redboard Turbo shihni më poshtë.

Asnjë bord bordi ose motor stepper nuk është i nevojshëm për të ekzekutuar këtë shembull. Këta shembuj përdorin D6 dhe D7 si dalje. Mund të ndryshoni kunjat e daljes në çdo dalje dixhitale duke ndryshuar cilësimet STEP_PIN dhe DIR_PIN pranë pjesës së sipërme të skicës.

Ngarko skicën në bord dhe më pas hap Plotterin Serial të Tools at në 115200 baud për të treguar komplotin e shpejtësisë (KUQ) dhe pozicionit (BLUE) Kufiri plus është vendosur në 360 që bën që shpejtësia të ngrihet në zero nga rreth 100 pikë në boshtin x. Kufiri minus është -510. Pozicioni ndalet në 3 -390 sepse shpejtësia është kërkuar në 0.0. Në pikën 380 në boshtin x, lëshohet cmd goHome e cila e kthen hapin në pozicionin zero.

Ky skicë speedStepperPlot përdor millisVonesat në kalimin e kohës midis shpejtësive dhe nxitimeve të ndryshme. Në shumë raste përdorimi i një SpeedStepperProfile, si në shembullin tjetër, është më i thjeshtë.

Hapi 3: Drejtimi i Shembullit të SpeedStepperProfile Pa Motor

Drejtimi i shembullit SpeedStepperProfile pa motor
Drejtimi i shembullit SpeedStepperProfile pa motor

Hapni skicën shembull të Shembujve → SpeedStepper → speedStepperPlot, kjo skicë prodhon komplotin e mësipërm duke përdorur Arduino Serial Plotter dhe është një shembull i drejtimit të një profili të caktuar shpejtësie, për shembull nëse përdorni një pompë.

Profilet Stepper Speed përbëhen nga një grup i SpeedProfileStruct, i cili përcaktohet në skedarin SpeedStepper.h.

strukture SpeedProfileStruct {

shpejtësia e notimit; // shpejtësia e synuar në fund të këtij hapi deltaTms të gjata të panënshkruara; // koha për të përshpejtuar nga shpejtësia aktuale (në fillim të këtij hapi) në shpejtësinë e synuar};

Përcaktoni një grup të SpeedProfileStruct që përmban shpejtësinë e synuar për çdo hap dhe kohën, deltaTms, në mS, për të arritur atë shpejtësi të synuar nga shpejtësia e synuar e mëparshme. Nëse deltaTms është zero ose shumë e vogël, atëherë shpejtësia do të hidhet menjëherë në shpejtësinë e re të synuar. Përndryshe, nxitimi i kërkuar do të llogaritet setAcceleration () do të thirret e ndjekur nga një thirrje në setSpeed () për shpejtësinë e re të synuar. Në të gjitha rastet profili do të kufizohet nga kufijtë ekzistues të pozicionit plus dhe minus dhe cilësimet e shpejtësisë max/min. Nëse doni të mbani një shpejtësi, thjesht përsëritni shpejtësinë e mëparshme me kohën që dëshironi të mbahet. Meqenëse shpejtësia e re e synuar është e njëjtë me shpejtësinë aktuale, nxitimi i llogaritur do të jetë zero dhe nuk ndodh asnjë ndryshim.

Ky grup SpeedProfileStruct prodhoi komplotin e mësipërm

const profili SpeedProfileStruct = {{0, 0}, // ndaloni menjëherë nëse nuk jeni ndalur tashmë {0, 1000}, // mbani zero për 1 sekondë {-50, 0}, // hidheni në -50 {-200, 2000}, // nyja devijuese në -200 {-200, 6000}, // mbajeni në -200 për 6 sekonda {-50, 2000}, // devijoni deri në -50 {0, 0}, // // ndaloni së shpejti {0, 1500}, // mbajeni zero për 1.5 sekonda {50, 0}, // hidheni në 50 {200, 2000}, // devijim në 200 {200, 6000}, // mbajeni 200 për 6 sekonda {50, 2000}, // pjerrësia në 50 {0, 0}, // // ndalo menjëherë {0, 1000} // mbaj zero // për vizatimin e daljes}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // llogarit madhësinë e grupit të profilit

Profili vendoset duke thirrur setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) p.sh. stepper.setProfile (profili, PROFILE_LEN);

Pasi të jetë vendosur profili, telefononi startProfile () për të filluar funksionimin e tij nga shpejtësia aktuale e motorit (zakonisht do të filloni nga e ndaluar). Në fund të profilit, motori thjesht do të vazhdojë të funksionojë me shpejtësinë e fundit të synuar. Metoda isProfileRunning () mund të thirret për të parë nëse profili është ende në punë. Nëse doni të ndaloni profilin herët, mund të telefononi stopProfile () e cila do të braktisë profilin dhe do të ndalojë motorin.

Hapi 4: Drejtimi i shembullit SpeedStepperSetup Pa motor

Skica shembullore është krijuar për një bazë për aplikimin tuaj të motorit stepper. Ajo siguron një ndërfaqe të drejtuar nga menyja që ju lejon të lëvizni në motor në pozicionin e tij kryesor, nëse jo tashmë atje dhe pastaj opsionalisht rivendosni kufijtë plus dhe minus dhe më pas drejtojeni motorin brenda atij diapazoni. Menyja "drejtuar" ju lejon të rrisni dhe zvogëloni shpejtësinë, të ngrini me shpejtësinë aktuale, të ndaloni dhe gjithashtu të ktheheni në shtëpi.

Ky skicë ilustron një numër karakteristikash të softuerit që mbajnë lakun () të përgjegjshëm në mënyrë që të mund të shtoni hyrjet tuaja të sensorit për të kontrolluar hapin. Duhen dhimbje për të shmangur vonesat që do të ndërhynin në kontrollin e shpejtësisë. (Shihni Vonesat janë të Keqe)

Instaloni bibliotekat e përdorura për drejtimin e SpeedStepperPlot, sipër, dhe pastaj instaloni edhe bibliotekën pfodParser. Biblioteka pfodParser furnizon klasat NonBlockingInput dhe pfodBufferedStream që përdoren për të trajtuar hyrjen e përdoruesit dhe daljen e menysë me bllokimin e funksionimit të lakut ().

Hapni shembullin Shembuj → SpeedStepper → speedSpeedSetup. Kjo skicë është konfiguruar të punojë me Serial, p.sh. UNO dhe Mega etj. Për funksionimin në SparkFun Redboard Turbo shihni më poshtë.

Asnjë bord bordi ose motor stepper nuk është i nevojshëm për të ekzekutuar këtë shembull. Këta shembuj përdorin D6 dhe D7 si dalje. Mund të ndryshoni kunjat e daljes në çdo dalje dixhitale duke ndryshuar cilësimet STEP_PIN dhe DIR_PIN pranë pjesës së sipërme të skicës. Ngarko skicën në tabelë dhe pastaj hap Tools → Serial Monitor në 115200 për të parë menunë SETUP.

SETUP pos: 0 sp: 0.00 +Lim: 500000 -Lim: -500 Vonesë: stepper: 492uS loop: 0uS p -set Home l -vendosni kufijtë h -goHome r -run>

Kur skica shkon, pozicioni aktual i hapit merret si pozicioni "shtëpi" (0). Nëse keni nevojë të ri-poziciononi hapësin në pozicionin e tij të vërtetë "shtëpi", futni komandën p për të shfaqur menunë SET HOME

SET HOME pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 Vonesë: stepper: 752uS loop: 3852uS x -set >>

Siç mund ta shihni, kufijtë e koduar në skicë janë hequr, kështu që ju mund të ri-poziciononi hapin kudo. Duhet të keni kujdes që të mos i tejkaloni kufijtë fizikë ose mund të thyeni diçka.

Përdorni + cmd për të filluar lëvizjen e hapit përpara, nëse e shihni që lëviz në drejtim të gabuar, futni një jo-komandë ose vetëm një vijë të zbrazët për ta ndaluar atë dhe më pas përdorni shkopin për të ndërruar drejtimin e Përpara. Duhet ta përditësoni skicën për të përfshirë një thirrje në invertDirectionLogic () në konfigurim për ta rregulluar këtë për ekzekutimin e ardhshëm.

Përdorni + / - cmds për të pozicionuar hapin në pozicionin e duhur zero. Motori fillon të ngadalësohet dhe më pas rrit shpejtësinë ndërsa vazhdon, thjesht përdorni dhe zbrazni vijën për ta ndaluar atë. Shpejtësia maksimale për këtë dhe menyja e kufijve përcaktohet nga MAX_SETUP_SPEED në krye të setupMenus.cpp.

Pasi motori të jetë pozicionuar në pozicionin e tij 'shtëpi', përdorni x cmd për të rivendosur pozicionin aktual si 0 dhe kthehuni te menyja SETUP.

Nëse keni nevojë të vendosni kufijtë, zakonisht vetëm në konfigurimin fillestar, përdorni cmd l për të hyrë në menunë SET LIMITS

SET KUFIZIMET pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 Vonesë: stepper: 944uS loop: 5796uS l -setKufizo këtu + -Përpara - -Kthehu mbrapa -shkoHome në shtëpi -dalje -hardStop>

Përdorni + cmd për të kaluar më tej në kufirin plus dhe më pas përdorni cmd l për ta vendosur atë si kufiri plus. Komanda h pastaj mund të përdoret për t'u kthyer në 0 dhe - cmd për të lëvizur nëse nderon në pozicionin e motorit në kufirin minus. Përsëri përdorni l cmd për të vendosur kufirin minus. Vini re pozicionet e kufijve plus dhe minus dhe përditësoni deklaratat setPlusLimit dhe setMinusLimit të metodës setup () me këto vlera.

Kur vendosen kufijtë përdorni x cmd për t'u kthyer në menunë SETUP dhe më pas mund të përdorni r cmd për të hapur menunë RUN

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 Vonesë: stepper: 944uS lak: 5796uS + -Shpejtoni - -Shpejtoni poshtë h -goHome. -hardStop-Shpejtësia e ngrirjes> +pos: 4 sp: 9.49 +Lim: 500000-Lim: -500 Vonesë: stepper: 792uS loop: 5664uS pos: 42 sp: 29.15 +Lim: 500000 -Lim: -500 Vonesë: stepper: 792uS lak: 5664uS pos: 120 sp: 49.09 +Lim: 500000 -Lim: -500 Vonesë: stepper: 792uS loop: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCI: stepper: 792uS lak: 5664uS

+ Cmd fillon të përshpejtohet në drejtimin përpara dhe printon pozicionin dhe shpejtësinë çdo 2 sekonda. Kur motori arrin shpejtësinë që dëshironi ju mund ta ndaloni nxitimin me çdo çelës tjetër (ose një hyrje të zbrazët). Mund të zvogëloni shpejtësinë duke përdorur - cmd poshtë për të ndaluar. Nëse ndalet - cmd do të përshpejtohet në të kundërt.

Kjo meny RUN siguron kontroll manual të projektit tuaj. Për kontrollin automatik do t'ju duhet të shtoni disa sensorë të tjerë.

Hapi 5: Vonesa

Kontrolli i motorit stepper varet nga programi që komandon çdo hap. Për të ruajtur shpejtësinë e caktuar, skica juaj duhet të thërrasë metodën stepper.run () mjaft shpesh për të shkrepur hapin tjetër në kohën e duhur për shpejtësinë aktuale. Për kontroll përmes sensorëve ju duhet të jeni në gjendje të përpunoni menjëherë matje të reja. Shtypja e pozicionit/shpejtësisë përfshin dy matje të Vonesës për t'ju lejuar të kontrolloni që skica juaj është mjaft e shpejtë.

Stepper Latency (pfodBufferedStream)

Vonesa e hapit mat vonesën maksimale midis thirrjeve të njëpasnjëshme në metodën stepper.run (). Për të drejtuar motorin stepper me 1000 hapa për sekondë, vonesa e hapit duhet të jetë më pak se 1000uS (1mS). Versioni i parë i kësaj skice kishte një vonesë prej shumë milisekonda. Për të kapërcyer këtë thirrje shtesë në metodën runStepper () (e cila thërret stepper.run ()) ku shtohet përmes kodit. Kjo nuk e zgjidhi plotësisht problemin sepse menyja dhe deklaratat e printimit dalës bllokuan skicën pasi tamponi i vogël Serial Tx ishte i plotë. Për të shmangur këtë bllokim, pfodBufferedStream nga biblioteka pfodParser u përdor për të shtuar një tampon të printimit me dalje 360 bajtë, të cilit deklaratat e printimit mund t'i shkruanin shpejt. Pastaj pfodBufferedStream lëshon bajtët në normën e baud të specifikuar 115200 në këtë rast. pfodBufferedStream duhet të zgjedhë ose të bllokojë kur tamponi është i plotë ose thjesht të bjerë në shënim kapërcimet. Këtu është vendosur të bjerë çdo shenjë shtesë kur tamponi është i plotë në mënyrë që skica të mos bllokohet duke pritur që Seriali të dërgojë karaktere.

Vonesa e lakut (InB NonBlockingInput)

Vonesa e lakut mat vonesën maksimale midis thirrjeve të njëpasnjëshme në metodën e lakut (). Kjo përcakton sa shpejt mund të përpunoni matjet e reja të sensorit dhe të rregulloni shpejtësinë e caktuar të motorit. Se sa shpejt duhet të jetë varet nga ajo që po përpiqeni të kontrolloni.

Vonesat për shkak të deklaratave të shtypura u hoqën duke përdorur pfodBufferedStream më lart, por për të përpunuar hyrjen e përdoruesit ju duhet të merrni shenjën e parë të hyrjes dhe të injoroni pjesën tjetër të rreshtit. Klasa NonBlockingInput në bibliotekën pfodParer përdoret për të kthyer një char jo-zero kur ka hyrje, duke përdorur readInput (), dhe për të pastruar dhe hedhur poshtë karakteret e mëposhtëm, duke përdorur clearInput (), derisa të mos merren shenja për 10mS pa bllokuar lakin ()

Sigurisht, vonesa e lakut do të rritet me kodin shtesë që shtoni për të lexuar sensorët dhe për të llogaritur shpejtësinë e re të caktuar. Shumë biblioteka të sensorëve marrin llojin e thjesht të përdorimit të vonesës (..) midis fillimit të një matjeje dhe marrjes së rezultatit. Ju do të duhet të rishkruani këto biblioteka për të përdorur millisDelay në vend, për të marrë matjen pas një vonese të përshtatshme jo-bllokuese.

Hapi 6: Drejtimi i SpeedStepperSetup Me një motor Stepper dhe SparkFun Redboard Turbo

Drejtimi i SpeedStepperSetup Me një motor Stepper dhe SparkFun Redboard Turbo
Drejtimi i SpeedStepperSetup Me një motor Stepper dhe SparkFun Redboard Turbo
Drejtimi i SpeedStepperSetup Me një motor Stepper dhe SparkFun Redboard Turbo
Drejtimi i SpeedStepperSetup Me një motor Stepper dhe SparkFun Redboard Turbo

Për të ekzekutuar vërtet skicën SpeedStepperSetup do t'ju duhet një motor stepper, shofer dhe furnizim me energji dhe në këtë shembull SparkFun Redboard Turbo.

Diagrami i instalimeve elektrike më lart (versioni pdf) tregon lidhjet. Në skicën SpeedStepperSetup ndryshoni SERIAL -in në #define SERIAL Serial1

Stepper Motor, Furnizimi me energji, Shoferi dhe Mbrojtja

Ka shumë lloje dhe madhësi të motorëve stepper. Këtu përdoret një motor stepper me dy spirale 12V 350mA për testim. Për të fuqizuar këtë stepper ju nevojitet një furnizim me energji prej 12V ose më shumë dhe më i madh se 350mA.

Kjo bibliotekë siguron vetëm një drejtim dhe dalje hapash, kështu që keni nevojë për një drejtues për t'u ndërlidhur me motorin stepper. Shoferi i Lehtë dhe Shoferi i Madh i Lehtë kontrollojnë rrymën në mbështjelljet e motorit, kështu që ju mund të përdorni një furnizim me energji të një tensioni më të lartë në mënyrë të sigurt, për shembull duke përdorur furnizimin me 6V për një motor 3.3V. Shoferi Easy mund të furnizojë midis 150mA/spirale dhe 700mA/spirale. Për rrymat më të larta, Shoferi Big Easy mund të furnizojë deri në 2A për spirale. Lexoni FAQ -të në fund të faqes Easy Drive.

Këta shembuj përdorin D6 dhe D7 si rezultate të Hapit dhe Drejtimit. Ju mund t'i ndryshoni kunjat e daljes në çdo dalje dixhitale duke ndryshuar cilësimet STEP_PIN dhe DIR_PIN pranë pjesës së sipërme të skicës.

Programimi i Sparkfun Redboard Turbo

Programimi i Redboard Turbo është problematik. Nëse nuk arrin të programojë, së pari shtypni butonin e rivendosjes një herë dhe rizgjidhni portën COM në menunë Arduino Tools dhe provoni përsëri. Nëse kjo nuk funksionon, shtypni dy herë butonin e rivendosjes dhe provoni përsëri.

Instaloni drejtuesin Easy Driver

Dy motorë stepper me spirale kanë 4 tela. Përdorni një multimetër për të gjetur çiftet që lidhen me secilën spirale dhe më pas lidhni një spirale në terminalet Easy Driver A dhe spiralen tjetër në terminalin B. Nuk ka rëndësi se në cilën anë i lidhni ato, sepse mund të përdorni s cmd në menunë e konfigurimit për të ndërruar drejtimin e lëvizjes.

Furnizimi me energji motorike lidhet me M+ dhe GNDVendosni nivelin logjik të bordit me lidhjen 3/5V. Shkurtoni lidhjen së bashku për daljet e mikroprocesorit 3.3V, si SparkFun Redboard Turbo (nëse e lini të hapur është i përshtatshëm për sinjale dixhitale 5V, p.sh. UNO, Mega) Lidhni kunjat GND, STEP, DIR me mikroprocesorin GND dhe hapin dhe kunjat e daljes dir. Asnjë lidhje tjetër nuk është e nevojshme për të drejtuar motorin.

Kabllo Seriale USB në TTL

Kur zhvendosni skicën SpeedStepperSetup nga Uno/Mega në Turbo të Redboard ju mund të zëvendësoni në mënyrë naive thjesht #define SERIAL Serial me #define SERIALUSial që t'i përshtatet lidhjes serike të Redboard Turbo usb, megjithatë ju do të zbuloni se vonesa stepper që rezulton është rreth 10mS. Kjo është 10 herë më ngadalë sesa për UNO. Kjo për shkak të mënyrës se si CPU e Redboard trajton lidhjen USB. Për të arritur këtë, lidhni një kabllo USB serike me TTL në D0/D1 dhe vendosni#define SERIAL Serial1 për të përdorur lidhjen serike të harduerit për të kontrolluar motorin stepper. Përdorimi i Serial1 jep Vonesë: hapi: lak 345uS: 2016uS që është 3 herë më i shpejtë se UNO për vonesën e hapit dhe lakut

Programi Terminal

Monitoruesi Serial Arduino është pak më i vështirë për t'u përdorur për të kontrolluar motorin stepper pasi duhet të futni shenjën në vijën cmd dhe më pas shtypni Enter për ta dërguar atë. Një mjet më i shpejtë dhe më i përgjegjshëm është hapja e një dritareje terminale, TeraTerm për PC (ose CoolTerm Mac), e lidhur me portën COM të kabllit USB me TTL. Pastaj në atë dritare duke shtypur një buton cmd e dërgon atë menjëherë. Duke shtypur Enter thjesht dërgoni një linjë të zbrazët.

Vendosja e diapazonit të shpejtësisë së motorit

Siç është lidhur më lart, Easy Drive është konfiguruar për hapat 1/8, kështu që 1000 hapa/sek do ta kthejë motorin në 1000/8/200 hap/revolucion = 0.625 rrotullime në sekondë ose maksimum 37.5 rpm. Duke ndryshuar hyrjet në MS1/MS2 ju mund të kaloni midis hapave 1/8, ¼, ½ dhe të plotë. Për hapa të plotë lidhni MS1 dhe MS2 me GND. Kjo do të lejojë shpejtësi deri në 300 rpm. Zgjedhja e cilësimeve të përshtatshme MS1/MS2 ju lejon të rregulloni raportin e ingranazheve të instaluar midis motorit dhe pjesës së drejtuar.

Mbrojtja e harduerit

Ndërsa biblioteka SpeedStepper ju lejon të vendosni kufijtë e pozicionit në lëvizjen e motorit, kapja e pozicionit bëhet duke numëruar hapat e dalur nga softueri. Nëse motori ngec, domethënë çift rrotullimi është i pamjaftueshëm për të drejtuar motorin në hapin tjetër, atëherë pozicioni i softuerit do të jetë jashtë sinkronizimit me pozicionin e motorit. Pastaj kur përdorni komandën 'goHome' motori do të tejkalojë pozicionin e shtëpisë. Për të parandaluar dëmtimin e harduerit, duhet të vendosni çelësa limit në kufijtë e fortë për të shkëputur furnizimin me energji të motorit

Vendosja e kufirit të rrymës së motorit

Së pari, vendoseni në cilësimin më të ulët të potenciometrit. dmth tensioni në TP1 është minimal. Potenciometri është delikat, kështu që mos e detyroni potenciometrin të kalojë ndalesat mekanike. Vendoseni motorin që ngas me një shpejtësi të ngadaltë të qëndrueshme një ngadalë, pastaj kthejeni ngadalë potenciometrin derisa motori të mos kalojë ose të lëvizë midis hapave.

Përfundim

Ky projekt tregon se si të përdorni bibliotekën SpeedStepper në një aplikim praktik. Ndërsa biblioteka AccelStepper siguron kontroll të mirë të pozicionit, kontrolli i shpejtësisë ishte i nevojshëm për Prototipin e Shkrirjes së Akullit për Grumbullimin e Mostrave Biologjike në Evropë, kështu që biblioteka AccelStepper u rishkrua për të siguruar kontroll të shpejtësisë me kufijtë fundorë dhe një funksion goHome.

Recommended: