KHẢO sát, PHÂN TÍCH bài TOÁN điều KHIỂN NHIỆT độ lò ấp TRỨNG sử DỤNG STM32

52 21 0
KHẢO sát, PHÂN TÍCH bài TOÁN điều KHIỂN NHIỆT độ lò ấp TRỨNG sử DỤNG STM32

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC ĐÀ NẴNG ĐỒ ÁN TỐT NGHIỆP Đề tài : ĐIỀU KHIỂN ỔN ĐỊNH NHIỆT ĐỘ LÒ ẤP TRỨNG 1|Page 2019 MỤC LỤC MỤC LỤC DANH MỤC CÁC HÌNH ẢNH LỜI NÓI ĐẦU CHƯƠNG 1.1 TỔNG QUAN VI ĐIỀU KHIỂN STM32 Lịch sfí hình thành phát triển 1.1.1 Giới thiệu… 1.1.2 Cortex gì? 1.2 Đặc điểm ARM STM32… 1.2.1 Các giai đoạn phát triển STM32 1.2.2 Tính tinh vi 1.2.3 Sự an toàn 1.2.4 Tính bảo mật………………………………………………………… … 10 1.2.5 10 Phát triển phần mềm……………………………………………………… 1.2.6 Dòng performance Access STM32 10 1.3 Tổng quan ARM Cortex M3 STM32F103… 11 1.3.1 Các phiên cấu trúc ARM 12 1.3.2 Bộ xfí lý đơn vị xfí lý trung tâm Cortex… 12 1.3.3 Đơn vị xfí lý trung tâm Cortex… 12 1.3.4 Bộ xfí lý Cortex… 16 1.3.5 Các chế độ lượng 17 1.3.6 Kiểu đóng gói chip kiểu chân linh kiện 17 1.3.7 Nguồn cung câp điện… 18 1.3.8 Mạch reset 19 1.4 Kiến trúc hệ thống 19 1.5 Các ngoại vi 21 1.5.1 1.5.2 Các cổng I/O đa dụng… 21 Ngắt ngoại (EXTI) 21 1.5.3 ADC 21 CHƯƠNG KHẢO SÁT, PHÂN TÍCH BÀI TỐN ĐIỀU KHIỂN NHIỆT ĐỘ LỊ ẤP TRỨNG SỬ DỤNG STM32 23 2.1 Giới thiệu chung… 23 2.1.1 Phân tích cơng nghệ lị ấp trfíng… 23 2.1.2 Cấu tạo lị ấp trfíng 24 2.2 Yêu cầu hệ thống… 25 2.3 Phân tích khối chfíc hệ thống 26 2.3.1 Cảm biến nhiệt độ DS18B20… 26 2.3.1.1 Đặc điểm DS18B20………………………………… ……… 27 2.3.1.2 Lấy nhiệt độ với ds18b2……………………………….…………… 27 2.3.2 Modul khối nguồn 31 2.3.3 Khối hiển thị LCD HD44780 - 16×2 31 2.3.4 Khối xfí lý trung tâm KIT STM32F103c8t6 34 2.3.5 Khối chấp hành… 35 CHƯƠNG THIẾT KẾ, XÂY DỰNG HỆ THỐNG VÀ KẾT QUẢ THỰC NGHIỆM 36 3.1 Lưu đồ thuật toán 36 3.2 Sơ đồ nguyên lý hệ thống 37 3.3 Lập trình cho KIT STM32 sfí dụng phần mềm Keil C5 – ARM 38 3.4 Kết hệ thống… 44 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 46 TÀI LIỆU THAM KHẢO 47 DANH MỤC CÁC HÌNH ẢNH Hình 1.1 Chip ARM hệ thfí M1 Hình 1.2 Kiến trúc vi xfí lý ARM Cortex- M3 Hình 1.3 Biểu đồ giai đoạn phát triển STM32 Hình 1.4 Đặc điểm cuả bốn nhánh họ STM32 11 Hình 1.5 Các phiên cấu trúc lõi ARM 12 Hình 1.6 Kiến trúc đường ống ARM Cortex M3 13 Hình 1.7 Kiến trúc Load store ARM Cortex M3 13 Hình 1.8 Bản đồ nhớ tuyến tính 4Gbyte xfí lý Cortex M3 15 Hình 1.9 Các miền lượng bên STM32 18 Hình 1.10 Cách bố trí tụ chống nhiễu cho STM32 18 Hình 1.11 Đặc tính mạch reset bên STM32 19 Hình 1.12 Cấu trúc Bus 20 Hình 1.13 Vùng nhớ Flash STM32 20 Hình 1.14 Bộ ADC STM32 22 Hình 2.1 Sơ đồ tổng quát hệ thống 26 Hình 2.2 Hình dạng DS18B20 26 Hình 2.3 Sơ đồ nhớ DS18b20 29 Hình 2.4 Sơ đồ kết nối ds18b20 30 Hình 2.5 Mạch ổn áp nguồn LM2576 31 Hình 2.6 Hình ảnh LCD 32 Hình 2.7 Chfíc chân LCD 33 Hình 2.8 Kết nối LCD với vi điều khiển 33 Hình 2.9 Mạch mơ LCD phần mềm proteus 34 Hình 2.10 Sơ đồ chân KIT STM32F103C8T6 34 Hình 2.11 Thơng số kỹ thuật KIT STM32 35 Hình 2.12 Mạch điều khiển bóng đèn Motor 35 Hình 3.1 Lưu đồ thuật tốn 36 Hình 3.2 Sơ đồ nguyên lý hệ thống 37 Hình 3.3 KIT phát triển thực tế 45 LỜI NÓI ĐẦU Ngày nay, kinh tế nước ta đà phát triển mạnh mẽ, đời sống người dân ngày nâng cao Nhu cầu sfí dụng sản phẩm điện tfí thơng minh vào đời sống tăng cao Điều khiển tự động trở thành nhu cầu thiếu hệ thống công nghiệp Một yếu tố điều khiển nhiều hệ thống cơng nghiệp nhiệt độ Nhiệt độ đo, điều khiển theo nhu cầu sfí dụng ví dụ hệ thống nhiệt nồi hơi, lò ấp, lò sấy,… Các hệ thống đo điều khiển xuất nhiều thị trường với nhiều phương pháp đo điều khiển khác Mỗi phương pháp có ưu nhược điểm riêng Để giải vấn đề đó, với kiến thfíc học kĩ thuật điện, điện tfí, đo lường cảm biến tìm hiểu thêm kĩ thuật vi điều khiển, chúng em tính tốn đưa giải pháp điều khiển nhiệt độ fíng dụng vi xfí lí với mạch thiết kế đơn giản, dễ dàng thiết kế nâng cấp Vì em lựa chọn đề tài “điều khiển ổn định nhiệt độ lò ấp trfíng” Do thời gian thực kiến thfíc cịn hạn chế nên cịn nhiều sai sót q trình thực đề tài, chúng em mong nhận bảo,góp ý thầy bạn CHƯƠNG TỔNG QUAN VI ĐIỀU KHIỂN 1.1 Lịch sử hình thành phát triển 1.1.1 Giới thiệu ARM (Acorn RISC Machine) loại cấu trúc vi xfí lý 32-bit kiểu RISC (Reduced Instructions Set Computer - Máy tính với tập lệnh tối giản) sfí dụng rộng rãi hệ thống nhúng Do có đặc điểm tiết kiệm lượng nên vi xfí lí ARM ngày chiếm ưu sản phẩm thiết bị điện tfí di động Chip ARM bắt đầu thiết kế từ năm 1983 dự án phát triển cơng ty máy tính Acorn Nhóm thiết kế dẫn đầu Roger Wilson Steve Furber năm 1985 nhóm cho đời mẫu chip ARM hệ có tên ARM1 Hình CHƯƠNG TỔNG QUAN VI ĐIỀU KHIỂN Chip ARM hệ thfí M1 Năm 1986 nhóm hồn thành sản phẩm thực gọi tên ARM2, ARM2 có đường truyền liệu 32-bit, khơng gian địa 26-bit cho phép quản lý đến 64 Mbyte địa 16 ghi 32-bit Một ghi đóng vai trị đếm chương trình với bit cao bit thấp lưu giữ cờ trạng thái vi xfí lý Có thể nói ARM2 vi xfí lý 32-bit khả dụng đơn giản giới, gồm 30.000 transistor Sự đơn giản có nhờ ARM khơng có vi chương trình giống hầu hết CPU vào thời đó, khơng chfía cache Vì có cấu trúc đơn giản nên ARM có đặc điểm tiêu thụ công suất thấp đồng thời đảm bảo tính vượt trội so với dịng vi xfí lí khác Thế ARM3, ARM3 tạo với 4KB cache có chfíc cải thiện tốt hệ trước Vào năm cuối thập niên 80, hãng máy tính Apple Computer bắt đầu hợp tác với Acorn để phát triển hệ lõi ARM kết hợp tác đời hệ ARM6 Hiện ARM tiếp tục phát triển, cập nhật kiến trúc cách toàn diện Hiện phiên sfí dụng phổ biến phiên ARM7 và phát triển phiên ARM8 sfí dụng điện tốn xfí lý 64 bít Trong vài năm trở lại đây, xu hướng chủ yếu thiết kế với vi điều khiển sfí dụng chip ARM7 ARM9 vi điều khiển đa dụng Ngày nhà sản xuất IC đưa thị trường 240 dịng vi điều khiển sfí dụng lõi ARM Tập đồn ST Microelectronic vừa cho mắt dịng STM32, vi điều khiển dựa lõi ARM Cortex-M3 hệ hãng ARM thiết kế, lõi ARM Cortex-M3 cải tiến lõi ARM7 truyền thống Dòng STM32 thiết lập tiêu chuẩn hiệu suất, chi phí, khả đáp fíng fíng dụng tiêu thụ lượng thấp tính điều khiển thời gian thực khắt khe 1.1.2 Cortex gì? Dịng ARM Cortex xfí lí hệ đưa kiến trúc chuẩn cho nhu cầu đa dạng công nghệ Không giống chip ARM khác, dịng Cortex lõi xfí lí hoàn thiện, đưa chuẩn CPU kiến trúc hệ thống chung Dịng Cortex gồm phân nhánh chính: dịng A dùng cho fíng dụng cao cấp, dịng R dùng cho fíng dụng thời gian thực đầu đọc dịng M dùng cho fíng dụng vi điều khiển chi phí thấp STM32 đươc thiết kế dựa dòng Cortex-M3, dòng Cortex-M3 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ụ lượng thấp Cortex-M3 thiết kế dựa kiến trúc chi phí sản xuất thấp để cạnh tranh với dòng vi điều khiển bit 16 bit truyền thống Cortex-M3 thiết kế lõi chi phí thấp CPU 32 bit với hai chế độ hoạt động: Thread Handler, chế độ cấu hình với vùng stack riêng biệt nó, điều cho phép thiết kế phần mềm phfíc tạp hỗ trợ hệ điều hành thời gian thực Lõi Cortex có hỗ trợ timer 24 bit tự động nạp lại giá trị, cung cấp ngắt timer đặn cho nhận RTOS ( read time operating system) Các chíp ARM7 ARM9 có tập lệnh ( tập lệnh ARM 32 bit tập lệnh Thumb 16 bit ) dịng Cortex thiết kế hỗ trợ tập lệnh ARM Thumb-2, tập lệnh pha trộn tập lênh 32 bit tập lệnh 16 bit Tập lệnh Thumb-2 thiết kế đặc biệt dành cho chương trình C/C++, tfíc fíng dụng dựa Cortex hồn tồn viết ngơn ngữ C mà khơng cần đến chương trình khởi động viết bang Assembler ARM7 ARM9 Hình CHƯƠNG TỔNG QUAN VI ĐIỀU KHIỂN Kiến trúc vi xfí lý ARM Cortex- M3 1.2 Đặc điểm ARM STM32 1.2.1 Các giai đoạn phát triển STM32 Hiện STM32 chải qua giai đoạn: - Cortex-M0: Đây hệ STM32 bao gồm chip STM32F0 - Cortex-M3: Đây hệ thfí STM32 bao gồm chip STM32L1, STM32F1, STM32F2 - Cortex-M4: Đây hệ thfí STM32 bao gồm chip STM32F3, STM32F4 Hình CHƯƠNG TỔNG QUAN VI ĐIỀU KHIỂN Biểu đồ giai đoạn phát triển STM32 1.2.2 Tính tinh vi Thoạt nhìn ngoại vi STM32 giống vi điều khiển khác, hai chuyển đổi ADC, timer, I2C, SPI, CAN, USB RTC Tuy nhiên ngoại vi có nhiều đặc điểm thú vị Ví dụ ADC 12-bit có tích hợp cảm biến nhiệt độ để tự động hiệu chỉnh nhiệt độ thay đổi hỗ trợ nhiều mode chuyển đổi Mỗi timer có khối capture compare, khối timer liên kết với khối timer khác để tạo mảng timer tinh vi 1.2.3 Sự an tồn Ngày fíng dụng đại thường phải hoạt động môi trường khắt khe, địi hỏi tính an tồn cao, địi hỏi sfíc mạnh xfí lí nhiều thiết bị ngoại vi tinh vi Để đáp fíng yêu cầu khắt khe STM32 cung cấp số tính phần cfíng hỗ trợ tính tốt Chúng bao gồm phát điện áp thấp, hệ thống bảo vệ xung clock hai watchdogs Bộ watchdog cfía sổ Watchdog phải làm tươi khung thời gian xác định Nếu nhấn q sớm q muộn bị kích hoạt Bộ thfí hai Watchdog độc lập,có dao động bên ngồi tách biệt với xung nhịp hệ thống Hệ thống bảo vệ xung nhịp phát lỗi dao động bên (thường thạch anh) chuyển sang dùng dao động nội RC 8Mhz Hình KHẢO SÁT, PHÂN TÍCH BÀI TỐN ĐIỀU KHIỂN NHIỆT ĐỘ LỊ ẤP TRỨNG SỬ DỤNG STM32.26 Mạch điều khiển bóng đèn Motor CHƯƠNG THIẾT KẾ, XÂY DỰNG HỆ THỐNG VÀ KẾT QUẢ THỰC NGHIỆM 5.1 Lưu đồ thuật toán START LẤY DATA TỪ DS18B20 DATA TỪ STM 32F103C8T6 S TÁC ĐỘN G NÚT Đ S T< T_đ ặt Đ Cài nhiệt độ thời gian đảo Tắttrfng bóng đèn Bật bóng đèn HIỀN THỊ LÊN LCD S t< t_cài Đ Tắt đảo trfng Bật motor đảo trfng Hình THIẾT KẾ, XÂY DỰNG HỆ THỐNG VÀ KẾT QUẢ THỰC NGHIỆM.27 Lưu đồ thuật tốn 5.2 Sơ đồ ngun lý hệ thống Hình THIẾT KẾ, XÂY DỰNG HỆ THỐNG VÀ KẾT QUẢ THỰC NGHIỆM.28 Sơ đồ nguyên lý hệ thống 5.3 Lập trình cho KIT STM32 sử dụng phần mềm Keil C5 – ARM //////////////////định hướng vào giao tiếp chân #include "user_gpio.h" #if ( USER_GPIO_H !=16062014) #error "Include Sai #File user_gpio.h" #endif / ********************************************************************* ********** Noi Dung : Cau hinh GPIO Tham Bien : Khong Tra Ve : Khong ********************************************************************* ***********/ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); /********************************* PORTA *************************************/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); /* OUTPUT chan dau dieu khien relay*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4| GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); /* OUTPUT */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13| GPIO_Pin_14; /* GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); INPUT */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8| GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } void GPIO_SetState(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin,GPIOMode_TypeDef GPIO_Mode) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin; GPIO_InitStructure.GPIO_Mode = GPIO_Mode; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOx, &GPIO_InitStructure); } //////định nghĩa chân giao tiếp với thiết bị ngoại vi #ifndef #define MAIN_H MAIN_H 19062014 /********************************************************************* PRO_DATA - FOSC - PRO_DATA - FOSC -PRO_DATA - FOSC -PRO_DATA - FOSC PRO_DATA ********************************************************************* *********/ //#define PRO_DATA flash #include #include #include #include #include / ********************************************************************* ********* FW LIB - FW LIB - FW LIB - FW LIB - FW LIB - FW LIB - FW LIB - FW LIB - FW LIB ********************************************************************* *********/ #include "DEF_STM32.h" #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" / ********************************************************************* ********* USERSTM32 LIB - USERSTM32 LIB - USERSTM32 LIB - USERSTM32 LIB USERSTM32 LIB ********************************************************************* *********/ #include "user_delay.h" #include "user_gpio.h" / ********************************************************************* ********* USER LIB - USER LIB - USER LIB - USER LIB - USER LIB - USER LIB - USER LIB ********************************************************************* *********/ #include "lcd16x2.h" #include "ds18b20.h" / ********************************************************************* ********* DEFINE GPIO - DEFINE GPIO - DEFINE GPIO - DEFINE GPIO - DEFINE GPIO DEFINE GPIO ********************************************************************* *********/ /* GPIO A */ #define LCD16X2_D4 PORTA_4 #define LCD16X2_D5 PORTA_5 #define LCD16X2_D6 PORTA_6 #define LCD16X2_D7 PORTA_7 #define BONGDEN PORTA_1 #define KHAYDAO PORTA_2 /* GPIO B */ #define DS18B20_PIN_DQ PINB_9 #define DS18B20_PORT_DQ PORTB_9 #define #define #define #define #define LCD16X2_RS PORTB_12 LCD16X2_RW PORTB_13 LCD16X2_EN PORTB_14 BUTTON1 PINB_6 //INPUT->PIN|OUTPUT->PORT BUTTON2 PINB_7 #define #endif BUTTON3 PINB_8 /////////////main #include "main.h" #include "var.h" #if ( MAIN_H!=19062014) #error "Include Sai File Main.h" #endif float sTemp=37.7; //Nhiet cai int sSecond=15; // Thoi gian dao trung uint8_t str[16]; // Mang chua 16 ky tu man hinh LCD void setupMenu() { int iSet=0; //Setup che do { if(iSet==0) //Cai nhiet { LCD16X2_Gotoxy(0,0); LCD16X2_Puts((uint8_t*)" CAI NHIET DO "); sprintf((char*)str,"Temp: %2.2fC ",sTemp); LCD16X2_Gotoxy(0,1); LCD16X2_Puts(str); } if(iSet==1) //Cai thoi gian dao trung { LCD16X2_Gotoxy(0,0); LCD16X2_Puts((uint8_t*)" CAI THOI GIAN "); sprintf((char*)str,"Second: %02dS ",sSecond); LCD16X2_Gotoxy(0,1); LCD16X2_Puts(str); } if(BUTTON2==0)//Phim tang { while(BUTTON2==0); if(iSet==0) { sTemp+=0.1; if(sTemp>=40.0) { sTemp=30.0; } } if(iSet==1) { sSecond++; if(sSecond>=100) { sSecond=0; } } } if(BUTTON3==0)//Phim giam { while(BUTTON3==0); if(iSet==0) { sTemp-=0.1; if(sTemp

Ngày đăng: 09/12/2022, 17:55

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan