【STM32驱动无刷电调遇到的问题及其解决办法】

2023-11-10 22:40

本文主要是介绍【STM32驱动无刷电调遇到的问题及其解决办法】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

STM32驱动无刷电机遇到的问题

  • 前言
  • 一、PWM驱动代码
  • 软件仿真部分
    • 使用Keil自带仿真
    • 示波器画面
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

使用STM32开发板进行无刷电调的驱动开发,发现舵机测试仪可以轻松驱动无刷电机旋转和调速,而自己拟写的PWM程序则无法驱动。后面上示波器抓波,终于发现了端倪,不知道大家是如何解决的。欢迎评论


提示:以下是本篇文章正文内容,下面案例可供参考

一、PWM驱动代码

正点原子开发例程修改而来
pwm.c文件

#include "pwm.h"
void My_TIM3_Init(u16 arr,u16 psc)//初始化
{GPIO_InitTypeDef GPIO_InitStruct;//gpio结构体TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;//定时器结构体TIM_OCInitTypeDef TIM_OCInitStruct;//通道结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启GPIOARCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//开启TIM3RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//开启复用AFIOGPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_6;//引角PA6,PA7GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStruct);//GPIO初始化TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;//分频因子TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数TIM_TimeBaseInitStruct.TIM_Period=arr;//自动重装载值TIM_TimeBaseInitStruct.TIM_Prescaler=psc;//预分频系数TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);//初始化TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStruct.TIM_OCNPolarity=TIM_OCPolarity_High;TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;TIM_OC1Init(TIM3,&TIM_OCInitStruct);//通道1初始化TIM_OC2Init(TIM3,&TIM_OCInitStruct);//通道2初始化TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);  //使能预装载寄存器TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);TIM_Cmd(TIM3,ENABLE);        //使能TIM3}

main.c文件


#include "stm32f10x.h"
#include "delay.h"
#include "pwm.h"int main(void)
{	int i = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);delay_init();My_TIM3_Init(19999,71);//周期为20ms  (arr+1)(psc+1)/Tclk=20000*72/72000000=20ms//TIM_SetCompare1(TIM3,700);//油门最高点                改占空比,计算方法500/20000=0.5/20//Delay_s(1);//	延迟2秒//TIM_SetCompare1(TIM3,1000);//油门中位while(1){		for(i = 800; i < 2000;i++){TIM_SetCompare1(TIM3,i);//	保持delay_ms(1);}Delay_s(1);for(i = 2000; i > 800;i--){TIM_SetCompare1(TIM3,i);//	保持delay_ms(1);}Delay_s(1);}
}

软件仿真部分

使用Keil自带仿真

在这里插入图片描述

示波器画面

这是单片机输出的PWM经过三极管放大后的波形 输出高电平为5V 因为只用了一个三极管 所以波形会取反
在这里插入图片描述

这是单片机配置为PWM2模式输出的波形,高电平为3.3V 且占空比很大
在这里插入图片描述
电路图如下
在这里插入图片描述
当然 如果感觉修改程序PWM2模块 反向麻烦的话 那就硬件再次放大,相当于再次反向就好,这样输入和输出同向。
电路图如下
在这里插入图片描述


总结

经过三极管放大后 输出的PWM高电平为5V 成功驱动无刷电调。
驱动不足原因,高电平电压不足。
解决方案:三极管放大

这篇关于【STM32驱动无刷电调遇到的问题及其解决办法】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385751

相关文章

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复