Trong đó nó đòi hỏi động cơ cần phải đáp ứng đầy đủ các yêu cầu đề ra như ngừng, đảo chiều, cũng như thay đổi tốc độ.Vậy vấn đề đặt ra là làm sao giải quyết được những yêu cầu đó, bằng v
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan đồ án nghiên cứu: “ MÔ HÌNH KHỞI ĐỘNG VÀ ĐIỀU CHỈNH TỐC ĐỘ ĐỘNG CƠ ĐIỆN MỘT CHIỀU ” là của riêng tôi Mọi thông tin đồ án chƣa đƣợc đăng tải trên bất kì tài liệu nào
Hải phòng, ngày…tháng…năm 2015 Sinh viên thực hiện
PHẠM PHÚ TIỆP
Trang 2MỤC LỤC
LỜI CAM ĐOAN 1
MỤC LỤC HÌNH VẼ 3
LỜI NÓI ĐẦU 6
TÓM TẮT ĐỒ ÁN 7
CHƯƠNG 1: GIỚI THIỆU VỀ CÁC LINH KIỆN PHẦN TỬ SỬ DỤNG TRONG MẠCH 8
1.1 Vi điều khiển PIC16F877A 8
1.1.1 Khái quát về vi điều khiển PIC16F877A 8
1.1.2 Bộ nhớ của PIC 12
1.1.3 Khái quát về công dụng của các cổng trong vi điều khiển PIC16F877A14 1.1.4 Các vấn đề về Timer 14
1.2 Thuật toán điều khiển PID số 16
1.2.1 Giải thuật điều khiển PID 16
1.2.2 Giải thuật điều khiển PID số 17
1.3 Phương pháp điều chế xung PWM 20
1.3.1 Điều chế PWM 20
1.3.2 Nguyên lí của PWM 20
1.4 Mạch cầu H ( H-Bridge Circuit ) 21
1.4.1 Công dụng và nguyên lí hoạt động 21
1.4.2 Khảo sát hoạt động của mạch cầu H 22
CHƯƠNG 2: NGHIÊN CỨU PHẦN CỨNG VÀ PHẦN MỀM 24
2.1 Một số linh kiện được sử dụng trong mạch cầu H 24
2.2 Các phần mềm được sử dụng 25
2.2.1 Phần mềm mô phỏng 26
Trang 32.2.2 Phần mềm lập trình 27
CHƯƠNG 3: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÀ MÔ PHỎNG 32
3.1 Sơ đồ tổng thể của của mạch 32
3.1.1 Khối ổn áp nguồn 33
3.1.3 Khối điều khiển động cơ 34
3.2 Lưu đồ thuật toán và code chương trình 35
3.2.1 Lưu đồ thuật toán 35
3.2.2 Code chương trình 37
3.3 Mạch mô phỏng 40
3.3.1 Khi sai lệch = dead_band 40
3.3.2 Khi sai lệch > dead_band 41
3.3.3 Khi sai lệch < dead_band 42
KẾT LUẬN VÀ KIẾN NGHỊ 44
1 Kết luận 44
2 Kiến nghị 44
TÀI LIỆU THAM KHẢO 45
Trang 4MỤC LỤC HÌNH VẼ
Hình 1.1 Sơ đồ chân của PIC 16F877A (Trang 8)
Hình 1.2 Sơ đồ nguyên lí của PIC (Trang 9)
Hình 1.3 Sơ đồ nguyên lí các Port của PIC 16F877A (Trang 10) Hình 1.4 Tổ chức bộ nhớ chương trình của PIC16F877A (Trang 11) Hình 1.5 Tổ chức bộ nhớ dữ liệu của PIC 16F877A (Trang 12) Hình 1.6 Sơ đồ khối Timer2 (Trang 15)
Hình 1.7 Xấp xỉ đạo hàm của biến sai số e (Trang 17)
Hình 1.8 Xấp xỉ tích phân của biến sai số e (Trang 17)
Hình 1.9: Sơ đồ dùng PWM điều khiển điện áp tải (trái) (Trang 19) Hình 1.10 Sơ đồ xung điện áp đầu ra (phải) (Trang 19)
Hình 3.1 Mạch mô phỏng chương trình (Trang 36)
Hình 3.2 Khi sai lệch = dead_band (Trang 37)
Hình 3.3 Khi sai lệch > dead_band (Trang 37)
Hình 3.4 Khi sai lệch < dead_band (Trang 38)
Hình 3.1 Sơ đồ tổng thể của của mạch (Trang 28)
Hình 3.2 Sơ đồ khối ổn áp nguồn (Trang 29)
Trang 5Hình 3.3 Sơ đồ khối cộng tín hiệu từ vi điều khiển và cách li quang (Trang 29)
Hình 3.4 Khối điều khiển động cơ (Trang 30)
Trang 6LỜI NÓI ĐẦU
Ngày nay khi khoa học công nghệ ngày càng phát triển mạnh mẽ Động cơ một chiều được ứng dụng rất nhiều trong sản xuất nông nghiệp cũng như công nghiệp Trong đó nó đòi hỏi động cơ cần phải đáp ứng đầy đủ các yêu cầu đề ra như ngừng, đảo chiều, cũng như thay đổi tốc độ.Vậy vấn đề đặt ra là làm sao giải quyết được những yêu cầu đó, bằng việc được học qua môn vi xử lí trong quá trình ngồi trên ghế nhà trường, em thấy vi xử lí đáp ứng đầy đủ những yêu cầu đó và việc điều khiển động cơ điện một chiều được giải quyết Đây chính là
ý tưởng để em thực hiện đề tài nghiên cứu “ Mô hình khởi động và điều khiển động cơ điện một chiều ” Em xin được nói lời cảm ơn chân thành nhất đến các Thầy cô trong Khoa Điện - Điện Tử đã giảng dạy và truyền đạt kiến thức cho
em trong thời gian vừa qua Đặc biệt em xin gửi lời cảm ơn sâu sắc tới Thầy Th.s Đồng Xuân Thìn với sự chỉ dẫn tận tình cũng như đã tạo những điều kiện
tốt nhất cho em để em có thể thực hiện và hoàn thành tốt đề tài này Trong quá trình thực hiện em đã rất nỗ lực và cố gắng, nhưng do kiến thức và hiểu biết của bản thân còn nhiều hạn chế nên trong quá trình thực hiện đề tài không thể tránh khỏi những sai phạm, thiếu sót… Rất mong được sự chỉ dẫn của thầy cô
Em xin chân thành cảm ơn!
Trang 7TÓM TẮT ĐỒ ÁN
Vận dụng những kiến thức đã học trong quá trình học tập ở nhà trường em thực hiện đồ án nghiên cứu: Mô hình khởi động và điều khiển tốc độ động cơ điện một chiều
Sử dụng động cơ điện một chiều có gắn cảm biến tốc độ dạng xung dùng để đưa tín hiệu tốc độ dưới dạng xung về vi điều khiển sau đó so sánh với tín hiệu đặt để điều khiển tốc độ động cơ
Mục tiêu của đồ án đặt ra: dừng, quay thuận, quay ngược, giảm tốc, tăng tốc Trong đồ án của mình em xin trình bày phương pháp điều khiển động cơ dùng
vi điều khiển PIC16F877A bằng phương pháp điều chế độ rộng xung PWM sử dụng PIC16F877A để lập trình
Trang 8CHƯƠNG 1: GIỚI THIỆU VỀ CÁC LINH KIỆN PHẦN TỬ SỬ DỤNG
TRONG MẠCH 1.1 Vi điều khiển PIC16F877A
1.1.1 Khái quát về vi điều khiển PIC16F877A
a Khái quát
PIC (Programmable Intelligent) là vi điều khiển đầu tiên của hãng General Instrument Từ đó tới nay họ không ngừng phát triển và tạo ra trên 100 loại sản phẩm với sự đa dạng và nhiều ứng dụng hơn
PIC16F877A là dòng PIC khá phổ biến, đáp ứng hầu như đầy đủ các yêu cầu mang tính chất ứng dụng thực tế Ngoài ra dòng PIC rất dễ tiếp cận, tạo nền tảng đi sâu nghiên cứu về PIC
PIC 16F877A thuộc họ vi điều khiển 16Fxxx gồm có các đặc điểm như sau: Ngôn ngữ lập trình đơn giản với 35 lệnh có độ dài 14 bit
Hầu hết các câu lệnh được thực hiện trong 1 chu kì máy, chỉ có câu lệnh rẽ nhánh mới thực hiện trong 2 chu kì máy, 4 lần chu kì máy được tính bằng 1 chu kì lệnh
Bộ nhớ chương trình Flash 8Kx14word, có khả năng ngắt trong cũng như ngắt ngoài
Hoạt động bộ nhớ bằng cách truy nhập trực tiếp hay gián tiếp vào địa chỉ trên thanh ghi
Có 3 timer
Timer0 (8 bit) có nhiệm vụ là bộ định thời với hệ số tỉ lệ trước
Timer1 (16 bit) có nhiệm vụ là bộ định thời và có chế độ nghỉ (sleep)
Timer2 (8 bit) có nhiệm vụ gần giống timer0 khác là bộ định thời với hệ số tỉ lệ
Trang 9Do thời gian làm đồ án có hạn, dưới đây là một vài tính năng của PIC 16F877A được ứng dụng trong đồ án:
Tổ chức bộ nhớ của PIC 16F877A
Chức năng vào/ra của các cổng
Chức năng và các thiết lập chế độ ngắt cho các bộ Timer
Kênh chuyển đổi ADC
Chức năng và cách thiết lập bộ điều chế độ rộng xung PWM
b Sơ đồ chân và sơ đồ nguyên lý của PIC16F877A
Hình 1.1 Sơ đồ chân của PIC 16F877A
Trang 10Hình 1.2 Sơ đồ nguyên lý của PIC
Trang 11Hình 1.3 Sơ đồ nguyên lý các Port của PIC 16F877A
Trang 12Hai chân 13, 14 là chân thạch anh
Hai chân 11, 32 là chân cấp nguồn
Hai chân 12, 31 là 2 chân nối mát
Chân số 1 dùng để RESET vi điều khiển
1.1.2 Bộ nhớ của PIC
Bộ nhớ PIC16F877A bao gồm 2 bộ nhớ:
- Nhớ chương trình (Program memory)
- Nhớ dữ liệu (Data Memory)
a Bộ nhớ chương trình
Hình 1.4 Tổ chức bộ nhớ chương trình của PIC16F877A
Bộ nhớ của vi điều khiển PIC16F877A là bộ nhớ flash, có khả năng nhớ tới 8K word (1 word = 14 bit)
Vậy bộ nhớ chương trình trong PIC16f877 có khả năng nhớ lên tới 8*1024 =
Trang 138192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lƣợng 1 word (14 bit)
Trang 141.1.3 Khái quát về công dụng của các cổng trong vi điều khiển PIC16F877A
a Cổng A
Cổng A gồm 6 pin I/O các chân của cổng có thể xuất và nhập dữ liệu tùy thuộc lệnh khai báo vào chương trình
Ngoài ra cổng A còn có các chức năng quan trọng sau
Ngõ vào Analog của bộ ADC thực hiện chức năng chuyển từ tín hiệu tương tự (Analog) sang tín hiệu số (Digital) trong đồ án của em sử dụng ADC kênh 10 bit
Cổng E có 3 chân có chức năng xuất nhập dữ liệu
Ngoài ra chân của cổng E có ngõ vào analog chức năng biến đổi tín hiệu tương
tự sang số
1.1.4 Các vấn đề về Timer
PIC16F877A có tất cả 3 timer: timer0 (8 bit), timer1 (16 bit) và timer2 (8 bit)
Vì trong đồ án chỉ sử dụng tới timer0, timer2 lên ta chỉ đề cập tới nó mà thôi
a Timer 0
Trang 15Trong đề tài của em, em sử dụng timer để thực hiện việc ngắt Để thực hiện việc tính toán cho bộ PID thì phải dùng lệnh ngắt cho timer chứ không thể dùng lệnh delay được, sở dĩ như vậy là do
Nếu ta dùng lệnh delay cho chương trình thì khi chương trình thực hiện lệnh delay để tính bộ PID thì toàn bộ chương trình sẽ ngừng hoạt động dẫn tới việc động cơ cũng sẽ ngừng hoạt động vậy sẽ không hợp lí
Vì vậy ta phải dùng ngắt trong timer
Ngắt timer có đăc điểm khi tới lệnh ngắt thì việc tính toán bộ PID vẫn sẽ xảy ra trong khi đó chương trình chính vẫn hoạt động, vậy thõa mãn vẫn đề đặt ra
Trong chương trình ta tạo trễ 10ms cho bộ PID
Thời_gian_trễ = 2^số bit của timer -1 - timer*9 (fosc/ (4*prescaler))
Prescaler là tham số bộ chia của timer, tham số này được người dùng tùy chọn phù hợp với yêu cầu ( bài của em lấy prescaler = 256)
Lệnh tạo trễ trong PIC
set_timer0 (thời gian trễ);
b Timer 2
Ta dùng timer2 với mục đích tạo xung pwm cho chân CCP1 và CCP2
Lệnh sử dụng timer2 cho chương trình điều chế xung cho bộ CCP
setup_timer_2 (t2_div_by_16,1023,1);
Trang 16Hình 1.6 Sơ đồ khối Timer 2
1.2 Thuâ ̣t toán điều khiển PID số
1.2.1 Giải thuật điều khiển PID
PID gồm 3 khâu Propotional (tỉ lệ), Integral (tích phân) và Derivative (đạo hàm) Thuật điều khiển PID đã xuất hiện từ rất lâu nhưng đến nay PID vẫn là giải thuật điều khiển kinh điển trong điều khiển tự động
Khâu tỉ lệ có chức năng đưa đối tượng về vị trí ổn định ban đầu
F = Kp.e
Do quán tính nên đối tượng không thể ổn định ngay ở vị trí ban đầu, vấn đề đặt
ra là làm sao ổn định đối tượng ở vị trí xác lập vậy ta đưa thêm khâu vi phân vào điều khiển ( có nhiệm vụ hãm) Vậy ta được khâu PD
F = Kp.e + Kd (de/dt)
Lại một vấn đề xảy ra khi đưa khâu hãm vào chương trình Nếu hãm quá lớn thì
có trường hợp khi đối tượng chưa về vị trí ổn định đã bị ngừng lại vậy cần phải giải quyết bằng cách đưa thêm khâu tích phân vào chương trình có nhiệm vụ cộng dồn làm cho lực tác động của khâu tỉ lệ tới đối tượng thắng lực ma sát do khâu vi phân gây ra vậy ta co khâu PID
F=Kp.e + Kd (de/dt)+Ki∫edt
Trang 171.2.2 Giải thuật điều khiển PID số
Như ta đã biết bộ điều khiển PID có cả thành phần tuyến tính, tích phân và đạo hàm là 1 dạng hàm liên tục theo thời gian Mà ta muốn xây dưng bộ PID trên vi xử
lí ( vi xử lí thì lại là 1 hệ thống điều khiển số ), vậy làm thế nào để chuyển từ dạng liên tục sang dạng số để điều khiển được trên vi xử lí Chúng ta có thể thực hiện nó bằng cách xấp xỉ hàm liên tục thành dạng rời rạc
Thực hiện cách chuyển từ dạng liên tục thành dạng rời dạng để xây dựng bộ PID
số trên PIC, ta thay bộ khuyếch đại thành 1 vi điều khiển trên PIC Một khi chúng
ta đã thay bộ khuyếch đại thành vi điều khiển PIC thì quá trình hiệu chỉnh không còn liên tục theo chu kì nữa mà thay vào đó cứ sau khoảng thời gian nhất định giữa
2 lần tính sai số liên tiếp ( khoảng thời gian này là khoảng thời gian cắt mẫu do người lập trình đặt ) thì chúng sẽ đọc giá trị phản hồi và đi tính sai lệch để thực hiện quá trình tính bộ PID và xuất ra giá trị điều khiển đối tượng, như vậy thì thời gian cắt mẫu càng nhỏ thì chất lượng điều khiển sẽ càng tốt Tuy nhiên không nên chọn thời gian nhỏ quá sẽ ảnh hưởng tới thời gian làm việc của vi điều khiển, dẫn tới hao phí thời gian
Vì bộ điều khiển PID trong PIC là bộ điều khiển số nên ta phải xấp xỉ chúng theo khoảng thời gian rời rạc
Đầu tiên là thành phần tỉ lệ, thành phần này khá đơn giản nên ta áp dụng ngay công thức:
dP = Kp.e
Tiếp đến là xấp xỉ cho đạo hàm của biến e Vì thời gian lấy mẫu cho các bộ điều khiển thường rất bé nên có thể xấp xỉ đạo hàm bằng sự thay đổi sai lệch e trong khoảng thời gian cắt mẫu ( 2 lần lấy mẫu liên tiếp)
de/dt = ( e (k) – e (k-1) ) / h
Trong đó e (k) là giá trị hiện tại của e, e (k-1) là giá trị của e trong lần lấy mẫu trước đó và h là khoảng thời gian lấy mẫu (h là hằng số)
Trang 18Hình 1.7 Xấp xỉ đạo hàm của biến sai số e Không yêu cầu tính toán quá chính xác nên thành phần tích phân được xấp xỉ bằng diện tích vùng giới hạn bởi đường biểu diễn của e và trục thời gian Ý tưởng được trình bày trong hình vẽ dưới đây:
Hình 1.8 Xấp xỉ tích phân của biến sai số e Tích phân của biến e được tính bằng tổng diện tích các hình chữ nhật tại mỗi thời điểm đang xét Số đo của hình chữ nhật tương ứng
Chiều rộng bằng thời gian lấy mẫu h
Chiều cao là giá trị sai số e tại thời điểm đang xét
Tổng quát:
Tổng hợp các xấp xỉ, công thức của bộ điều khiển PID số được trình bày như sau:
Trang 19Trong đó u là đại lượng đầu ra từ bộ điều khiển Để đơn giản hóa việc tính thành phần tích phân, chúng ta nên dùng phương pháp cộng dồn
Với I (k) là thành phần tích phân hiện tại và I (k-1) là thành phần tích phân trước
Thành phần tích phân là
dI = ki.sampling_time.err / 1000 Trong đó: ki là hệ số khuyếch đại của khâu tích phân sai lệch tốc độ
Sampling_time là khoảng thời gian lấy mẫu
Trang 201.3 Phương pháp điều chế xung PWM
1.3.1 Điều chế PWM
Điều chế xung PWM là hương pháp phân chia độ rộng xung PWM (Pulse Width Modulation) là phương pháp điều chỉnh sự thay đổi điện áp ra trung bình cấp cho tải
1.3.2 Nguyên lí của PWM
Hình 1.9 Sơ đồ dùng PWM điều khiển điện áp tải (trái) Hình 1.10 Sơ đồ xung điện áp đầu ra (phải) Trong khoảng thời gian 0 tới to có cấp xung cho Q1, vậy Q1 mở có điện áp cấp cho tải, nhưng trong khoảng từ t0 tới T thì lại không có xung cấp cho Q1, vậy Q1 ngắt không có điện áp cấp cho tải Vậy tính tổng trong khoảng thời gian từ 0 tới T ứng 1 chu kì ta sẽ có điện áp trung bình ra tải thay đổi
Giá trị trung bình của điện áp ra tải tính theo công thức
Ud = Umax (t0/T) hay Ud = Umax.D Trong đó Ud: là điện áp trung bình ra tải
Umax: là điện áp nguồn
T0: là thời gian van mở khóa
T: thời gian chu kì xung
Trang 21D = t0/T: hệ số tạo xung hay PWM được tính bằng %
Trong đề tài của em: “Mô hình khởi động và điều khiển động cơ điện một chiều” để thay đổi được tốc độ động cơ bằng cách thay đổi điện áp trung bình ra cấp cho tải ( động cơ DC 24V ) em đã sử dụng phương pháp điều chế độ rộng xung PWM Đối với PIC16F877A đã có sẵn 2 chân CCP1 (17) và CCP2 (16) cho việc điều chế xung Tại các chân này có nhiệm vụ cấp xung đóng ngắt các Mosfet trong mạch động lực, đồng thời cấp điện áp cho tải làm thay đổi tốc độ động cơ
Công thức tính giá trị 1 chu kì (period) của xung điều chế:
Công thức tính độ rộng xung điều chế (duty cycle) :
1.4 Mạch cầu H ( H-Bridge Circuit )
1.4.1 Công dụng và nguyên lí hoạt động
Dùng đảo chiều quay của động cơ bằng cách đảo chiều dòng điện qua động cơ bằng cách cấp nguồn cho mosfet đóng mở làm sao để nguồn cấp cho tải là hợp lí (Hình 1.11)
PWM period = [ (PR2) +1]*4*TOSC* (giá trị của bộ chia tần TMR2)
PWM duty cycle = (CCPRxL:CCPxCON<5:4>)*TOSC* (giá trị của bộ chia tần TIMER2)
Trang 22Hình 1.11 Mạch cầu H
1.4.2 Khảo sát hoạt động của mạch cầu H
Hình 1.12 Ví dụ mạch cầu H đảo chiều Nhƣ ví dụ hình 1.12 Nếu cấp xung điện áp đủ để mở cho L1 và R2 thì nguồn 24V sẽ qua L1, A, B, R2 về âm nguồn, giả sử động cơ quay thuận (trái) Muốn đảo