#2_Servo MG90S

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ó.

Servo MG90S
Datasheet Servo MG90S (Click để phóng to)

Theo datasheet, để servo hoạt động ta sẽ băm xung PWM 50Hz (20ms) với độ rộng xung từ ~1-2ms.

Mỗi Servo MG90S sẽ cần băm xung PWM có độ rộng khác nhau trong khoảng giá trị 1-2ms. Chúng ta sẽ xác định giá trị này để băm xung PWM và cho ra góc chính xác từ 0-180°.

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.
Servo MG90S
Cấu hình chân Servo MG90S

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.

Servo MG90S
Tính toán hệ số trong TIM1 (Click để phóng to)

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.
STM32 và ngoại vi
Code (Click để phóng to)

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:

STM32 và ngoại vi
CCR = 10 (0.2ms) (Click để xem)

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°.

Servo MG90S
3 góc quay của Servo MG90s (Click để xem)

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á.

4.3/5 - (3 bình chọn)

Similar Posts

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *