Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Mecanum Robotu - Dejanın diş mexanizmi blogunda gördüyümdən bəri qurmaq istədiyim bir layihə: howtomechatronics.com
Dejan həqiqətən də aparat, 3D çap, elektronika, kod və bir Android tətbiqinin bütün aspektlərini əhatə edən yaxşı bir iş gördü (MIT -in App ixtiraçısı)
Bu, istehsalçının bütün bacarıqlarını təzələyən böyük bir yenidənqurma layihəsidir.
Layihələrdə bir neçə dəyişiklik etməliyəm
İstifadə etdiyi xüsusi hazırlanmış PCB -dən istifadə etmək istəmirdim, amma evdə olduğum köhnə bir GRBL qalxanı.
BlueTooth istifadə etmək istədim
Belə ki:
Təchizat
Arduino Uno + GRBL Qalxanı
Step motorlar
HC-06 BlueTooth modulu
12V Lipo Batareya
Addım 1: Avadanlıq
Təkərləri çap edib burdakı kimi yığdı:
Şassiyə 4 pilləli mühərrik qoşulmuşdur (mənim vəziyyətimdə istifadə olunmamış çekmece yuxarı yuxarı)
Kabelləri robotun üstünə yönləndirdi.
Addım 2: Elektronika
HC-06 BT modulumdan istifadə etdim, Ən çətin şey, GRBL qalxanının 4 Stepper mühərriki ilə işləməsini təmin etmək idi, çünki bunun üçün yaxşı bir bələdçi yoxdur.
Qalxanın "Alət" çıxışını həm də bir pilləli motoru idarə etmək üçün əlavə olunmuş şəkildə göründüyü kimi tullananların qoyulmasına ehtiyac var. də "Enable" Jumper qoymaq lazımdır
4 stepperin naqillərini çəkin və bu da budur.
Mən də 12V batareyadan güc verdim - iki stes - biri Arduino üçün, biri də GRBl Shield üçün
Addım 3: Arduino Kodu
/* === Arduino Mecanum Wheels Robot === Bluetooth vasitəsilə Dejan, www. HowToMechatronics.com Kitabxanaları: RF24, www. HowToMechatronics.com AccelStepper by Mike McCauley: www. HowToMechatronics.com
*//* 2019-11-12 Gilad Meller (https://www.keerbot.com - GRBL arduino motor qalxanı ilə işləmək üçün kodu dəyişdirin Qalxandakı step motorları (addım/istiqamət) olaraq xəritələnir: 2/5 3 /6 4/7 12/13, A4988 sürücüsü 12V istifadə edir
Dejan kodunda SoftwareSerial istifadə olunur və mənimki Arduino Uno standart RX, TX pinlərini (0, 1) istifadə edəcək Qeyd: Arduinoya eskiz hazırlayarkən RX TX pinlərini açdığınızdan əmin olun, yoxsa yükləmə uğursuz olacaq.
*/ #daxil edin
// AccelStepper LeftBackWheel (1, 2, 5) istifadə edəcək step motorlarını və sancaqları təyin edin; // (Növ: sürücü, STEP, DIR) - Step1 AccelStepper LeftFrontWheel (1, 3, 6); // Stepper 2 AccelStepper RightBackWheel (1, 4, 7); // Stepper 3 AccelStepper RightFrontWheel (1, 12, 13); // Step4
int incomingByte = 0, c; // daxil olan serial məlumatları üçün int wheelSpeed = 100;
void setup () {Serial.begin (9600); // serial portunu açır, məlumat sürətini 9600 bps -ə təyin edir // Stepperlər üçün ilkin toxum dəyərlərini təyin edin LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);
}
void loop () {if (Serial.available ()> 0) {// gələn baytı oxuyun: incomingByte = Serial.read ();
c = gələn Bayt; keçid (c) {dava 71: Serial.println ("Mən sağa döndərdim W"); rotateRight (); fasilə; hal 65: Serial.println ("Sola döndərdim"); rotateLeft (); fasilə; hal 1: Serial.println ("BK/LFT aldım"); moveRightBackward (); fasilə; hal 2: Serial.println ("BK aldım"); moveBackward (); fasilə; hal 3: Serial.println ("BK/RT aldım"); moveRightBackward (); fasilə; hal 4: Serial.println ("SOL aldım"); moveSidewaysLeft ();
fasilə; hal 5: Serial.println ("STOP aldım"); stopMoving (); fasilə; hal 6: Serial.println ("RT aldım"); moveSidewaysRight (); fasilə; hal 7: Serial.println ("FWD/LFT aldım"); moveLeftForward (); fasilə; hal 8: Serial.println ("FWD aldım"); önə doğru irəlilə(); fasilə; hal 9: Serial.println ("FWD/RT aldım"); moveRightForward (); fasilə; default: Serial.print ("Əmr deyil"); Serial.println (incomingByte, DEC); fasilə; }} // moveBackward (); moveRobot ();
}
boş hərəkət MoveRobot () {LeftBackWheel.runSpeed (); LeftFrontWheel.runSpeed (); SağFrontWheel.runSpeed (); RightBackWheel.runSpeed (); }
void moveForward () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void moveBackward () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void moveSidewaysRight () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void moveSidewaysLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } boşluq rotateLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void rotateRight () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void moveRightForward () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (wheelSpeed); } void moveRightBackward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (0); } void moveLeftForward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (0); } void moveLeftBackward () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (-wheelSpeed); } void stopMoving () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (0); }
Addım 4: Tətbiqçi
Fərqli və daha sadə funksiyalara malik yeni bir tətbiq ixtiraçısı (Qeydlər yoxdur)
Zəhmət olmasa mesaj göndərin və mən də sizə göndərim - yükləmələr uğursuz oldu.
Özündən müğayət ol.