【L71】LabVIEW课程设计:基于单片机和LabVIEW的电机参数检测设计

2021-11-18 15:18:24      索炜达电子      752     

项目编号: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


设计报告:

【L71】LabVIEW课程设计:基于单片机和LabVIEW的电机参数检测设计


系统调试

硬件连接

将单片机最小系统、L298N电机驱动模块、电机及电源按第二章2.2节下位机硬件设计中的各模块连接表用线连接起来,连接后如图

【L71】LabVIEW课程设计:基于单片机和LabVIEW的电机参数检测设计

程序编译下载

用Keil软件编写下位机STM32程序,编译没有错误后用串口下载软件将编译生成的.hex文件下载到STM32单片机。



联合调试

通过USB数据线将STM32最小系统板与电脑相连,打开LabVIEW主VI并运行,端口选择COM5、波特率选择115200、奇偶校验选择无、数据为选8位、停止位1位。点击打开串口按钮即可同下位机通信。经过测试上下位机之间的通信均正常,上位机可以完整的解析下位机发送来的数据,下位机也可正确的执行上位机发送来的控制指令,整个系统可正常运行。如图5-2所示。系统设置为位置控制模式,目标值设置为5000,发送目标值后,电机开始转动最终实际值达到4997电机停止。


改变PID参数点击发送PID,重新设置目标值点击发送目标值。结果

【L71】LabVIEW课程设计:基于单片机和LabVIEW的电机参数检测设计

【L71】LabVIEW课程设计:基于单片机和LabVIEW的电机参数检测设计

【L71】LabVIEW课程设计:基于单片机和LabVIEW的电机参数检测设计

【L71】LabVIEW课程设计:基于单片机和LabVIEW的电机参数检测设计

目录│文件列表:

 └ 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

TAG直流有刷电机
  • 9 次
  • 60 分