Sử dụng vi điều khiển ATMEL AVR điều khiển vận tốc động cơ DC theo phương pháp PWM

Điều khiển vận tốc động cơ, trong đó có động cơ DC, là một đề tài được quan tâm khá

nhiều trong lĩnh vực điều khiển. Có vài phương pháp thường được sử dụng nhưng có lẽ PWM là

phương pháp được ưa chuộng nhất (có thể vì nó dễ áp dụng). Vậy PWM là gì và áp dụng nó như

thê nào. Bài viết này sẽ cố gắng trả lời các câu hỏi trên ở mức độ đơn giản nhất. Bài viết gồm 2

phần chính: phần 1 giới thiệu phương pháp PWM, phần 2 nói về các chip vi điều khiển Atmel

họ AVR và ứng dụng modul PWM của các chip này.

pdf7 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 466 | Lượt tải: 1download
Tóm tắt nội dung Sử dụng vi điều khiển ATMEL AVR điều khiển vận tốc động cơ DC theo phương pháp PWM, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
AUTO.NLU 
For more details and questions, contact me: thanhtam.h@gmail.com 
SỬ DỤNG VI ĐIỀU KHIỂN ATMEL_AVR ĐIỀU KHIỂN VẬN TỐC 
ĐỘNG CƠ DC THEO PHƯƠNG PHÁP PWM 
Bài 1: Giới thiệu. 
Điều khiển vận tốc động cơ, trong đó có động cơ DC, là một đề tài được quan tâm khá 
nhiều trong lĩnh vực điều khiển. Có vài phương pháp thường được sử dụng nhưng có lẽ PWM là 
phương pháp được ưa chuộng nhất (có thể vì nó dễ áp dụng). Vậy PWM là gì và áp dụng nó như 
thê nào. Bài viết này sẽ cố gắng trả lời các câu hỏi trên ở mức độ đơn giản nhất. Bài viết gồm 2 
phần chính: phần 1 giới thiệu phương pháp PWM, phần 2 nói về các chip vi điều khiển Atmel 
họ AVR và ứng dụng modul PWM của các chip này. 
I. Phương pháp điều rộng xung PWM (Pulse Width Modulation) 
Để dễ hiểu bạn hãy quan sát hình 1 bên dưới 
Hình 1: PWM 
Có thể giải thích nguyên lý của phương pháp này như sau: quan sát ở hình trên ta thấy 2 tín 
hiệu xung S1 một S2 có cùng chu kỳ T (1ms) tuy nhiên khoảng Ton (khoảng thời gian mức 
High trong 1chu kỳ ) thì khác nhau như thế tỉ số Ton/Toff của 2 tín hiệu cũng khác nhau, việc 
điều chỉnh tỉ số này gọi là điều rộng xung. Áp dụng trong điều khiển vận tốc động cơ, Ton là 
thời gian cấp nguồn và Toff là thời gian ngừng cấp nguồn cho động cơ, khi thay đổi tỉ số 
Ton/Toff (cũng có nghĩa thay đổi điện áp trung bình cấp cho động cơ) vận tốc động cơ cũng 
thay đổi theo. 
Hình 2: Ý niệm về điện áp trung bình (AVG VOLTS) trong phương pháp PWM 
AUTO.NLU 
For more details and questions, contact me: thanhtam.h@gmail.com 
Tóm lại, bằng cách “kéo dãn” hay “thu hẹp” khoảng Ton (không thay đổi chu kỳ T) là có 
thể điều khiển được vận tốc động cơ. Tuy nhiên cần chú ý rằng quan hệ giữa vận tốc động cơ và 
tỉ số độ rộng xung không tuyến tính. 
 Phương pháp PWM không những chỉ được áp dụng trong điều khiển vận tốc động cơ mà 
còn có rất nhiều ứng dụng khác như điều khiển nhiệt độ, độ sáng ... 
II. Vi điều khiển AVR của Atmel. 
Từ cách hiểu PWM như trên chúng ta có thể thấy rằng việc áp dụng PWM là tương đối dễ 
dàng, chỉ cần có bộ tạo xung là có thể tạo PWM, thậm chí bạn có thể dùng IC 555. Trong tài liệu 
này tôi hướng dẫn bạn sử dụng các chip vi điều khiển để tạo xung điều rộng. 
Vì tính ứng dụng rộng rãi của PWM nên trong hầu hết các bộ điều khiển (như PLC, 
microcontroller...) thường có tích hợp modul PWM. Trong các chip vi điều khiển có modul 
PWM thì các chip AVR của Atmel và PIC của microchip được sử dụng khá rộng rãi. Nếu so 
sánh, có thể đánh giá một cách tương đối là modul PWM trong các chip PIC có 1 vài ưu điểm so 
với các chip AVR, tuy nhiên PIC sẽ khó tìm hơn AVR (ở VN) nên tôi quyết định giới thiệu cho 
bạn AVR. 
AVR là dòng vi điều khiển 8 bits của hãng Atmel, dòng chip này khá mới và có nhiều ưu 
điểm hơn hẳn dòng chip theo cấu trúc 8051. Trong hầu hết các chip AVR đều có thích hợp 
modul PWM. Lấy ví dụ chip ATMega32 có 3 bộ Timer với 4 đường xuất xung PWM. Ở đây, 
trong các ví dụ tôi cũng sẽ sử dụng loại chip này. 
Chip ATMega32 có bộ nhớ chương trình là 32KB ( so với 4KB của AT89C51 !!!), có sẵn 
1KB EEPROM, 2K SRAM...có bộ chuyển đổi AD 8Bits, 8 kênh; 3 bộ timer với 4 đường xuất 
xung PWM (2 chân PWM 18(OCR1B), 19(OCR1A) hoạt động dựa vào timer1 (16bit) , 
4(OC0)-timer0 98bit), và 21(OC2)-timer2(8bit))...ngoài ra chip này còn có rất nhiều đặc điểm 
khác thích hợp với nhiều loại ứng dụng khác nhau. Các bạn có thể đọc datasheet của chip để biết 
thêm. 
a) Mạch nạp: 
Bây giờ trước hết chúng ta đi làm mạch nạp cho AVR. Không giống như mạch nạp cho các 
chip AT89C51, AT89C52..mạch nạp cho chip AVR tương đối đơn giản. Tôi giới thiệu với các 
bạn một loại mạch nạp thuộc vào loại dễ làm nhất cho AVR, mạch nạp “Kanda System 
STK200/+300” 
Đây là mạch nạp ISP rất đơn giản, đấu nối mạch qua cổng LPT của máy tính, để làm mạch 
chỉ cần 1 cáp cổng LPT, 1 IC đệm 74HC244, 1 diode ( loại chỉnh lưu thông thường), 1 điện trở 
100k, và tụ điện 100nF (tụ 104), bạn có thể quan sát sơ đồ nguyên lý của mạch như trong hình 3. 
Bạn cũng không cần làm mạch in, chỉ cần dùng test board là được. J1 (Header 6) trong 
hình 3 bạn làm thành 6 đường dây kéo ra, đó chính là các đường nạp. Như vậy với mạch nạp 
này, việc nạp chương trình vào chip sẽ diễn ra trực tiếp, không cần tháo chip khỏi mạch ứng 
ụng. 
AUTO.NLU 
For more details and questions, contact me: thanhtam.h@gmail.com 
13
25
12
24
11
23
10
22
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
P1
CONG LPT 25
R1
100k
C1100nF
A12
A24
A36
A4
8
1OE1
Y1 18
Y2 16
Y3 14
Y4
12
V
C
C
20
G
N
D
10
A5
11
A6
13
A715
A817
Y5
9
Y6
7
Y7 5
Y8 3
2OE
19
U1
74ALS244/SO
1
2
3
4
5
6
J1
HEADER 6
D1
DIODE
0
0
0
GND
VCC
RESET
MOSI
MISO
0
CLK
Hình 3: Mạch nạp Kanda system STK200/+300 
b. Mạch ứng dụng: 
Tùy theo nhu cầu sử dụng mà mạch ứng dụng có độ phức tạp khác nhau, nhưng cơ bản bạn 
phải mắc các thành phần như trong hình 4. Bạn có thể hàn mạch lên test board hay đơn giản hơn 
là sử dụng project board để làm mạch ( bạn nên làm theo cách này). Mạch điện trong hình 4 
không có gì đặc biệt, ngoài Header J0 (DUONG NAP), bạn chú ý Header này, kết nối cho đúng 
vì đây chính là đường nạp của mạch. 
AUTO.NLU 
For more details and questions, contact me: thanhtam.h@gmail.com 
NA2
NA3
NA4
C? 33
C? 33
1
2
3
4
5
6
7
8
J1
HEADER 8
+5V0
0
0
+5V
Y?
4M
1
2
3
4
5
6
7
8
J3
HEADER 8
1
2
3
4
5
6
J0
DUONG NAP
0
1
2
3
4
5
6
7
8
J2
HEADER 8
1
2
3
4
5
6
7
8
J4
HEADER 8
RST9
PD4[OC1B]18
PD5[OC1A]19
PD6[ICP]20
PC7[TOSC2] 29
AVCC 30
AGND 31
PA0[ADC0] 40
PD7 21
PC0 22
PC1 23
PC2
24PC3
25PC4
26PC5
27PC6[TOSC1]
28
VCC10
GND
11
XTAL212
XTAL113
PD0[RXD]14
PD1[TXD]15
PD2[INT0]
16
PD3[INT1]17
PB0[T0]1
PB1[T1]2
PB2[AIN0]
3
PB3[AIN1]4
PB4[SS]5
PB5[MOSI]6
PB6[MISO]7
PB7[SCK]8
PO1[ADC1] 39
PA2[ADC2]
38
PA3[ADC3] 37
PA4[ADC4] 36
PA5[ADC5] 35
PA6[ADC6] 34
PA7[ADC7] 33
AREF 32
U?
ATMega32
NA4
NA3
NA2
NA1
0
R? 100k NA1
+5V
C?
1uF0
Hình 4: mạch ứng dụng cơ bản AVR 
c. Trình biên dịch cho AVR: 
Nếu bạn đã biết cách lập trình bằng Assembly cho các chip AT89C51, bạn có thể tiếp tục 
đi theo hướng này. Trong trường hợp này bạn cần tìm hiểu lại cấu trúc của AVR (chỉ cần đọc 
datasheet của chip là rất đầy đủ), sau đó bạn sử dụng phần mềm AvrStudio để lập trình và biên 
dịch chương trình. 
Tôi giới thiệu bạn 1 cách khác lập trình cho AVR, đó là sử dụng phần mềm 
CodeVisionAVR. Đây là 1 phần mềm lập trình theo ngôn ngữ C cho các chip AVR, hỗ trợ gần 
như đầy đủ các chip, có nhiều thư viện mở rộng và có tích hợp cả chương trình nạp hỗ trợ nhiều 
loại mạch nạp ( trong đó có mạch Kanda STK200/+300). Đây là giải pháp khá toàn diện cho 
người mới bắt đầu cũng như người lập trình AVR thành thạo. 
AUTO.NLU 
For more details and questions, contact me: thanhtam.h@gmail.com 
Hình 5: giao diện CodeVisionAVR 
 d. Test mạch nạp: 
 Giả sử bạn đã có trong tay mạch nạp Kanda STK200/+300, mạch ứng dụng trên project 
