Trong ví dụ này, chúng ta sẽ kiểm soát hướng của một thiết bị truyền động tuyến tính bằng Arduino và hai công tắc nhất thời. Hướng dẫn này được xây dựng dựa trên các nguyên tắc được thảo luận trong hướng dẫn "Motor Driver Speed Control với một Arduino", chúng tôi khuyên bạn nên xem lại hướng dẫn đó trước khi tiếp tục.
Hướng dẫn này được chia thành hai phần: nút nhấn hoạt động ở chế độ nhất thời (tức là thiết bị truyền động ngừng di chuyển khi nút được phát hành) và các nút nhấn hoạt động trong chế độ duy trì (tức là thiết bị truyền động tiếp tục di chuyển ngay cả khi nút được phát hành).
Lưu ý: Hướng dẫn này giả định kiến thức trước với các nguyên tắc điện tử cơ bản, phần cứng và phần mềm Arduino. Nếu đây là lần đầu tiên bạn sử dụng Arduino, chúng tôi khuyên bạn nên tìm hiểu những điều cơ bản từ một trong nhiều hướng dẫn dành cho người mới bắt đầu tuyệt vời có sẵn thông qua các tìm kiếm của Google và YouTube. Xin lưu ý rằng chúng tôi không có tài nguyên để cung cấp hỗ trợ kỹ thuật cho các ứng dụng tùy chỉnh và sẽ không gỡ lỗi, chỉnh sửa, cung cấp mã hoặc sơ đồ dây điện bên ngoài các hướng dẫn công khai này.
Linh kiện
- Bộ truyền động tuyến tính 12V
- Nguồn điện 12V
- Arduino
- Trình điều khiển động cơ
- Hai nút nhất thời (tùy chọn nút thứ ba để điều khiển chốt)
- Dây điện để làm cho các kết nối và công cụ uốn tóc bồng hoặc sắt hàn
Dây
Tổng quan về phần cứng và phần mềm để kiểm soát nhất thời
Thiết bị chuyển mạch nhất thời được sử dụng khi bạn chỉ muốn thiết bị truyền động di chuyển trong khi nút được nhấn, thiết bị truyền động sẽ tự động ngừng di chuyển khi nút được phát hành. Tải lên mã dưới đây.
Mã để kiểm soát nhất thời
https://gist.github.com/Will-Firgelli/aeee209bda6b2246359eed70ec353eb8
/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*
* Program enables momentary direction control of actuator using push button
*/
int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int downPin = 12;
int upPin = 13;
int Speed = 255; //choose any speed in the range [0, 255]
void setup() {
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(downPin, INPUT_PULLUP);
pinMode(upPin, INPUT_PULLUP);
}
void loop() {
if(digitalRead(upPin)==LOW){ //check if extension button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, Speed);
}
else if(digitalRead(downPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, Speed);
analogWrite(LPWM, 0);
}
else{ //if no button is pushed, remain stationary
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
}
}
Tổng quan về phần cứng và phần mềm để duy trì quyền kiểm soát
Ngoài ra, đôi khi bạn có thể muốn sử dụng một nút chốt; có di chuyển bộ truyền động khi bạn nhấn một nút và sau đó tiếp tục di chuyển khi bạn phát hành các nút. Để đạt được điều này, bạn sẽ cần phải thêm một chuyển đổi nữa, kết nối với pin 8 và GND, sau đó tải lên chương trình dưới đây. Vì bộ truyền động sẽ không ngừng di chuyển khi nút được nhả, công tắc mới này sẽ hoạt động nút "dừng".
Mã để duy trì quyền kiểm soát
https://gist.github.com/Will-Firgelli/2b96dce14c0cee7a0009e61e47cc5f67/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*
* Program enables latching direction control of actuator using push button
*/
int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int stopPin = 8;
int downPin = 12;
int upPin = 13;
int Speed = 255; //choose any speed in the range [0, 255]
void setup() {
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(stopPin, INPUT_PULLUP);
pinMode(downPin, INPUT_PULLUP);
pinMode(upPin, INPUT_PULLUP);
}
void loop() {
if(digitalRead(upPin)==LOW){ //check if extension button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, Speed);
}
else if(digitalRead(downPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, Speed);
analogWrite(LPWM, 0);
}
else if(digitalRead(stopPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
}
}