1. Trang chủ
  2. » Tất cả

báo cáo hoàn chỉnh vdk

32 5 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 3,4 MB

Nội dung

ĐẠI HỌC LẠC HỒNG KHOA CƠ ĐIỆN ĐIỆN TỬ - BÁO CÁO MÔN HỌC VI ĐIỀU KHIỂN Đề tài: THIẾT KẾ THI CƠNG MƠ HÌNH ĐIỀU KHIỂN VỊ TRÍ TRONG KHÔNG GIAN MỘT CHIỀU SVTH: HÀ TRUNG NGHĨA VÕ ĐIỀN TÍN HUỲNH XN TÂN TRẦN CƠNG MINH GVHD: Th.S NGÔ KIM LONG Đồng nai, 2021 MỤC LỤC Chương Mở đầu CHƯƠNG 1: MỞ ĐẦU 1.1 Lý chọn đề tài Ngày nay, với phát triển không ngừng khoa học kỹ thuật, đặc biệt thành công của cách mạng kĩ thuật 4.0 làm cho giới ngày thay đổi, sống trở nên văn minh, đại Cùng với phát triển tệ nạn xảy ngày tinh vi khó điều tra Trong đó, tệ nạn trộm cắp vấn đề đáng lo ngại, thế, việc sử dụng khố cửa điện tử giúp có giải pháp việc bảo quản tài sản Và từ nhu cầu thực tế trên, chúng em lựa chọn nghiên cứu khoá cửa tự động 1.2 Mục tiêu nghiên cứu Mục tiêu sản phẩm: - Di chuyển khoảng cách yêu cầu - Độ sai số 1mm 1.3 Phạm vi nghiên cứu - Phần cứng: Đấu nối thiết bị ngoại vi với vi xử lý trung tâm Xử lí vấn đề phần cứng phát sinh (Nhiễu) Phần mềm: Nghiên cứu, đưa giải pháp lập trình 1.4 Kết đạt - Thiết kế hệ thống điều khiển vị trí mặt phẳng Độ xác cao ổn định Trang Chương Cơ sở lý thuyết CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Phần cứng Với đề tài điều khiển vị trí này, phần cứng mà em sử dụng bao gồm: - Kit STM32F103C8T6 Blue Pill - Động bước size 42 step 1.8 driver - Thanh trượt - LCD - Button 2.1.1 Vi xử lí : STM32F103C6T8 Blue Pill Kit phát triển STM32F103C8T6 Blue Pill ARM Cortex-M3 loại sử dụng để nghiên cứu ARM nhiều có mức giá rẻ đồng thời nạp bootloader Blue Pill để giao tiếp lập trình với phần mềm Arduino cách dễ dàng, kit có chất lượng gia cơng tốt, độ bền cao Thông số KIT STM32F103C8T6 Blue Pill sau: - Điện áp hoạt động: 3.3V – 5V Tích hợp thạch anh ngoại 8Mhz Tích hợp cổng USB để nạp Bootloader sử dụng ngoại vi USB Led tích hợp vào chân PC13 Sử dụng chuẩn mạch nạp: SWD cho loại mạch nạp ST-link, J-link Ra chân đầy đủ tất GPIO giao tiếp: CAN, I2C, SPI, UART, USB, Tích hợp sẵn thạnh anh 32Khz cho ứng dụng RTC Hình 2.1: Sơ đồ chân STM32 Trang Hình 2.2: Kit STM32F103C8T6 Blue Pill Mạch Nạp STM8 STM32 ST-Link V2 Hình 2.3: Mạch Nạp ST-Link V2 Mạch nạp STM8 STM32 ST-Link V2 sử dụng để nạp chương trình debug cho Vi điều khiển STM32 STM8 ST, mạch nạp có kích thước nhỏ gọn, chi phí thấp, độ bền cao Hỗ trợ đầy đủ STM8 giao diện SWIM nạp gỡ lỗi (Hỗ trợ môi trường phát triển phổ biến IAR, STVD tương đương); Phiên phần mềm hỗ trợ sau: ST-LINK Utility trở lên - STVD 4.2.1 trở lên - STVP 3.2.3 trở lên - IAR EWARM V6.20 trở lên - IAR EWSTM8 v1.30 trở lên Keil RVMDK V4.21 trở lên Kết nối chân từ mạch nạp ST-LINK V2 với linh kiện điện tử STM32 theo thứ tự sau: - RST–NRST - SWCLK — TCK - SWDIO — TMS - GND — GND - 3.3V — 3.3V Đối với bạn làm việc với linh kiện điện tử STM8 Kết nối chân từ mạch nạp STLINK V2 với STM8 theo thứ tự sau: - RST–NRST - SWIM– SWIM - GND — GND - 3.3V — 3.3V 2.1.2 Động bước driver TB6600 Động bước hay gọi Step Motor loại động chạy điện có nguyên lý ứng dụng khác biệt với đa số động điện thông thường Chúng thực chất động đồng dùng để biến đổi tín hiệu điều khiển dạng xung điện rời rạc thành chuyển động góc quay chuyển động rơto có khả cố định roto vào vị trí cần thiết Với yêu cầu điều khiển vị trí đề tài ta chọn động Stepper NEMA 17 Thơng số động NEMA-17 - Bước góc: 1,8 độ Số bước : 200 Số pha: Loại Đơn cực Điện áp định mức: 12v Momen giữ 0.26Nm ( I = 1A) Sai số: +/- 5% Nhiệt độ làm việc: -50 độ - 20 độ - Công suất 14W Điện áp : 3.96V Dịng điện: 0.9A Kích thước trục: 5mm Momen xoắn; 0.34NM Kích thước” 42 x 42 x 40 Hình 2.4: Stepper motor Driver TB6600 Mạch điều khiển động bước TB6600 ( driver stepper motor TB6600) sử dụng IC TB6600HQ/HG, dùng cho loại động bước: 42/57/86 pha dây có dịng tải 4A/42VDC Thông số kỹ thuật - Nguồn đầu vào 9V – 42V Dòng cấp tối đa 4A Ngõ vào có cách ly quang, tốc độ cao Có tích hợp đo q dịng q áp Cân nặng: 200G Kích thước: 96 * 71 * 37mm Hình 2.5: Hình ảnh thực tế driver TB6600 Cài đặt ghép nối: - DC+: Nối với nguồn điện từ – 40VDC DC- : Điện áp (-) âm nguồn A+ A -: Nối vào cặp cuộn dây động bước B+ B- : Nối với cặp cuộn dây cịn lại động PUL+: Tín hiệu cấp xung điều khiển tốc độ (+5V) PUL-: Tín hiệu cấp xung điều khiển tốc độ (-) DIR+: Tín hiệu cấp xung đảo chiều (+5V) DIR-: Tín hiệu cấp xung đảo chiều (-) ENA+ ENA -: cấp tín hiệu cho cặp động khơng có lực momen giữ quay Có thể đấu tín hiệu dương (+) chung tín hiệu âm (-) chung Cài đặt cường độ dòng điện: I(A) SW4 SW5 SW6 4.0 1 1 3.0 1 2.5 0 2.0 1 1.5 1.0 0 0.5 0 3.5 Sơ đồ kết nối: Hình 2.6: Cách kết nối driver với động Step Motor Cài đặt vi bước cho driver: Micro Pulse/rev SW1 SW2 SW3 OFF 0 0 200 0 1/2A 400 1/2B 400 1 1/4 800 0 1/8 1600 1 1/16 3200 1 OFF 1 2.1.3 Nút nhấn Sử dụng nút nhấn DS-213 trạng thái, không giữ để thiết lập điều khiển động bước Thông số kỹ thuật: - Lỗ lắp ốc: 10mm - Phi nút bấm: 8mm - Số chân: chân - Công suất làm việc: 125VAC 2A - Tuổi thọ: 20.0000 Lần - Trọng lượng: 2g Hình 2.7: Nút nhấn Chương Giải tốn CHƯƠNG 4: GIẢI QUYẾT BÀI TỐN 4.1 Sơ đồ giải thuật Hình 4.1: Sơ đồ giải thuật Trang 18 Hình 4.2: Sơ đồ giải thuật chi tiết 4.2 Các bước thực việc cấu hình code: - Đầu tiên, ta mở phần mềm STM32CubeMxleen, mở Project mới, chọn dịng chip STM32F103C8 Hình 4.3: Phần mềm CubeMx - Tiếp theo ta cấu hình cổng IN/OUT, I2C, RCC: Hình 4.4: Phần mềm CubeMx - Sau đặt tên dự án, chọn thư mục lưu chọn phiên KeilC, cuối nhấn Generate Code để sinh code: Hình 4.5: Thơng tin dự án sinh code Link dowload thư viện https://drive.google.com/file/d/1z_3SI_n7WY84ZkiXksL9nT7DrRjZ1lfO/view?usp=sharing - Sau tạo code xong ta mở phần mềm KeilC add thư viện “i2clcd.h” Hình 4.6: Tiến hành thêm thư viện i2c-lcd.h - Tiến hành cài đặt cho driver TB6600: Micro Pulse/rev SW1 SW2 SW3 1/4 800 0 4.3 Code chương trình: CODE #include "main.h" #include "i2c-lcd.h" #include “stdio.h” Giải thích Khai báo thư viện vi điều khiển dùng Khai báo thư viện dùng cho LCD I2C uint16_t m, khoangcach = 0, xungxuatra = 0; char kc[3]; -Khai báo biến đầu vào uint16_t pulsePerRoundX = 400; uint16_t distancePerRoundX = 4; I2C_HandleTypeDef hi2c1; - khai báo vi bước Stepper - Bước mm void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_I2C1_Init(void); void xuatLCD_setup(void) { lcd_clear_display(); lcd_goto_XY(0,2); lcd_send_string("**NHOM14**"); lcd_goto_XY(1,0); lcd_send_string("Don Vi (mm)"); sprintf(kc, "%03d", khoangcach); lcd_goto_XY(1,17); lcd_send_string(kc); } - Hàm Xuất tín hiệu hình LCD nhấn Nút MODE - Hàm sử dụng để hiển thị thông số cài đặt khoảng cách lên hình LCD void xuatXung(void) - Hàm chuyển từ khoảng cách nhập { đầu vào sang tín hiệu xung xuất xungxuatra = khoangcach * driver để điều khiển động pulsePerRoundX/distancePerRoundX ; bước HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1); //DIR STEPP QUAY THUAN for(int16_t i = 0; i 20) { m = 0; khoangcach++; if(khoangcach >500) { khoangcach = 0; } xuatLCD_setup(); } } } // nhan nut start if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == 1) { xuatXung(); } // NHAN NUT RESET if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2) == 1) { reset_Stepper(); xuatLCD_setup(); } } } /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) - Hàm đọc nút nhấn - đọc tín hiệu nút mode để điều chỉnh khoảng cách muốn di chuyển - Nút Start để bắt đầu cho động hoạt động - nhấn rút reset để động vị trí ban đầu cho phép nhập khoảng cách để di chuyển lại { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /** Initializes the CPU, AHB and APB busses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK| RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1| RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; ... #include “stdio.h” Giải thích Khai báo thư viện vi điều khiển dùng Khai báo thư viện dùng cho LCD I2C uint16_t m, khoangcach = 0, xungxuatra = 0; char kc[3]; -Khai báo biến đầu vào uint16_t pulsePerRoundX... Giao tiếp: I2C Địa mặc định: 0X27 (có thể điều chỉnh ngắn mạch chân A0/A1/A2) Tích hợp Jump chốt để bật/tắt đèn LCD Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD Hình 2.11: Module I2C... Công suất: 60W - Điện áp đầu ra: 12V - Dòng điện tối đa: 10A - Điện áp điều chỉnh: ± 10% - Hiệu suất ≥ 85% - Điều chỉnh điện áp (Đầy tải) ≤ 0.3% - Bảo vệ tải 105% —- 150% công suất định mức,

Ngày đăng: 20/02/2022, 18:18

w