board và đã cài được CodeVisionAVR, bạn đã có thể lập trình và nạp cho mạch ứng ụng của 
mình. Bước này tôi hướng dẫn cách kiểm tra mạch nạp và nạp chương trình cho chip. 
- Trước hết bạn kết nối cab mạch nạp với cổng LPT máy tính. 
- Kết nối các đường nạp trên mạch nạp (Header6-J1) với đường nạp trên mạch ứng dụng 
(DUONG NAP-J0) theo thứ tự tương ứng. 
- Lắp nguồn vào mạch ứng dụng. 
- Chạy chương trình CodevisionAVR. 
- Chọn file/Open, bạn browse đến thư mục có chứa file “cavr-pwm1”, mở file này lên. 
- Bạn nhấn phím F9 để biên dịch, nhấn Shilf+F9 để tạo file hex. 
- Tiếp theo bạn chọn Setting/Programmer, chọn loại mạch nạp là “Kanda System 
STK200/+300”, các thông số khác chọn như trong hình 6, nhấn OK. 
AUTO.NLU 
For more details and questions, contact me: thanhtam.h@gmail.com 
Hình 6: Option mạch nạp 
- Bạn chọn Tool/ Chip Programmer rồi đặt các thông số như trong hình 7 
Hình 7: Load chương trình nạp 
- Trong chương trình nạp, bạn chọn Program/FLASH, sau đó browse đến thư mục chứa 
file “cavr-pwm1.hex” ( được tạo ra khi bạn biên dịch lúc trước), bạn nhớ là chọn đúng 
file có đuôi .hex ( bạn nên chọn file type trong open dialog là hex). Bạn sẽ thấy quá 
trình nạp chương trình vào chip diễn ra. Nếu có lỗi chương trình nạp sẽ báo. 
AUTO.NLU 
For more details and questions, contact me: thanhtam.h@gmail.com 
- Nếu không nạp được bạn hãy thử chọn lại Program/Erase chip truoc rồi sau đó nạp lại 
như trên, nếu quá trình “Erase chip” vẫn có lỗi nghĩa là hoặc mạch nạp bạn sai hoặc 
mạch ứng dụng sai, hoặc có khi bạn chưa gắn nguồn...Trong trường hợp này bạn hãy 
kiên nhẫn kiểm tra lại mạch nạp , mạch ứng dụng..(chủ yếu là kiểm tra xem đã kết nối 
đúng chưa, có bị đứt dây không..). 
Hy vọng rằng mọi chuyện điều diễn ra tốt đẹp, nếu có thắc mắc các bạn có thể hỏi lại tôi 
hoặc những bạn đã làm được. Chúng ta kết thúc bài 1, trong bài 2 tôi sẽ trình bày cách sử dụng 
phần mềm Proteus để mô phỏng sử dụng chip ATMega32 tạo xung PWM. 
Chú ý: 
- Trong bài giới thiệu này tôi giả sử bạn đã biết cách xem mạch điện vẽ bằng orcad, 
biết cách sử dụng test board loại hàn và Project board. 
- Mọi tài liệu, phần mềm giới thiệu trong bài viết đều nằm trong thư mục “New 
files” của Server chung, các bạn có thể download về từ đó (các bạn phải có 
useraname và password) 
- Sau khi đọc xong bài 1, bạn hãy cố gắng hiểu về PWM, làm được mạch nạp 
SKT200/+300, cài được phần mềm CodevisionAVR đề chuẩn bị cho các bài tiếp 
theo. Chúc các bạn thành công. 

File đính kèm:

  • pdfsu_dung_vi_dieu_khien_atmel_avr_dieu_khien_van_toc_dong_co_d.pdf