站内搜索
发作品签到
总线直流电机驱动模块
专业版

总线直流电机驱动模块

简介

基于STM32主控的A4950双路直流减速电机驱动。通过IIC或UART指令进行电机控制。

简介:基于STM32主控的A4950双路直流减速电机驱动。通过IIC或UART指令进行电机控制。
模块征集令

开源协议

GPL 3.0

创建时间:2025-04-17 13:26:34更新时间:2025-06-03 15:54:45

描述

项目简介

本项目是一个基于STM32G031G6U6芯片的直流减速电机控制系统,使用A4950驱动芯片实现对直流减速电机的精确控制。该系统可以实现电机转速控制、速度闭环和位置控制等功能,可以应用于各种需要精确控制的应用场景。

硬件配置

主控制器

  • MCU:STM32G031G6U6 - ARM Cortex-M0+内核,64MHz主频,32KB Flash,8KB RAM
  • 封装:UFQFPN28封装,体积小巧,适合空间有限的应用场景

电机驱动部分

  • 驱动芯片:A4950,双H桥DMOS全桥PWM电机驱动器
    • 工作电压范围:8V-40V
    • 最大输出电流:3A
    • 电源电压不超过15V(参考原理图注释)
  • 控制方式:PWM控制,频率1000Hz,分辨率1000

编码器接口

  • 支持两路增量式编码器(ENCODER_A1/A2, ENCODER_B1/B2)
  • 使用LPTIM1和TIM3实现编码器计数
  • 实时获取电机转速和位置信息

通信接口

  • UART:通过USART2实现串口通信(PA2/PA3引脚)
  • SPI:SPI2接口(PA0/PA4/PA5引脚),用于驱动OLED显示

显示接口

  • OLED显示器接口(SPI通信)
    • OLED_CS, OLED_DC, OLED_RES等控制信号
    • 显示电机目标速度(target_speed)和当前速度(current_speed)
    • 通过OLED_ShowString和OLED_ShowNum函数实现数据显示

电源部分

  • 5V转3.3V电路
  • 12V转5V电路
  • 电源指示LED

软件架构

基础驱动

  • STM32G0 HAL库驱动
  • 外设驱动(GPIO, SPI, UART, TIM, LPTIM等)

控制算法

  • PID控制
    • 速度环PID控制:比例系数Kp=0.7,微分系数Kd=0.1
    • 位置环PID控制:比例系数Kp=0.7,积分系数Ki=0.01,微分系数Kd=0.1
    • 双环位置环PID控制:比例系数Kp=0.3,积分系数Ki=0.01,微分系数Kd=0.1
    • 双环速度环PID控制:比例系数Kp=0.5,微分系数Kd=0.08
  • 控制模式
    • PWM输出范围:-1000~1000
    • 支持正转、反转、惯性滑行、制动刹车等多种控制模式
    • 支持开环控制、速度闭环控制、位置闭环控制、位置速度双环控制

通信协议

  • 串口通信
    • 支持电机状态查询

    • 支持参数设置

    • 支持实时数据监控

    • 命令格式示例

      • PWM控制命令Set PWM:,
        • 电机ID:1或2,对应两个电机
        • PWM值:-1000~1000,正值表示正转,负值表示反转,0表示停止
        • 示例:Set PWM:1,500 - 设置电机1以50%占空比正转
        • 执行效果:设置PWM值,并且通过Set Mode命令切换到开环控制模式
      • 速度控制命令Set Speed:,
        • 电机ID:1或2
        • 速度值:目标速度,单位为脉冲/秒
        • 示例:Set Speed:2,300 - 设置电机2的目标速度为300脉冲/秒
        • 执行效果:设置目标速度,并且通过Set Mode命令切换到速度环控制模式
      • 位置控制命令Set Position:,
        • 电机ID:1或2
        • 位置值:目标位置,单位为编码器计数值
        • 示例:Set Position:1,1600 - 设置电机1的目标位置为1600个脉冲
        • 执行效果:设置目标位置,并且通过Set Mode命令切换到位置环控制模式
      • 双环位置控制命令Set PS Position:,
        • 电机ID:1或2
        • 位置值:目标位置,单位为编码器计数值
        • 示例:Set PS Position:2,2000 - 设置电机2的目标位置为2000个脉冲
        • 执行效果:设置双环控制的目标位置,并且通过Set Mode命令切换到位置速度双环控制模式
      • 控制模式切换命令Set Mode:,
        • 电机ID:1或2
        • 模式:
          • open - 开环控制模式
          • speed - 速度环控制模式
          • position - 位置环控制模式
          • ps - 位置速度双环控制模式
        • 示例:Set Mode:2,ps - 设置电机2为位置速度双环控制模式
    • 命令处理流程

      1. 接收串口命令
      2. 解析命令字符串,识别命令类型
      3. 提取参数(电机ID、目标值等)
      4. 更新电机控制参数
      5. 根据控制模式执行相应的控制算法

数据存储

  • Flash参数存储区
    • 支持PID参数的保存和加载
    • 电机配置保存

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
直流减速电机驱动V1.0 .zip
18
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航