Hôm nay bản thân sẽ share với các bạn Project của bác bỏ Lamja để làm mạch điều khiển và tinh chỉnh 20 servos (không có serial) hoặc 18 servos đi kèm theo với serial.
Bạn đang xem: Điều khiển nhiều servo bằng arduino
Code chỉ áp dụng cho Arduino uno hoặc nano (vđk atmega 328) xuất xung trực tiếp từ chân IO. Không nên số theo như lời người sáng tác là khá ấn tượng, chỉ tầm 2ns. Chúng ta cũng có thể điều khiển nhiều servo thuộc 1 lúc, rất có thể điều khiển vận tốc quay nhanh hay chậm. Rất thích hợp để triển khai robot cần áp dụng nhiều servo như robot nhện 4,6 chân, robot người...Code này không phù hợp nếu bạn chỉ việc điều khiển 1- 4 servo vì chưng sẽ tiêu tốn lãng phí nhiều tài nguyên.
Source code và License coi tại: http://www.lamja.com/?p=504
Bạn vào phần New version 2016.04.24 , copy toàn cục code ốp lại Arduino IDE => upload là chạy đc.
Hướng dẫn sử dụng. Project có 2 chế độ:
1. Chính sách 18 servos
(Sửa loại "#define HDServo
Mode 20" thành "#define HDServo
Mode 18" nhằm sử dụng)
18 chân IO đc sử dụng nhằm đk, 2 chân còn sót lại sử dụng cho giao tiếp serial. Bạn sẽ gửi lệnh qua serial (Baud rate 115200) để đổi khác góc cù của servo:
// Channels tương ứng vs pins:
Ch0=Pin2, Ch1=Pin3, Ch2=Pin4, Ch3=Pin5, Ch4=Pin6, Ch5=Pin7, Ch6=Pin8, Ch7=Pin9, Ch8=Pin10, Ch9=Pin11
Ch10=Pin12, Ch11=Pin13, Ch12=Pin
A0, Ch13=Pin
A1, Ch14=Pin
A2, Ch15=Pin
A3, Ch16=Pin
A4, Ch17=Pin
A5, Ch18=Pin0, Ch19=Pin1
Lưu ý chấm dứt lệnh phải có kí từ ( ). Góc gửi xuống phải ở dạng us (với lệnh #0 P1500 T1000) hoặc us*16 (với lệnh #0 p24000 T1000).
2. Chế độ 20 servos
("#define HDServo
Mode 20" cùng xóa hết code vào hàm void loop() nhằm sử dụng)
Tất cả chân IO hồ hết được sử dung (cả cổng serial) chúng ta chỉ có thể chạy code viết sẵn trên chíp.
Sử dụng câu lệnh sau để tinh chỉnh và điều khiển void Servo
Move(int Channel, long Pulse
HD, long Speed
HD, long Time)
VD: Servo
Move(0, (long)1500*16, 0, 2000); // chuyển sv 0 về 1500us trong tầm 2s
Lưu ý. Do người sáng tác đã screwed up timer 0 nên bạn không thể sử dụng được hàm delay() và lúc này vẫn chưa xuất hiện hàm delay() ráng thế.
VD:
void loop() Servo
Move(0, (long)1500 * 16, 0, 2000); // đk servo 0 góc 1500us for (int i = 0; i trường hợp có thắc mắc xin nhằm lại bình luận phía dưới.
1. Trình làng Servo motor
Servo motor là một dạng động cơ điện quan trọng với góc con quay nằm trong khoảng từ 0 – 180°. Servo motor thường dùng làm đóng ngắt các khối hệ thống một phương pháp tự động.Bạn sẽ xem: Điều khiển dc servo bằng arduino
2. Kiến tạo mạch điều khiển Servo motor với board Arduino
Mạch tinh chỉnh và điều khiển Servo motor với Arduino gồm một board Arduino, 1 Servo motor, có thể thêm 1 thay đổi trở để tinh chỉnh góc cù của Servo motor.Để Servo motor hoạt động, nên cấp nguồn cho Servo motor. Một chân của motor phải kết nối với một chân của Arduino có công dụng xuất xung PWM (~3, ~ 5, ~ 6, ~ 9, ~ 10, ~ 11) để chịu đựng sự tinh chỉnh và điều khiển của Arduino.Có thể sử dụng thêm đổi mới trở để tinh chỉnh góc con quay của Servo motor.
3. Chương trình tinh chỉnh Servo motor
Điều khiển góc con quay của Servo motor từ 0-180° với ngược lạiĐể lập trình điều khiển và tinh chỉnh Servo motor, bọn họ sử dụng thư viện . Tủ sách này đã làm được tích hòa hợp sẵn trong Arduino IDE buộc phải không phải cài đặt. đề xuất khai báo một đối tượng người tiêu dùng Servo để thay mặt đại diện cho Servo motor liên kết với Arduino. Dùng hàm write() nhằm gán góc quay đến Servo motor. Góc tảo của Servo motor có giá bán trị trong tầm từ 0 – 180.#include //Khai báo thư viện điều khiển và tinh chỉnh ServoServo myservo;//Khai báo đối tượng người dùng Servoint servo
Pin = 9;//Chân liên kết Servo cùng với Arduinovoid setup() myservo.attach(servo
Pin);//Khai báo chân kết nối Servo cùng với Arduinovoid loop() for(int pos = 0; pos =1; pos-=1) myservo.write(pos);//Gán góc quay mang đến Servo delay(15); Kết quảĐiều khiển góc xoay của Servo motor bằng biến trởXem lại cách lập trình áp dụng biến trở trong bài xích Lập trình tinh chỉnh DC motor cùng với board mạch Arduino. Khi quý hiếm điện áp mang ra từ đổi thay trở thay đổi thì góc cù của Servo motor cầm đổi.#include //Khai báo thư viện tinh chỉnh Servo
Servo myservo;//Khai báo đối tượng Servoint servo
Pin = 9;//Chân liên kết Servo với Arduinoint rv = A0;//Chân liên kết biến trở cùng với Arduinovoid setup() myservo.attach(servo
Pin);//Khai báo chân kết nối Servo với Arduinovoid loop() int value = analog
Read(rv);//Đọc quý hiếm điện áp từ trở nên trở int pos = map(value,0,1023,0,180);//chuyển thang đo của value từ bỏ 0-1023 sang trọng 0-180 myservo.write(pos);//Gán góc quay mang đến ServoKết quả
Bài viết hôm nay xin giới thiệu với những bạn nội dung bài viết điều khiển servo RC bởi pwm. Ở các bài viết trước họ đã tìm hiểu về cách tinh chỉnh và điều khiển động cơ DC với AC Servo. Bây giờ chúng ta cùng nhau tìm hiểu cách tinh chỉnh và điều khiển một loại động cơ thông dụng nửa là RC Servo bằng pwm.
Điều khiển hộp động cơ RC servo bằng pwm
Download 5 mạch tinh chỉnh và điều khiển Motor DC Pdf cùng mô phỏng
Content Summary
1 1. Tìm hiểu về động cơ servo2 2. Điều khiển bộ động cơ servo bằng PWM Arduino2.3 2.3 Lập trình tinh chỉnh và điều khiển servo RC bằng PWM1. Tò mò về hộp động cơ servo
1.1 Động cơ RC servo là gì
Khác với những loại hộp động cơ DC, AC servo vào công nghiệp thực hiện encoder để đánh giá vị trí. Động cơ servo là loại bộ động cơ một chiều dễ dàng có cảm ứng phản hồi vị trí là một trong biến trở. Vị trí thực tiễn được so sánh với địa chỉ mục tiêu, bộ điều khiển sẽ nhờ vào sai số này để biến đổi vị tri thực tế đúng với yêu thương cầu.
Động cơ RC servo được áp dụng trong định vị bánh lái của thuyền, camera, cảm biến và thực hiện thông dụng trong điều khiển và tinh chỉnh góc quay những khớp của robot.
Điều khiển bộ động cơ DC servo
Điều khiển động cơ AC servo hãng LS
Điều khiển bộ động cơ AC servo Dorna thương hiệu Tecorp
1.2 cấu tạo động cơ RC servo
Động cơ servo bao gồm 4 bộ phận: hộp động cơ một chiều, hộp số, vươn lên là trở với mạch điều khiển.
Cấu tạo động cơ rc servo
+ Động cơ DC có tốc độ cao cùng moment thấp nên nên hộp số nhằm giảm tốc độ và tăng moment góp điều khiển giỏi vị trí. Tốc độ sau thời điểm qua hộp giảm tốc khoảng 60 vòng/phút.
+ đổi mới trở được nối với vỏ hộp số hoặc trục của cồn cơ, nên những lúc động cơ quay thì phát triển thành trở cũng bên cạnh đó quay theo. Phát triển thành trở quay vẫn ứng với hộp động cơ quay theo một góc hoàn hảo so với vị trí ban đầu. Mạch điều khiển và tinh chỉnh đọc điện áp từ biến đổi trở và so sánh với năng lượng điện áp của biểu lộ điều khiển. Ở một số trong những động cơ rc servo bao gồm tích thích hợp thêm mạch ước H để điều chỉnh động cơ cù theo chiều ngược lại khi động cơ quay qua vị trí mong muốn muốn. Cho đến khi không nên số giữa hai biểu đạt điện áp này bởi 0.
1.3 nguyên tắc điều khiển hộp động cơ servo bằng pwm
+ Động cơ RC servo được điều khiển bằng phương pháp cấp một chuỗi xung PWM. Tần số của xung điều khiển và tinh chỉnh nên là 50 Hz, góc con quay của rượu cồn cơ dựa vào vào phạm vi của xung điều khiển. Các loại động cơ này có giới hạn về góc quay, góc quay buổi tối đa là 180 độ.
+ đến ví dụ phạm vi xung 1 mS ứng với góc quay bộ động cơ là 0 độ, độ rộng 1,5 m
S ứng cùng với góc con quay là 90 độ cùng 2m
S ứng cùng với góc cù 180 độ. Góc quay rất có thể khác nhau đối với các nhiều loại động cơ của những nhãn hiệu khác nhau.
Góc xoay của cồn cơ phụ thuộc xung điều khiển
1.4 liên kết động cơ Rc servo
Động cơ servo thông thường sẽ có 3 chân VCC, dấu hiệu và chân GND. Color dây những chân của hộp động cơ servo sẽ chuyển đổi tùy theo công ty sản xuất. Mặc dù ta thấy phần nhiều các chân của bộ động cơ sẽ điều khoản theo màu sắc như sau.
+ GND – Màu black hoặc nâu, chân MASS cho hộp động cơ và mạch điều khiển.
+ biểu lộ – white color hoặc vàng, chân ngỏ vào của biểu thị điều khiển
+ VCC – Chân cấp nguồn cho động cơ và mạch điều khiển, thường là 5V.
2. Điều khiển hộp động cơ servo bằng PWM Arduino
2.1 tại sao lựa lựa chọn Arduino tinh chỉnh servo RC
+ Như đã trình diễn ở trên, hộp động cơ servo nên xung điều khiển PWM để chuyển động một cách chính xác. Bao gồm nhiều phương pháp để tạo xung điều khiển PWM, trong đó dùng vi điều khiển và tinh chỉnh sẽ có tương đối nhiều ưu điểm hơn để tinh chỉnh servo hiệu quả. Cùng Arduino là 1 trong những sự gạn lọc hoàn hảo. Với mã mối cung cấp mở, túi tiền rẻ, những hàm chức năng dễ sử dụng.
+ phần mềm lập trình Arduino IDE cung cấp thư viện tinh chỉnh Servo, rất có thể sử dụng những hàm điều khiển và tinh chỉnh servo dễ dàng.
+ Trên từng board mạch Arduino có một vài chân điều khiển PWM. Bên trên board Arduino UNO tất cả 4 chân PWM tất cả tần số 490 Hz với 2 chân PWM gồm tần số 980 Hz.
+ lưu ý khi thực hiện thư viện Servo buộc phải sử dụng một trong những bộ timer phía bên trong Arduino, rõ ràng là timer 1. Điều này khiến trở ngại cho những thư viện khác cần áp dụng bộ timer tương tự
2.2 chọn nguồn cấp cho mạch
+ Động cơ SG90 sẽ hoạt động tốt cùng với nguồn cung ứng với nguồn 5V cấp từ Arduino bởi vì moment yếu, cái điện nhỏ.
Điều khiển hộp động cơ servo G90 bởi arduino
+ mặc dù nhiên đối với một số Servo gồm moment phệ như MG9995 hoặc khi bao gồm gắn thêm sở hữu thì dòng điện rất có thể lớn hơn cái cấp về tối đa của Arduino. Giống hệt như một số loại hộp động cơ khác, khi hoạt động có thể có mặt nhiễu trên đường dây cấp cho nguồn. Khi nhiễu trên đường dây cấp nguồn đến vi tinh chỉnh và một số trong những thiết bị khác vẫn dẫn mang lại sai số.
Vì thế nên cấp nguồn ngoài cho động cơ servo, liên kết GND cùng chân biểu lộ với Arduino. Có thể sử dụng tụ 100uF hoặc lớn hơn nối song song với nguồn cung cấp gần hộp động cơ để bớt nhiễu.
điều khiển bộ động cơ servo MG9995 bởi pwm
2.3 Lập trình điều khiển servo RC bởi PWM
a. Điều khiển servo xoay từ 0 mang lại 180 độ cùng ngược lại+ liên kết mạch ko thể đơn giản dễ dàng hơn, trong ví dụ như này thực hiện chân 9 là chân tín hiệu điều khiển và tinh chỉnh servo. Chân 9 là 1 trong những trong 6 chân có khả năng phát xung PWM, những chân phân phát xung sẽ có được ký hiệu là dấu “~”.
Điều khiển hộp động cơ servo RC bởi pwm
+ Hãy xem code ví dụ như trong mục File/ Examples/ Servo/ Sweep
Trong lấy ví dụ này điều khiển và tinh chỉnh động cơ servo quay một 180 độ tiếp nối dừng 2s và trở về vị trí ban sơ 0 độ. Từng bước một quay là một trong những độ, thời gian chờ để bộ động cơ đạt mang lại vị trí điều khiển và tinh chỉnh là 15mS. Do thời gian chờ cực kỳ bé, buộc phải ta nhận thấy động cơ quay liên tục.
Xem thêm: Mua bán cây cảnh giá rẻ hà nội uy tín, đẹp, cây cảnh hà nội
***************************************************
/* Sweep – Điều khiển hộp động cơ servo bởi arduino
by BARRAGAN
*/
#include // Khai báo thư viện servo
Servo myservo;// Tạo đối tượng người dùng tên myservo
int pos = 0;//Tạo vươn lên là nhận quý giá góc quay
void setup()
myservo.attach(9,500,2500); // Chân 9, chu kỳ luân hồi Min, Max
void loop()
//Điều khiển servo con quay một góc 180 độ
for (pos = 0; pos
myservo.write(pos); //ra lệnh servo quay một góc “pos”
delay(15); // ngóng 15ms để động cơ đạt cho vị trí pos
delay(500); //Khi quay mang lại vị trí góc 180 độ dừng 2s
//Điều khiển servo trở lại vị trí 0 độ
for (pos = 180; pos >= 0; pos -= 1) //Biến pos vẫn chạy từ 180 về 0
myservo.write(pos);
delay(15);
delay(500); //Khi quay cho vị trí góc 0 độ ngừng 2s
***************************************************
Video tìm hiểu thêm mô phỏng tinh chỉnh servo bằng pwm trên phần mềm Proteus
Video thực tế điều khiển bộ động cơ servo bởi arduino
b. Điều khiển bộ động cơ servo luân chuyển theo biến trở+ Ở ví dụ như này ta sẽ sử dụng Arduino đọc giá trị vươn lên là trở điều khiển góc con quay của động cơ servo bằng PWM. Động cơ sẽ quay theo biến chuyển trở.