Trong nội dung của bài báo cáo, em chia báo cáo thành các chương như sau: ❖ CHƯƠNG 1: GIỚI THIỆU ❖ CHƯƠNG 2: CẤU HÌNH MẠCH KIT ❖ CHƯƠNG 3: THỰC HÀNH LẬP TRÌNH CƠ BẢN CHO VĐK ❖ CHƯƠNG 4:
Trang 2hỗ trợ một số phương tiện cơ bản để triển khai công việc trên nền tảng xây dựng sẵn, có thể
kế thừa
Trong nội dung của bài báo cáo, em chia báo cáo thành các chương như sau:
❖ CHƯƠNG 1: GIỚI THIỆU
❖ CHƯƠNG 2: CẤU HÌNH MẠCH KIT
❖ CHƯƠNG 3: THỰC HÀNH LẬP TRÌNH CƠ BẢN CHO VĐK
❖ CHƯƠNG 4: VẬN DỤNG KIẾN THỨC VÀO THỰC TẾ
Em xin cảm ơn các thầy cô giảng viên hướng dẫn môn học Đồ án II đã hướng dẫn sinh viên chúng em cách thực hiện đồ án Trong quá trình thực hiện, em đã cố gắng thực hiện đầy đủ xong kiến thức còn hạn hẹp nên không tránh khỏi những sai sót Em mong sẽ nhận được những sự góp ý của thầy cô để em có thể hoàn thiện hơn nữa
Em xin chân thành cảm ơn!
SINH VIÊNĐàm Xuân Hiếu
Trang 3Mục lục
Contents
Lời mở đầu 2
Mục lục 3
Danh mục hình vẽ 4
Danh mục bảng biểu 5
Chương 1: Thông tin chung 6
1 Giới thiệu tổng quan 6
2 Mạch Kit cho VĐK họ AVR 6
3 Ngôn ngữ lập trình và các công cụ phần mềm 7
Chương 2: Cấu hình mạch Kit 8
1 Cấu trúc mạch 8
2 Các thông số chính 9
3 Mạch nạp mã nguồn 9
4 Màn hình LCD và mô-đun UART-USB 10
Chương 3: Thực hành lập trình cơ bản cho VĐK 12
1 Tạo project và thử nạp mã máy cho VĐK 12
2 Điều khiển cổng ra số 14
3 Đọc trạng thái logic đầu vào số 18
4 Đo điện áp tương tự và hiển thị kết quả bằng màn hình LCD 20
Chương 4: Vận dụng kiến thức vào thực tế 23
1 Đề tài thực hiện 23
2 Giới thiệu về cẩm biến nhiệt độ LM35 23
3 Thiết kế sơ đồ nguyên lý bằng Altium Designer 24
4 Mô phỏng mạch đo nhiệt độ trên Proteus 26
5 Mạch đo nhiệt độ sử dụng LM35 30
Chương 5: Kết luận 37
Trang 5Danh mục hình vẽ
Hình 1 1 Mạch kit phát triển và các phụ kiện 7
Hình 2 1 Cấu trúc mạch Kit 8
Hình 2 2 Mạch nạp ISP chuẩn 10 chân 10
Hình 2 3 Màn hình LCD 1602 và chuẩn kết nối 16 chân 10
Hình 2 4 Mô-đun UART-USB sử dụng chip FT232RL 11
Hình 3 1 Bước đầu tiên khi tạo Project mới 12
Hình 3 2 Bước chọn Debug platform và chọn chip khi khởi tạo Project 12
Hình 3 3 Chỉnh mức độ Optimization cho Project mới 13
Hình 3 4 Thiết lập Toolchain cho Project mới 13
Hình 3 5 Sửa Fuse bit như hình 14
Hình 3 6 Kết quả thực tế trên LCD 22
Hình 4 1 Cảm biến LM35 23
Hình 4 2 Sơ đồ nguyên lý LM35 24
Hình 4 3 Giao diện Schematic của Altium 25
Hình 4 4 Sơ đồ nguyên lý mô phỏng trên Altium 26
Hình 4 5 Giao diện màn hình của Proteus 8.7 27
Hình 4 6 Giao diện màn hình mô phỏng 27
Hình 4 7 Sơ đồ mô phỏng mạch đo nhiệt độ sử dụng LM35 28
Hình 4 8 Mô phỏng mạch 28
Hình 4 9 Kết quả mô phỏng LM35 trên Proteus 29
Hình 4 10 Kết quả mô phỏng LCD trên Proteus 30
Hình 4 11 Kết quả đo nhiệt độ thực tế 36
Trang 6Danh mục bảng biểu
Bảng 2 1 Linh kiện quan trọng của mạch Kit và chức năng tương ứng 9
Bảng 3 1 Code kiểm tra AVR_Kit_Test 14
Bảng 3 2 Code điều khiển cổng ra số 15
Bảng 3 3 Thư viện riêng điều khiển cổng ra số 18
Bảng 3 4 Code đọc trạng thái logic đầu vào số 18
Bảng 3 5 Thư viện riêng đọc trạng thái logic đầu vào số 20
Bảng 3 6 Code đo điện áp tương tự và hiển thị LCD 20
Bảng 3 7 Thư viện riêng đo điện áp tương tự và hiển thị LCD 21
Bảng 4 1 Code đo nhiệt độ bằng LM35 30
Bảng 4 2 Thư viện riêng đo nhiệt độ bằng LM35 35
Trang 7Chương 1: Thông tin chung
1 Giới thiệu tổng quan
Học phần đồ án II được thiết kế để củng cố và nâng cao năng lực chuyên môn cho sinh viên; giúp liên kết các kiến thức về điện tử tương tự, điện tử số, kỹ thuật vi xử lý, xử lý số tín hiệu, thông tin số, v.v nhằm hoàn thiện khả năng vận dụng kiến thức vao thực tế
Trong đồ án này bao gồm: làm quen công cụ thiết kế mạch điện, thực hành lập trình phần cứng, và xây dựng một ứng dụng cơ bản với các vi mạch khả trình Để đảm bảo tiến độcông viêc, sinh viên được hỗ trợ một số phương tiện cơ bản để triển khai công việc trên nền tảng xây dụng sẵn, có thể kế thừa
2 Mạch Kit cho VĐK họ AVR
AVR là một dòng VĐK 8 bit khá mạnh và thông dụng tại thị trường Việt Nam Với tốc
độ xung nhịp tói 16MHz, bộ nhớ chương trình tối đa tới 256 kB, và rất nhiều chức năng ngoại vi tích hợp sẵn, VĐK họ AVR có thể đáp ứng tốt nhiều ứng dụng trong thực tế, từ đớn giản tới phức tạp
Kit phát triển được sử dụng trong đồ án II được Viện Điện tử- Viễn thông thiết kế để đảm bảo tính hiệu quả trong quá trình đào tạo Với bộ Kit này, sinh viên có thể thử
nghiệm các ứng dụng cơ bản như:
Điều khiển cổng ra số, với LED đơn và LED 7 thanh
Đoc trạng thái logic đầu vào từ bàn phím và giắc cắm mở rộng
Đo điện áp tương tự, với biến trờ vi chỉnh và bộ ADC 10-bit
Điều khiển màn hình tinh thể lỏng, với màn hình LCD dạng text Giao tiếp với máy tính thông qua UART-USB
Thử nghiệm các ngắt ngoài, thử khả năng điều chế độ rộng xungNhiều ứng dụng điều khiển các chức năng đã tích hợp sẵn trong VĐK như: vận hành các bộ định thời (Timer) và bộ đếm (Count), đọc ghi EEPROM, lập trình các ngắt chương trình, lập trình Watchdoc, v.v
Trang 8Hình 1 1 Mạch kit phát triển và các phụ kiện
Mặt khác, bằng việc kết nối các mô-đun mở rộng, sinh viên có thể thử nghiệm các ứng dụng phức tạp hơn như:
Đo tham số môi trường cơ bản: nhiệt độ, độ ẩm, ánh sáng, v.v
Điều khiển tải cơ bản: đèn báo, van điện trở, động cơ DC, động cơ bước, v.vĐiều khiển hiện thị cơ bản: LED ma trận, LCD ma trận, màn cảm ứng, v.v
Giao tiếp I2C và SPI: IC thời gian thực, IC EEPROM, cảm biến gia tốc, v.vỨng dụng tổng hợp: đo và duy trì sự ổn định của tham số môi trường; số hóa và xử lý tín hiệu âm thanh; điều khiển robot và xe tự hành, v.v
3 Ngôn ngữ lập trình và các công cụ phần mềm
Để học tập và làm việc với VĐK AVR, sinh viên có thể sử dụng ngôn ngữ C hoặc Assembly, viết trên 1 số môi trường phát triển khác nhau Các bài thực hành trong đồ ánnày được xây dụng với ngôn ngữ C; trên môi trường soạn thảo và biên dịch là sự kết hợp của AVR studio 4 với WinAVR Phần mềm nạp mã máy PROGISP Phần mềm thu nhận dữ liệu từ cổng USB hay COM ảo là Terminal
Trang 9Chương 2: Cấu hình mạch Kit
1 Cấu trúc mạch
Để thực hiện được nhiều chức năng ngoại vi với phần cứng tối thiểu, mach Kit được thiết kể như với cấu trúc như Hình 2.1 và chức năng của linh kiện được nêu rõ như Bảng 2.1 Sơ đồ nguyên lý và layout chi tiết được thể hiện trong phụ lục kèm theo
Hình 2 1 Cấu trúc mạch Kit
1 Giắc cắm nguồn Nhận nguồn điện 9-12VDC cấp cho mạch Kit
2 IC ổn áp 7805 Hạ 9-12VDC xuống 5VDC và giữ ổn định mức điện áp
này để cấp cho toàn mạch
3 LED báo nguồn Báo nguồn( sáng: có nguồn 5VDC; ngắt: mất nguồn)
4 VĐK họ AVR Điều khiển toàn mạch theo mã nguồn do người dùng lập
trình và nạp xuống
Trang 105 Thạch anh Quyết định tần số xung nhịp cấp cho VĐK
7 Giắc ISP Kết nối mạch nạp để nạp nguồn cho VĐK
8 Nhóm 4 phím ấn Nhận lệnh điều khiển từ người sử dụng
9 Giắc cắm 8 chân Nối 8 chân vào/ra đa chức năng( ứng với Port-A) của VĐK
10 Giắc cắm 8 chân Nối 8 chân vào/ra đa chức năng( ứng với Port-B) của VĐK
11 Giắc cắm 8 chân Nối 8 chân vào/ra đa chức năng( ứng với Port-C) của VĐK
12 Giắc cắm 8 chân Nối 8 chân vào/ra đa chức năng( ứng với Port-D) của VĐK
13 Dãy LED đơn Báo trạng thái logic của 8 chan Port-D( sáng:mức logic0,
tắt: mức logic 1)
14 Jumper dãy LED đơn Cho phép hoặc vô hiệu hóa dãy LED đơn
15 LED 7 thanh Hiện thị từ 0-9 và 1 vài ký tự do người dùng định nghĩa
16 Jumper LED 7 thanh Cho phép hoặc vô hiệu hóa LED 7 thanh
17 Giắc cắm LCD Kết nối màn hình LCD dạng text
18 Biến trở vi chỉnh Điều chỉnh trơn và liên tục, từ 0-5VDC, mức điện áp tại
đầu vào ADC0 của bộ ADC(chân PA0)
19 Giắc UART Kết nối mô đun chuyển đổi UART-USB
Bảng 2 1 Linh kiện quan trọng của mạch Kit và chức năng tương ứng
o Khi không có mô đun mở rộng, toàn bộ LED chỉ thị I/O tắt: 18mA
o Khi có LCD và mô đun USB, các LED chỉ thị I/O bị vô hiệu hóa: 22mA
o Khi có LCD và mô đun USB,toàn bộ LED chỉ thị I/O sáng 80mA Mạch có khả năng tự bảo vệ khi bị lắp ngược cực tính nguồn
Mức logic các cổng I/O: TTL(5V)
Điện áp tương tự vào các chân ADC: từ 0-5V
Loại VĐK được hỗ trợ: Atmega 16 , Atmega32, và tương đương
Cổng I/O mở rộng: 4 giắc cắm( loại 8 chân) ứng với 4-Port( 8 bit mỗi Port)
Hỗ trợ màn hình LCD: dạng text, giao tiếp 8 bit hoặc 4 bit
Hỗ trợ mô đun USB: UART-USB hay COM-USB( mức 5 VDC)
Xung nhịp tích hợp sẵn: thạch anh 8MHz
Trang 113 Mạch nạp mã nguồn
Mạch nạp mã nguồn cho VDK trong Kit là loại mạch nạp ISP thông dụng
Hình 2 2 Mạch nạp ISP chuẩn 10 chân
Trang 12Hình 2 4 Mô-đun UART-USB sử dụng chip FT232RL
Trang 13Chương 3: Thực hành lập trình cơ bản cho VĐK
1 Tạo project và thử nạp mã máy cho VĐK
Các bước thực hiện:
Hình 3 1 Bước đầu tiên khi tạo Project mới
Trang 14Hình 3 2 Bước chọn Debug platform và chọn chip khi khởi tạo Project
Hình 3 3 Chỉnh mức độ Optimization cho Project mới
Trang 15Hình 3 4 Thiết lập Toolchain cho Project mới
Bảng 3 1 Code kiểm tra AVR_Kit_Test
Dịch đoạn chương trình trên sang mã máy bằng cách vào: Build > Build hoặc click
vào biểu tượng có hình tương ứng trên menu Nếu không có lỗi xảy ra, file mã
máy AVR_Kit_Test.hex sẽ được tạo trong thư mục Default của Project
Sử dụng phần mềm PROGISP để chỉnh cấu hình Fuse bit cho VĐK rồi nạp
AVR_Kit_Test.hex xuống VĐK.
Trang 16Hình 3 5 Sửa Fuse bit như hình
Kết quả thu được: dãy 8 LED trên mạch kit sáng tắt xen kẽ nhau và LED 7 thanh sẽ hiện số 8
2 Điều khiển cổng ra số
Mã nguồn:
/ Khai bao thu vien chuan #include <avr\io.h>
//Dinh nghia hang so FRE=8, la xung nhip cua he thong( tinh bang MHz)
Trang 17/ khai bao cac nguyen mau ham void INIT();
void PORT();
void LED_7_OUT(unsigned char num); void
DELAY_MS(unsigned int mili_count);
/*Khai bao cac bien se dung toi trong ham
nay*/ //Bien Led_shift de dieu khien cac LEd don
//Gia tri dau la 255= 0xFF= 0b11111111 -> tat ca cac LED deu tat
unsigned char led_shift = 255;
//Bien dem cho LED 7 thanh, gia tri dau la 0
unsigned char led_7_count = 0;
//Vong for giup cac LED sang tat theo quy luat lap di lap lai
for(;;)
{
/*Doan ma dieu khien cac led don*/
//Cac LED sang/tat theo 8 bit cua bien led_shift PORTD = led_shift;
//thay doi bien led_shift if(led_shift != 0) //neu led_shift khac 0
Trang 18led_shift=led_shift << 1; //Dich trai 1 bit else
led_shift= 255; //tro lai gia tri 255 /*Doan ma dieu khien LED 7 thanh*/
//Xuat gia tri dem ra LEd 7 thanh LED7_OUT(led_7_count);
//Dao trang thai PC3 de nhap nhay dau cham tren LED 7 thanh PORTC ^= (1<<PC3);
//Tang dan gia tri dem led_7_count = led_7_count +1;
//khi vuot qua 9, gia tri dem reset ve 0 if(led_7_count >9)
void LED7_OUT(unsigned char num) {
//Khai bao bien Temp luu trang thai cua PORTC
unsigned char temp= PORTC;
//Cac chan vi dieu khien ung voi thanh LED
Trang 19case 3: temp |= 0B01000001; break;
case 4: temp |= 0B00100011; break;
case 5: temp |= 0B00010001; break;
case 6: temp |= 0B00010000; break;
case 7: temp |= 0B11000011; break;
case 8: temp |= 0B00000000; break;
case 9: temp |= 0B00000001; break;
//khai bao hai bien chay 2 vong lap for
unsigned int i,j;
//xung nhip cua he thong cang cao,so vong lap cang tang
mili_count=mili_count* FRE;
//Cac vong For gay Tre
for( i=0; i< mili_count; i++)
for( j=0; j<53; j++);
}
Bảng 3 3 Thư viện riêng điều khiển cổng ra số
Kết quả thu được:
Dãy 8 LED trên mạch Kit sẽ lần lướt sáng tắt theo thứ tự
LED 7 thanh sẽ hiện đếm tăng dâng từ 0 đến 9 rồi về 0
3 Đọc trạng thái logic đầu vào số
Trang 20#define FRE 8
//Khai bao push_button la bien toan cuc, luu so thu tu phim duoc an
unsigned char push_button = 0;
//Khai bao file thu vien rieng
Trang 21case 4:PORTD = 0b00111111; break;
//push_button = 0, tat tat ca cac LED default: PORTD = 0xFF;
} }
unsigned char PB_CHECK() {
//Kiem tra trang thai logic cua 4 chan Pb0-3, neu khac 1111
Bảng 3 5 Thư viện riêng đọc trạng thái logic đầu vào số
Kết quả thu được:
Khi ấn và giữ các nút đầu vào (1,2,3,4) thì trên LED 7 thanh sẽ hiện tương ứng, khi thả tay không giữ LED hiện về 0
Khi thay đổi return 0 thành return push_button trong hàm PB_CHECK() thì sau khi ấn nút, thả tay, LED vẫn hiện kết quả tương ứng nút( không trả
về 0 như trên)
Trang 224 Đo điện áp tương tự và hiển thị kết quả bằng màn hình LCD
Bảng 3 6 Code đo điện áp tương tự và hiển thị LCD
*File hunget_adc.h: lấy trong thư viện do giáo viên
cấp *File hunget_lcd.h: lấy trong thu viện do giáo viên
Trang 23Bảng 3 7 Thư viện riêng đo điện áp tương tự và hiển thị LCD
Kết quả thu được: Trên LCD hiện 2 dòng text
TEST ADC & LCD
ADC0: 0432/1024
Trang 24Hình 3 6 Kết quả thực tế trên LCD
Trang 25Chương 4: Vận dụng kiến thức vào thực tế
1 Đề tài thực hiện
Đề tài: Thiết kế và chế tạo mạch đo nhiệt độ sử dụng cảm biến tương tự
Yêu cầu công việc: chế tạo 1 mạch điện có khả năng đo nhiệt độ trong dải
0-100oC sử dụng cảm biến tương tự Kết quả đo được hiển thị bằng màn hình LCD với độ phân giải tối thiểu là 0.25oC
Gợi ý cách thực hiện: Thiết kế 1 mô đun đo sử dụng LM35 kết nối tới mạch Kit
để số hóa, xử lý và hiển thị kết quả
2 Giới thiệu về cẩm biến nhiệt độ LM35
Cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu
ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius Chúng cũng không yêu cầucân chỉnh ngoài vì vốn chúng đã được cân chỉnh
Đặc điểm chính của cảm biến LM35:
Điện áp đầu vào từ 4V đến 30V
Độ phân giải điện áp đầu ra là 10mV/oC
Độ chính xác cao ở 25 C là 0.5 CTrở kháng đầu ra thấp 0.1 cho 1mA tải
Hình 4 1 Cảm biến LM35
Trang 26Hình 4 2 Sơ đồ nguyên lý LM35
3 Thiết kế sơ đồ nguyên lý bằng Altium Designer
Altium Designer trước kia có tên gọi quen thuộc là Protel DXP, là một trong những công cụ vẽ mạch điện tử mạnh nhất hiện nay Được phát triển bởi hãng Altium Limited Altiumdesigner là một phần mềm chuyên nghành được sử dụng trong thiết kế mạch điện tử
Altium Designer có một số đặc trưng sau:
- Giao diện thiết kế, quản lý và chỉnh sửa thân thiện, dễ dàng biên dịch, quản lý file, quản lý phiên bản cho các tài liệu thiết kế
- Hỗ trợ mạnh mẽ cho việc thiết kế tự động, đi dây tự động theo thuật toán tối ưu, phântích lắp ráp linh kiện Hỗ trợ việc tìm các giải pháp thiết kế hoặc chỉnh sửa mạch, linh kiện,netlist có sẵn từ trước theo các tham số mới
- Mở, xem và in các file thiết kế mạch dễ dàng với đầy đủ các thông tin linh kiện, netlist, dữ liệu bản vẽ, kích thước, số lượng…
Trang 27- Hệ thống các thư viện linh kiện phong phú, chi tiết và hoàn chỉnh bao gồm tất cả các linh kiện nhúng, số, tương tự…
- Đặt và sửa đối tượng trên các lớp cơ khí, định nghĩa các luật thiết kế, tùy chỉnh các lớp mạch in, chuyển từ schematic sang PCB, đặt vị trí linh kiện trên PCB
- Mô phỏng mạch PCB 3D, đem lại hình ảnh mạch điện trung thực trong không gian 3chiều
Trong phạm vi môn học, để thực hiện vẽ sơ đồ nguyên lý, thư viện chung được sử dụng để vẽ là thư viện: “syhaunguyen” và 2 thư viện mặc định sẵn có của phần mềm
Để mở một Project mới ta thực hiện: File >> New >> Project
Để tạo một bản vẽ sơ đồ nguyên lý, ta thực hiện: File >> New >> Schematic, ta
được một dao diện:
Hình 4 3 Giao diện Schematic của Altium
Để lấy linh kiện từ thư viện ta chọn mục Library ( thường ở thanh công cụ bên phải của cửa sổ) sau đó lấy linh kiện cần tìm
Sau khi chọn được linh kiện cần theo bảng 2.1 ở trên và thực hiện vẽ, sơ đồ nguyên
lý của mạch Kit như sau:
Trang 28Hình 4 4 Sơ đồ nguyên lý mô phỏng trên Altium
4 Mô phỏng mạch đo nhiệt độ trên Proteus
Proteus là phần mềm cho phép mô phỏng hoạt động của mạch điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như MCS-51,
PIC, AVR, …
Proteus là phần mềm mô phỏng mạch điện tử của Lancenter Electronics, mô
phỏng cho hầu hết các linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR, Motorola
Phần mềm bao gồm 2 chương trình: ISIS cho phép mô phỏng mạch và ARES dùng
để vẽ mạch in Proteus là công cụ mô phỏng cho các loại Vi Điều Khiển khá tốt, nó hỗ trợ các dòng VĐK PIC, 8051, PIC, dsPIC, AVR, HC11, MSP430, ARM7/LPC2000 các giao tiếp I2C, SPI, CAN, USB, Ethenet, ngoài ra còn mô phỏng các mạch số, mạch tương tự một cách hiệu quả Proteus là bộ công cụ chuyên về mô phỏng mạch điện tử