Last active
November 22, 2018 04:36
-
-
Save thienandangthanh/2a9d266cfe646c2cf2297f884851e972 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// TB6560-control-2-steppers.ino | |
// Thư viện điều khiển động cơ bước | |
// Cần phải thêm thư viện AccelStepper trước khi sử dụng | |
// Hướng dẫn tải thư viện về tại đây: | |
// https://www.stdio.vn/articles/cai-dat-thu-vien-tren-arduino-ide-531 | |
// Tham khảo thêm tại https://www.pjrc.com/teensy/td_libs_AccelStepper.html | |
#include <AccelStepper.h> | |
/* | |
* SƠ ĐỒ NỐI CHÂN | |
* | |
* MOTOR Trái Arduino UNO | |
* DIR_L 2 | |
* STEP_L 3 // phải là chân PWM (có dấu ~ ở phía trước) | |
* EN_L 4 | |
* | |
* MOTOR Phải Arduino UNO | |
* DIR_R 5 | |
* STEP_R 6 // phải là chân PWM (có dấu ~ ở phía trước) | |
* EN_R 7 | |
* | |
*/ | |
/* | |
* MÔ TẢ HOẠT ĐỘNG | |
* | |
* 5s đầu, 2 động cơ chạy với vận tốc SPEED cho trước | |
* | |
* sau đó 2 động cơ quay theo chiều thuận 5 vòng | |
* tạm ngưng 2s | |
* | |
* sau đó 2 động cơ quay ngược lại 5 vòng | |
* tạm ngưng 5s | |
*/ | |
// Steppers | |
// Right Stepper | |
#define DIR_L 2 | |
#define STEP_L 3 | |
#define EN_L 4 | |
// Left Stepper | |
#define DIR_R 5 | |
#define STEP_R 6 | |
#define EN_R 7 | |
// Tốc độ tối đa cho động cơ (đơn vị: số bước trên 1 giây) | |
#define MAX_SPEED 800 | |
// Số bước để động cơ quay hết 1 vòng | |
/* | |
* dành cho động cơ stp-58d1013-01 (có góc bước 1.8 độ/bước) | |
* khi set chế độ full step, số bước để quay 1 vòng: 360/1.8 = 200 | |
* khi set chế độ half step, số bước để quay 1 vòng: 2*360/1.8 = 400 | |
* khi set chế độ 1/8 step, số bước để quay 1 vòng: 8*360/1.8 = 1600 | |
* khi set chế độ 1/16 step, số bước để quay 1 vòng: 16*360/1.8 = 3200 | |
*/ | |
#define ROUND 200 | |
// Tốc độ để điều khiển động cơ (đơn vị: số bước trên 1 giây) | |
#define SPEED 200 | |
AccelStepper LeftStepper(AccelStepper::DRIVER, STEP_L, DIR_L); | |
AccelStepper RightStepper(AccelStepper::DRIVER, STEP_R, DIR_R); | |
void setup() { | |
pinMode(EN_L, OUTPUT); | |
digitalWrite(EN_L, HIGH); // ngưng kích hoạt động cơ khi mới khởi động | |
LeftStepper.setMaxSpeed(MAX_SPEED); | |
LeftStepper.setSpeed(SPEED); | |
// RightStepper.setPinsInverted(true, false, false); | |
pinMode(EN_R, OUTPUT); | |
digitalWrite(EN_R, HIGH); // ngưng kích hoạt động cơ khi mới khởi động | |
RightStepper.setMaxSpeed(MAX_SPEED); | |
RightStepper.setSpeed(SPEED); | |
} | |
void loop() { | |
digitalWrite(EN_L, LOW); // kích hoạt động cơ vào chế độ hoạt động | |
digitalWrite(EN_R, LOW); // kích hoạt động cơ vào chế độ hoạt động | |
// chạy với vận tốc SPEED cho trước | |
LeftStepper.runSpeed(); | |
RightStepper.runSpeed(); | |
delay(5000); // chạy với tốc độ SPEED trong vòng 5s | |
LeftStepper.move(5*ROUND); | |
RightStepper.move(5*ROUND); | |
delay(2000); // tạm ngưng 2s | |
LeftStepper.move(-5*ROUND); | |
RightStepper.move(-5*ROUND); | |
delay(5000); // tạm ngưng 5s | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment