2021-11-18 15:18:24 索煒達(dá)電子 1161
項(xiàng)目編號(hào):L71
文件大小:32M
源碼說(shuō)明:帶中文注釋
開(kāi)發(fā)環(huán)境:LabVIEW
簡(jiǎn)要概述:
基于LabVIEW的直流有刷電機(jī)PID調(diào)試及控制助手設(shè)計(jì):使用LabVIEW開(kāi)發(fā)環(huán)境和VISA串口、單片機(jī)電機(jī)控制系統(tǒng)
實(shí)現(xiàn)
(1)上位機(jī)對(duì)下位機(jī)PID控制器PID參數(shù)的調(diào)整
(2)下位機(jī)系統(tǒng)被控量波形的顯示
(3)上位機(jī)對(duì)下位機(jī)電機(jī)的轉(zhuǎn)速和位置的控制。
目 錄
1 緒論 1
1.1 研究的目的與意義 1
1.2 PID控制算法介紹 1
1.3 直流有刷電機(jī)調(diào)速原理 3
1.4 系統(tǒng)指標(biāo) 3
2 下位機(jī)設(shè)計(jì) 4
2.1 總體方案 4
2.2 下位機(jī)硬件設(shè)計(jì) 4
2.2.1 STM32最小系統(tǒng)的設(shè)計(jì) 4
2.2.2 L298N電機(jī)驅(qū)動(dòng)模塊 5
2.2.3 電機(jī)及編碼器 6
2.2.4 各模塊間的連接 6
2.3 下位機(jī)軟件設(shè)計(jì) 7
2.3.1 電機(jī)驅(qū)動(dòng) 8
2.3.2 編碼器驅(qū)動(dòng) 9
2.3.3 PID算法 11
2.3.4 兩種PID控制算法間的切換 12
3 通信協(xié)議設(shè)計(jì) 14
3.1 指令包格式 14
3.2 指令匯總 14
3.3 指令詳解 15
3.3 下位機(jī)通信協(xié)議程序?qū)崿F(xiàn) 17
4 上位機(jī)設(shè)計(jì) 22
4.1 整體方案設(shè)計(jì) 22
4.2 前面板設(shè)計(jì) 22
4.3 后面板程序設(shè)計(jì) 24
4.3.1 主VI的設(shè)計(jì) 24
4.3.2 獲取指令字節(jié)子VI 28
4.3.3 獲取實(shí)際值子VI 28
4.3.4 獲取PID參數(shù)子VI 29
4.3.5 數(shù)據(jù)打包子VI 30
5 系統(tǒng)調(diào)試 32
5.1 硬件調(diào)試 32
5.1.1 硬件連接 32
5.1.2 程序編譯下載 32
5.2 聯(lián)合調(diào)試 32
6 結(jié)論與展望 35
7 參考文獻(xiàn) 36
8 附錄 37
設(shè)計(jì)報(bào)告:
系統(tǒng)調(diào)試
硬件連接
將單片機(jī)最小系統(tǒng)、L298N電機(jī)驅(qū)動(dòng)模塊、電機(jī)及電源按第二章2.2節(jié)下位機(jī)硬件設(shè)計(jì)中的各模塊連接表用線連接起來(lái),連接后如圖
程序編譯下載
用Keil軟件編寫下位機(jī)STM32程序,編譯沒(méi)有錯(cuò)誤后用串口下載軟件將編譯生成的.hex文件下載到STM32單片機(jī)。
聯(lián)合調(diào)試
通過(guò)USB數(shù)據(jù)線將STM32最小系統(tǒng)板與電腦相連,打開(kāi)LabVIEW主VI并運(yùn)行,端口選擇COM5、波特率選擇115200、奇偶校驗(yàn)選擇無(wú)、數(shù)據(jù)為選8位、停止位1位。點(diǎn)擊打開(kāi)串口按鈕即可同下位機(jī)通信。經(jīng)過(guò)測(cè)試上下位機(jī)之間的通信均正常,上位機(jī)可以完整的解析下位機(jī)發(fā)送來(lái)的數(shù)據(jù),下位機(jī)也可正確的執(zhí)行上位機(jī)發(fā)送來(lái)的控制指令,整個(gè)系統(tǒng)可正常運(yùn)行。如圖5-2所示。系統(tǒng)設(shè)置為位置控制模式,目標(biāo)值設(shè)置為5000,發(fā)送目標(biāo)值后,電機(jī)開(kāi)始轉(zhuǎn)動(dòng)最終實(shí)際值達(dá)到4997電機(jī)停止。
改變PID參數(shù)點(diǎn)擊發(fā)送PID,重新設(shè)置目標(biāo)值點(diǎn)擊發(fā)送目標(biāo)值。結(jié)果
目錄│文件列表:
└ LabVIEW
│ PID轉(zhuǎn)換.vi
│ 發(fā)送數(shù)據(jù)打包-八位校驗(yàn)和.vi
│ 控件 2.ctl
│ 電機(jī)控制.vi
│ 電機(jī)控制調(diào)試.aliases
│ 電機(jī)控制調(diào)試.lvlps
│ 電機(jī)控制調(diào)試.lvproj
│ 編碼盤.ctl
│ 獲取PID參數(shù).vi
│ 獲取實(shí)際值.vi
│ 獲取指令字節(jié).vi
│ 轉(zhuǎn)盤.ctl
│ 通訊協(xié)議解析.vi
│ 通訊格式.txt
│ 通訊格式.txt.bak
├ exe
│ │ 電機(jī)調(diào)試控制.aliases
│ │ 電機(jī)調(diào)試控制.exe
│ └ 電機(jī)調(diào)試控制.ini
├ 下位機(jī)
│ ├ Doc
│ │ └ readme.txt
│ ├ Libraries
│ │ ├ CMSIS
│ │ │ │ ARM.CMSIS.pdsc
│ │ │ ├ Device
│ │ │ │ └ ST
│ │ │ │ └ STM32F1xx
│ │ │ │ ├ Include
│ │ │ │ │ │ stm32f103x6.h
│ │ │ │ │ │ stm32f103xb.h
│ │ │ │ │ │ stm32f103xe.h
│ │ │ │ │ │ stm32f103xg.h
│ │ │ │ │ │ stm32f1xx.h
│ │ │ │ │ └ system_stm32f1xx.h
│ │ │ │ └ Source
│ │ │ │ └ Templates
│ │ │ │ │ system_stm32f1xx.c
│ │ │ │ └ arm
│ │ │ │ │ startup_stm32f103xb.s
│ │ │ │ └ startup_stm32f103xe.s
│ │ │ └ Include
│ │ │ │ cmsis_armcc.h
│ │ │ │ cmsis_armclang.h
│ │ │ │ cmsis_compiler.h
│ │ │ │ cmsis_gcc.h
│ │ │ │ cmsis_iccarm.h
│ │ │ │ cmsis_version.h
│ │ │ │ core_armv8mbl.h
│ │ │ │ core_armv8mml.h
│ │ │ │ core_cm0.h
│ │ │ │ core_cm0plus.h
│ │ │ │ core_cm1.h
│ │ │ │ core_cm23.h
│ │ │ │ core_cm3.h
│ │ │ │ core_cm33.h
│ │ │ │ core_cm4.h
│ │ │ │ core_cm7.h
│ │ │ │ core_sc000.h
│ │ │ │ core_sc300.h
│ │ │ │ mpu_armv7.h
│ │ │ │ mpu_armv8.h
│ │ │ └ tz_context.h
│ │ └ STM32F1xx_HAL_Driver
│ │ ├ Inc
│ │ │ │ stm32f1xx_hal.h
│ │ │ │ stm32f1xx_hal_adc.h
│ │ │ │ stm32f1xx_hal_adc_ex.h
│ │ │ │ stm32f1xx_hal_can.h
│ │ │ │ stm32f1xx_hal_cec.h
│ │ │ │ stm32f1xx_hal_conf_template.h
│ │ │ │ stm32f1xx_hal_cortex.h
│ │ │ │ stm32f1xx_hal_crc.h
│ │ │ │ stm32f1xx_hal_dac.h
│ │ │ │ stm32f1xx_hal_dac_ex.h
│ │ │ │ stm32f1xx_hal_def.h
│ │ │ │ stm32f1xx_hal_dma.h
│ │ │ │ stm32f1xx_hal_dma_ex.h
│ │ │ │ stm32f1xx_hal_eth.h
│ │ │ │ stm32f1xx_hal_exti.h
│ │ │ │ stm32f1xx_hal_flash.h
│ │ │ │ stm32f1xx_hal_flash_ex.h
│ │ │ │ stm32f1xx_hal_gpio.h
│ │ │ │ stm32f1xx_hal_gpio_ex.h
│ │ │ │ stm32f1xx_hal_hcd.h
│ │ │ │ stm32f1xx_hal_i2c.h
│ │ │ │ stm32f1xx_hal_i2s.h
│ │ │ │ stm32f1xx_hal_irda.h
│ │ │ │ stm32f1xx_hal_iwdg.h
│ │ │ │ stm32f1xx_hal_mmc.h
│ │ │ │ stm32f1xx_hal_nand.h
│ │ │ │ stm32f1xx_hal_nor.h
│ │ │ │ stm32f1xx_hal_pccard.h
│ │ │ │ stm32f1xx_hal_pcd.h
│ │ │ │ stm32f1xx_hal_pcd_ex.h
│ │ │ │ stm32f1xx_hal_pwr.h
│ │ │ │ stm32f1xx_hal_rcc.h
│ │ │ │ stm32f1xx_hal_rcc_ex.h
│ │ │ │ stm32f1xx_hal_rtc.h
│ │ │ │ stm32f1xx_hal_rtc_ex.h
│ │ │ │ stm32f1xx_hal_sd.h
│ │ │ │ stm32f1xx_hal_smartcard.h
│ │ │ │ stm32f1xx_hal_spi.h
│ │ │ │ stm32f1xx_hal_sram.h
│ │ │ │ stm32f1xx_hal_tim.h
│ │ │ │ stm32f1xx_hal_tim_ex.h
│ │ │ │ stm32f1xx_hal_uart.h
│ │ │ │ stm32f1xx_hal_usart.h
│ │ │ │ stm32f1xx_hal_wwdg.h
│ │ │ │ stm32f1xx_ll_adc.h
│ │ │ │ stm32f1xx_ll_bus.h
│ │ │ │ stm32f1xx_ll_cortex.h
│ │ │ │ stm32f1xx_ll_crc.h
│ │ │ │ stm32f1xx_ll_dac.h
│ │ │ │ stm32f1xx_ll_dma.h
│ │ │ │ stm32f1xx_ll_exti.h
│ │ │ │ stm32f1xx_ll_fsmc.h
│ │ │ │ stm32f1xx_ll_gpio.h
│ │ │ │ stm32f1xx_ll_i2c.h
│ │ │ │ stm32f1xx_ll_iwdg.h
│ │ │ │ stm32f1xx_ll_pwr.h
│ │ │ │ stm32f1xx_ll_rcc.h
│ │ │ │ stm32f1xx_ll_rtc.h
│ │ │ │ stm32f1xx_ll_sdmmc.h
│ │ │ │ stm32f1xx_ll_spi.h
│ │ │ │ stm32f1xx_ll_system.h
│ │ │ │ stm32f1xx_ll_tim.h
└ 演示文稿1.pptx