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 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 13251224112310229218207196185174163152141P1CONG LPT 25R1100kC1100nFA12A24A36A481OE1Y118Y216Y314Y412VCC20GND10A511A613A715A817Y59Y67Y75Y832OE19U174ALS244/SO123456J1HEADER 6D1DIODE000GNDVCCRESETMOSIMISO0CLK 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 NA2NA3NA4C?33C?3312345678J1HEADER 8+5V000+5VY?4M12345678J3HEADER 8123456J0DUONG NAP012345678J2HEADER 812345678J4HEADER 8RST9PD4[OC1B]18PD5[OC1A]19PD6[ICP]20PC7[TOSC2]29AVCC30AGND31PA0[ADC0]40PD721PC022PC123PC224PC325PC426PC527PC6[TOSC1]28VCC10GND11XTAL212XTAL113PD0[RXD]14PD1[TXD]15PD2[INT0]16PD3[INT1]17PB0[T0]1PB1[T1]2PB2[AIN0]3PB3[AIN1]4PB4[SS]5PB5[MOSI]6PB6[MISO]7PB7[SCK]8PO1[ADC1]39PA2[ADC2]38PA3[ADC3]37PA4[ADC4]36PA5[ADC5]35PA6[ADC6]34PA7[ADC7]33AREF32U?ATMega32NA4NA3NA2NA10R?100kNA1+5VC?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. . 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ơ. đượ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.