2021-11-18 15:18:24 索炜达电子 1156
项目编号:L71
文件大小:32M
源码说明:带中文注释
开发环境:LabVIEW
简要概述:
基于LabVIEW的直流有刷电机PID调试及控制助手设计:使用LabVIEW开发环境和VISA串口、单片机电机控制系统
实现
(1)上位机对下位机PID控制器PID参数的调整
(2)下位机系统被控量波形的显示
(3)上位机对下位机电机的转速和位置的控制。
目 录
1 绪论 1
1.1 研究的目的与意义 1
1.2 PID控制算法介绍 1
1.3 直流有刷电机调速原理 3
1.4 系统指标 3
2 下位机设计 4
2.1 总体方案 4
2.2 下位机硬件设计 4
2.2.1 STM32最小系统的设计 4
2.2.2 L298N电机驱动模块 5
2.2.3 电机及编码器 6
2.2.4 各模块间的连接 6
2.3 下位机软件设计 7
2.3.1 电机驱动 8
2.3.2 编码器驱动 9
2.3.3 PID算法 11
2.3.4 两种PID控制算法间的切换 12
3 通信协议设计 14
3.1 指令包格式 14
3.2 指令汇总 14
3.3 指令详解 15
3.3 下位机通信协议程序实现 17
4 上位机设计 22
4.1 整体方案设计 22
4.2 前面板设计 22
4.3 后面板程序设计 24
4.3.1 主VI的设计 24
4.3.2 获取指令字节子VI 28
4.3.3 获取实际值子VI 28
4.3.4 获取PID参数子VI 29
4.3.5 数据打包子VI 30
5 系统调试 32
5.1 硬件调试 32
5.1.1 硬件连接 32
5.1.2 程序编译下载 32
5.2 联合调试 32
6 结论与展望 35
7 参考文献 36
8 附录 37
设计报告:
系统调试
硬件连接
将单片机最小系统、L298N电机驱动模块、电机及电源按第二章2.2节下位机硬件设计中的各模块连接表用线连接起来,连接后如图
程序编译下载
用Keil软件编写下位机STM32程序,编译没有错误后用串口下载软件将编译生成的.hex文件下载到STM32单片机。
联合调试
通过USB数据线将STM32最小系统板与电脑相连,打开LabVIEW主VI并运行,端口选择COM5、波特率选择115200、奇偶校验选择无、数据为选8位、停止位1位。点击打开串口按钮即可同下位机通信。经过测试上下位机之间的通信均正常,上位机可以完整的解析下位机发送来的数据,下位机也可正确的执行上位机发送来的控制指令,整个系统可正常运行。如图5-2所示。系统设置为位置控制模式,目标值设置为5000,发送目标值后,电机开始转动最终实际值达到4997电机停止。
改变PID参数点击发送PID,重新设置目标值点击发送目标值。结果
目录│文件列表:
└ LabVIEW
│ PID转换.vi
│ 发送数据打包-八位校验和.vi
│ 控件 2.ctl
│ 电机控制.vi
│ 电机控制调试.aliases
│ 电机控制调试.lvlps
│ 电机控制调试.lvproj
│ 编码盘.ctl
│ 获取PID参数.vi
│ 获取实际值.vi
│ 获取指令字节.vi
│ 转盘.ctl
│ 通讯协议解析.vi
│ 通讯格式.txt
│ 通讯格式.txt.bak
├ exe
│ │ 电机调试控制.aliases
│ │ 电机调试控制.exe
│ └ 电机调试控制.ini
├ 下位机
│ ├ 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