Trong học phần này, nội dung công việc sinh viên cần thực hiện gồm: làm quen với côngcụ 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 số ứng dụng cơ bản với các vi mạ
Trang 2Trong học phần này, nội dung công việc sinh viên cần thực hiện gồm: làm quen với 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 số ứ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 chúng em đã đượ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
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Ế
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ínhiệ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ầncứ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ôngviê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ừ đớngiả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 xung
Nhiề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 đồ án nà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
STT Tên linh kiện Chức năng
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
6 Nút ấn RESET Khởi động lại 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
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)
//Khai bao bien Temp luu trang thai cua PORTC
unsigned char temp= PORTC;
//Cac chan vi dieu khien ung voi thanh LED
case 0: temp |= 0B10000000; break;
case 1: temp |= 0B11100011; break;
case 2: temp |= 0B01000100; break;
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
case 3:PORTD = 0b11001111; break;
Trang 21case 4:PORTD = 0b00111111; break;
//push_button = 0, tat tat ca cac LED default: PORTD = 0xFF;
} }
chan tuong ung cua VDK duov treo len muc logic 1 nho cac tro keo co san,
Phim 1: noi PB0,phim 2-Pb1,phim 3-Pb2,phim 4-Pb3
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 cấp
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ầu câ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 C
Trở 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 Altium designer 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ân tí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 3 chiề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ủacử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ầnthiế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ử