首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

SimpleFOC(七)——STM32(Bluepill)的应用

  • 23-09-28 03:41
  • 2954
  • 12135
blog.csdn.net

目录

  • 说明
  • 一、Bluepill介绍
    • 1.1、最小系统板
    • 1.2、下载模式说明
  • 二、STM32库文件安装
    • 2.1、添加链接
      • 2.1.1、RogerClark的库不好用,不要使用
      • 2.1.2、官方链接
    • 2.2、安装库文件
    • 2.3、重新打开IDE
    • 2.4、选择上传方式为串口,并选择端口
    • 2.5、安装STM32CubeProgrammer
  • 三、点亮LED
    • 3.1、硬件准备
    • 3.2、示例演示
  • 四、I2C读取编码器
    • 4.1、硬件准备
    • 4.2、示例演示
  • 五、双I2C读取编码器
    • 5.1、硬件准备
    • 5.2、示例演示
  • 六、Bluepill+V2.0.3+AS5600+2804云台电机
    • 6.1、硬件准备
    • 6.2、速度闭环模式
    • 6.3、位置闭环模式
  • 七、Bluepill双电机控制
    • 7.1、硬件准备
    • 7.2、双电机速度闭环模式
  • 八、SPI读取编码器
    • 8.1、硬件准备
    • 8.2、示例演示
  • 九、Bluepill+PowerShield V0.2+AS5047P+5010大电机
    • 9.1硬件准备
    • 9.2速度闭环模式
    • 9.3位置闭环模式
  • 写后感

 

SimpleFOC的教程比较多,做了一个总的链接,欢迎点击阅读:SimpleFOC教程链接汇总

说明

  本文较长,内容较多,几乎把前几节Arduino UNO的例程重新演示一遍,为缩小篇幅,各示例演示步骤写的稍微粗略,大家可先熟悉前几节的关于simpleFOC的操作后再看本节。新手可分多次学习,循序渐进。
 
本文于2021.11.20更新,针对最新版的SimpleFOC库2.2.0测试,变化不大,需要修改的地方本节都有讲解。
 
本文于2021.9.2更新,
增加对新设计的电路板的支持,修改各个演示程序的IO口,使得本节示例可以同时在bluepill和SimpleMotor上运行。
在这里插入图片描述
SimpleMotor 购买链接:某宝购买
 
本文于2022.9.9更新,
经客户反馈,本章最大的问题PWM低频噪声问题已经解决,是因为STM32的库安装不对,使用官方库,simpleFOC示例都可以顺利演示。稍后会详细说明库的安装,并对本文做较大修改。向这位客户表示感谢!
在这里插入图片描述

 

一、Bluepill介绍

1.1、最小系统板

  以前淘宝上十二三块钱一个,非常便宜,至于为什么叫Bluepill,谁给起的这个名字就不清楚了。
在这里插入图片描述

1.2、下载模式说明

  Arduino IDE编译STM32有好几种程序下载模式,本篇以串口下载为例。
  如下图,Boot1始终接低电平0,Boot0接0时为正常工作模式,接1时为串口下载模式。
在这里插入图片描述
  如下图,本人测试时发现虽然Boot0接高电平,但不能进入串口下载模式,检查后发现是电阻阻值不匹配,R3R4应该是串联在Boot0和Boot1引脚的限流电阻,阻值过大,导致上拉无效不能进入串口下载模式,可更换为1K-10K范围的电阻。
在这里插入图片描述
  

二、STM32库文件安装

  • Arduino IDE兼容STM32主要有两种方法实现:
  • 一种是使用RogerClark的库,下载安装都比较方便,但是已经停更,兼容性 差。
  • 另一种是使用官方库,兼容性肯定没问题,但是安装稍微麻烦。
  • simpleFOC的代码是以官方库为基础,所以必须安装官方库。
     

2.1、添加链接

2.1.1、RogerClark的库不好用,不要使用

  https://github.com/rogerclarkmelbourne ,下载Arduino_STM32,这个是支持STM32开发板的硬件文件。
在这里插入图片描述
 

2.1.2、官方链接

