Mündəricat:

Arduino üçün idarə olunan Stepper Speed Control Menyu: 6 Addım
Arduino üçün idarə olunan Stepper Speed Control Menyu: 6 Addım

Video: Arduino üçün idarə olunan Stepper Speed Control Menyu: 6 Addım

Video: Arduino üçün idarə olunan Stepper Speed Control Menyu: 6 Addım
Video: ESP8STP-02 Степпер с ESP8266 D1 Mini NodeMCU через WiFi под любым углом 2024, Iyul
Anonim
Arduino üçün Stepper Sürətli Nəzarət Menyu
Arduino üçün Stepper Sürətli Nəzarət Menyu
Arduino üçün Sürətli Nəzarət Menyusu
Arduino üçün Sürətli Nəzarət Menyusu
Arduino üçün Sürətli Nəzarət Menyusu
Arduino üçün Sürətli Nəzarət Menyusu

Bu SpeedStepper kitabxanası, step motorunun sürətinə nəzarət etmək üçün AccelStepper kitabxanasının yenidən yazılmasıdır. SpeedStepper kitabxanası, müəyyən edilmiş motor sürətini dəyişdirməyə imkan verir və sonra AccelStepper kitabxanası ilə eyni alqoritmdən istifadə edərək yeni qurulmuş sürətə sürətlənir/yavaşlayır. SpeedStepper kitabxanası, artı və eksi limit və 'ev' mövqeyi təyin etməyə imkan verir. Ev mövqeyinə qayıtmaq üçün bir goHome əmri var.

Məhdudiyyətlər: SpeedStepper kitabxanası yalnız istiqamət və addım çıxışlarını idarə edir və buna görə də step motorunu idarə etmək üçün Easy Driver kimi bir motor sürücüsünə qoşulmalıdır. AccelStepper kitabxanası, lazım olduqda bu kitabxanaya kopyalana biləcək daha çox sürücülük variantları təqdim edir.

Hər biri motor və ya motor sürücüsü olmadan işlədilə bilən üç nümunə eskiz təqdim edilmişdir. speedStepperPlot eskizləri, məsələn, sürət əmrləri və goHome əmrlərini verir və nəticədə əldə edilən sürət və mövqenin planını yaradır. SpeedStepperSetup eskizi, motorun evini və məhdudiyyətlərini təyin etmək və sonra mühərriki işə salmaq və sürəti yuxarı və aşağı tənzimləmək və başa çatdırmaq üçün evə getmək üçün menyu ilə idarə olunan bir quruluş təmin edir. SpeedStepperProfile eskizi, sürət profilinin qurulması və yerinə yetirilməsi nümunəsini göstərir.

AccelStepper kitabxanası yaxşı bir mövqe nəzarəti təmin etsə də, Avropada Bioloji Nümunələr Toplamaq üçün Buz Eriyən Prototip üçün sürət nəzarətinə ehtiyac vardı. Burada motor əvəzinə çəki istifadə edən prototipin əvvəlki versiyasının videosu var. İstifadəçi bir nasosun sürət profilini idarə etmək üçün bir vasitə istədikdən sonra Revision 1.1, sürət profillərini əlavə etdi.

Bu kitabxana Arduino Uno və Mega2560 üzərində işləyir, lakin prototip üçün daha böyük yaddaş / daha sürətli SparkFun Redboard Turbo prosessoru istifadə edilmişdir.

Bu təlimat, Arduino üçün Stepper Speed Control Library -də də mövcuddur

Təchizat

Nümunə eskizləri yerinə yetirmək üçün yalnız Arduino UNO və ya Mega2560 və proqram kitabxanalarına ehtiyac var

Kitabxananın dəzgah sınaqları üçün Easy Driver, 200 addım/devir, 12V 350mA step motor və 12A DC 2A və ya daha böyük bir SparkFun Redboard Turbo istifadə edildi. https://www.sparkfun.com/products/14934. USB A-dan Mikro kabelə USB-dən TTL Serial Cable-a Arduino IDE V1.8.9 və onu işə salmaq üçün bir kompüter. BlockingInput və pfodBufferedStream sinifləri üçün SpeedStepper kitabçası pfodParser kitabxanası millisDelay kitabxanası bloklanmayan gecikmələr üçün.

