首页 > 其他分享 >pwm模拟遥控器驱动电调控制无刷电机

pwm模拟遥控器驱动电调控制无刷电机

时间:2024-10-08 23:18:33浏览次数:10  
标签:Pin 无刷电机 TIM OCInitStructure GPIO pwm 电调

目录

1.前言

2.操作全程

2.1输出pwm信号

2.2硬件部分

2.3电调校准

3.启动

4.总结

1.前言

我们小伙伴是不是都遇到到过我们的无刷电机买回来,上电,并且给了正确的pwm超,但是电机就是不转动。我也遇到了这个问题,不过最后还是让我蒙对了,哈哈。下面开始我们的操作。本人学识尚浅,如果有什么不对的地方,还望各位大佬们指导。(还有就是我对文章使用功能还不是很了解,往各位小伙伴多多包涵)

2.操作全程

2.1输出pwm

我们需要关注两个关键词:

1.pwm的频率、周期。

2.输出最大、最小pwm信号脉冲宽度。

一般电调频率50hz左右(20ms),最大脉冲宽度4%-11%(0.8ms-2.2ms)。(这个是我设置的参数)

(因为我们是模拟遥控器来控制无刷电机,所以最大最小脉冲宽度的设置是为了电调确定pwm的量程)

那么现在我们进行第一步生成一个50hz(20ms)的pwm先,下面生成代码部分(大家可以自己写):

void PWM_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	TIM_InternalClockConfig(TIM2);
	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStructure.TIM_Period = 1000 - 1;		//ARR
	TIM_TimeBaseInitStructure.TIM_Prescaler = 1440 - 1;		//PSC
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
	
	TIM_OCInitTypeDef TIM_OCInitStructure;
	TIM_OCStructInit(&TIM_OCInitStructure);
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
	TIM_OCInitStructure.TIM_Pulse = 0;		//CCR	0-ARR
	TIM_OC1Init(TIM2, &TIM_OCInitStructure);
	
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
	TIM_OCInitStructure.TIM_Pulse = 0;		//CCR	
	TIM_OC2Init(TIM2, &TIM_OCInitStructure);
	
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
	TIM_OCInitStructure.TIM_Pulse = 0;		//CCR	
	TIM_OC3Init(TIM2, &TIM_OCInitStructure);
	
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
	TIM_OCInitStructure.TIM_Pulse = 0;		//CCR	
	TIM_OC4Init(TIM2, &TIM_OCInitStructure);
	
	TIM_Cmd(TIM2, ENABLE);
	
}


void PWM_SetCompare1(uint16_t Compare)
{
	TIM_SetCompare1(TIM2, Compare);
}

到第二步,把最大、最小脉冲宽度先确定好,并用三个按键(两个按键也行)控制mcu输出最大脉冲宽度、最小脉冲宽度和增加脉冲宽度的pwm信号,下面生成代码部分(大家可以自己写):

//按键部分
void Key_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 |GPIO_Pin_9 | GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
}

//主函数部分
void main(void)
{
    while(1)
    {
        if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) == 0)
        {
	        PWM_SetCompare1(110);//输出最大脉冲宽度
        }
        if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9) == 0)
        {
	        PWM_SetCompare1(40);//输出最小脉冲宽度
        }
        if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10) == 0)
        {
        	PWM_SetCompare1(40+i);
	        i=i+10;
        }
    }
}

如果条件允许还可以拿示波器先看看自己输出的波形对不对先,再进行下面的步骤,下面是我上电前测试的图片:

最小脉冲宽度:

最大脉冲宽度:

2.2硬件部分

第三步接线:

注意:一定要电调跟单片机共地(你可以拿电调给单片机供电).

现在开始连线,注意不要接反就行。

一般电调

输入有两根电源线(大大的那两根),接电调允许内的电压。(可以问商家,几s的)

还有三根小小的线,黄色一般为pwm信号线,中间那根红色线为输出5v电源线(注意是输出5v),最后那根是地线一般是棕色或者黑色(注意是输出)。 

还有另外三根接无刷电机,任意接,如果发现无刷电机转动方向反了可以把任意两条调换位置。

2.3电调校准

第四步:

注意:不要带桨叶测试,非常危险。

1.先让单片机输出最大脉冲宽度的pwm。

2.然后给电调上电,注意听声音,如果电调发出嘀嘀两声(那么油门最高点确认成功)。

3.再用按键输出最小脉冲宽度的pwm。

4.然后听声音,听到嘀嘀嘀三声(那么油门最低点确认成功,2S二声,3S三声)。

5.最后就是按按键让pwm脉冲宽度逐渐增大,无刷电机转速对应的增大了。

(然后以后上电只需要从最小油门开始启动电机就行了)

