#2_Servo MG90S
Servo MG90S là ngoại vi tiếp theo ta tìm hiểu trong chuyên mục “STM32 và ngoại vi“. Ta sẽ tạo xung PWM với tần số theo tần số hoạt động của servo là 50Hz.
———————————
Cùng xem bài viết bên dưới.
Servo MG90S và Datasheet
Khi bắt đầu tìm hiểu về bất cứ ngoại vi nào việc đầu tiên cần làm là tải datasheet của nó. Servo MG90S cũng thế, bên dưới là datasheet và hình ảnh về 1 số đặc điểm của nó.
Theo datasheet, để servo hoạt động ta sẽ băm xung PWM 50Hz (20ms) với độ rộng xung từ ~1-2ms.
Trước khi tìm hiểu về ngoại vi này cần nắm được cách băm xung trong STM32, bạn xem lại bài viết “#4.1_Băm xung PWM | STM32 cơ bản“.
Bạn có thể tải datasheet Servo MG90S ở google hoặc ngay bên dưới.
Thực hành trên STM32cubeIDE
Cấu hình chân
- Kết nối phần cứng chú ý nguồn cấp theo datasheet và chân băm xung PWM PE9.
Cấu hình chân rất đơn giản, tiếp theo là khai báo trong cubeMX, như bài viết về băm xung PWM, ta khai báo TIM1 và thiết lập theo xung APB2 timer clock.
Phần tính chọn các giá trị PRE_S và PRE_A để có được xung PWM với tần số 50Hz, ta chọn PRE_A là 1000-1 và PRE_S là 2000-1. Lúc này tần số là 50Hz và chu kỳ tương ứng là 20ms.
Thiết lập và kết nối của các chân lúc này đã xong. 1 số lưu ý:
- TIM1 tính toán theo APB2 timer clock.
- Nguồn cấp Servo theo datasheet là >4.8v, ta dùng nguồn 5V từ vi điều khiển
- Giá trị băm xung PWM cho servo khác nhau, lân cận khoảng 1-2ms trong datasheet.
Lập trình Servo MG90S
- Sau khi tạo code, việc lập trình rất đơn giản, ta tính toán giá trị CCRx sao cho độ rộng xung nằm trong khoảng 1-2ms.
Sau đó giảm dần giá trị xuống để xem giới hạn dưới của PWM mà servo hoạt động là bao nhiêu. Servo của mình có giới hạn dưới là 0.3ms (CCR = 15). Nếu cho CCR = 10 (0.2ms) thì servo sẽ quay như chong chóng thế này:
Tương tự ta sẽ tìm được giới hạn trên, sau đó sẽ xác định được 2 giá trị biên dưới và trên để góc quay của servo là 180°. Và đây là kết quả, quay theo 3 góc 0°, 90°, 180°.
Phần cứng và code
Phần cứng sử dụng STM32F411, MG90S. Phần mềm sử dụng là stm32cubeIDE. File code ví dụ các bạn tải về bên dưới.
Ta vừa tìm hiểu về ngoại vi MG90S và là bài viết thứ 3 trong chuyên mục STM32 và ngoại vi. Bài viết tiếp theo sẽ tìm hiểu về cảm biến khoảng cách HC SR-04. Tạo hàm delay(us) và dùng chế độ Input Capture (chuyên mục “STM32 cơ bản”) để đo độ rộng xung đưa vào từ ngoại vi.
Mong rằng chuyên mục này sẽ giúp nhiều bạn tiếp cận hơn với dòng vi điều khiển STM32.
Các bài viết khác cùng chuyên mục trong “STM32 và ngoại vi“.
Các chuyên mục khác:
Bạn có thắc mắc gì trong bài viết không?
Đánh giá và để lại bình luận bên dưới nhá.