【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例

这篇具有很好参考价值的文章主要介绍了【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在开头,本文为我本人在2023 ROBOCON期间为队伍设计直流无刷电机控制期间的初步所学。希望本文能帮到所有第一次入坑直流无刷电机的小白朋友们,文章纰漏星数,还望各位大佬多多包涵。

一、你可能已有或者可以用到的硬件:


  1. PWM输出器(某些平台五六块钱的舵机测试仪):
    【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例
    如图,一般可以输出3路控制信号,还不错
  2. 【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例
    一个普通的直流无刷电机
    【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例
    还有它的三根控制线
  3. 好盈(或者新西达)直流无刷电机电调
    【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例
    一端为香蕉头,一端为XT60头

注意事项:

①电调不可少。一般来说买的时候要注意电池规格和最大电流,容我赘述:1s电池大致为3.6V-4.2V,所以3s电池大致就是适配12V航模电池。我之前买的新西达电调,只能2-3s,但电机可以承受24V-36V的电压,所以完全转不到满速。不过,换了好盈电调以后,就可以承受3-6s电池了,也就是能用到robocon常用的24V电池,转速简直起飞了。

电流的话,一般来说对于3s电池(12v)的话30A够用了。

24V的话,最好还是60A或者80A吧(没有确切验证)。

②买电调的时候,如果你没有电路基础,还是让店家焊好香蕉头(很关键!可以直接与电机三根控制线相连,方便很多)和XT30头或者T字头吧。


 二、我买好东西了,也供上电了,该怎么接线才能让它动起来呢?:

        首先强调,我们不去细致了解无刷电机的转速、正反的原理,只需要知道他们都是通过改变PWM控制信号(可以理解成一个高、低电平时长可控的方波)的占空比、频率来实现的。

        如上述所述,我们用舵机测试仪或者配置了PWM引脚输出的单片机,再加上一个电调,是很容易实现通过PWM信号对电机的控制的。

如果你使用的是舵机测试仪,那直接插上就行,唯一要注意的是S是信号线,即图中白线。

一般来说,黑色都是GND,也就是图中的‘-’,直接插上就ok了。

插反了的话,一般也不会烧,不用担心。

【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例
如图,给电调供电的两根线 中间的是一组信号线

 如果你使用的是板子,那也简单

如上例,白线是信号线,接到输出信号的引脚,红线是供电线(经个人测试不接也没事),黑线是地线!重要,这根线必须接上!

【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例
如图,我配置了PWM信号从PB1输出,然后电调与板子共GND

 好了,接下来接上电池,我们可以尝试让它转起来了!


三、初始化电调,输出PWM信号,驱动电机:

首先上图:

顺便解释一下,电调在第一次使用时,需要适配电机,调整油门。

大概就是告诉电调,告诉他PWM的占空比区间。

【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例
以上是好盈电调,由图我们知道要先调最大油门,确认后给出一个最低油门
只要电调​​响了与你电池节数相同的声音,就代表设定完毕!
Ps:对于新西达电调,一般是响一声表示确认低电平,响两声表示确认完毕,可以启动。

因此,对于舵机测试仪来说,只要将电调连上电机,然后上电,应该就会有反应了。

记得提前将舵机测试仪转到你想要的最大油门处。听到‘哔——哔’后,就可以将油门推到你想要的最低处了。

根据我的经验,一般来说,最低油门可以设置为最左端的5处,而最大油门设置在轮盘右端的3处就差不多了。

对于用板子控制来说,则要复杂一点。

首先,让我们来配置一下PWM的输出。

首先查看你板子的硬件配置,我用的是STM32F429,有八个时钟,我选择的是时钟3的通道4来输出PWM波。所以在timer.c中,我先配置了两个句柄。

TIM_HandleTypeDef TIM3_Handler;         //定时器3PWM句柄 
TIM_OC_InitTypeDef TIM3_CH4Handler;	    //定时器3通道4句柄

然后就是TIM3的PWM输出初始化:

//TIM3 PWM部分初始化 
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM3_PWM_Init(u16 arr,u16 psc)
{ 
    TIM3_Handler.Instance=TIM3;            //定时器3
    TIM3_Handler.Init.Prescaler=psc;       //定时器分频
    TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;//向上计数模式
    TIM3_Handler.Init.Period=arr;          //自动重装载值
    TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
    HAL_TIM_PWM_Init(&TIM3_Handler);       //初始化PWM
    
    TIM3_CH4Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1
    TIM3_CH4Handler.Pulse=arr/2;            //设置比较值,此值用来确定占空比,默认比较值为自动重装载值的一半,即占空比为50%
    TIM3_CH4Handler.OCPolarity=TIM_OCPOLARITY_HIGH; //输出比较极性为低 ============变为‘高’
    HAL_TIM_PWM_ConfigChannel(&TIM3_Handler,&TIM3_CH4Handler,TIM_CHANNEL_4);//配置TIM3通道4
	
    HAL_TIM_PWM_Start(&TIM3_Handler,TIM_CHANNEL_4);//开启PWM通道4
}