有官方的安装说明:https://github.com/stm32duino/wiki/wiki/Getting-Started,
点击Arduino的 文件——>首选项,输入网址:https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
在这里插入图片描述
但是,这个网址完全打不开,我试了一周从来都没有链接上。
网上有很多替代的网址,我试了一些,能用的有这个:https://github.ocrobot.com/down/stm32duino/package_stmicroelectronics_index.json,
偶尔也会打不开,多试几次还是可以的。
在这里插入图片描述
  

2.2、安装库文件

  • 打开开发板管理器
    在这里插入图片描述
     
  • 输入STM32,安装。
    注意,如果刚才的链接连不上,输入“STM32”是不能显示下面的库的。
    用官方库显示的跟这个似乎不太一样,网络条件好的建议用官方链接。
    在这里插入图片描述
    用这个库,I2C接口不能用,I2C1和I2C2都不能使用,I2C问题暂时搁置,20020910。
     

2.3、重新打开IDE

  关闭Arduino IDE后重新打开,会发现开发板增加许多类型,选择STM32F103C系列,
在这里插入图片描述
 

  • 先选择103系列,再选择bulepill
    在这里插入图片描述
     

2.4、选择上传方式为串口,并选择端口

如果用STlink下载,选择对应的配置
在这里插入图片描述
 

2.5、安装STM32CubeProgrammer

上一步的下载方式选择,无论哪种接口都多了一个 STM32CubeProgrammer,所以还要再安装这个软件,如果不安装等会下载会提示错误。

  • 去ST官网下载软件:https://www.st.com/en/development-tools/stm32cubeprog.html
    如果没有注册,还需要输入邮箱,有时候不能下载,需要多尝试几次。
    在这里插入图片描述
     
  • 下载后解压,安装。安装完成后会在桌面生成图标。
    在这里插入图片描述
      STM32的库文件安装完毕。
     

三、点亮LED

3.1、硬件准备

◆3.1.1、硬件清单

序号名称数量
1Bluepill1
2USB转串口1
35V电源1

在这里插入图片描述
  也可以直接从USB转TTL取电5V,不过这样有时会不稳定,所以最好用手机充电器外部供电。
 
3.1.2、硬件连接
在这里插入图片描述
或者
在这里插入图片描述

  

3.2、示例演示

◆3.2.1、选择STM32配置
在这里插入图片描述
◆3.2.2、打开示例
在这里插入图片描述
◆3.2.3、修改代码
在这里插入图片描述
◆3.2.4、连接最小系统板,boot0的跳线帽接高电平1,然后按下复位键,STM32进入串口下载模式,
在这里插入图片描述
◆3.2.5、验证上传
在这里插入图片描述
◆3.2.6、上传时留意是否上传成功。
在这里插入图片描述

◆3.2.7上传成功后,把boot0的跳线帽恢复到低电平0,然后按下复位键。观察LED是否每隔一秒亮灭一次,
在这里插入图片描述
 
 

四、I2C读取编码器

  
当前使用的库不支持I2C接口,不能读出角度,需要用STM32的官方库,以下演示为RogerClark的库实现。 20220910
 

4.1、硬件准备

◆4.1.1、硬件清单

序号名称数量
1Bluepill1
2USB转串口1
35V电源1
4带磁编码器的云台电机1

如下图所示:
在这里插入图片描述
带编码器电机购买链接:淘宝购买
  
◆4.1.2、硬件连接
本例程演示I2C_1读取AS5600角度,
在这里插入图片描述
编码器VCC接3.3V,
在这里插入图片描述
或者
在这里插入图片描述

  

4.2、示例演示

◆4.2.1、打开示例
在这里插入图片描述
 
◆4.2.2、编译上传;复位重启;转动电机观察角度输出。此时串口显示为电机累计转动角度(单位rad)和瞬时速度。
在这里插入图片描述
 
上面的这个截图是之前用RogerClark的库实现的,用当前库没有输出,经过反复确认是I2C初始化死机导致,调试了一天没能解决,还有下面的《双I2C读取编码器》,所有涉及I2C的地方都会死机,我推测大概还是库有问题,可能必须得用官方的。我测试了电机开环是可以转动的,并且确实没有低频噪声了,SPI编码器是正常的,ABZ接口没测试。问题暂时搁置 20220910
 