Addım 1: Kitabxana funksiyaları

SpeedStepper kitabxanası kitabxananın müəyyən etdiyi sərhədlərlə məhdudlaşdırılan step motorunu idarə edir. Mövcud müxtəlif kitabxana üsulları üçün SpeedStepper.h faylına baxın. İşdə onların arxasındakı məntiqin konturu.

Addımların sayı (nəbzlər) hesablanaraq, stepperin mövqeyi izlənilir. Kitabxana, setPlusLimit (int32_t) və setMinusLimit (int32_t) mövqeləri arasındakı mövqeyi məhdudlaşdırır. Artı həddi həmişə> = 0, mənfi həddi isə həmişə <= 0-dır. Başlanğıcda motorun mövqeyi 0 (ev) və məhdudiyyətlər çox böyük +/- ədədlərə (təxminən +/- 1e9 addım) qoyulur. setAcceleration (float), motorun sürətini nə qədər yuxarı və ya aşağı dəyişəcəyini təyin edir. Motor artı və ya eksi həddinə yaxınlaşdıqda, həddində dayanana qədər bu sürətlə yavaşlayacaq. Başlanğıcda sürətlənmə 1.0 addım/saniyə/saniyə olaraq təyin olunur. Sürətləndirmə ayarı həmişə +ve rəqəmidir. SetSpeed (float) parametrinin işarəsi, motorun hərəkət edəcəyi istiqaməti təyin edir.

setSpeed (float) mühərriki indiki sürətindən sürətləndirmək / yavaşlatmaq üçün sürəti təyin edir. SetSpeed (float) vasitəsi ilə təyin edilə bilən sürət, mütləq dəyərdə, parametrlər, setMaxSpeed (float), standart 1000 addım/san və setMinSpeed (float), standart 0.003 addım/san ilə məhduddur. Bu standartlar, kitabxananın setMaxSpeed () və setMinSpeed () üçün qəbul edəcəyi mütləq sərt kodlu sürət həddləridir. Maksimum sürəti> 1000 addım/san etmək istəsəniz, maxMaxSpeed (1000) -i istədiyiniz maksimum sürətə dəyişmək üçün SpeedStepper.cpp faylının ilk sətirini düzəltməlisiniz. Praktikada, maksimum sürət kitabxananın run () metoduna edilən zənglər arasındakı vaxtla da məhdudlaşır. 1000 addım / saniyə üçün run () metodu ən azı hər 1 mS -də çağrılmalıdır. Aşağıdakı Gecikmə bölümünə baxın.

Minimum sürətdən aşağı bir sürət təyin etməyə çalışmaq motorun dayanmasına səbəb olacaq. Bu tənzimləyicilərin hər birinin uyğun bir alıcısı var, SpeedStepper.h faylına baxın. GetSetSpeed (), setSpeed () vasitəsi ilə təyin etdiyiniz sürəti qaytarır, getSpeed () isə sürətinizi sürətləndirdiyiniz/yavaşladığınız zaman dəyişən cari motor sürətini qaytarır. Əgər motor düşündüyünüz istiqamətdə getmirsə, invertDirectionLogic () -ə zəng edərək motorun +və sürətlə hərəkət etdiyi istiqaməti dəyişə bilərsiniz.

getCurrentPosition () 'home' (0) ilə müqayisədə cari motor mövqeyini qaytarır. Mövcud motor mövqeyi setCurrentPosition -ı (int32_t) ləğv edə bilərsiniz. Yeni mövqe müəyyən edilmiş artı/eksi məhdudiyyətlər daxilindədir.

Başlanğıcda motor 0 mövqeyində dayandırılır. SetSpeed (50.0) çağırılması, +ve istiqamətində maksimum 50 addım/dəq sürətinə qədər sürətlənməsinə səbəb olacaq. HardStop () çağırmaq motoru dərhal olduğu yerdə dayandıracaq. Digər tərəfdən, stop () üsulunu çağırmaq, sürəti sıfıra qoyacaq və motoru dayandırmağa yavaşlatacaq. StopAndSetHome () çağırılması motoru dərhal dayandıracaq və mövqeyini 0 olaraq təyin edəcək. Artı/eksi məhdudiyyət dəyərləri dəyişdirilmir, lakin indi bu yeni 0 (ev) mövqeyinə istinad edilir. GoHome () çağırılması, stepperi bu 0 (ev) mövqeyinə qaytaracaq və dayanacaq. SetSpeed () -ə zəng etmək evə getməyi ləğv edəcək.

