Professional Documents
Culture Documents
NLU
Đ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.
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
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 ...
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.
100nF C1
0
P1 R1
13 0 100k
25 U1 J1
20
12
24 2 18 MOSI 6
VCC
11 4 A1 Y1 16 MISO 5
23 6 A2 Y2 14 CLK 4
10 8 A3 Y3 12 D1 RESET 3
22 11 A4 Y4 9 VCC 2
9 13 A5 Y5 7 GND 1
21 15 A6 Y6 5 DIODE
8 17 A7 Y7 3
20 A8 Y8
7 1 0 HEADER 6
GND
19 19 1OE
6 2OE
18
10
5 74ALS244/SO
17
4
16
3
15 0
2
14
1
CONG LPT 25
1
2
3
J2 4
5 U?
6 1 40 1
7 2 PB0[T0] PA0[ADC0] 39 2
8 3 PB1[T1] PO1[ADC1] 38 3
4 PB2[AIN0] PA2[ADC2] 37 4 J1
HEADER 8 5 PB3[AIN1] PA3[ADC3] 36 5
NA4 6 PB4[SS] PA4[ADC4] 35 6
NA3 7 PB5[MOSI] PA5[ADC5] 34 7
NA2 8 PB6[MISO] PA6[ADC6] 33 8
C? PB7[SCK] PA7[ADC7] 32
R? 100k NA1 9 AREF HEADER 8
0 1uF 10 RST 31
+5V 11 VCC AGND
0 GND 30
C? 33 12 AVCC
0 XTAL2 0
+5V
Y? 29 1
PC7[TOSC2] 28 2
C? 33 4M 13 PC6[TOSC1] 27 3
0 14 XTAL1 PC5 26 4 J3
15 PD0[RXD] PC4 25 5
16 PD1[TXD] PC3 24 6
17 PD2[INT0] PC2 23 7
18 PD3[INT1] PC1 22 8
1 19 PD4[OC1B] PC0 21
2 20 PD5[OC1A] PD7 HEADER 8
3 PD6[ICP]
J4 4 ATMega32
5
6 +5V 0
7 J0
8 1
2
HEADER 8 NA1 3
NA2 4
NA3 5
NA4 6
DUONG NAP
Hình 4: mạch ứng dụng cơ bản 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.
- 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.