Điều khiển tốc độ động cơ DC bằng PWM : Trong dự án này, tôi sẽ chỉ cho bạn cách tạo tín hiệu PWM bằng Vi điều khiển 8051 và cả Điều khiển tốc độ động cơ DC dựa trên PWM bằng Vi điều khiển.
Giới thiệu Điều khiển tốc độ động cơ DC bằng PWM
Điều quan trọng là kiểm soát tốc độ của động cơ DC trong nhiều ứng dụng, nơi mà độ chính xác và bảo vệ là điều cần thiết. Ở đây chúng ta sẽ sử dụng một kỹ thuật gọi là PWM (Pulse Width Modulation) để điều khiển tốc độ của động cơ DC.
Chúng ta có thể đạt được điều khiển tốc độ của động cơ DC bằng kỹ thuật cơ hoặc điện nhưng chúng yêu cầu phần cứng kích thước lớn để thực hiện nhưng hệ thống dựa trên Vi điều khiển cung cấp một cách dễ dàng để điều khiển tốc độ của động cơ DC.
Trước đó, chúng ta đã biết cách điều khiển tốc độ của động cơ DC bằng PWM mà không cần Vi điều khiển . Ở đây, chúng tôi thực hiện thí nghiệm tương tự bằng cách sử dụng vi điều khiển.
Với mục đích đó, ở đây chúng ta sẽ sử dụng bộ điều khiển 8051 để tạo ra sóng PWM. Bằng cách thay đổi độ rộng của sóng PWM này, chúng ta có thể điều khiển tốc độ của động cơ DC. Trong vi điều khiển 8051, các bộ định thời được sử dụng để tạo ra sóng PWM.
Trong bài này chúng ta sẽ xem cách tạo Tín hiệu PWM bằng cách sử dụng bộ định thời trong 8051 Mocrocontroller và cũng như cách điều khiển tốc độ của động cơ DC sử dụng tín hiệu PWM tthat.
Điều khiển tốc độ động cơ DC bằng PWM sử dụng nguyên tắc mạch vi điều khiển
Trái tim của dự án này là Vi điều khiển 8051. Nếu bạn đã làm việc với bất kỳ biến thể nào của Vi điều khiển 8051, bạn có thể nhớ rằng 8051 không có mạch PWM chuyên dụng để bật Chế độ PWM. Vì vậy, để tạo ra một Tín hiệu PWM, chúng tôi đã sử dụng các bộ định thời và chuyển các chân I / O BẬT và TẮT bằng cách sử dụng bộ định thời.
Trong dự án này, tôi sẽ sử dụng Timer0 trong Vi điều khiển 8051 cùng với Ngắt bộ định thời để tạo ra Tín hiệu PWM.
Làm thế nào để tạo PWM trong Vi điều khiển 8051?
Hầu hết các bộ vi điều khiển hiện đại như AVR (ví dụ như Arduino), ARM, PIC, v.v. đều có phần cứng và chân PWM chuyên dụng để kích hoạt chế độ PWM ngay lập tức. Tuy nhiên, Vi điều khiển 8051 không có quy định này. Vậy, làm thế nào để tạo PWM trong Vi điều khiển 8051?
Để làm được điều này, chúng ta phải sử dụng Bộ định thời và Ngắt trong Vi điều khiển 8051. Timer0 của 8051 được cấu hình ở Mode0. Bằng cách điều chỉnh cẩn thận các mức Cao và Thấp, chúng tôi có thể duy trì một khoảng thời gian không đổi của tín hiệu.
Sơ đồ mạch điều khiển tốc độ động cơ DC dựa trên PWM sử dụng vi điều khiển
Các thành phần mạch
- Bộ vi điều khiển 8051
- Tinh thể thạch anh 11,0592 MHz
- Tụ điện – 33pF x 2, 10µF
- Điện trở – 1KΩ x 4, 10KΩ x 2
- Động cơ DC 12V
- Trình điều khiển động cơ L298N
- Nút nhấn x 5
- Gói điện trở kéo lên 1KΩ x 8
- Cáp nối tiếp
- Pin hoặc bộ chuyển đổi 12V
- Kết nối dây
Điều khiển tốc độ động cơ DC dựa trên PWM sử dụng thiết kế mạch vi điều khiển
Mạch bao gồm một Vi điều khiển 8051 (và mạch hỗ trợ của nó liên quan đến bộ dao động và thiết lập lại), Mô-đun điều khiển động cơ L298N, Động cơ DC và một vài nút nhấn.
Một động cơ DC 12V được kết nối với Mô-đun trình điều khiển động cơ L298N tại các Chân OUT1 và OUT2 của nó. Các chân IN1 và IN2 của trình điều khiển động cơ được kết nối với + 5V (VCC) và GND. Chân EN1 của trình điều khiển động cơ được kết nối với Chân P0.0 của Cổng.
Bốn nút đẩy được kết nối với các chân cổng P0.4, P0.5, P0.6 và P0.7.
Nói chung, chúng ta có thể giao diện chuyển mạch sang bộ điều khiển vi mô trong hai cấu hình; một là cấu hình kéo lên và cấu hình kia là cấu hình kéo xuống.
Cấu hình kéo lên : Trong cấu hình kéo lên, chân vi điều khiển được kéo CAO đến LOGIC 1 và nút được kết nối với GND. Khi nhấn nút, chân vi điều khiển nhận LOGIC 0
Cấu hình kéo xuống : Trong cấu hình kéo xuống, chân vi điều khiển được kéo xuống LOGIC 0 và nút được kết nối với VCC. Khi nhấn nút, chân vi điều khiển nhận LOGIC 1.
Trong mạch của chúng tôi, chúng tôi đang sử dụng cấu hình kéo lên. Vì vậy, chúng ta cần kiểm tra logic 0 để biết liệu nút có được nhấn hay không.
Code
#include<reg51.h>
sbit PWM_Pin = P0^0;
sbit low = P0^4;
sbit medium = P0^5;
sbit high = P0^6;
sbit off = P0^7;
void InitPWM_timer(void);
unsigned char PWM = 0;
unsigned int temp = 0;
char a=1;
int main(void)
{
low=1;
medium=1;
high=1;
off=1;
PWM_Pin=0;
InitPWM_timer();
while(1)
{
if(low==0)
{
PWM=102;
a=0;
}
else if(medium==0)
{
PWM=153;
a=0;
}
else if(high==0)
{
PWM=255;
a=0;
}
else if(off==0)
{
a=1;
PWM_Pin=0;
}
}
}
void InitPWM_timer (void)
{
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = 0x00;
TL0 = 0x00;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void Timer0_ISR (void) interrupt 1
{
TR0 = 0;
if(PWM_Pin==1 && a==0)
{
PWM_Pin = 0;
temp = (255-PWM);
TH0 = 0xFF;
TL0 = 0xFF – temp&0xFF;
}
else if(PWM_Pin==0 && a==0)
{
PWM_Pin = 1;
temp = PWM;
TH0 = 0xFF;
TL0 = 0xFF – temp&0xFF;
}
TF0 = 0;
TR0 = 1;
}
Làm thế nào để vận hành Mạch Điều khiển tốc độ động cơ DC bằng PWM
- Kết nối pin 12V hoặc bộ chuyển đổi với bảng phát triển.
- Bật nguồn cung cấp.
- Ghi tệp hex vào bộ điều khiển 8051 với sự trợ giúp của lập trình viên.
- Thực hiện các kết nối cần thiết theo sơ đồ mạch.
- Bây giờ, bật nguồn cung cấp và nhấn công tắc 1. Bạn có thể quan sát các nút bắt đầu quay nhưng chỉ ở mức 40% công suất.
- Nếu bạn nhấn công tắc 2, động cơ sẽ chạy với tốc độ lớn hơn một nửa (chu kỳ làm việc 60%).
- Nhấn công tắc 3 sẽ làm cho động cơ quay ở tốc độ tối đa (100% chu kỳ làm việc).
- Để dừng động cơ, nhấn công tắc 4.
Ưu điểm
- Sử dụng phương pháp PWM này, chúng ta có thể tiết kiệm điện năng.
Các ứng dụng
- Dùng trong các ngành công nghiệp để điều khiển tốc độ của động cơ.
- Được sử dụng trong trung tâm mua sắm.
- Chúng ta có thể sử dụng khái niệm này để kiểm soát cường độ ánh sáng.