好了,输出通道也配置好了,接下来只要初始化引脚,使能相应时钟,配置中断优先级就OK了。

void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
		if(htim->Instance==TIM3)
		{
        GPIO_InitTypeDef GPIO_Initure;
		__HAL_RCC_TIM3_CLK_ENABLE();			//使能定时器3
        __HAL_RCC_GPIOB_CLK_ENABLE();			//开启GPIOB时钟
	
        GPIO_Initure.Pin=GPIO_PIN_1;           	//PB1
        GPIO_Initure.Mode=GPIO_MODE_AF_PP;  	//复用推挽输出
        GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
        GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
		GPIO_Initure.Alternate= GPIO_AF2_TIM3;	//PB1复用为TIM3_CH4
        HAL_GPIO_Init(GPIOB,&GPIO_Initure);
		HAL_NVIC_SetPriority(TIM3_IRQn,1,3);    //设置中断优先级,抢占优先级1,子优先级3
		HAL_NVIC_EnableIRQ(TIM3_IRQn);          //开启ITM3中断 
		}
}

好了,接下来还有一些常用的函数,也别忘了在.h文件里配置:

void TIM3_IRQHandler(void)
{
    HAL_TIM_IRQHandler(&TIM3_Handler);
}

void TIM_SetTIM3Compare4(u32 compare)
{
	TIM3->CCR4=compare; 
}

以上,我们就把板子配置完了。

接下来,我们进入与舵机控制仪一样的设置油门环节。

首先我们由说明书知道,要先给最大油门。

但是板子该怎么给呢? 这又不是控制仪,拿手拧来拧去就完事了。

别慌,我们先了解一个常识:

一般来说,对于50hz,20ms的PWM波,5%的占空比是最低油门,10%的占空比是最大油门。

那么,我们就让它输出50hz,20ms的PWM波吧!

话不多说,我们就在main函数里配置初始化吧

u8 keyval=0;
	Stm32_Clock_Init(360,25,2,8);//设置时钟,180Mhz
	delay_init(180);		//初始化延时函数 
	uart_init(115200);		//初始化串口波特率为115200 
	LED_Init();		  		//初始化与LED连接的硬件接口
  KEY_Init();				//按键初始化
	TIM3_PWM_Init(200-1,9000-1);//20ms,10KHz
	//TIM4_PWM_Init(800-1,2250-1); //90M/4500=20000的计数频率,自动重装载为200,那么PWM频率为20000/400=50hz,20ms
	MotorPwm_Init();

对于以上,我需要解释的是,定时器是这样运行的。

我们已知STM32F429的时钟是180Mhz,具体原理我没有很搞懂,但是从同学那里问到,TIM要以90M作为主频。朋友们在移植的时候可以查看自己板子的频率进行设置。

那么时钟的计数频率每秒就是:90M / [ (9000-1) + 1 ] = 10000次

而前头的( 200 - 1 ) ,则是计数值。

每次计数时长为: [ ( 200 - 1 )+ 1 ] / 10000 = 1/50  再乘以1000ms也就是一秒,就是1000ms * 1/50 = 20ms,也就是50hz。

 好了,我们配置好了定时器,接下来可以让它输出最大油门了,以下对于油门的操作,需要大家先行学习PWM波的基础知识,如果不想了解的话,也可以直接按照我的简单方法来:

我们知道PWM是通过比较CCR(计数值)和ARR(自动重装载值)来实现的,ARR也就是在TIM3_PWM_Init(200-1,9000-1)中提到的200这个敏感的数字。

鉴于此,我们已知设置好了ARR,那么只要已知操作CCR就可以操作油门了。

void MotorPwm_Init(void)
{
		TIM3->CCR4 = 20;//油门拉满
		TIM4->CCR1 = 20;//油门拉满
		delay_ms(3000);
		TIM3->CCR4 = 10;//油门拉低
	
		TIM4->CCR1 = 10;//油门拉低
		delay_ms(3000);
}

以上就是我们初始化油门的函数,按道理,在给电机通电后,再运行板子,你应该就能听到“哔——哔”,然后响起三声(12v电池)或者六声(24v电池)短鸣,最后一声“哔”就初始化完了。

按理说,这就可以动啦,不过,我们还需要一点语句,让它动起来。

while(1)
	{
 		keyval=KEY_Scan(0);
		if(keyval == KEY0_PRES)
		{
			TIM3->CCR4 += 1; //调大油门,转速逐渐增大。
			TIM4->CCR1 += 1; 
		}
		if(keyval == KEY1_PRES)
		{
			TIM3->CCR4 -= 1; 
			TIM4->CCR1 -= 1; 
		}
		if(keyval == KEY2_PRES)
		{
			TIM3->CCR4 = 10; //回到最小油门,急停
			TIM4->CCR1 = 10; 
		}
		if(keyval == WKUP_PRES)
			{
			MotorPwm_Init();
			}
	}

OK了,只要按KEY1,转速就会逐渐增加。记得要先开电调的电,再开板子的电,否则最开始的初始化代码可能不会得到完整运行。如果没有初始化成功,可以按一下wkup试试。文章来源地址https://www.toymoban.com/news/detail-501771.html

