STMCU小助手
发布时间:2023-2-9 17:42
|
背景" V' ]' ^% T6 m5 b2 V 本文用于记录平衡自行车的制作过程,及制作中遇到的问题;总体方案如下:采用采用STM32F103C8T6作为主控单元、MPU-6050作为位姿采集单元、0.96寸OLED显示位姿、无刷电机带动动量轮调节小车平衡、1S锂电池配合5V和12V升压模块作为电源、蓝牙模块用于无线控制及调试、SG90舵机用于控制行驶方向。3 ?1 ~7 J) b, f6 C 无刷电机简介8 }3 P4 Y* d6 k3 P, |6 n. M 我用的无刷电机是在TB上淘的便宜货,小日本万宝至无刷电机,内置驱动,带100线双通道编码器,12V-24V的电压下均可运行。
* e3 G u# b. ^7 I 无刷电机驱动 在上一篇专栏建立工程()的基础上,使用外部中断测量电机转速,使用定时器3产生PWM信号控制电机转速,从而实现电机的闭环控制。 7 F* Q! s# X# L9 T- K 1、STM32外部中断配合编码器测独特速度 将编码器A相与PA3连接,B相与PA4连接,并且连接编码器VCC、GND。+ z" u- S9 x' R' j 在mian.c文件中重新定义外部中断回调函数:
在mian()函数while循环中增加在OLED中显示编码器运动状态的相关代码: 7 ?# y8 S8 }* G |1 T4 i7 w- p/ g
最终演示效果如下:$ F4 G0 Y6 X* ^, q/ T & U. K* A# y T- ?
/ f+ g/ J1 j3 {0 ?! ?) a 2、STM32定时器PWM控制电机转速, ]" E/ o( h5 H' c, t 在mian()函数增加下列代码,打开定时器3,并设置初始占空比为1(此时为PWM输出为高电平) ' V! f) Q% s+ e* S
在mian()函数while循环中增加下列代码,是PWM占空比由1-0逐渐下降 h' \ ]7 n! \1 ?/ S( i8 s( A
通过测量PWM输出引脚的电压变化,大致判断PWM输出是否正常,如下所示:- O7 b* e& x% x, U8 i+ B0 @
3 v4 B6 f0 Y. W& T# e5 r! Y0 M 3、STM32F103C8T6引脚、外部中断、定时器3配置如下: 设置PA3引脚为GPIO_EXTI3;PA4引脚为GPIO_INPUT;8 E* X% d" U/ h$ ? ) ]7 `/ j) E+ Z
2 E- n7 v( v3 O }0 ]9 W3 O5 e 打开外部中断3( x- T; \! Y4 b3 K
0 |, {; D& c5 p! p# {! @" e 设置外部中断引脚PA3为上拉,触发模式:上升沿触发
设置引脚PA4为上拉
设置定时器3通道1位PWM输出模式,PWM频率位20kHz(计算方式参考()),初始占空比为1000。. O8 z1 \3 Y! E2 t : M+ m$ B5 \ @2 G* p" J+ V$ s$ x
作者:DIY攻城狮 https://www.bilibili.com/read/cv21718261?spm_id_from=333.999.0.0 出处:bilibili% V+ M. r) E' ?( C8 }4 F + S; m, _! z6 Z- l+ D " V1 w" z) i! H( N1 P |
【STM32H5 评测】基础硬件加密与随机数性能 - STM32H5E5实测硬件AES加解密、HASH运算、TRNG真随机数输出速率与稳定性
【STM32H5 评测】NUCLEO-H5E5ZJ 使用 TrustZone 安全分区系统实践测试
【STM32H5 评测】CPU核心性能 - STM32H5E5跑 RTOS,观察任务切换速度、中断响应快慢
【STM32H5 评测】内存读写性能 - STM32H5E5实测Flash,SRAM读写速度,用DMA搬运大块数据
【NUCLEO-C562RE】OLED 显示
保姆级教程:CMake 工程导入 STM32CubeIDE 步骤
STM32CubeCLT 1.22.0新版本发布
【下载问题解决】关于ST官网下载软件问题解决
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
微信公众号
手机版
学习学习