五、双I2C读取编码器

5.1、硬件准备

◆5.1.1、硬件清单

序号名称数量
1Bluepill1
2USB转串口1
35V电源1
4带磁编码器的云台电机2

如下图所示:
在这里插入图片描述
 
◆5.1.2、硬件连接
本例程演示两个硬件I2C的操作,I2C_1和I2C_2分别读取AS5600角度,
在这里插入图片描述
 
编码器VCC接3.3V,
在这里插入图片描述
或者
在这里插入图片描述
 

5.2、示例演示

◆5.2.1、打开示例
在这里插入图片描述
 
◆5.2.2、修改程序
直接用官方示例,下载运行后串口没有输出,并且板载LED一直闪烁,应该是程序跑飞了。官方程序不能直接用,也可能是创作者的版本和我的不一样。
在这里插入图片描述
 
◆5.2.3、编译上传;复位重启;分别转动两个电机观察角度输出。此时串口显示为两个电机的累计转动角度(单位rad)。
注意:主程序中有200ms延时,所以转动电机的时候速度不能太快,否则会导致角度累加错误。
在这里插入图片描述
  

六、Bluepill+V2.0.3+AS5600+2804云台电机

 
  本人在调试Bluepill的过程中主要遇到两个问题:
  ◆ 第一是I2C_2读写AS5600角度的问题,查找资料后很简单的就解决了,上面《双I2C读取编码器》;
  ◆ 第二是按照官方示例驱动电机时,电机会产生啸叫声并且控制精度非常低。查找原因发现PWM引脚输出频率只有550Hz,测试了几个示例都是同样的现象。通过对代码运行追踪,找到问题并修改底层驱动代码。
  本节实验涉及修改底层代码PWM输出。
 

6.1、硬件准备

◆6.1.1、硬件清单

序号名称数量
1Bluepill1
2SimpleFOCShield V2.0.31
3USB转串口1
4带磁编码器的云台电机1
55V电源1
612V电源1

如下图所示:
在这里插入图片描述
 
SimpleFOCShield V2.0.3购买链接:某宝购买
带编码器电机购买链接:某宝购买
 
◆6.1.2、硬件连接
在这里插入图片描述
 
在这里插入图片描述
或者
在这里插入图片描述

 

6.2、速度闭环模式

◆6.2.2、打开示例
在这里插入图片描述
◆6.2.3、修改代码
在这里插入图片描述
在这里插入图片描述
 
◆6.2.4、编译上传,设置电机速度,观察电机运转

 

6.3、位置闭环模式

◆6.3.1、打开示例
在这里插入图片描述
◆6.3.2、修改代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
 
◆6.3.3、编译上传,设置电机角度,观察电机运转。
电机初始化以后会突然转动一下,大概半圈或者一圈,这个是为了角度归零,这个问题已在《移植》中解决。
 

七、Bluepill双电机控制

 

7.1、硬件准备

◆7.1.1、硬件清单

序号名称数量
1Bluepill1
2SimpleFOCShield V2.0.32
3USB转串口1
4带磁编码器云台电机2
55V电源1
612V电源1

如下图所示:
在这里插入图片描述
 
SimpleFOCShield V2.0.3购买链接:淘宝购买
带编码器电机购买链接:淘宝购买
  
◆7.1.2、硬件连接
操作之前建议先看下《SimpleFOC(五)—— 双电机控制》这篇文章,
(1)、两个驱动板堆叠连接,背面跳线,M1接9、5、6、8,M2接3、10、11、7。
在这里插入图片描述

(2)、驱动板引脚定义
在这里插入图片描述

(3)、Bluepill接线
在这里插入图片描述
(4)、接线
两个编码器AS5600接3.3V,Bluepill和驱动板之间要共地,
在这里插入图片描述
或者
在这里插入图片描述

 

7.2、双电机速度闭环模式

◆7.2.1、打开示例
在这里插入图片描述
◆7.2.2、修改代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
◆7.2.3、编译上传,串口设置指令,观察电机运转。
指令“A”表示电机1,指令“B”表示电机2,比如设置电机1速度为10rad/s:A10,设置电机2速度为20rad/s:B20。
 