SpeedStepper kitabxanası, çalışan bir profili kəsmək üçün setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile () üsulları ilə də sürət profilinə nəzarət təmin edir və isProfileRunning (). SpeedStepperProfile nümunə eskizinə baxın.

Addım 2: SpeedStepperPlot Nümunəsini Motor olmadan Çalışdırın

Motor olmadan SpeedStepperPlot nümunəsini işlətmək
Motor olmadan SpeedStepperPlot nümunəsini işlətmək

Arduino IDE V1.8.9 qurun SpeedStepper kitabxanasını yükləyin və yükləyin SpeedStepper.zip -i saxla və sonra Arduino IDE menyu elementini istifadə et Sketch → Kitabxanaya daxil et → Kitabxananı idxal etmək üçün ZIP kitabxana əlavə et MillisDelay kitabxanasını da yüklə və quraşdır.

Nümunələr → SpeedStepper → speedStepperPlot nümunə eskizini açın (lazım olduqda IDE -ni yenidən başladın). Bu eskiz Serial ilə işləmək üçün qurulmuşdur, məs. UNO və Mega və s. SparkFun Redboard Turbo üzərində çalışmaq üçün aşağıya baxın.

Bu nümunəni idarə etmək üçün heç bir sürücü kartı və ya step motora ehtiyac yoxdur. Bu nümunələrdə çıxış olaraq D6 və D7 istifadə olunur. Eskizin yuxarısındakı STEP_PIN və DIR_PIN parametrlərini dəyişdirərək çıxış pinlərini istənilən rəqəmsal çıxışa dəyişə bilərsiniz.

Eskizi taxtaya yükləyin və sonra Alətlər → Serial Plotteri 115200 baud -da açın, sürəti (QIRMIZI) və mövqeyi (MAVİ) təsvir edin. Artı həddi 360 olaraq təyin olunur ki, bu da sürətin təxminən 100 nöqtədən sıfıra enməsinə səbəb olur. x oxunda. Minus həddi -510 -dur. Vəziyyət ~ -390-da dayanır, çünki sürət 0.0-a qədər tələb olunur. X oxunun 380 nöqtəsində, stepperi sıfır mövqeyinə qaytaran goHome cmd verilir.

Bu speedStepperPlot eskizində müxtəlif sürətlər və sürətlər arasında keçid üçün millisDelays istifadə olunur. Bir çox hallarda, növbəti nümunədə olduğu kimi bir SpeedStepperProfile istifadə etmək daha asandır.

Addım 3: Motor olmadan SpeedStepperProfile Nümunəsini Çalışdırın

Motor olmadan SpeedStepperProfile nümunəsini işlətmək
Motor olmadan SpeedStepperProfile nümunəsini işlətmək

Nümunələr → SpeedStepper → speedStepperPlot nümunə eskizini açın, bu eskiz Arduino Serial Plotter istifadə edərək yuxarıdakı süjeti hazırlayır və məsələn, nasos işlədikdə təyin edilmiş sürət profilini işə salmaq nümunəsidir.

Stepper Speed Profiles, SpeedStepper.h faylında müəyyən edilmiş bir sıra SpeedProfileStruct -dan ibarətdir.

