Giới thiệu Servo và cách điều khiển bằng biến trở

1. Giới thiệu

Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PPM) với góc quay nằm trong khoảng bất kì từ 0o - 180o. Mỗi loại servo có kích thước, khối lượng và cấu tạo khác nhau. Có loại thì nặng chỉ 9g (chủ yếu dùng trên máy bay mô mình), có loại thì sở hữu một momen lực bá đạo (vài chục Newton/m), hoặc có loại thì khỏe và nhông sắc chắc chắn,... 

Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín. Tín hiệu ra của động cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác. Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo RC (radio-controlled). Trong thực tế, bản thân động cơ servo không phải được điều khiển bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi. Động cơ servo nhận tín hiệu từ máy thu này.

Hình 1: Loại micro servo Tower Pro 9g phổ biến

Hình 2: Bên trong một micro servo

2. Lắp mạch

Chuẩn bị

Hình 3: Sơ đồ mạch breadboard

Thư viện Servo đã có sẵn trong hệ thống thư viện mặc định của Arduino nên bạn không cần phải download một thư viện mới về.

Copy và dán code sau

#include <Servo.h>      // Thư viện điều khiển servo

// Khai báo đối tượng myservo dùng để điều khiển servo
Servo myservo;          

int bientro = A0;       // Khai báo chân analog đọc biến trở điều khiển servo
int servoPin = 9;       // Khai báo chân điều khiển servo

void setup ()
{
    // Cài đặt chức năng điều khiển servo cho chân servoPin
    myservo.attach(servoPin); 
    
    Serial.begin(9600); // Mở giao tiếp Serial ở baudrate 9600
}

void loop ()
{
    int value = analogRead(bientro);// Đọc giá trị biến trở
    
    // Chuyển giá trị analog (0-1023) đọc được từ biến trở sang số đo độ (0-180độ)
    // dùng để điều khiển góc quay cho servo
    int servoPos = map(value, 0, 1023, 0, 180);
    
    // Cho servo quay một góc là servoPos độ
    myservo.write(servoPos);
    
    Serial.println(servoPos);
    
    delay(100);
}

3. Kết luận

Bạn hoàn toàn có thể làm rất nhiều thứ với Servo. Theo tớ được biết,  Servo được dùng trong dự án kBOT - Wifi Robot đã được tác giả Ngô Huỳnh Ngọc Khánh dùng trong việc điều chỉnh camera,  cánh tay robot và radar địa hình. Còn bạn thì sao? Hãy dùng Arduino UNO R3 và Servo làm nên những ứng dụng độc đáo!

Đừng quên một chai nước ngọt khi bí nhé!

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Hướng dẫn sử dụng các loại module

Nếu bạn đang muốn thực hiện hóa ý tưởng của mình mà không biết dùng loại module nào? Hãy tham khảo các module trong danh sách sau

Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Làm dự án xe với module điều khiển động cơ L293D

Chắc hẵn từ lúc mới đầu nghiên cứu Arduino đến nay bạn đã từng có suy nghĩ muốn làm một dự án nho nhỏ nào đó để thỏa lòng đam mê hay tò mò của mình và dự án được đa số bạn thích thú hướng đến có lẽ là xe, xe điều khiển, xe dò đường... hay là một dự án to bự như kBot của admin Ngô Huỳnh Ngọc Khánh (ksp) ^^. Vậy làm thế nào để có thể điều khiển được các bánh xe, servo, động cơ bước cho "chiến xa" trong khi board arduino chỉ cho phép bạn xuất các tín hiệu điện HIGH, LOW! Ở bài này mình xin giới thiệu đến các bạn một công cụ cực chất đó là shield điều khiển động cơ l293d, giúp bạn dễ dàng trong việc xử lý các thao tác điều khiển độc lập các motor của mình, nào ta bắt đầu thôi :)   

lên
39 thành viên đã đánh giá bài viết này hữu ích.

Chữa bệnh cho Arduino Nano khi bị cháy

Chắc hẳn các bạn khi làm các dự án với Ardunio đã từng sử dụng qua các board như Arduino Uno, Mega, Pro Mini hay Nano, các bạn thích một board mạch nhỏ gọn phù hợp thường chọn Ardunio Nano hơn vì nó tích hợp rất nhiều và vô cùng tiện lợi như con Uno R3. Nhưng một số vấn đề gặp phải ở board này là nó thường rất dễ bị cháy khi bị đoản mạch vì không có khả năng tự ngắt nguồn như Uno hay Pro Mini, bạn chỉ cắm nhầm dây một cái là nó sẽ về trời :) Đó là lý do tại sao nhiều bạn lại sợ và không còn giám sử dụng board mạch này.
Hôm nay mình sẽ hướng dẫn các bạn cách "chữa bệnh" cho Arduino Nano khi không may bạn làm nó hỏng do nguồn :) bắt đầu thôi nào

lên
23 thành viên đã đánh giá bài viết này hữu ích.