Tải bản đầy đủ (.docx) (24 trang)

Đo tốc độ và điều khiển tốc độ động cơ 1 chiều, hiển thị lên LCD

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (490.02 KB, 24 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN
--------

BÀI TẬP LỚN
MÔN: VI XỬ LÝ TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN
Đề tài: Đo tốc độ và điều khiển tốc độ động cơ 1 chiều, hiển thị lên
LCD

Hà Nội - 2018

Lời mở đầu


Ngày nay việc ứng dụng vi điều khiển, vi xử lý ngày càng phát triển rộng rãi và thâm
nhập ngày càng nhiều vào các lĩnh vực kỹ thuật và đời sống xã hội. Với xu hướng tất yếu
này cùng với sự phát triển mạnh mẽ của công nghệ chế tạo, người ta đã tạo những vi điều
khiển có cấu trúc mạnh hơn, đáp ứng thời gian thực tốt hơn, chuẩn hóa hơn so với các vi
điều khiển 8 bit trước đây.
Với sự phát triển mạnh mẽ của khoa học, đặc biệt là ngành điện, điện tử, sự phát
minh ra các linh kiện điện tử đã và đang ngày càng đáp ứng được yêu cầu của các hệ
thống. Ưu điểm của việc sử dụng các linh kiện điện tử làm cho các hệ thống linh hoạt
và đa dạng hơn, giá thành thấp hơn và độ chính xác cao hơn.
Sau thời gian học tập và tìm hiểu, chúng em đã được làm quen với môn học vi xử lý
trong đo lường điều khiển. Để áp dụng lý thuyết với thực tế của môn học này chúng em xin
được hoàn thành bài tập lớn: “ Sử dụng VĐK 8051 đo tốc độ động cơ 1 chiều, dải đo [0
300*N] v/p và hiển thị kết quả trên LCD 16x2. Encoder 100 xung, hai đèn CB1 và CB2 để
cảnh báo tốc độ ngưỡng cao và ngưỡng thấp. Hai nút án Start và Stop để bắt đầu và dừng
quá trình đo. Khi ấn Stop, hệ thống lưu lại giá trị đo cuối cùng. Hai nút TĐ1 và TĐ2 để điều
khiển động cơ chạy ở tốc độ 100*N(v/p) và 200*N(v/p). Chu kỳ cập nhật giá trị đo lên LCD
là 5s. Với N là số dư phép chia tổng các số cuối của các mã sinh viên cho 7 bằng 3.


Tuy nhiên do kiến thức còn hạn chế nên trong quá trình làm bài còn có những sai sót.
Chúng em rất mong cô giáo thông cảm và giúp đỡ chúng em hoàn thiện tốt hơn bài tập lớn
sau này.
Chúng em xin chân thành cảm ơn!

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Nguyên lý đo tốc độ động cơ dung Encoder.
1.1.1. Khái niệm
Encoder là thiết bị đo lường dịch chuyển thẳng hoặc góc. Đồng thời chuyển
đổi vị trí góc hoặc vị trí thẳng thành tín hiệu nhị phân và nhờ tính hiệu này có thể
xác định được vị trí trục hoặc bàn máy. Tín hiệu ra của Encoder cho dưới dạng tín
hiệu số. Encoder được sử dụng làm phần tử chuyển đổi tín hiệu phản hồi trong các
máy CNC và robot.

1.1.2. Phân loại
2|Page


-

Có 2 loại Encoder chính:
Encoder tuyệt đối (absolute encoder): Sử dụng đĩa theo mã nhị phân hoặc mã

-

Gray.
Encoder tương đối (incremental encoder): có tín hiệu tang dần hoặc theo chu
kỳ.

Với bài toán này nhóm chúng em sử dụng phương pháp đo bằng Encoder tương

đối.

1.1.3. Chi tiết và nguyên lý hoạt động
Nguyên lý cơ bản của encoder, đó là một đĩa tròn xoay quay quanh trục. Trên
đĩa có các lỗ (rãnh). Người ta dung một đèn led để chiếu lên mặt đĩa. Khi đĩa quay,
chỗ không có lỗ, đèn led không chiếu xuyên qua được. Chỗ có lỗ, đè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
(photosensor). Với các tín hiệu có hoặc không có ánh sang chiếu qua, người ta ghi
nhận được đượ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. Đây là
nguyên lý rất cơ bản của encoder. Tuy nhiên, những vấn đề được đặt ra là làm sao
để xác định chính xác hơn vị trí của đĩa quay (mịn hơn) và làm thế nào để xác định
được đĩa đang quay theo chiều nào? Đó chính là vấn đề để chúng ta tìm hiểu về
encoder.

1.1.4. Encoder tuyệt đối (absolute encoder)
 Sơ đồ nguyên lý, kết cấu:
Encoder kiểu tuyệt đối, kết cấu gồm các phần sau: bộ phát ánh sang (LED
phát), đĩa mã hóa (chứa các dải bang mang tín hiệu) và một bộ thu ánh sang nhạy
với ánh sang từ bộ phát (bộ thu thường là photosensor).

3|Page


Đĩa mã hóa ở encoder tuyệt đối được chế tạo từ vật liệu trong suốt, người ta
chia mặt đĩa thành các góc đều nhau và các đường tròn đồng tâm.
Các đường tròn đồng tâm và bán kính giới hạn các góc hình thành và phân tố
diện tích.
Tập hợp các phân tố diện tích cùng giới hạn bởi 2 vòng tròn đồng tâm gọi là dải

băng. Số dải băng tùy thuộc vào công nghệ sản xuất (chủng loại sản phẩm), ứng với
một dải băng ta có một đèn LED và một bộ thu.

1.1.5. Encoder kiểu tương đối
Cấu tạo cơ bản của Encoder tương đối bao gồm một nguồn phát quang, một
cảm biến quang đọc tín hiệu từ nguồn phát và một đĩa tròn xoay có chia rãnh quay
quanh trục.
Khi đĩa quay, ánh sáng sẽ chiếu xuyên qua phần có rãnh, đối với phần không
có rãnh thì ánh sáng bị cản lại. Mỗi lần ánh sáng xuyên qua lỗ, ta sẽ thu được tín
hiệu(1 xung) từ cảm biến quang. Khi đếm được số xung thu được bằng số rãnh trên
đĩa quay, tức là đĩa quay được 1 vòng.

4|Page


 Nguyên lý đo tốc độ động cơ
- Gọi số xung của đĩa quay là: Ne (xung/vòng)
- Gọi số xung xuất ra từ cảm biến quang trong 1s là : n (xung/s)
 Tốc độ động cơ v = (n*60)/Ne (vòng/phút)

1.2. Phương pháp điều khiển động cơ 1 chiều
1.2.1. Các phương pháp điều khiển động cơ 1 chiều
-

Điều chỉnh điện trở phần ứng
Điều chỉnh từ thông
Điều chỉnh điện áp phần ứng

1.2.2. Phương pháp điều khiển sử dụng trong bài toán
Phương pháp được sử dụng để đo tốc độ động cơ trong bài toán là phương

pháp điều chế độ rộng xung PWM.
a. Khái niệm

5|Page


Phương pháp điều xung PWM (Pulse Width Modulation) là phương pháp điều
chỉnh điện áp ra tải, hay nói cách khác, là phương pháp điều chế dựa trên sự thay
đổi độ rộng của chuỗi xung vuông, dẫn đến sự thay đổi điện áp ra.
Các PWM khi biến đổi thì có cùng 1 tần số và khác nhau về độ rộng của sườn
dương hay sườn âm.

b. Ứng dụng của PWM trong điều khiển
PWM được ứng dụng nhiều trong điều khiển. Điển hình nhất mà chúng ta
thường hay gặp là điều khiển động cơ và các bộ xung áp, điều áp... Sử dụng PWM
điều khiển độ nhanh chậm của động cơ hay cao hơn nữa, nó còn được dùng để
điều khiển sự ổn định tốc độ động cơ.
Ngoài lĩnh vực điều khiển hay ổn định tải thì PWM còn tham gia và điều chế
các mạch nguồn như : boot, buck, nghịch lưu 1 pha và 3 pha...
PWM còn gặp nhiều trong thực tế ở các mạch điện điều khiển. Điều đặc biệt là
PWM chuyên dùng để điều khiển các phần tử điện tử công suất có đường đặc tính
là tuyến tính khi có sẵn 1 nguồn 1 chiều cố định .Như vậy PWM được ứng dụng rất
nhiều trong các thiết bị điện- điện tử. PWM cũng chính là nhân tố mà các đội
Robocon sử dụng để điều khiển động cơ hay ổn định tốc độ động cơ.
c. Nguyên lý hoạt động của PWM

6|Page


Nguyên tắc cơ bản của phương pháp điều khiển PWM là giữ nguyên giá trị

điện áp và thay đổi thời gian đặt điện áp vào động cơ. Điều này có nghĩa, với tần số
đóng ngắt công tắc đủ lớn, thời gian cấp điện áp vào động cơ càng lâu thì điện áp
trung bình càng cao, ngược lại thời gian cấp điện vào động cơ ngắn điện áp trung
bình giảm. Như vậy, PWM là một kỹ thuật so sánh tỷ lệ phần trăm điện áp nguồn
bằng cách đóng ngắt nhanh nguồn điện cấp vào động cơ tạo ra một tín hiệu xung,
với độ rộng xung (thời gian cấp điện áp) xác định sẽ tạo ra một điện áp trung bình
xác định (được minh họa như hình 1). Khi tần số đóng ngắt đủ lớn (thường từ 1 ÷
20 kHz), động cơ sẽ chạy với một tốc độ ổn định nhờ moment quay.

CHƯƠNG 2: XỬ LÝ BÀI TOÁN
2.1. Phân tích và xây dựng mạch nguyên lý
2.1.1. Phân tích mạch
Với yêu cầu bài toán là đo và điều khiển tốc độ động cơ, hiển thị trên LCD.
Các thiết bị chính cần để thiết kế hệ thống là:
Tên thiết bị

Tác dụng

VĐK 8051
(AT89C52)

Làm bộ điều khiển cho mạch, thực hiện tính toán xung
từ encoder để đưa ra tốc độ và hiện thị lên màn hình
LCD

Số
lượng
1

7|Page



Màn hình
LCD(LM016L)

Làm màn hình để hiện thị thông tin, tốc độ động cơ

1

Động cơ 1 chiều
Encoder
Thạch anh

Dùng để mô phỏng cho động cơ 1 chiều
Gắn vào trục động cơ để đo tốc độ
Dùng để tạo tần số dao động cho bộ điều khiển với tần
số dao động 12MHz
Cùng với thạch anh làm mạch tạo dao động
Tạo mạch reset
Giảm dòng điện trên mạch mà nó được lắp đặt
Dùng để tang dòng xuất ra của vi điều khiển từ port 0

1
1
1

Dùng để điều chỉnh độ sang tối của màn hình LCD
Dùng để tác động vào vi điều khiển
Dùng đảo tín hiệu đầu ra cảu vi điều khiển
Dùng để điều chỉnh tốc độ động cơ


1
5
3
1

Dùng để điều khiển sáng tối của 2 đèn báo
Dùng để báo tốc độ thấp, tốc độ cao
Dùng để lấy tín hiệu đưa vào chân ngắt của vi điều
khiển
Hiển thị xung từ đầu ra DC và xung PWM tạo được

2
2
1

Tụ điện thường
Tụ điện phân cực
Điện trở thường
Điện trở
treo(RESPACK-8)
Biến trở (POT - HG)
Nút bấm
Bộ tín hiệu đảo
IC cầu điều khiển
động cơ (L293D)
Transistor (NPN)
Led
Bộ AND
Bộ đo xung


2
1
7
1

1

2.1.2. Xây dựng mạch nguyên lý

8|Page


2.1.3. Thuyết minh mạch
 Quá trình đo và điều khiển tốc độ động cơ
Sau khi khởi động chương trình mô phỏng, các timer và các ngắt được khởi tạo,
ta nhấn nút START, tín hiệu điều khiển sẽ được gửi đến chương trình ngắt của vi điều
khiển. Ngay lập tức timer 0 được hoạt động làm bộ đếm nhận xung đếm vào chân T0.
Timer 1 làm bộ đình thời, sử dụng để lấy mẫu giá trị đếm của vi điều khiển tính toán
ra tốc độ. Đồng thời động cơ DC được cấp điện và xung điều khiển qua IC cầu H
L293D. Động cơ DC hoạt động ở tốc độ MAX, thời gian cập nhật giá trị đo lên LCD
là 5s.
 Hoạt động ở chế độ cấp 1
Sau khi động cơ đã hoạt động, để điều khiển động cơ chạy cấp 1 ta nhấn nút
CAP1. Vi điều khiển sẽ điều chế độ rộng xung PWM đầu ra tương ứng với cấp tốc
9|Page


độ 1 là 300v/p. Động cơ sau đó hoạt động ổn định quanh mức 300v/p, kết quả đo
được hiển thị lên LCD.

 Hoạt động ở chế độ cấp 2
Muốn động cơ chuyển sang hoạt động ở cấp 2, ta nhấn nút CAP2. Vi điều khiển
tiếp tục thay đổi xung PWM đầu ra để động cơ hoạt động ở cấp tốc độ thứ 2 là
600v/p, kết quả đo được hiển thị trên LCD.
 Dừng hệ thống đo và điều khiển
Khi hệ thống đang hoạt động, nếu ta muốn dừng thì có thể nhấn nút STOP. Vi
điều khiển sau đó sẽ dừng không cho 2 timer tiếp tục làm việc, động cơ DC bị ngừng
cấp điện vào tốc độ giảm dần về 0. Màn hình LCD sẽ hiển thị tốc độ cuối cùng trước
khi nhấn nút STOP.

2.1.4. Xây dựng thuật toán
 Chương trình chính (Main)

Begin

Timer/Counter init

Interrupt init

LCD init
Control (Interrupt)

Speed control

Measure speed

Display

Khởi tạo Timer và Counter đếm xung.


Khởi tạo ngắt, cho phép các ngắt hoạt động.

Khởi tạo màn hình LCD 16x2.

Hàm điều khiển: START, STOP, CAP1, CAP2.

Hàm điều khiển tốc độ động cơ DC.

Hàm tính toán tốc độ.

Hàm hiển thị tốc độ.

End
10 | P a g e


11 | P a g e


 Các chương trình con – hàm chức năng
 Thuật toán điều khiển hệ thống
Timer/Counter init
Control

S

LCD init

Turn on LCD


TMOD = 0x25
= 0 16bit,
(T0Start
– Counter
T1 – Timer 8bit)

Bật chương trình đo và điều khiển.
Chọn giao tiếp 4 bit

Nạp giá
Đ trị đếm
TH0 = TL0 = 0
Bật động
TH1cơ= (DC
TL1 == -100
0)
Dem = 0
TR1 = TR0
=1
Returnn

Xóa màn hình

Returnn
Chọn cấp tốc độ cho động cơ.

Đ
Cap1 = 0
S


Cap2 = 0

S

Interrupt init
Đ
Xung PWM cấp 1

Đ
Xung
PWM
Cho phép
ngắt
T1 cấp 2
Cho phép ngắt ngoài INT0
Ngắt theo mức 0

Đ

Xung PWM = 0
(Tốc độ Max)

Returnn

Stop = 0
S

Dừng hệ thống.

Đ

Tắt động cơ (DC = 1)
Dem = 0
TR1 = TR0 = 0

Returnn

12 | P a g e


 Thuật toán đo tốc độ động cơ
Measure speed

Dem>=10000

S

Thời gian lấy mẫu là 1s.

Đ
- Dừng Timer/Counter.

TR1 = TR0 = 0
Tocdo = (TH0*256+TL0)*0,6

Tocdo<=100

- (TH0*256+TL0)*60/Encoder

S


Đèn báo tốc độ thấp.

Đ
Led1 = 0

Tocdo>=500

Led1 = 1

S

Đèn báo tốc độ cao.

 Thuật toán hiện thị lên LCD
Đ
Led2 = 0
Display

Led2 = 1

Returnn
Measure speed

TimeDem = 0
Time=Time_update
TH0 = TL0 = 0
Đ
TR1
= TR0 = 1

Returnn
Display
Time++
Đ speed

S

S

13 | P a g e


Kiểm tra thời gian
update

Hiển thị tốc độ
động cơ khi đủ thời
gian update

 Thuật toán điều khiển tốc độ động cơ
Speed control

Time>=11,3 ms

Nếu biến đếm
S thời gian mà >=11,3
ms thì đẩy tín hiệu lên mức cao
Đ

PWM = 1


Time>= Timexung

Đ

Nếu biến đếm Sthời gian mà >= chu
kỳ tạo xung thì đẩy tín hiệu xuống
mức thấp và đặt lại biến đếm thời
gian.

PWM = 0
Time = 0

Returnn
14 | P a g e


2.1.5. Viết chương trình điều khển
#include <REGX52.H>
#include <stdio.H>
#include <math.H>
#define LCD_RS P0_0
#define LCD_RW P0_1
#define LCD_EN P0_2
#define LCD_D4 P0_3
#define LCD_D5 P0_4
#define LCD_D6 P0_5
#define LCD_D7 P0_6

sbit Start = P2^0;

sbit Stop = P2^1;
sbit Cap_1 = P2^2;
sbit Cap_2 = P2^3;
sbit DC = P2^4;
sbit Led_1 = P2^5; //Canh bao toc do nguong thap.
sbit Led_2 = P2^6; //Canh bao toc do nguong cao.
sbit PWM = P2^7;
15 | P a g e


int Dien_ap = 24;

//Dien ap dat vao dong co.

int Toc_do_max = 900;

//Toc do lon nhat cua dong co.

int Toc_do_1 = 300;

//Toc do cap 1.

int Toc_do_2 = 600;

//Toc do cap 2.

int Encoder = 100;

//Do phan giai cua Encoder.


int Time_update = 5;

//Thoi gian cap nhat toc do len man hinh.

unsigned int Dem = 0;
unsigned int Dem_xung = 0;
int Cap = 1;
int Time;
float Toc_do;
float Time_xung;
unsigned char str[32];

//Ham delay US
void delay_us(unsigned int t)
{
unsigned int i;
for(i=0; i}
void delay_ms(unsigned int t)
{
int x, y;
for(x=0; x{ for(y=0; y<123; y++);}
}
//Chuong trinh giao tiep LCD
16 | P a g e


//Ham khoi tao LCD
void LCD_enable()

{
LCD_EN=1;
delay_us(3);
LCD_EN=0;
delay_us(50);
}
//Ham gui 4 bit du lieu ra LCD
void LCD_send4bit(unsigned char Data)
{
LCD_D4=Data & 0x01; //Tach 1 bit tu byte du lieu
LCD_D5=(Data>>1)&1; //Tach bit thu 2
LCD_D6=(Data>>2)&1;
LCD_D7 = (Data>>3)&1;
}
//Ham gui 1 lenh cho LCD
void LCD_sendcmd(unsigned char cmd)
{
LCD_send4bit(cmd>>4); //Gui 4 bt cao - dich 4 bit
LCD_enable(); //Kich hoat bit cao
LCD_send4bit(cmd); //Gui 4 bit thap
LCD_enable();
}
void LCD_clear()//Ham xoa man hinh LCD
{
LCD_sendcmd(0x01); //Xoa man hinh
delay_us(10);
}
17 | P a g e



//Ham khoi tao LCD
void LCD_init()
{
LCD_send4bit(0x00); //Bat LCD
delay_ms(20);
LCD_RS=0;
LCD_RW=0;
LCD_send4bit(0x03);
LCD_enable();
delay_us(5);
LCD_enable();
delay_us(100);
LCD_enable();
LCD_send4bit(0x02); //Di chuyen con tro ve dau man hinh
LCD_enable(); //Kich hoat xung
LCD_sendcmd(0x28); // Lua chon che do 4 bit
LCD_sendcmd(0x0c); //Bat hien thi va tat con tro
LCD_sendcmd(0x06); //Tu dong di chuyen con tro sang vi tri ke tiep
LCD_sendcmd(0x01); //Xoa man hinh

}
void LCD_gotoxy(unsigned char x, unsigned char y)
//x la cot, y la hang
{
unsigned char address;
if(!y)address=(0x80 +x);
else address= (0xc0 + x);
delay_us(1000);
LCD_sendcmd(address);
18 | P a g e



delay_us(50);
}
void LCD_putchar(unsigned char Data)
{
LCD_RS = 1; //che do ghi
LCD_sendcmd(Data); //Gui chuoi
LCD_RS = 0;
}
//Ham viet len chuoi ki tu theo con tro
void LCD_puts(char *s)
{
while(*s)
{
LCD_putchar(*s);
s++;
}
}
void LCD_number(unsigned int number)
{
LCD_putchar((number/1000) + 48);
LCD_putchar((number%1000/100)+48);
LCD_putchar((number%100/10)+48);
LCD_putchar((number%10) + 48);
}
// Tinh chu ky
float Tinh_chu_ky(int Toc_do)
{
float U_toc_do;

float G;
19 | P a g e


U_toc_do = ((Dien_ap * Toc_do) / Toc_do_max);
G = (1 - (U_toc_do/Dien_ap));
return 113/G;
}
//Tao xung PWM
void Tao_xung()
{
if(Dem_xung >= 113) PWM = 1;
if(Dem_xung >= Time_xung)
{
PWM = 0;
Dem_xung = 0;
}
}
//Khoi tao timer
void Timer_init()
{
TMOD = 0x25;

// Timer 0 lam bo dem che do 1, timer 1 dinh thoi che do 2

TH1 = TL1 = -100; // Nap gia tri dau cho timer 1 dem 100 xung
TH0 = TL0 = 0;
}
//Khoi ta cac ngat
void Interrupt_init()

{
IE = 0x89;
IP = 0x01;
IT0 = 1;
}
void Ngat_T1 () interrupt 3
20 | P a g e


{
Dem++;
Dem_xung++;
TF1 = 0;
}
//Ham dieu khien
void Do_toc_do()
{
if(DC == 0&&Dem >= 10000)
{
TR1 = TR0 = 0;
Toc_do =((TH0*256 + TL0)*0.6);
if(Toc_do >= 500) Led_2 = 0;
else Led_2 = 1;
if(Toc_do <= 100) Led_1 = 0;
else Led_1 = 1;
if(Time < Time_update) Time ++;
if(Time == Time_update)
{
LCD_gotoxy(0,1);
sprintf(&str[0],"Toc do = %.0f V/P ",Toc_do);

LCD_puts(str);
Time = 0;
}
Dem = 0;
TH0 = TL0 = 0;
TR1 = TR0 = 1;
}
}
21 | P a g e


//Dung ngat ngoai dieu khien
void ngat_ngoai() interrupt 0
{
if(Start == 0 && DC ==1) //Bat dong co, bat dau do toc do
{
while(!Start);
DC = 0;
Dem = 0;
Dem_xung = 0;
Time = Time_update;
LCD_gotoxy(0,0);
LCD_puts("RUNNING........");
LCD_gotoxy(0,1);
LCD_puts("WAITING...

");

Time_xung = Tinh_chu_ky(Toc_do_max);
PWM = 0;

TR1 = TR0 = 1;
}
if(Stop == 0)
{
while(!Stop);
DC = 1;
TR1 = TR0 = 0;
Dem = 0;
Dem_xung = 0;
TH1 = TL1 = -100; // Nap gia tri dau cho timer 1 dem 100 xung
TH0 = TL0 = 0;
22 | P a g e


LCD_gotoxy(0,0);
LCD_puts("

STOP!

");

//Led_1 = 1;
//Led_2 = 1;
}
if(Cap_1 == 0)
{
while(!Cap_1);
Time_xung = Tinh_chu_ky(Toc_do_1);
Dem_xung = 0;
PWM = 0;

LCD_gotoxy(11,0);
LCD_puts("CAP 1");
Cap = 1;
}
if(Cap_2 == 0)
{
while(!Cap_2);
Time_xung = Tinh_chu_ky(Toc_do_2);
Dem_xung = 0;
PWM = 0;
LCD_gotoxy(11,0);
LCD_puts("CAP 2");
Cap = 2;
}
}
// Chuong trinh chinh
void main(void)
{
23 | P a g e


Timer_init();
Interrupt_init();
LCD_init();
LCD_gotoxy(0,0);
LCD_puts("--DHCN HA NOI--");
LCD_gotoxy(0,1);
LCD_puts(" BTL - NHOM 1 ");
Time_xung = Tinh_chu_ky(Toc_do_1);
while(1)

{
Tao_xung();
Do_toc_do();
}
}

CHƯƠNG 3: KẾT QUẢ BÀI TOÁN
3.1. Nạp và chạy chương trình mô phỏng trên proteus
3.2. Các kết quả đạt được
-

Thiết kế được mạch nguyên lý đo và điều khiển tốc độ động cơ DC với 2
cấp tốc độ.
Xây dựng được thuật toán điều khiển của bài toán
Nắm chắc hơn nguyên lý điều khiển của vi điều khiển 8051
Hiểu thêm về nguyên tắc đo tốc độ sử dụng encoder
Biết được nguyên lý điều chế độ rộng xung PWM bằng phương pháp băm
xung 1 chiều
Sử dụng tốt hơn phần mềm Proteus dùng để mô phỏng mạch điện tử
Viết được chương trình điều khiển trên phần mềm Keil C.

3.3. Các hạn chế tồn tại và phương hướng khắc phục
Hạn chế

Phương hướng khắc phục

24 | P a g e




×