到了这里,关于【小白入门】新西达、好盈电调PWM控制直流无刷电机,以N5065为例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 直流无刷电机FOC控制算法 理论到实践 —— 理论(一)

    说明:图片素材来源于网络 1.1 FOC由来 什么是FOC? FOC英文全程为 field-oriented control ,即 磁场定向控制 ,也称之为 矢量控制 ,主要应用于直流无刷电机的控制,通过此控制算法可以实现对直流无刷电机的精确控制。 那么怎样才能称之为精确控制,FOC和普通的六步换相控制有

    2024年02月02日
    浏览(29)
  • 直流无刷电机FOC控制算法 理论到实践 —— 理论(二)

    上一章节:FOC直流无刷电机控制算法 理论到实践 —— 理论(一) 下一章节:直流无刷电机FOC控制算法 理论到实践 —— 实践 说明:部分图片素材来源于网络 续上一章: FOC直流无刷电机控制算法 理论到实践 —— 理论(一)(点击跳转) 下一章: 直流无刷电机FOC控制算法 理

    2024年02月07日
    浏览(28)
  • 【正点原子】STM32电机应用控制学习笔记——2.直流无刷电机基础知识

    没有电刷,无换向器的电机,也称为无换向器电机。 主要是定子和转子,而直流有刷电机多的是换向器和电刷。 而直流有刷的定子是N和S的永磁体,而无刷是三个线圈饶阻。 直流有刷是定子是饶阻,无刷的定子是N和S的永磁体。两者的转子和定子恰好是相反的。也是他们最大

    2024年02月03日
    浏览(55)
  • 无刷直流电机矢量控制(四):基于滑模观测器的无传感器控制

            在越来越多的应用场景中,无刷直流电机开始采用无位置传感器的控制方式。无刷直流电机运行于中高转速时,可以利用反电势信号估算转子位置,具体实现的方法不止一种,应用较多的是滑模观测器法。         本文整理了该方法的基本原理,介绍了在MAT

    2023年04月09日
    浏览(45)
  • 大疆开发板A型基于HAL库驱动M3508直流无刷电机及PID控制

    官网:RoboMaster 机甲大师赛 芯片型号STM32F427IIH6   1)新建new project,选择开发板A型的芯片 2)打开外部高速时钟 这是我的时钟树配置 3)我选择用can总线指令控制,所以根据开发版A型原理图打开相应的接口 其中can1为电调专用接口,can2为DJI OnboardSDK和Robomaster UWB定位系统用  我

    2023年04月09日
    浏览(21)
  • 【零基础玩转BLDC系列】基于霍尔传感器的无刷直流电机控制原理

    无刷直流电机(Brushless Direct Current Motor, 简称BLDC)采用电子开关电路来代替直流电机的机械换向器或电刷进行换向,提高了控制系统的可靠,性能上相较一般的传统直流电机有很大优势。无刷直流电机是永磁同步电机的一种,并不是真正的直流电机,其实质是直流电源输入,

    2024年02月02日
    浏览(25)
  • 9-基于STM32无刷直流电机控制器的设计仿真与实现(原理图+源码+仿真工程+论文+PPT+参考英文文献)

    包含此题目毕业设计全套资料: 原理图工程文件 原理图截图 仿真模型工程文件 仿真截图 低重复率文档(22642字) 英文文献及翻译 资料链接 1.基于单片机实现无刷直流电机控制器的设计,完成系统芯片选型; 2.确定无刷直流电机控制器的总体设计方案; 3.给出系统的硬件设计

    2024年02月07日
    浏览(39)
  • 小白入门STM32(2)---控制SG90舵机---基础工作原理详解

    本人一枚软件编程人员,有一定C语言基础,目前自学STM32单片机,写下此篇一巩固所学二交流分享。 按照惯例,先介绍理论再实战上手,穿插习题,最后给出我的愚见。 SG90属于一种舵机,最适合小白入门,可直接由单片机驱动。另外,单片机中给我们封装了很多东西,所以

    2023年04月10日
    浏览(29)
  • 【STM32】BLDC驱动&控制开发笔记 | 08_无刷直流电机BLDC参数辨识_极对数,相电阻,相电感,交轴直轴电感,反电动势常数,磁链常数

    本文主要想为后续电机控制的仿真和实验多测试出一些电气参数(以参数辨识的离线辨识为主)。目前包括:极对数;相电阻;相电感;交轴直轴电感;反电动势常数;磁链常数 的测量内容。 因为笔者水平有限,本文以资源整理为主,有的部分我也主要是看别人的博客学习

    2024年02月06日
    浏览(29)
  • PWM控制直流电机

    一,TB6612电机驱动模块       直流电机属于大功率器件,GPIO无法直接驱动,需要电机驱动模块配合,才能驱动直流电机. TB6612可以驱动2个直流电机。由IN1,IN2控制电机旋转方向,由PWM控制电机旋转速度。 二,代码部分 核心代码还是为PWM部分,直流电机初始化也只是多初始化

    2023年04月27日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包