Mạch này được hỗ trợ bởi rất nhiều chương trình nạp và sử dụng được cho hầu hết các loại chip AVR... Vì thế tôi khuyên bạn nên bố trí theo thứ tự này để tiện trong việc kết nối với mạch
Trang 1Mạch nạp cho AVR rất phong phú nhưng hầu hết đều rất đơn giản Trong bài này tôi giới thiệu 2 loại mạch nạp rất phổ biến trong những người sử dụng AVR đó là mạch ISP SKT200/300 (gọi tắt là AVR ISP) và mạch USB AVR910 Mỗi loại có ưu
và nhược điểm riêng, tùy theo nhu cầu và khả năng bạn sẽ chọn chế tạo cho mình 1 loại mạch nạp phù hợp
I Mạch nạp STK200/300.
Mạch nạp loại này sử dụng cho các board STK200/300 của Atmel nên thường
được gọi là STK200/300 Mạch này giao tiếp với máy tính qua cổng LPT (cổng song
song) Có 2 phiên bản phổ biến của mạch STK200/300 đó là phiên bản thu gọn và phiên bản sử dụng IC đệm 74xx244
Sơ đồ mạch nạp thu gọn được trình bày trong hình 1 Đây là loại mạch đơn giản nhất trong tất cả các loại mạch nạp cho AVR, mạch chỉ bao gồm 4 điện trở Nhược
điểm của mạch này là không an toàn, có thể gây hại cho cổng LPT (thật ra tôi chưa
mắc phải vấn đề này khi sử dụng mạch STK200/300 thu gọn) Mặt khác mạch này không đảm bảo nạp được cho tất cả các chip AVR Tuy nhiên, nếu bạn không có nhiều kinh nghiệm làm các mạch điện tử thì có thể chế tạo mạch này để test chương trình AVR mà bạn đã học
Trang 2Hình 1 Sơ đồ mạch nạp STK200/300 thu gọn
Một loại mạch STK200/300 khác được sử dụng rất phổ biến là loại mạch có dùng
IC đệm 74HC244 (hoặc 74LS244), so với mạch thu gọn, mạch này có phức tạp hơn
đôi chút (xem hình 2) nhưng bù lại nó là mạch nạp rất ổn định và an toàn Mạch này được hỗ trợ bởi rất nhiều chương trình nạp và sử dụng được cho hầu hết các loại chip
AVR
Trang 3Hình 2 Sơ đồ mạch nạp STK200/300 đầy đủ
Như quan sát trong hình 1 và 2, việc nạp ISP cho AVR thường được thực hiện thông qua 6 đường nạp cơ bản, đó là GND, VCC, RESET, SCK, MISO và MOSI Khi chế tạo mạch nạp, bạn phải chú ý thứ tự của các đường nạp này sao cho phù hợp với thứ tự mà bạn đã bố trí cho mạch ứng dụng Một điều đặc biệt là ở các chip ATmega16, ATmega32, ATmega8535, AT90S8535 6 đường dành cho việc nạp ISP nằm cạnh nhau và theo thứ tự GND, VCC, RESET, SCK, MISO, MOSI Vì thế tôi khuyên bạn nên bố trí theo thứ tự này để tiện trong việc kết nối với mạch ứng dụng (nhất là khi bạn sử dụng các loại chip trên và làm mạch test bằng bread board) Các mạch nạp STK200/300 được mô tả trong hình 3
Trang 4Hình 3 Mạch nạp STK200/300
II Chương trình nạp PonyProg.
Chương trình nạp là một tiện ít giúp đổ file hex sau khi biên dịch vào chip thông qua các mạch nạp Hầu hết các bộ công cụ lập trình cho AVR đều tích hợp sẵn một chương trình nạp chip avrdude là chương trình nạp miễn phí hỗ trợ rất nhiều loại
mạch, được tích hợp với WinAVR Tuy nhiên, đây là chương trình nạp console
(không có giao diện) nên sử dụng tương đối khó khăn nhất là khi cần nạp các bit Fuse hay Lock Các phần mêm lập trình cho chip như CodevisionAVR, ICCAVR,
Bascom, đều có chương trình nạp riêng rất đa năng và dễ sử dụng Nhưng do đây là các công cụ thương mại nên bạn cần mua nếu muốn sử dụng AVR Studio, tất nhiên,
có chương trình nạp chip AVR Prog nhưng chương trình này lại không hỗ trợ mạch nạp mà STK200/300 mà tôi giới thiệu bên trên Cuối cùng là PonyProg, PonyProg
không phải là hoàn hảo nhất nhưng là lựa chọn tối ưu nhất để nạp bằng mạch
STK200/300 Đây là chương trình nạp hoàn toàn miễn phí, hỗ trợ nhiều loại mạch và nhiều dòng vi điều khiển (như AVR, PIC ), giao diện lại khá dễ sử dụng Trong phần này tôi dùng PonyProg để minh họa cho cách nạp chương trình vào AVR thông qua mạch nạp STK200/300
Download và cài đặt PonyProg: bạn có thể download miễn phí PonyProg tại
Trang 5Setup: Trước khi sử dụng PonyProg để nạp AVR bạn cần Setup một số thông số cho phần mềm như loại chip, loại mạch nạp Chạy PonyProg, chọn menu Device và
chọn loại chip mà bạn cần nạp (ví dụ "AVR micro/ ATmega32") Tiếp đến xác nhận loại mạch nạp và giao diện cổng bằng cách vào menu "Setup/Interface Setup" Với mạch nạp STK200/300, hãy set các thông số trong dialog "I/O Port setup" như trong
hình 4 và nhấn OK để xác nhận Setup
Hình 4 Setup port cho ponyProg
Ghi fuse bits và Lock bits: Ponyprog cho phép người dùng ghi và đọc các bit cấu hình của chip như fuse bits và lock bits, để thực hiện, chọn menu
"Command/Security and Configuration bits" hay đơn giản là nhấn tổ hợp phím Ctrl+S Dialog mới xuất hiện cho phép bạn cài đăt các bit cấu hình cho chip (chọn các
bit mong muốn và nhấn button write - xem thêm bài fuse bits để hiểu rõ hơn chức
năng các bit này)
Download chương trình vào chip: Hãy mở file chương trình cần nạp vào chip
bằng cách vào menu "File/Open Program (FLASH) file" hoặc nhấn nút công cụ "P"
trên thanh công cụ Nội dung file FLASH sẽ được hiển thị trong 1 cửa sổ con Để nạp
chương trình cho chip, hãy vào menu "Command/Write Program(FLASH)" hoặc nhấn nút công cụ "Write Program Memory(FLASH)" trên thanh công cụ
Ngoài ra, PonyProg còn có rất nhiều chức năng khác như đọc nội dung chip, xóa chip, kiểm tra với các chức năng này bạn hãy tự khám phá và sử dụng
III Mạch nạp USB AVR910.
Tuy mạch nạp STK200/300 đơn giản, dễ chế tạo nhưng có một hạn chế là mạch này sử dụng cổng LPT làm cổng giao tiếp Trên một số máy tính gần đây cổng LPT đã
bị loại bỏ, thay vào đó các cổng USB đã trở thành cổng giao tiếp không thể thiếu của máy tinh Một mạch nạp sử dụng cổng USB sẽ tiện lợi hơn rất nhiều so với cổng LPT hay COM Có một số dự án nghiên cứu chế tạo mạch nạp USB cho AVR, trong số đó
có lẽ phổ biến nhất là mạch nạp AVR910 USB của Prottoss Gọi là mạch AVR910 vì
Trang 6nguyên lý nạp chương trình của mạch này áp dụng hướng dẫn trong application note
một chip Master Atmega8, chip này chứa một firmware bên trong, firmware thực hiện
2 chức năng: thứ nhất là một cầu chuyển USB-UART dựa trên thư viện của Objective
Mạch nạp ARV910 USB không quá phức tạp cho bạn tự chế tạo, hãy download
các công cụ cần thiết từ website của Prottoss hoặc download trực tiếp tại đây và thực
hiện theo các chỉ dẫn bên dưới
Giải nén file rar vừa download về bạn sẽ thấy có 3 files bên trong File thứ nhất là
sơ đồ mạch điện (file pdf), file thứ hai là driver cho máy tính (file inf) và file thứ 3 là firmware cho chip master ATmega8 (file hex - xem hình bên dưới)
Chế tạo mạch: tham khảo sơ đồ mạch điện và chế tạo một mạch điện theo mạch
nguyên lý trong file pdf hoặc trong hình 5 bên dưới
Hình 5 Sơ đồ mạch nạp AVR910 USB của Prottoss
Khi chế tạo mạch điện trên, bạn lưu ý một số điểm như sau: hãy bỏ qua các Jumper J1, J2 và J3, nối trực tiếp chân 16 của ATmega8 với điện trở R13 Nếu bạn
Trang 7không biết cách xác định thứ tự chân của cổng USB thì hãy dùng một đổng hồ đo điện
áp, chân 1 sẽ có điện áp dương (khoảng 5V) và chân 4 là chân GND)
Nạp firmware cho chip mega8: trước khi gắn chip mega8 vào mạch điện hình 5,
bạn phải nạp firmware (file USB.910.Programmer.hex) vào chip này bằng một mạch nạp bất kỳ mà bạn có (ví dụ mạch STK200/300) Chú ý bạn cần set fuse bit cho chip này sao cho nguồn thạch anh ngoài 12MHz đươc sử dụng (hãy đặt 2 bit BOOTZS0 và BOOTSZ1 bằng 0 (checked), các bit còn lại bằng 1 (bỏ trống) - tham khảo bài Fuse bits)
Cài driver cho windows: sau khi chế tạo mạch và nạp firmware cho chip master, bạn kết nối mạch nạp với cổng USB của máy tính Một cách tự động, Windows sẽ nhận diện một phần cứng mới được kết nối và yêu cầu cài đặt driver cho thiết bị Hãy browse đến thư mục chứa file driver inf mà bạn đã giải nén Quá trình cài driver sẽ bắt
đầu, nếu trong quá trình cài đặt Windows thông báo lỗi bạn hãy nhấn "Continue
anyway " để tiếp tục cài đặt đến khi hoàn tất Sau khi cài đặt driver một cổng COM
ảo sẽ xuất hiện trong Hardware list của bạn, hãy mở tiện ích Device manager của
Windows để kiểm tra, hãy ghi lại chỉ số cổng COM ảo (COM1, COM2, COM3 ) để khai báo trong các chương trình nạp
Sử dụng AVR910 USB: mạch nạp AVR910 USB được hỗ trợ bởi phần mềm nạp của CodevisionAVR và AVR Prog của AVRStudio Kết nối mạch với máy tính, chạy
AVRStudio và chương trình nạp AVR Prog (vào menu Tools/AVR Prog) Trong mục
Hex file hãy browse đến file hex cần nạp cho chip, mục Device chọn loại chip AVR
và sau đó nhấn button Write trong mục Flash để nạp vào file hex vào chip Nếu muốn xác lập fuse bits hay lock bits, hãy nhấn button Advance
Trang 8Hình 6 Nạp chip bằng mạch nạp AVR910 USB và AVR Prog
Mạch ứng dụng AVR
Mạch ứng dụng cho AVR là các mạch điện mà bạn cần thiết kế sử dụng chip AVR làm chip điều khiển Với mục đích học cách sử dụng chip AVR, chúng ta chỉ cần chế tạo các mạch ứng dụng AVR đơn giản với một số thành phần cơ bản nhất Hình 1 giới thiệu một mạch ứng dụng đơn giản cho chip ATmega32
Trang 9Hình 1 Mạch ứng dụng đơn giản cho AVR
- Các đường nạp chip: chúng ta dành sẵn các đường này để có thể kết nới với các mạch nạp mà không cần tháo chip khỏi mạch ứng dụng Bạn nên bố trí các đường này theo thứ tự mà mạch nạp của bạn được bố trí (ví dụ GND, VCC, RESET, SCK, MISO, MOSI)
- Bộ tạo dao động - Thạch anh (Crystal): đây là nguồn xung giữ nhịp "nuôi" chip, không có xung giữ nhịp chip sẽ không hoạt động Tuy nhiên, đa số các chip AVR đều
hỗ trợ nguồn xung giữ nhịp bên trong với tần số tối ta 8MHz Nếu bạn thấy không cần thiết đến tần số hoạt động cao bạn có thể dùng nguồn xung giữ nhịp trong chip, khi đó bạn có thể bỏ qua bộ tạo xung (gồm thạch anh và 2 tụ điện như trong hình) Việc chọn nguồn xung "nuôi" chip được xác lập bởi các Fuse bits, bạn cần đọc tài liệu về fuse bits cho AVR hoặc bài Set Fuse Bits Một chú ý khác là trên dòng chip ATmega, fuse
Trang 10bits được set mặc định để sử dụng nguồn xung nội 1MHz, vì thế với các chip này, khi mới mua về bạn có thể không cần dùng thạch anh ngoài Nhưng một khi bạn đã set fuse bits để chọn nguồn xung ngoài thì không được bỏ qua mạch thạch anh này (Các chip AT90S mặc định lấy nguồn xung ngoài)
- Chân AREF là chân điện áp tham chiếu cho các bộ ADC, nếu chế độ tham chiếu nội được dùng, bạn có thể nối AREF với một tụ điện như trong hình 1
Đối với các chip AVR khác, bạn có thể tạo mạch ứng dụng theo cách tương tự như mạch điện này Hình 2 mô tả cách tự tạo một mạch AVR rất đơn giản bằng breadboard cho chip ATmega32 (dùng thạch anh nội)
Hình 2 Mạch ứng dụng đơn giản cho ATmega32
Trang 11Mạch cầu H
I Mạch cầu H (H-Bridge Circuit).
Giả sử bạn có một động cơ DC có 2 đầu A và B, nối 2 đầu dây này với một nguồn
điện DC (ắc qui điện – battery) Ai cũng biết rằng nếu nối A với cực (+), B với cực (-)
mà động cơ chạy theo chiều thuận (kim đồng hồ) thì khi đảo cực đấu dây (A với (-), B với (+)) thì động cơ sẽ đảo chiều quay Tất nhiên khi bạn là một “control guy” thì bạn không hề muốn làm công việc “động tay động chân” này (đảo chiều đấu dây), bạn ắt
sẽ nghĩ đến một mạch điện có khả năng tự động thực hiện việc đảo chiều này, mạch cầu H (H-Bridge Circuit) sẽ giúp bạn Như thế, mạch cầu H chỉ là một mạch điện giúp
đảo chiều dòng điện qua một đối tượng Tuy nhiên, rồi bạn sẽ thấy, mạch cầu H không
chỉ có một tác dụng “tầm thường” như thế Nhưng tại sao lại gọi là mạch cầu H, đơn giản là vì mạch này có hình chữ cái H Xem minh họa trong hình 1
Trang 12Hình 1 Mạch cầu H
Trong hình 1, hãy xem 2 đầu V và GND là 2 đầu (+) và (-) của ắc qui, “đối tượng”
là động cơ DC mà chúng ta cần điều khiển, “đối tượng” này có 2 đầu A và B, mục
đích điều khiển là cho phép dòng điện qua “đối tượng” theo chiều A đến B hoặc B đến
A Thành phần chính tạo nên mạch cầu H của chúng ta chính là 4 “khóa” L1, L2, R1
và R2 (L: Left, R:Right) Ở điều kiện bình thường 4 khóa này “mở”, mạch cầu H không hoạt động Tiếp theo chúng ta sẽ khảo sát hoạt động của mạch cầu H thông qua các hình minh họa 2a và 2b
Trang 13Hình 2 Nguyên lý hoạt động mạch cầu H
Giả sử bằng cách nào đó (cái cách nào đó chính là nhiệm vụ của người thiết kế mạch) mà 2 khóa L1 và R2 được “đóng lại” (L2 và R1 vẫn mở), bạn dễ dàng hình dung có một dòng điện chạy từ V qua khóa L1 đến đầu A và xuyên qua đối tượng đến
đầu B của nó trước khi qua khóa R2 và về GND (như hình 2a) Như thế, với giả sử
này sẽ có dòng điện chạy qua đối tượng theo chiều từ A đến B Bây giờ hãy giả sử khác đi rằng R1 và L2 đóng trong khi L1 và R2 mở, dòng điện lại xuất hiện và lần này
nó sẽ chạy qua đối tượng theo chiều từ B đến A như trong hình 2b
(V->R1->B->A->L2->GND) Vậy là đã rõ, chúng ta có thể dùng mạch cầu H để đảo chiều dòng điện qua một “đối tượng” (hay cụ thể, đảo chiều quay động cơ) bằng “một cách nào đó” Chuyện gì sẽ xảy ra nếu ai đó đóng đồng thời 2 khóa ở cùng một bên (L1 và L2 hoặc R1 và R2) hoặc thậm chí đóng cả 4 khóa? Rất dễ tìm câu trả lời, đó là hiện tượng
“ngắn mạch” (short circuit), V và GND gần như nối trực tiếp với nhau và hiển nhiên
ắc qui sẽ bị hỏng hoặc nguy hiểm hơn là cháy nổ mạch xảy ra Cách đóng các khóa
như thế này là điều “đại kị” đối với mạch cầu H Để tránh việc này xảy ra, người ta thường dùng thêm các mạch logic để kích cầu H, chúng ta sẽ biết rõ hơn về mạch logic này trong các phần sau
Giả thiết cuối cùng là 2 trường hợp các khóa ở phần dưới hoặc phần trên cùng đóng (ví dụ L1 và R1 cùng đóng, L2 và R2 cùng mở) Với trường hợp này, cả 2 đầu A, B của “đối tượng” cùng nối với một mức điện áp và sẽ không có dòng điện nào chạy qua, mạch cầu H không hoạt động Đây có thể coi là một cách “thắng” động cơ
(nhưng không phải lúc nào cũng có tác dụng) Nói chung, chúng ta nên tránh trường hợp này xảy ra, nếu muốn mạch cầu không hoạt động thì nên mở tất cả các khóa thay
vì dùng trường hợp này
Sau khi đã cơ bản nắm được nguyên lý hoạt động của mạch cầu H, phần tiếp theo chúng ta sẽ khảo sát cách thiết kế mạch này bằng các loại linh kiện cụ thể Như tôi đã
Trang 14trình bày trong phần trước, thành phần chính của mạch cầu H chính là các “khóa”, việc chọn linh kiện để làm các khóa này phụ thuộc vào mục đích sử dụng mạch cầu, loại đối tượng cần điều khiển, công suất tiêu thụ của đối tượng và cả hiểu biết, điều kiện của người thiết kế Nhìn chung, các khóa của mạch cầu H thường được chế tạo bằng rờ le (relay), BJT (Bipolar Junction Transistor) hay MOSFET (Metal Oxide Semiconductor Field-Effect Transistor) Phần thiết kế mạch cầu H vì vậy sẽ tập trung vào 3 loại linh kiện này Trong mỗi cách thiết kế, tôi sẽ giải thích ngắn gọn nguyên lý cấu tạo và hoạt động của từng loại linh kiện để bạn đọc dễ nắm bắt hơn
II Mạch cầu H dùng rờ le.
Rờ le là một dạng “công tắc” (switch) cơ điện (electrical mechanical device, không phải cơ điện tử đâu nhé :) ) Gọi là công tắc cơ điện vì chúng gồm các tiếp điểm cơ
được điều khiển đóng mở bằng dòng điện Với khả năng đóng mở các tiếp điểm, rờ le đúng là một lựa chọn tốt để làm khóa cho mạch cầu H Thêm nữa chúng lại được điều
khiển bằng tín hiệu điện, nghĩa là chúng ta có thể dùng AVR (hay bất kỳ chip điều khiển nào) để điều khiển rờ le, qua đó điều khiển mạch cầu H Hãy quan sát cấu tạo và hình dáng của một loại rờ le thông dụng trong hình 3
Hình 3 Cấu tạo và hình dáng rờ le
Hình 3a (phía trên) mô tả cấu tạo của 1 rờ le 2 tiếp điểm Có 3 cực trên rờ le này Cực C gọi là cực chung (Common), cực NC là tiếp điểm thường đóng (Normal
Closed) và NO là tiếp điểm thường mở (Normal Open) Trong điều kiện bình thường, khi rờ le không hoạt động, do lực kéo của lò xo bên trái thanh nam châm sẽ tiếp xúc với tiếp điểm NC tạo thành một kết nối giữa C và NC, chính vì thế NC được gọi là tiếp điểm thường đóng (bình thường đã đóng) Khi một điện áp được áp vào 2 đường kích Solenoid (cuộn dây của nam châm điện), nam châm điện tạo ra 1 lực từ kéo thanh nam châm xuống, lúc này thanh nam châm không tiếp xúc với tiếp điểm NC nữa mà chuyển sang tiếp xúc với tiếp điểm NO tạo thành một kết nối giữa C và NO Hoạt