Professional Documents
Culture Documents
Động cơ trong động cơ servo thường là loại động cơ DC (điện xoay chiều) nhỏ.
Nó được điều khiển thông qua một hệ thống điện tử để tạo ra các chuyển
động được điều khiển và chính xác.
Động cơ servo thường được trang bị một hệ thống giảm tốc để tăng lực xoắn
(torque) và giảm tốc độ quay.
Hệ thống giảm tốc bao gồm các bánh răng và bánh răng để chuyển động từ
động cơ thành chuyển động của trục ra.
Cảm biến phản hồi là một phần quan trọng trong động cơ servo để cung cấp
thông tin về vị trí hoặc góc quay của trục.
Trong các servo thông thường, cảm biến phản hồi thường là potentiometer
hoặc encoder.
Bộ điều khiển trong động cơ servo có nhiệm vụ nhận tín hiệu điều khiển từ
nguồn bên ngoài (ví dụ: từ mạch điều khiển của RC) và điều chỉnh động cơ và
cảm biến phản hồi để đạt được vị trí hoặc góc quay mong muốn.
Bộ điều khiển thường sử dụng một bộ vi xử lý nhỏ để thực hiện các phép tính
và điều chỉnh.
5. Hộp điều khiển (Control Horn) và Dây Điều Khiển (Control Wire):
Đây là các thành phần vật lý nối trục của động cơ servo với cơ cấu hoặc bộ
điều khiển bên ngoài.
Hộp điều khiển có thể được gắn vào đầu trục của servo và kết nối với cơ cấu
bằng dây điều khiển để truyền sức mạnh và chuyển động.
1
Câu 2: Đặc điểm xung điều khiển động cơ RC Servo
Xung điều khiển động cơ servo thường có độ rộng biến thiên để chỉ định vị trí
hoặc góc quay mong muốn.
Thông thường, độ rộng của xung thay đổi từ khoảng 1ms đến 2ms, với 1ms
thường tương ứng với góc quay cực thiểu và 2ms tương ứng với góc quay cực
độ.
Tần số xung điều khiển thường quyết định tốc độ cập nhật của động cơ servo
và do đó ảnh hưởng đến độ trễ trong việc điều khiển.
Tần số thường dao động từ khoảng vài chục Hz đến vài trăm Hz. Tuy nhiên, các
động cơ servo có thể hoạt động ở tần số cao hơn.
Chu kỳ xung là tổng thời gian giữa hai xung liên tiếp.
Chu kỳ xung thường phụ thuộc vào tần số xung, ví dụ, ở tần số 50Hz, chu kỳ
xung là 20ms.
Điện áp xung điều khiển động cơ servo thường phải nằm trong một phạm vi
nhất định để đảm bảo hoạt động chính xác của servo.
Thông thường, điện áp xung trong khoảng 3.3V đến 5V, tùy thuộc vào loại
động cơ servo cụ thể.
5. Polarity (Polarity):
Trong một số hệ thống, có thể có đảo ngược polarity của xung để điều khiển
hướng quay của động cơ servo.
Xung điều khiển được tạo ra từ một bộ điều chỉnh như mạch điều khiển trong
mô hình điều khiển từ xa (RC).
Bộ điều chỉnh thường tạo ra các xung điều khiển với độ rộng và tần số phù hợp
để đạt được vị trí hoặc góc quay mong muốn của động cơ servo.
2
Câu 3:Vẽ sơ đồ kết nối arduino với động cơ RC servo, trình bày công dụng của các
hàm
sau trong thư viện “Servo.h” của bo mạch arduino:
- servo.attach(pin)
- servo.write(angle)
- servo.read()
Công dụng: Hàm này được sử dụng để liên kết đối tượng servo với một chân
pin cụ thể trên bo mạch Arduino.
Tham số:
pin: Số chân digital của Arduino mà động cơ servo được kết nối đến.
Ví dụ: servo.attach(9); sẽ kết nối động cơ servo với chân digital số 9 trên
Arduino.
2. servo.write(angle):
Công dụng: Hàm này gửi một tín hiệu điều khiển đến động cơ servo để xoay
đến một góc nhất định.
Tham số:
angle: Góc cần xoay của động cơ servo, thường từ 0 đến 180 độ.
Ví dụ: servo.write(90); sẽ điều khiển động cơ servo xoay đến góc 90 độ.
3. servo.read():
Công dụng: Hàm này đọc giá trị góc hiện tại của động cơ servo.
Trả về:
Giá trị góc hiện tại của động cơ servo, thường từ 0 đến 180 độ.
Câu 4: Trình bày chức năng các chân của module L298.
4
1. Chân Nguồn (Power Supply Pins):
VCC (Pin 1): Nguồn cung cấp cho bộ cầu H khi sử dụng tải nặng. Thường được
kết nối với nguồn cung cấp điện áp cao hơn để đáp ứng nhu cầu của các động
cơ mạnh.
GND (Pin 2, 8): Chân này được kết nối đến mạch đất của hệ thống để tạo
mạch đất chung.
IN1 (Pin 3), IN2 (Pin 4): Điều khiển hướng quay của động cơ 1.
IN3 (Pin 5), IN4 (Pin 6): Điều khiển hướng quay của động cơ 2.
Các chân này được điều khiển bởi tín hiệu logic từ vi điều khiển như Arduino.
Kết hợp giữa các mức logic trên các cặp chân này sẽ quyết định hướng quay
của động cơ.
ENABLE A (Pin 7), ENABLE B (Pin 6): Chân này được sử dụng để kiểm soát tốc
độ của các động cơ. Bằng cách điều chỉnh mức điện áp trên các chân này, bạn
có thể điều chỉnh tốc độ của động cơ.
Khi tín hiệu PWM được áp dụng lên các chân này từ vi điều khiển như Arduino,
tốc độ quay của động cơ sẽ thay đổi tương ứng với tín hiệu PWM đó.
5
Câu 5: Vẽ sơ đồ kết nối arduino đối với module L298 để điều khiển động cơ một
chiều,
trình bày cách điều khiển động cơ một chiều (thay đổi tốc độ, đảo chiều quay) bằng
module L298.
#define IN1 7
#define IN2 6
#define IN3 5
#define IN4 4
#define MAX_SPEED 255 //từ 0-255
#define MIN_SPEED 0
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void motor_1_Dung() {
6
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
void motor_2_Dung() {
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void loop()
{
motor_1_Tien(MAX_SPEED); // motor 1 tiến
delay(5000);//tiến 5 s
motor_2_Lui(MAX_SPEED); //motor 2 lùi
// motor 1 vẫn tiến
delay(2000);//tiến 2 s
motor_1_Dung();
7
motor_2_Dung();
delay(10000);//dừng 10s
}
IN1, IN2, IN3, IN4: Đây là các chân kết nối với module L298 để điều khiển động
cơ. Chúng được đặt như hằng số để dễ dàng thay đổi nếu cần.
MAX_SPEED và MIN_SPEED: Đây là hằng số đại diện cho tốc độ tối đa và tốc
độ tối thiểu của động cơ.
Trong hàm setup(), chúng ta thiết lập chế độ OUTPUT cho các chân kết nối để điều
khiển động cơ.
Hai hàm motor_1_Dung() và motor_2_Dung() được sử dụng để dừng động cơ bằng
cách đặt cả hai chân điều khiển của động cơ về LOW.
IN1, IN2, IN3, IN4: Đây là các chân kết nối với module L298 để điều khiển động
cơ. Chúng được đặt như hằng số để dễ dàng thay đổi nếu cần.
MAX_SPEED và MIN_SPEED: Đây là hằng số đại diện cho tốc độ tối đa và tốc
độ tối thiểu của động cơ.
Trong hàm setup(), chúng ta thiết lập chế độ OUTPUT cho các chân kết nối để điều
khiển động cơ.
Trong hàm loop(), chúng ta gọi các hàm điều khiển động cơ để thực hiện các thao tác
di chuyển của động cơ. Đoạn code này sẽ làm cho motor 1 tiến trong 5 giây, sau đó
motor 2 lùi trong 2 giây, và sau đó cả hai động cơ sẽ dừng lại trong 10 giây trước khi
lặp lại quá trình
8
Câu 6: Trình bày chức năng các chân của module LCD16x02
1. Kích thước: Màn hình có kích thước 16 cột và 2 hàng, do đó được gọi là LCD 16x2. Có
16 ký tự hiển thị trên mỗi hàng.
2. Hiển thị ký tự: Màn hình LCD 16x2 có khả năng hiển thị ký tự, con số và các ký tự đặc
biệt. Mỗi ký tự được hiển thị trong một ô (gọi là ô ký tự).
3. Đèn nền: Một số màn hình LCD 16x2 đi kèm với đèn nền (backlight) để cải thiện khả
năng đọc trong điều kiện ánh sáng yếu hoặc tối.
4. Giao tiếp: Màn hình LCD 16x2 thường được giao tiếp với vi điều khiển hoặc vi điều
khiển thông qua giao diện song song 4-bit hoặc 8-bit. Các chân kết nối bao gồm chân
dữ liệu (data pins), chân điều khiển (control pins) như RS (Register Select), RW
(Read/Write), E (Enable), và các chân khác cho đèn nền (nếu có).
5. Điều khiển hiển thị: Màn hình LCD 16x2 cho phép điều chỉnh vị trí hiển thị của con
trỏ và các ký tự trên màn hình. Bạn có thể di chuyển con trỏ đến bất kỳ vị trí nào trên
màn hình để hiển thị dữ liệu.
6. Điện áp và tiêu thụ điện năng: Điện áp hoạt động của màn hình LCD 16x2 thường là
5V DC. Tiêu thụ điện năng của màn hình thường thấp, tùy thuộc vào việc có đèn nền
và chế độ sử dụng.
9
7. Ứng dụng: Màn hình LCD 16x2 thường được sử dụng trong các dự án nhúng, điều
khiển và giám sát, hệ thống nhúng, thiết bị điện tử, và các ứng dụng hiển thị thông tin
đơn giản.
Câu 7: Vẽ sơ đồ kết nối arduino với module LCD16x02 theo cách kết nối trực tiếp (4
bit),trình bày công dụng của các hàm sau trong thư viện “LiquidCrystal.h” của bo
mạch arduino:
o LiquidCrystallcd(rs,enable,d4,d5,d6,d7);
o LiquidCrystallcd(rs,rw,enable,d4,d5,d6,d7);
o lcd.begin(cols,rows);
o lcd.clear();
o lcd.setCursor(col,row);
o lcd.print(data);
Sơ đồ kết nối module LCD và arduino trực tiếp
10
Arduino Uno R3 LCD 16X2 Biến trở
5V 2, 15 Chân ngoài
2 D7
3 D6
4 D5
5 D4
11 EN
12 RS
Vo Chân giữa
Code:
1. #include <LiquidCrystal.h>
2.
5.
9.
12.
11
14. // Khởi tạo màn hình LCD với số cột và số hàng
16.
22. lcd.print("Welcome!");
23. }
25. // Đoạn code trong hàm loop() không cần thiết trong trường hợp này,
26. // vì chúng ta không có hoạt động lặp lại cụ thể nào cần thực hiện liên tục.
1. Công dụng: Hàm này khởi tạo một đối tượng LCD với các chân được kết
nối tương ứng với các chân trên bo mạch Arduino.
2. Tham số:
1. rs: Chân Register Select kết nối với màn hình LCD để xác định liệu
dữ liệu được gửi là dữ liệu ký tự (RS = HIGH) hay lệnh (RS =
LOW).
2. enable: Chân Enable cho phép gửi dữ liệu hoặc lệnh đến màn
hình LCD.
3. d4, d5, d6, d7: Các chân dữ liệu kết nối với màn hình LCD.
1. Công dụng: Tương tự như hàm trước, nhưng có thêm tham số rw, cho
phép xác định chế độ đọc hoặc ghi dữ liệu từ màn hình LCD.
2. Tham số:
1. rs: Chân Register Select.
12
2. rw: Chân Read/Write để xác định chế độ đọc (HIGH) hoặc ghi
(LOW).
3. enable, d4, d5, d6, d7: Các chân tương tự như trong hàm trước.
1. Công dụng: Khởi tạo màn hình LCD với số cột và số hàng được chỉ định.
2. Tham số:
1. cols: Số cột trên màn hình LCD.
2. rows: Số hàng trên màn hình LCD.
30. lcd.clear();
1. Công dụng: Xóa màn hình LCD và di chuyển con trỏ về vị trí ban đầu
(0,0).
1. Công dụng: Di chuyển con trỏ đến vị trí cột và hàng được chỉ định trên
màn hình LCD.
2. Tham số:
1. col: Vị trí cột.
2. row: Vị trí hàng.
32. lcd.print(data);
1. Công dụng: In dữ liệu lên màn hình LCD tại vị trí con trỏ hiện tại.
2. Tham số:
1. data: Dữ liệu (chuỗi ký tự, số nguyên, số thực, ... ) cần in lên màn
hình LCD.
13
Câu 8: Vẽ sơ đồ kết nối arduino với module LCD16x02 theo cách kết nối thông qua
module
I2C, trình bày công dụng của các hàm sau trong thư viện “LiquidCrystal_I2C.h” của
bo
mạch arduino.
o LiquidCrystal_I2C lcd(address, cols, rows);
o lcd.init();
o lcd.backlight();
o lcd.setCursor(col, row);
o lcd.print(data);
14
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.setCursor(0, 1);
void loop()
15