You are on page 1of 9

Điều khiển động cơ DC bằng Encoder và hiển thị trên

màn hình LCD

I. Các linh kiện


1. Bộ điều khiển L298N

2. Động cơ DC giảm tốc GA25 Encoder

3. Arduino UNO R3
4. Màn LCD 16x2

5. Module I2C Arduino

6. Breadboard
7. Dây cắm breadboard

8. Biến trở Encoder

9. Dây cáp nạp


II. Nguyên lý hoạt động
Khi Encoder chuyển động cùng động cơ bộ chuyển đổi sẽ xử lý các chuyển
động và chuyển thành các tín hiệu điện. Các tín hiệu này sẽ được truyền đến các
thiết bị điều khiển Arduino và được xử lý để biểu thị các giá trị cần đo đạc bằng
màn LCD.
- Thuật toán điều khiển: Động cơ DC giao tiếp qua mạch L298N. Encoder sử
dụng tín hiệu cảm biến thu sáng để thu nhận tín hiệu khi chiếu qua khe của đĩa
xung xong gửi đến bộ xử lý tín hiệu. Sau đó bộ xử lí ( arduino) tín hiệu xử lý
thông tin và chuyển đến mà hình LCD chức năng của màn LCD giao tiếp với
arduino qua mo đun i2C
III. Sơ đồ lắp mạch
IV. Cấu tạo và chức năng từng bộ phận
1. Mô-đun điều khiển động cơ DC L298N với mạch Arduino
- Mạch L298N được thiết kế với công dụng điều khiển cả hướng quay và tốc độ của động
cơ DC. Để có thể làm được ta kết hợp 2 phương pháp:
 PWM – Để điều khiển tốc độ
 H-Bridge - Để điều khiển hướng quay

+) Sơ đồ chân nối của mạch L298N


1) VCC: chân cấp nguồn của động cơ (5V-35V)
2) GND: chân nối đât
3) ENA: chân được sử dụng để điều khiển tốc độ của động cơ A
4) IN1 & IN2: chân được sử dụng để điều khiển hướng quay của động cơ A
5) OUT1 & OUT2: chân được kết nối với động cơ A
- Ta sử dụng nguồn DC 14V cho mạch. Nhưng vì điện áp rơi của mạch L298N là khoảng
2V. Điều này là do sự sụt giảm điện áp bên trong trong các bóng bán dẫn chuyển mạch
trong mạch cầu H. Động cơ 12V thì điện áp cung cấp cho động cơ phải là 14V.
- Bộ mã hóa vòng quay (Rotary Encoder): là thành phần quan trọng của động cơ, giúp đọc
tốc độ và vị trí của động cơ nhờ vào các xung có tần số thay đổi phụ thuộc vào tốc độ của
động cơ.
 Cấu tạo cơ bản gồm 1 đĩa quang có đục lỗ, 1 nguồn LED làm nguồn phát sáng, 1 mắt thu
quang học, 1 board mạch khuếch đại
 Nguyên lý hoạt động: Đĩa tròn xoay quay quanh trục, trên đĩa có các lỗ (rãnh). Dùng một
đèn led để chiếu lên mặt đĩa. Khi đĩa quay, chỗ không có lỗ (rãnh), đèn led không chiếu
xuyên qua được, chỗ có lỗ (rãnh), đèn led sẽ chiếu xuyên qua. Khi đó, phía mặt bên kia
của đĩa, người ta đặt một con mắt thu. Với các tín hiệu có, hoặc không có ánh sáng chiếu
qua, người ta ghi nhận được đèn led có chiếu qua lỗ hay không. Khi trục quay, giả sử
trên đĩa chỉ có một lỗ duy nhất, cứ mỗi lần con mắt thu nhận được tín hiệu đèn led, thì có
nghĩa là đĩa đã quay được một vòng.
- Sơ đồ mô-đun điều khiển DC L298N với Arduino
- Code điều khiển Arduino cho mô-đun DC L298N

// Turn off motors - Initial state


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}

void loop() {
directionControl();
delay(1000);
speedControl();
delay(1000);
}

// This function lets you control spinning direction of motors


void directionControl() {
// Set motors to maximum speed
// For PWM maximum possible values are 0 to 255
analogWrite(enA, 255);
// Turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
delay(2000);

// Now change motor directions


digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
delay(2000);

// Turn off motors


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}

// This function lets you control speed of the motors


void speedControl() {
// Turn on motors
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);

// Accelerate from zero to maximum speed


for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
delay(20);
}

// Decelerate from maximum speed to zero


for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
delay(20);
}

// Now turn off motors


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}

2. Màn hình LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino

- Màn hình LCD 16×2 với thông số kỹ thuật:


 LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW,
EN).
 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
 Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ liệu.
 Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.

- Mô-đun I2C Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD
20×4, …) kết nối bằng 2 chân (SCL, SDA)

- Sơ đồ mạch kết nối:


- Code điều khiển màn hình LCD 16×2 và mô-đun I2C LCD sử dụng Arduino
#include <Wire.h>

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);

void setup()
{
 lcd.init();                    
 lcd.backlight();
 lcd.setCursor(2,0);
 lcd.print("RPM:");
 lcd.setCursor(0,1);
 lcd.print("M/s:");
}

void loop()
{
}

You might also like