struktur SpeedProfileStruct {

üzmə sürəti; // bu addımın sonunda hədəf sürəti imzasız uzun deltaTms; // cari sürətdən (bu addımın əvvəlində) hədəf sürətə qədər sürətlənmə vaxtı};

Əvvəlki hədəf sürətindən bu hədəf sürətinə çatmaq üçün mS -də hər bir addım və deltaTms üçün hədəf sürəti ehtiva edən SpeedProfileStruct bir sıra təyin edin. DeltaTms sıfır və ya çox kiçikdirsə, sürət dərhal yeni hədəf sürətinə atlayacaq. Əks təqdirdə, tələb olunan sürətləndirmə hesablanacaq setAcceleration () sonra yeni hədəf sürəti üçün setSpeed () -ə zəng ediləcək. Bütün hallarda profil mövcud artı və eksi mövqe məhdudiyyətləri və maksimum/dəq sürət parametrləri ilə məhdudlaşacaq. Bir sürəti saxlamaq istəyirsinizsə, əvvəlki sürəti istədiyiniz vaxtla təkrarlayın. Yeni hədəf sürəti cari sürətlə eyni olduğundan, hesablanan sürətlənmə sıfır olacaq və heç bir dəyişiklik baş verməyəcək.

Bu SpeedProfileStruct dizisi yuxarıdakı süjeti hazırladı

const SpeedProfileStruct profili = {{0, 0}, // hələ dayandırılmamışsa dərhal dayandırın {0, 1000}, // 1 saniyə ərzində sıfır tutun {-50, 0}, // -50 -yə keçin {-200, 2000}, // -200 {-200, 6000} -ə doğru eniş, // -200 -də 6 saniyə {-50, 2000}, // -50 {0, 0}, // // sürətlə dayan {0, 1500}, // sıfır tutun 1.5 saniyə {50, 0}, // 50 -yə atlayın {200, 2000}, // 200 -ə eniş {200, 6000}, // 200 saniyəni 6 saniyə saxlayın {50, 2000}, // 50 rampası {0, 0}, // // sürətlə dayan {0, 1000} // çıxışı tərtib etmək üçün sıfır saxlayın //; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // profil massivinin ölçüsünü hesablayın

Profil setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) çağıraraq təyin olunur. stepper.setProfile (profil, PROFILE_LEN);

Profil qurulduqdan sonra, cari motor sürətindən işə salmaq üçün startProfile () -ə zəng edin (adətən dayanandan başlayacaqsınız). Profilin sonunda, motor son hədəf sürətində işləməyə davam edəcək. Profilin hələ də işlədiyini görmək üçün isProfileRunning () metoduna zəng etmək olar. Profili erkən dayandırmaq istəyirsinizsə, stopProfile () -ə zəng edərək profili tərk edib motoru dayandırın.

Addım 4: SpeedStepperSetup Nümunəsini Motor olmadan Çalışdırın

Nümunə eskiz, öz step motor tətbiqiniz üçün bir baza üçün hazırlanmışdır. Menyu ilə idarə olunan bir interfeys təmin edir ki, mühərriki əvvəllər orada olmasanız, istədiyiniz halda artı və eksi sərhədləri yenidən qurun və sonra mühərriki bu diapazonda işə salın. 'Çalış' menyusu sürəti artırmağa və azaltmağa, mövcud sürətlə donmağa, dayanmağa və eyni zamanda evə qayıtmağa imkan verir.

Bu eskiz, döngəni () cavabdeh tutan bir sıra proqram xüsusiyyətlərini göstərir ki, stepperi idarə etmək üçün öz sensor girişlərinizi əlavə edə bilərsiniz. Sürət nəzarətinə mane ola biləcək gecikmələrin qarşısını almaq üçün əziyyət çəkmək lazımdır. (Gecikmələr pisdir)

Yuxarıdakı SpeedStepperPlot -u işlətmək üçün istifadə olunan kitabxanaları, sonra da pfodParser kitabxanasını quraşdırın. PfodParser kitabxanası, loopun () işləməsini maneə törətməklə istifadəçi girişini və menyu çıxışını idarə etmək üçün istifadə olunan NonBlockingInput və pfodBufferedStream siniflərini təmin edir.

Nümunələr → SpeedStepper → speedSpeedSetup nümunəsini açın. Bu eskiz Serial ilə işləmək üçün qurulmuşdur, məs. UNO və Mega və s. SparkFun Redboard Turbo üzərində çalışmaq üçün aşağıya baxın.

Bu nümunəni idarə etmək üçün heç bir sürücü kartı və ya step motora ehtiyac yoxdur. Bu nümunələrdə çıxış olaraq D6 və D7 istifadə olunur. Eskizin yuxarısındakı STEP_PIN və DIR_PIN parametrlərini dəyişdirərək çıxış pinlərini istənilən rəqəmsal çıxışa dəyişə bilərsiniz. Eskizi lövhəyə yükləyin və sonra SETUP menyusunu görmək üçün Alətlər → Serial Monitoru 115200 -də açın.

SETUP pos: 0 sp: 0.00 +Lim: 500000 -Lim: -500 LATENCY: step: 492uS loop: 0uS p -set Home l -limitləri h -goHome r -run>

Eskiz işlədikdə, stepperin hazırkı mövqeyi 'ev' (0) mövqeyi olaraq alınır. Stepperi həqiqi 'ev' mövqeyinə yenidən yerləşdirmək lazımdırsa, SET HOME menyusunu göstərmək üçün p əmrini daxil edin.

ANA SƏHİFƏ qur: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: step: 752uS loop: 3852uS x -setEvdə buradan çıx və + -İrəli - -Əks s -İrəli/Geri dəyişdir -hardStop >

Gördüyünüz kimi eskizdə kodlaşdırılmış məhdudiyyətlər aradan qaldırıldı, beləliklə stepperi istənilən yerə yenidən yerləşdirə bilərsiniz. Fiziki məhdudiyyətləri keçməməyinizə diqqət yetirməlisiniz, yoxsa bir şeyi poza bilərsiniz.

Stepperi irəli aparmağa başlamaq üçün + cmd düyməsini istifadə edin, əgər səhv istiqamətdə hərəkət etdiyini görürsünüzsə, onu dayandırmaq üçün bir əmr verməyin və ya boş bir xətt daxil edin və sonra irəli istiqamətini dəyişdirmək üçün əmrdən istifadə edin. Növbəti iş üçün bunu düzəltmək üçün quruluşa invertDirectionLogic () zəngini daxil etmək üçün eskizi yeniləməlisiniz.

Stepperi düzgün sıfır mövqeyinə yerləşdirmək üçün + / - cmds istifadə edin. Motor yavaş -yavaş başlayır və sonra irəlilədikcə sürəti artırır, sadəcə dayandırmaq üçün boş xətdən istifadə edin. Bunun üçün maksimum sürət və limitlər menyusu, setupMenus.cpp -in yuxarı hissəsindəki MAX_SETUP_SPEED tərəfindən təyin edilir.

Motor "ev" mövqeyinə yerləşdirildikdən sonra, x mövqeyindən istifadə edərək cari vəziyyəti 0 olaraq yenidən qurun və SETUP menyusuna qayıdın.

Limitləri təyin etməlisinizsə, adətən yalnız ilkin quraşdırma zamanı, SET LIMITS menyusuna daxil olmaq üçün l cmd istifadə edin.

SINIRLARI təyin edin: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: step: 944uS loop: 5796uS l -setLimit here + -Forward - -Ters h -goHome x -exit -hardStop>

Artı həddinə daha çox irəliləmək üçün + cmd istifadə edin və sonra artı limiti olaraq təyin etmək üçün l cmd istifadə edin. H əmrindən sonra 0 -a qayıtmaq üçün istifadə edilə bilər və motorun mənfi həddə olan mövqeyinə geri dönərsə hərəkət etmək üçün - cmd istifadə edilə bilər. Minus həddi təyin etmək üçün yenidən l cmd istifadə edin. Artı və mənfi məhdudiyyətlərin mövqelərini qeyd edin və bu dəyərlərlə setup () metodunun setPlusLimit və setMinusLimit ifadələrini yeniləyin.

Limitlər təyin edildikdə, SETUP menyusuna qayıtmaq üçün x cmd düyməsini istifadə edin və RUN menyusunu açmaq üçün r cmd istifadə edə bilərsiniz.

ÇALIŞMA MENÜSÜ pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: step: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-donma Sürəti> +pos: 4 sp: 9.49 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS loop: 5664uS pos: 42 sp: 29.15 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 120 sp: 49.09 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS loop: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS loop: 5664uS

+ Cmd irəli istiqamətdə sürətlənməyə başlayır və hər 2 saniyədə mövqeyi və sürəti çap edir. Motor istədiyiniz sürətə çatanda başqa bir düymə (və ya boş giriş) ilə sürətləndirməni dayandıra bilərsiniz. Dayandırmaq üçün - cmd düyməsini istifadə edərək sürəti azalda bilərsiniz. Dayandıqda - cmd tərsinə sürətlənəcək.

Bu RUN menyusu layihənizin əl ilə idarə olunmasını təmin edir. Avtomatik idarəetmə üçün başqa sensorlar əlavə etməlisiniz.

Addım 5: Gecikmə

Stepper motor idarəçiliyi hər addımı əmr edən proqramdan asılıdır. Ayarlanan sürəti qorumaq üçün, eskiziniz, stepper.run () metodunu tez -tez çağırmalıdır ki, cari sürət üçün növbəti addımı doğru zamanda atsın. Sensorlar vasitəsilə idarə etmək üçün yeni ölçüləri dərhal emal etməlisiniz. Vəziyyət/sürət çapına, eskizinizin kifayət qədər sürətli olduğunu yoxlamaq üçün iki LATENCY ölçmə daxildir.

Stepper Gecikmə (pfodBufferedStream)

Stepper gecikməsi, stepper.run () metoduna ardıcıl zənglər arasındakı maksimum gecikməni ölçür. Step motorunu saniyədə 1000 addımda işlətmək üçün addım gecikməsinin 1000uS -dən (1mS) az olması lazımdır. Bu eskizin ilk versiyasında bir çox millisaniyə gecikmə var idi. Kod vasitəsilə əlavə edildiyi runStepper () metoduna (stepper.run () çağıran) bu əlavə zəngləri aradan qaldırmaq üçün. Kiçik Serial Tx tamponu dolduqda menyu və çıxış çap ifadələri eskizi blokladığı üçün bu problemi tam həll etmədi. Bu bloklanmanın qarşısını almaq üçün, pfodParser kitabxanasındakı pfodBufferedStream, çap ifadələrinin tez bir zamanda yaza biləcəyi 360 baytlıq bir çap buferini əlavə etmək üçün istifadə edilmişdir. Sonra pfodBufferedStream, bu vəziyyətdə 115200 -də göstərilən bayt sürətində baytları buraxır. pfodBufferedStream, tampon dolduqda ya bloklamaq, ya da daşqın simvollarını atmaq seçiminə malikdir. Tampon dolduqda, hər hansı bir əlavə işarəni buraxmaq üçün eskizin bloklanmaması üçün Serialın simvol göndərməsini gözləyirik.

Döngü Gecikməsi (Bloklanmayan Giriş)

Döngü gecikməsi, loop () metoduna ardıcıl çağırışlar arasındakı maksimum gecikməni ölçür. Bu, yeni sensor ölçmələrini nə qədər tez işlədə biləcəyinizi və motor set sürətini tənzimləyə biləcəyinizi təyin edir. Nə qədər sürətli olmağınız, nəyi idarə etməyə çalışdığınızdan asılıdır.

Çap ifadələrinə görə gecikmələr yuxarıdakı pfodBufferedStream istifadə edərək silindi, ancaq istifadəçinin girişini işlətmək üçün girişin yalnız ilk simvolunu götürmək və sətrin qalan hissəsinə məhəl qoymamaq lazımdır. PfodParer kitabxanasındakı NonBlockingInput sinfi, readInput () istifadə edərək, giriş olduqda sıfır olmayan bir simvolu qaytarmaq və loopu maneə törətmədən 10mS ərzində heç bir simvol alınana qədər clearInput () istifadə edərək aşağıdakı simvolları silmək və atmaq üçün istifadə olunur. ()

Əlbəttə ki, sensorlar oxumaq və yeni təyin olunan sürəti hesablamaq üçün əlavə etdiyiniz əlavə kod gecikmə müddətini artıracaq. Bir çox sensor kitabxanası, ölçməyə başlamaq və nəticəni əldə etmək arasında yalnız gecikmə (..) istifadə edərək bir növ azalma əldə edir. Uyğun bir bloklanmayan gecikmədən sonra ölçməni almaq üçün millisDelay istifadə etmək üçün bu kitabxanaları yenidən yazmalısınız.

Addım 6: Bir Step Motor və SparkFun Redboard Turbo ilə SpeedStepperSetup -u işə salın

Bir Step Motor və SparkFun Redboard Turbo ilə SpeedStepperSetup -u işə salın
Bir Step Motor və SparkFun Redboard Turbo ilə SpeedStepperSetup -u işə salın
Bir Step Motor və SparkFun Redboard Turbo ilə SpeedStepperSetup -u işə salın
Bir Step Motor və SparkFun Redboard Turbo ilə SpeedStepperSetup -u işə salın

SpeedStepperSetup eskizini real olaraq işlətmək üçün bir step motor, sürücü və enerji təchizatı və bu nümunədə SparkFun Redboard Turbo lazımdır.

Yuxarıdakı naqillər diaqramı (pdf versiyası) əlaqələri göstərir. SpeedStepperSetup eskizində SERİAL təyinatını #SERIAL Serial1 olaraq təyin edin

Step Motor, Güc Təchizatı, Sürücü və Qoruma

Step motorlarının bir çox növü və ölçüləri var. Burada test üçün iki bobinli 12V 350mA step motor istifadə olunur. Bu stepperi işə salmaq üçün 12V və ya daha çox və 350mA -dan böyük bir enerji təchizatı lazımdır.

Bu kitabxana yalnız bir istiqamət və addım çıxışı təmin edir, buna görə step motoru ilə əlaqə qurmaq üçün bir sürücüyə ehtiyacınız var. Asan Sürücü və Böyük Asan Sürücü, motorun bobinlərinə olan cərəyanı idarə edir, beləliklə daha yüksək gərginlikli bir enerji təchizatından etibarlı şəkildə istifadə edə bilərsiniz, məsələn, 3.3V mühərrik üçün 6V təchizatı istifadə edin. Easy Driver 150mA/coil və 700mA/coil arasında təmin edə bilər. Yüksək cərəyanlar üçün Big Easy Driver, hər bir bobin üçün 2A -ya qədər təchiz edə bilər. Easy Drive səhifəsinin altındakı FAQ -ları oxuyun.

Bu nümunələr D6 və D7 -ni Addım və İstiqamət çıxışları kimi istifadə edir. Eskizin yuxarısındakı STEP_PIN və DIR_PIN parametrlərini dəyişdirərək çıxış pinlərini istənilən rəqəmsal çıxışa dəyişə bilərsiniz.

Sparkfun Redboard Turbo proqramlaşdırılması

Redboard Turbo proqramlaşdırmaq problemlidir. Proqramlaşdırıla bilmirsə, əvvəlcə sıfırlama düyməsini bir dəfə basın və Arduino Tools menyusundan COM portunu yenidən seçin və yenidən cəhd edin. Bu kömək etmirsə, sıfırlama düyməsini iki dəfə basın və yenidən cəhd edin.

Asan Sürücünün Bağlanması

İki bobinli pilləli mühərrikdə 4 tel var. Hər bir bobinə qoşulan cütləri tapmaq üçün bir multimetrdən istifadə edin və sonra bir bobini Easy Driver A terminallarına, digər bobini isə B terminalına bağlayın. Hərəkət istiqamətini dəyişdirmək üçün quraşdırma menyusundakı s cmd -dən istifadə edə biləcəyiniz üçün onları hansı tərəfə bağladığınızın əhəmiyyəti yoxdur.

Mühərrikin enerji təchizatı M+ və GNDS -ə 3/5V bağlantısı ilə lövhənin məntiq səviyyəsini təyin edir. SparkFun Redboard Turbo kimi 3.3V mikroprosessor çıxışları üçün əlaqəni qısaldın (açıq buraxsanız 5V rəqəmsal siqnallar üçün uyğundur, məsələn, UNO, Mega) GND, STEP, DIR pinlərini mikroprosessor GND -yə bağlayın və Dir çıxış pinləri. Motoru idarə etmək üçün başqa heç bir əlaqəyə ehtiyac yoxdur.

USB -dən TTL -ə Serial Kabel

SpeedStepperSetup eskizini Uno/Mega -dan Redboard Turbo'ya köçürərkən, sadəcə olaraq #define SERIAL Serial -ı #define SERIAL SerialUSB ilə Redboard Turbo usb serial bağlantısına uyğun olaraq əvəz edə bilərsiniz, lakin nəticədə addım gecikməsinin təxminən 10mS olduğunu görürsünüz. Bu, UNO -dan 10 qat daha yavaşdır. Bunun səbəbi, Redboard CPU -nun USB bağlantısını necə idarə etməsidir. Bunun öhdəsindən gəlmək üçün, USB -ni TTL Serial Kabelinə D0/D1 -ə qoşun və step motorunu idarə etmək üçün aparat serial bağlantısından istifadə etmək üçün#SERIAL Serial1 müəyyən edin. Serial1 -dən istifadə LATENCY: stepper: 345uS loop: 2016uS -dən 3 qat daha sürətlidir və addım və loop gecikməsi üçün UNO -dan daha sürətlidir.

Terminal Proqramı

Arduino Serial Monitoru, step motorunu idarə etmək üçün istifadə etmək bir az daha çətindir, çünki cmd xəttində işarəni daxil etməlisiniz və sonra göndərmək üçün Enter düyməsini basın. Daha sürətli cavab verən vasitələr, USB -dən TTL kabelinə COM portuna qoşulmuş PC üçün TeraTerm (və ya CoolTerm Mac) terminal pəncərəsini açmaqdır. Sonra o pəncərədə bir cmd düyməsini basaraq dərhal göndərir. Enter düyməsini basaraq boş bir sətir göndərin.

Motor sürət aralığının təyin edilməsi

Yuxarıda qeyd edildiyi kimi, Easy Drive 1/8 addımlar üçün qurulmuşdur, buna görə 1000 addım/saniyə mühərriki 1000/8/200 addım/inqilab = 0.625 dövrə və ya maksimum 37.5 rpm çevirəcəkdir. Girişləri MS1/MS2 olaraq dəyişdirərək 1/8, ¼, ½ və tam addımlar arasında keçid edə bilərsiniz. Tam addımlar üçün həm MS1, həm də MS2 -ni GND -ə bağlayın. Bu, 300 rpm -ə qədər sürətə imkan verəcəkdir. Müvafiq MS1/MS2 parametrlərinin seçilməsi mühərriklə idarə olunan hissə arasında quraşdırılmış dişli nisbətini tənzimləməyə imkan verir.

Avadanlıq qorunması

SpeedStepper kitabxanası, mühərrik hərəkətində mövqe məhdudiyyətləri təyin etməyə imkan verərkən, mövqenin tutulması proqramın çıxardığı addımları saymaqla aparılır. Əgər mühərrik dayanırsa, yəni növbəti mərhələdə mühərriki idarə etmək üçün tork kifayət deyilsə, onda proqramın mövqeyi motorun mövqeyi ilə sinxronlaşmayacaq. Sonra 'goHome' əmrindən istifadə etdiyiniz zaman motor evin mövqeyini aşacaq. Avadanlıqların zədələnməsinin qarşısını almaq üçün mühərrikin enerji təchizatını ayırmaq üçün sərt həddlərdə limit açarlarını quraşdırmalısınız

Motor cərəyanı limitinin təyin edilməsi

Birincisi, potansiyometrenin ən aşağı səviyyəsinə qoyun. yəni TP1 -də gərginlik minimumdur. Potansiyometr incədir, buna görə də potensialiometrini mexaniki dayanmalardan keçməyə məcbur etməyin. Motoru yavaş bir sürətlə idarə edin, sonra yavaş -yavaş potansiyometrini çevirin və motor addımlar arasında atlamayın.

Nəticə

Bu layihə, SpeedStepper kitabxanasını praktik bir tətbiqdə necə istifadə edəcəyinizi göstərir. AccelStepper kitabxanası yaxşı bir mövqe nəzarəti təmin etsə də, Avropada Bioloji Nümunələrin Toplanması üçün Prototip Buz Eriməsi Probu üçün sürət nəzarətinə ehtiyac duyuldu, buna görə də AccelStepper kitabxanası son hədləri və goHome funksiyası ilə sürət nəzarəti təmin etmək üçün yenidən yazıldı.

Tövsiyə: