Qua môn học hệ thống nhúng, chúng em đã hiểu thêm về các hệ thống nhúng trong thực tế, về đặc điểm, tính ưu việt cũng như tính ứng dụng của chúng đối với con người.. Với mong muốn làm rõ
Trang 1GVHD: Th.S Lê Minh Thành
SVTH: Trần Minh Luân MSSV: 14141180
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ
TP HỒ CHÍ MINH- T1/2018
ĐỀ TÀI:
ĐO NHIỆT ĐỘ DÙNG LM35 HIỂN THỊ LCD
VỚI KIT STM32F4
BÁO CÁO THỰC TẬP HỆ THỐNG NHÚNG
Trang 2MỤC LỤC
Trang 3Chương 1: GIỚI THIỆU ĐỀ TÀI
1 GIỚI THIỆU ĐỀ TÀI.
Ngày nay, ứng dụng hệ thống nhúng rất đa dạng và trở nên phổ biến, đóng vai trò quan trọng trong đời sống con người Trong cuộc sống hằng ngày có rất nhiều sản phẩm nhúng như: lò vi sóng, nồi cơm điện, điều hòa, điện thoại di động,
ô tô, máy bay, tàu thủy, cơ cấu chấp hành thông minh, robot v.v ta có thể thấy hiện nay hệ thống nhúng có mặt ở mọi lúc mọi nơi trong cuộc sống của chúng ta
Qua môn học hệ thống nhúng, chúng em đã hiểu thêm về các hệ thống nhúng trong thực tế, về đặc điểm, tính ưu việt cũng như tính ứng dụng của chúng đối với con người Với mong muốn làm rõ các kiến thức đã học và giới thiệu các
ứng dụng cơ bản của hệ thống nhúng, nhóm chúng em quyết định chọn đề tài: “Đo
nhiệt độ, dùng LM35 hiển thị LCD với kit STM32F4” để nghiên cứu
2 MỤC TIÊU ĐỀ TÀI.
Lựa chọn được các module ngoại vi cần sử dụng, nắm rõ các thông số kỹ thuật
Tìm hiểu các chức năng cơ bản về KIT STM32F4
Viết chương trình điều khiển hệ thống
Trang 4Chương 2: THIẾT KẾ PHẦN CỨNG 2.1 STM32F4
Hình 2-1:STM32F401
Dòng ARM Cortex KIT STM32F4 DISCOVERY là một bộ xử lí thế hệ mới đưa ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ Không giống như các chip ARM khác, dòng Cortex là một lõi xử lí hoàn thiện, dựa ra một chuẩn CPU và kiến trúc hệ thống chung Dòng Cortex KIT STM32F4 DISCOVERY gồm
có 3 phân nhánh chính: dòng A dành cho các ứng dụng cao cấp, dòng R dành cho các ứng dụng thời gian thực như các đầu đọc và dòng M dành cho các ứng dụng vi điều khiển và chi phí thấp STM32 được thiết kế dựa trên dòng Cortex-M3, dòng Cortex-M3 được thiết kế đặc biệt để nâng cao hiệu suất hệ thống, kết hợp với tiêu thụ năng luợng thấp, CortexM3 được thiết kế trên nền kiến trúc mới, do đó chi phí sản xuất đủ thấp để cạnh tranh với các dòng vi điều khiển 8 và 16-bit truyền thống Các chip ARM7 và ARM9 được các nhà sản xuất bán dẫn thiết kế với giải pháp riêng của mình, đặc biệt là phần xử lí các các ngắt đặc biệt (exception) và các ngắt thông thường (interrupt) Cortex-M3 đưa ra một lõi vi điều khiển chuẩn nhằm cung cấp phần tổng quát, quan trọng nhất của một vi điều khiển, kiến trúc cơ bản của SMT32 - ARM Cortex M3 bao gồm hệ thống ngắt (interrupt system), SysTick timer (đuợc thiết kế cho hệ điều hành thời gian thực), hệ thống kiểm lỗi (debug system) và memory map Không gian địa chỉ 4Gbyte của Cortex-M3 đuợc chia thành các vùng cho mã chương trình, SRAM, ngoại vi và ngoại vi hệ thống Không
Trang 5giống với ARM7 được thiết kế theo kiến trúc Von Neumann (bộ nhớ chương trình
và bộ nhớ dữ liệu chung với nhau), Cortex-M3 đuợc thiết kế dựa theo kiến trúc Harvard (bộ nhớ chương trình và bộ nhớ dữ liệu tách biệt với nhau), và có nhiều bus cho phép thực hiện các thao tác song song với nhau, do đó làm tăng hiệu suất của chip Không giống với các kiến trúc ARM truớc đó, dòng Cortex cho phép truy cập dữ liệu không xếp hàng (unaligned data, vì chip ARM là kiến trúc 32bit, do đó tất cả các dữ liệu hoặc mã chương trình đều được sắp sếp khít với vùng bộ nhớ là bội số của 4byte) Ðặc điểm này cho phép sử dụng hiệu quả SRAM nội Dòng Cortex còn hỗ trợ việc đặt và xoá các bit bên trong hai vùng 1 Mbyte của bộ nhớ bằng phương pháp gọi là bit banding Ðặc điểm này cho phép truy cập hiệu quả tới các thanh ghi ngoại vi và các cờ được dùng trên bộ nhớ SRAM mà không cần một
bộ xử lí luận lí (Boolean processor)
Thông số kỹ thuật
• Trên bảng ST-LINK / V2 với chuyển đổi chế độ lựa chọn để sử dụng bộ như một ST-LINK / V2 độc lập (có đầu nối SWD để lập trình và gỡ lỗi)
• Cung cấp điện cho ban: thông qua bus USB hoặc từ nguồn điện áp 5 V bên ngoà.i
• Nguồn ứng dụng bên ngoài: 3 V và 5 V
• L3GD20: cảm biến chuyển động ST MEMS cảm biến đầu ra 3 trục
• LSM303DLHC: Hệ thống ST MEMS trong hệ thống bao gồm bộ cảm biến gia tốc tuyến tính kỹ thuật số 3D và cảm biến từ tính số 3 chiều
• MP45DT02: Bộ cảm biến âm thanh ST MEMS, micrô kỹ thuật số omnidirectional
• CS43L22, âm thanh DAC với trình điều khiển loa lớp D tích hợp
• Tám đèn LED:
LED1 (đỏ / xanh) để truyền dữ liệu thông qua cổng USB
LED2 (màu đỏ) cho nguồn 3.3 V
Bốn đèn LED người dùng: LED3 (cam), LED4 (xanh lá cây), LED5 (đỏ)
và LED6 (màu xanh)
• Hai đèn LED USB OTG: LED7 (xanh) VBus và LED8 (màu đỏ) trên dòng điện
Trang 6• Hai nút nhấn (nút nhấn cho người sử dụng và nút RESET).
• USB OTG với đầu nối vi-AB
• Tiêu đề mở rộng cho I / O LQFP100 cho một kết nối nhanh chóng với các mẫu thử nghiệm và một thăm dò dễ dàng
Phần mềm tự do toàn diện bao gồm nhiều ví dụ, một phần của gói STM32CubeF4 hoặc STSW-STM32136 cho việc sử dụng thư viện tiêu chuẩn kế thừa
Bảng 1: Thông số cơ bản của dòng STM32F4
Dòng
STM32F4
FCPU(MHz) Flash(kb) RAM(kb) Small
package(mm)
Run curren t
Stop curren t STM32F401 84 128 to 152 Up to 96 Down to 3x3 Down
to 128
Down
to 10 STM32F410 100 64 to 128 32 Down to
2.553x2.579
Down
to 89
Down
to 6 STM32F411 100 256 to 512 128 Down to
3.034x3.22
Down
to 100
Down
to 12 STM32F412 100 512 to
1024
256 Down to
3.653x3.651
Down
to 112
Down
to 18 STM32F413 100 1024 to
1536
320 Down to
3.951x4.039
Down
to 115
Down
to 18
2.2 LCD 16X2:
Trong quá trình hoạt động, để hiển thị nhiệt độ thì có nhiều thiết bị như LCD, Led ma trận Trong bài báo cáo này, nhóm đã chọn LCD làm nhiệm vụ hiển thị
LCD: Có nhiều loại LCD nhưng thị trường hiện nay phổ biến với 2 loại nhỏ: LCD20X4, LCD16X2 Ở đây, nhóm sử LCD 16x2 để hiển thị đo nhiệt độ
Trang 7Hình 2.2 LCD 16x2
• Chân cấp nguồn: VSS, VDD, Vo (điều khiển độ tương phản)
• Chân RS: Chọn thanh ghi
• Chân RW: Chân chọn chế độ đọc ghi
• Chân E: chân cho phép chốt xung kí tự
• D0-D7: chân dữ liệu
• A, K: chân điều khiển đèn nền
Chính vì những thông số trên nhóm đã chọn LCD 16x2 để thực hiện nhiệm vụ hiển thị trong mạch này Chỉ cần 1 LCD là có thể hiển thị được các thông tin cần thiết
Chính vì những thông số trên nhóm đã chọn LCD 16x2 để thực hiện nhiệm vụ hiển thị trong mạch này Chỉ cần 1 LCD là có thể hiển thị được các thông tin cần thiết
Dùng biến trở 5K để điều chỉnh độ sáng cho LCD
RS: Thiết lập dữ liệu truyền là dữ liệu kí tự hay lệnh Khi gữi lệnh hay cần đọc trạng thái của LCD chân này được kéo mức thấp Chân này được kéo mức cao khi truyền hay đọc dữ liệu kí tự từ LCD
R/W: Điều khiển hướng dữ liệu được truyền, khi ở mức thấp dữ liệu sẽ được truyền tới LCD Ngược lại, khi cần đọc dữ liệu từ LCD chân này sẽ được kéo lên mức cao
E: Dữ liệu chỉ được truyền khi có sự chuyển mức từ cao sang thấp trên chân này
D0-D7: là các chân truyền dữ liệu, có 2 kiểu truyền dữ liệu 8bits (D0-D7) và 4bits Nếu dùng 8bits sẽ mất 8 chân nên tiết kiệm người ta thường dùng chế
độ 4bits (D4-D7) nhưng phải truyền 2 lần
Sơ đồ nối chân LCD với STM32F411VETx:
Trang 8LCD STM32F411VETx
V0 Chân giữa của biến trở 5k
R/W GND ( để chi ghi vào chip, không đọc trên chip)
2.3 LM35:
Hình 2.3: LM35
Hiện nay, việc xác định nhiệt độ thì cần có cảm biến Các dữ liệu thu thập được từ cảm biến sẽ được bộ ADC của vi điều khiển xử lí Trên thị trường có nhiều loại cảm biến nhiệt độ như DS18B20, LM35, LM335…
Với yêu cầu của hệ thống đo nhiệt độ ngoài trời dao động từ hơn 20 độ đến dưới 50 độ nên các loại cảm biến trên đều đáp ứng được yêu cầu Và với cảm biến LM35 ta sẽ có độ chính xác tốt (± 1OC), tầm đo rộng từ -55-> 150OC, độ nhạy 10mV/OC
Sau khi tìm hiểu, nhóm đã quyết định chọn LM35 để đo nhiệt độ Ngoài các đặc tính được nêu ở trên LM35 còn có những đặc tính sau:
• Hoạt động khi cung cấp nguồn từ 4->30V
• Có tổng trở ngõ ra thấp 0,1Ohm cho 1mA tải
Trang 9• Độ chính xác cao ở 25OC là 0.5OC.
• Nhiệt độ ở -55OC thì áp ra là -550mV
• Nhiệt độ ở 25OC thì áp ra là 250mV
• Nhiệt độ ở 150OC thì áp ra là 1500mV
Sơ đồ nối chân LM35 với STM32F411VETx:
LM35 STM32F411VETx
SIGNAL PA0 ( adc 10bit)
Trang 10Chương 3: THIẾT KẾ PHẦN MỀM 3.1 CODE ĐIỀU KHIỂN
#include "main.h"
#include "stm32f4xx_hal.h"
#include "lcd_txt.h"
uint16_t adc_value, nhietdo=0;
char buffer0[16];
ADC_HandleTypeDef hadc1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_ADC1_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC1_Init();
HAL_ADC_Start_IT(&hadc1);
lcd_init();
lcd_puts(0,0,(int8_t*)"**luan_sang**");
lcd_puts(1,0,(int8_t*)"NHIET DO: ");
lcd_puts(1,12,(int8_t*)"*");
lcd_puts(1,13,(int8_t*)"C");
while (1)
{
Trang 11sprintf(buffer0,"%d", nhietdo);
lcd_puts(1,9,(int8_t*)buffer0);
}
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
if(hadc ->Instance == hadc1.Instance)
{
adc_value = HAL_ADC_GetValue(&hadc1);
nhietdo = adc_value/3.1;
}
}
Trang 12Chương 4: KẾT QUẢ THỰC HIỆN
Sau khi thực hiện, nhóm đã hoàn thành yêu cầu đặt ra là đọc và hiển thị nhiệt độ trên LCD 16x2
Hình 4.1: Kết quả sau khi đọc và hiển thị nhiệt độ trên LCD16x2
Chương 5:
Trang 13TÀI LIỆU THAM KHẢO
[1] Giao tiếp với ARM, https://vi.scribd.com/document/115119163/giao-ti
%E1%BA%BFp-v%E1%BB%9Bi-ARM, Ngày truy cập: 29/12/2017
[2] Cảm biến nhiệt độ LM35, http://linhkienrtc.com/san-pham-p465595/cam-bien-nhiet-do-lm35.html, Ngày truy cập: 25/12/2017