双电机控制演示视频(bluepill):https://www.bilibili.com/video/BV1Wy4y1g7Ly/
双电机控制演示视频(SimpleMotor):https://www.bilibili.com/video/BV1Mh411s7oY/
双电机控制演示视频(不修改底层代码,电机有啸叫声):https://www.bilibili.com/video/BV1ab4y117nT/
 
 

八、SPI读取编码器

8.1、硬件准备

◆8.1.1、硬件清单

序号名称数量
1Bluepill1
2USB转串口1
35V电源1
4带AS5047P的云台电机1

如下图所示:
在这里插入图片描述
 
◆8.1.2、AS5047P介绍
- 14bit精度
- ABI接口输出最高1000ppr
- 最高支持28Krpm转速
在这里插入图片描述
 
◆8.1.3、硬件连接
在这里插入图片描述
 
编码器VCC接3.3V,
在这里插入图片描述

 

8.2、示例演示

◆8.2.1、打开示例
在这里插入图片描述
◆8.2.2、修改程序
在这里插入图片描述
◆8.2.3、编译上传;复位重启;转动电机观察角度输出。
此时串口显示为电机累计转动角度(单位rad)和瞬时速度。
在这里插入图片描述
实际测试,AS5047P读出角度波动比较大,性能与价格非常不匹配,在当前芯片紧缺的背景下,这很有可能是A货,用这款芯片一定要保证货源
 
 

九、Bluepill+PowerShield V0.2+AS5047P+5010大电机

9.1硬件准备

◆9.1.1、硬件清单

序号名称数量
1Bluepill1
2PowerShield V0.21
3USB转串口1
4AS5047P电机1
55V电源1
624V电源1

如下图所示:
在这里插入图片描述
带编码器电机购买链接:淘宝购买
 
◆9.1.2、硬件连接
⑴AS5047P的VCC接3.3V,
⑵PB6/PB7/PB8分别接在PowerShield V0.2的5/9/6引脚,
⑶PB5做为使能控制,用1转3的排线接在PowerShield V0.2的4/7/8引脚,
关于PowerShield V0.2的详细介绍请看《SimpleFOC(六)—— PowerShield和AS5047P》,
在这里插入图片描述
在这里插入图片描述

先不要着急给24V上电,使用大功率电机,一定要非常小心!
 

9.2速度闭环模式

◆9.2.1、打开示例
在这里插入图片描述
◆9.2.2、修改代码
在这里插入图片描述
在这里插入图片描述
◆9.2.3、编译上传,设置电机转速,观察电机运行。
 
速度闭环模式的演示视频:https://www.bilibili.com/video/BV1ow411d76a/
 

9.3位置闭环模式

◆9.3.1、打开示例
在这里插入图片描述
◆9.3.2、修改代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
◆9.3.3、编译上传,设置角度,观察电机运转。
 
位置闭环模式的演示视频:https://www.bilibili.com/video/BV1XU4y157kV/
 
我感觉效果不是很好,有点转不到位的样子,不知道是PID参数设置的不合适还是因为PWM不能设置中央对齐模式。
 

写后感

这篇文章太长了,程序上还有难点,花费了将近一个月的时间。
有人觉得用keil就够了,用Arduino IDE调试STM32多此一举,而且从调试的过程来看,Arduino IDE对STM32的兼容做的也不够好。但是我觉得用C++编写单片机代码的理念很先进,应该是未来的发展方向。
 
(完)
 
 
欢迎加入simpleFOC技术交流群:923734429 群已满根据提示添加新群 (入群申请写:CSDN)
 
请继续阅读相关文章:
SimpleFOC(一)—— 简介(附有文件下载链接)
SimpleFOC(二)—— 快速入门 (开环控制)
SimpleFOC(三)—— AS5600角度读取
SimpleFOC(四)—— 闭环控制
SimpleFOC(五)—— 双电机控制
SimpleFOC(六)—— PowerShield和AS5047P
SimpleFOC(七)——STM32(Bluepill)的应用
SimpleFOC(八)—— 理论+实践 深度分析SVPWM
SimpleFOC(九)—— 霍尔电机控制

注:本文转载自blog.csdn.net的loop222的文章"https://blog.csdn.net/loop222/article/details/118027274"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top