4.总结

1.保证输出pwm信号的mcu与电调的地线要共地,因为需要mcu和电调要有基准电压。

2.电调如果一直有规律的滴滴滴,那么说明pwm输入的频率不对,或者没有给pwm。(当然也有可能给的pwm是正确的,但是单片机跟电调没有共地)

还有就是不要带桨叶测试,非常危险。

标签:Pin,无刷电机,TIM,OCInitStructure,GPIO,pwm,电调
From: https://blog.csdn.net/2301_77616962/article/details/142766527

相关文章

  • PWM--
    PWM目录PWMpwm在电子行业的作用pwm的参数编程1、初始化函数(时钟、IO、外设、其他)-初始化时钟,PB2,TIM3-初始化IO--这里用输出-外设--配置定时器和pwm--其他2、应用-主函数--什么是PWM?​脉冲宽度调制(PWM),简称脉宽调制,是利用微处理器的数字输出来对模......
  • STM32 f407 多通道PWM输出 基于HAL库和Cubemx配置
    STM32PWM的相关理论知识可以参考江科大的视频教程,或者正点和野火的HAL库开发手册,以下是相关链接:[6-4]PWM驱动LED呼吸灯&PWM驱动舵机&PWM驱动直流电机_哔哩哔哩_bilibili31.TIM—高级定时器—[野火]STM32HAL库开发实战指南——基于野火F4系列开发板文档下面记录一下使......
  • pwm如何驱动直流电机
    1.直流电机的工作原理直流电机是一种将电能转化为机械能的设备,通过电流在磁场中产生的力矩使转子转动。电机的转速与它接收到的电压成正比:电压越高,转速越快。直接调节电压的方式不太方便,因此我们通常使用PWM(脉宽调制)技术来间接调节电压,从而控制电机转速。2.PWM控制电机转速......
  • KTH7823——16 位高精度低延时霍尔磁编码器可编程 ABZ 和 PWM 输出模式角度传感器
    KTH7823是一款高精度绝对角度霍尔传感器芯片,最高16位分辨率绝对角度输出,可实现在轴向和离轴场合下的无接触式磁场角度测量。不论转速范围在0-120000rpm之间,KTH7823都能快速准确地输出角度信息,适用于需要精准角度测量和转速控制的各个领域。KTH7823......
  • PWM控制技术(基本思想、逆变电路及其控制方法)
    目录一、基本思想二、控制方法三、三相电压型PWM逆变器四、异步调制、同步调制、分段同步机制五、采样法六、提高电流电压利用率一、基本思想二、控制方法三、三相电压型PWM逆变器四、异步调制、同步调制、分段同步机制一般多采用分段同步机制五、采样法......
  • CR6863B启臣微高能效CCM+PFM 绿色节能PWM控制器
    CR6863B是一款高集成度、低待机功耗的CCM+PFM混合电流模式PWM控制器。CR6863B轻载时会降低频率,最低频率22kHz可避免音频噪声。CR6863B提供了完整的保护功能,如cycle-by-cycle电流限制、OCP、OTP、VDD_OVP、UVLO等。软启动功能可以减少系统启动时MOSFET的......
  • SC2569高性能电流模式PWM开关150W控制驱动
    SC2569结合了高度集成的电流模式PWM控制IC优化为高性能好,待机功耗低,成本低有效的脱机反激变换器应用。PWM正常工作时的开关频率为外部可编程和修剪到紧的范围内。在空载或轻载情况下,IC操作扩展的“突发模式”以最小化开关损耗。待机功率低,待机功率高这样就实现了转......
  • CMS32L051驱动WS2812B全彩灯-PWM+DMA模式
    文章目录概要代码小结概要基于中微CMS32L051驱动WS2812B全彩灯,使用PWM+DMA模式。参照中微的串口uartSendReceive,该例程中有使用DMA进行串口数据的收发。代码main.c/******************************************************************************************......
  • 【Proteus51单片机仿真】PWM直流电机调速
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能**        基于AT89C51,L298N驱动两个电机,因为是平台,最后用两个电机驱动,然后第一个按键控制所有电机停止,第二个按键按下,电机顺时针转动,第三个按键按下,电机逆时针转动。然后加入pwm调速,分为......
  • 1030-基于51单片机的SPWM波(数码管)原理图、流程图、物料清单、仿真图、源代码
    1030-基于51单片机的SPWM波(数码管)原理图、流程图、物料清单、仿真图、源代码功能介绍:要求能够输出SPWM并且测量输入正弦波的频率并显示。直流电压通过DC-AC电路转为方波,搭建检测电路进行滤波和调节,得到正弦波,单片机采集该正弦波的频率,并显示。有哪些资料:1、仿真工程文......