MiniFly微型四轴学习开发日志(四)——关于四轴硬件知识以及如何通过STM32输出PWM方波控制电机

目录

四轴硬件知识

通过STM32输出PWM方波


 一、四轴硬件知识

四轴无人机需要的硬件大致有以下几种:电子调速器(俗称电调),螺旋桨,电子(一般用无刷电机),飞行控制板,机架,电池,充电器,遥控器等。

电子调速器

1.电子调速器俗称电调,它的作用是将飞控板的控制信号转变为电流大小,以此控制电机转速。

2.电机在正常工作的时候会有大约3A的电流,如果不加入电调,飞控板就无法承受如此大的电流,并因此无法驱动电机。

3.另一方面,电调也作为变压器,将电池的电压,转换为需要的5V电压,给遥控器和飞控板供电。

4.电调的规格:电调一般都会标上多少A,如20A、40A,即电调能够提供的最大电流,一般需要跟电机和螺旋桨的规格进行匹配。如2212电机加上1045螺旋桨,其电流高达5A,一般需要用到30A,40A的电调为好。

5.四轴要求快速响应的电调,编程可以直接将电调接至遥控器接收机的油门输出通道。

6.购买的电调设置必须一致,防止转速不一致。由遥控器设置电调时必须接上电机,因为提示声是由电机发出的。

螺旋桨

1.螺旋桨的作用是将电机功率转化为推进力和升力。高速旋转时,螺旋桨的上下两面会形成压力差,并因此产生向上的升力。一般四轴为两个正桨+两个反桨。

2.螺旋桨的规格:如8060,80指的是桨的直径8英寸,60指的是螺距6英寸。

3.正桨装在顺时针旋转的电机上,反桨装在逆时针旋转的电机上。

4.区分正反桨:正确安装之后,顺时针旋转产生向下风力的时正桨,逆时针旋转产生向下风力的时反桨,用正桨反桨的作用是为了消除自旋。

5.一般来说,无论正反桨,安装的时候有字的一面朝上。

电机

1.电机分有刷电机、无刷电机。由于无刷电机耐用、力气大,一般四轴采用无刷电机。

2.型号:如2212,22指的是电机转子直径,也是电机的宽度;12指的是电机转子高度,也即电机整体高度。二者数字越大,电机的功率越大。

3.转速:Kv值:指的是外加1V电压对应的每分钟空转转速。如1000Kv,即外加1V电压时,n0=1000r/min。

飞行控制板

用于接受遥控信号并在处理后控制电机转速,详细功能介绍见前面三篇文章。

电池

1.四轴电池一般选用高倍率的锂复合物电池,因为同等容量之下它最轻,能让飞行效率最大化。

2.容量:如1000mah,即可以以1000ma电流放电持续1小时。

3.电池片数:1节电池是3.7V额定电压,满压为4.2V,多节电池为串联关系,如6s即6节电池。

4.放电能力:如1000mah 5c,即电池可以以5000mA最大电流强度放电。

5.型号:综合前面几点,如20000mah 6S 25C,即6节电池串联在一起,每节电池可以以20000ma电流持续放电1小时,最大放电电流为20000*25=500A。

机架

螺旋桨之间不可以太靠近,防止产生乱流相互影响,降低飞行效率。

遥控器

遥控器可以控制四轴的上下、左右、前后、旋转,最低为4通道。

分为两种:日本手、美国手。前者油门在右边,后者油门在左边。

充电器

1.型号与电池类似。

2.不可以用大电流进行快充,否则电池容易损坏。

3.平衡充电:由于工艺原因,无法保证一同供电的几片电池完全一致,因此更多时候它们的充放电特性不一,由此需要分别对内部单节电池充电。如动力锂电池,需要两组线,一组输出线2根,一组单节引出线,与其片数有关,将这些线都插入平衡充电器即可。

搭配问题

1.电机与螺旋桨搭配:螺旋桨越大,升力越大,但由此需要的驱动力也更大,因此需要与电机匹配。一般来说,螺旋桨需要的转速越大,升力越大,则需要更大力量的电机,即Kv值更小的电机(Kv值表示加1V电压得到的空载转速,加同样的电压下,得到的转速越小,说明电机力量越大)。

因此大的螺旋桨需要小Kv值电机,小的螺旋桨需要大Kv值的电机。

如果大螺旋桨匹配了大Kv值电机,电机会因此不够力,尽管Kv值很大,但是会让转速无法达到该Kv值,转速依然很低,且电机电调因此容易损坏。而小螺旋桨匹配了小Kv值电机,电机够力,但因为Kv值小,转转速不够,升力不够,无法起飞。

一般1000Kv匹配10寸左右的螺旋桨。

2.电池匹配:与电机、螺旋桨、要求飞行时间有关。电池的选择决定了飞行的时间。

一般电池型号的三个参数越大,电池越重。

一般大螺旋桨采用3S以上的大容量高C的锂电池(最低1500mah,20c,3s)

小型四轴采用小容量小c3s以下锂电池。

注意电池最大放电电流要大于各个电机的总电流,如果小于电机总电流,c过小,电池一致超负荷大电流放电,会导致电池损毁乃至自燃。

二、通过STM32输出PWM方波

STM32有两个PWM模式:PWM1与PWM2。

通过一个定时器,如TIM,利用比较寄存器,让定时器装入重装载值和比较值后进行计数,并输出电信号。当计数值等于比较值的时候改变输出电信号的电平极性,即可输出PWM方波改变比较值TIMx_CCR1即可改变输出的PWM方波占空比。

PWM1:向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为无效电平,否则为有效电平。

PWM2:在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。

一般要做的初始化配置有:相关定时器的配置、相关GPIO口的配置、PWM模式配置、输出比较通道的配置、使能TIM在CCRx上的预装载寄存器。

具体配置代码如下:

	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB, ENABLE);	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM4,ENABLE);  	    
	
	TIM_DeInit(TIM4);	
	TIM_DeInit(TIM2);	
	
	GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_TIM4); 	
	GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_TIM4); 	
	GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_TIM2); 	
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_TIM2); 	
	
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_10;	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;        				
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;				
	GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;      				
	GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;        				
	GPIO_Init(GPIOB,&GPIO_InitStructure);              				
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;							
	GPIO_Init(GPIOA,&GPIO_InitStructure);              					
	
	TIM_TimeBaseStructure.TIM_Period=MOTORS_PWM_PERIOD;			
	TIM_TimeBaseStructure.TIM_Prescaler=MOTORS_PWM_PRESCALE;	
	TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;	
	TIM_TimeBaseStructure.TIM_ClockDivision=0; 					
	TIM_TimeBaseStructure.TIM_RepetitionCounter=0;				
	TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);				
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);				
	TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;				
	TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;	
       TIM_OCInitStructure.TIM_Pulse=0;							
	TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;		
	TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;	
	TIM_OC2Init(TIM4, &TIM_OCInitStructure);  	
	TIM_OC1Init(TIM4, &TIM_OCInitStructure);  	
	TIM_OC3Init(TIM2, &TIM_OCInitStructure);  	
	TIM_OC1Init(TIM2, &TIM_OCInitStructure);  	
	TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);  
	TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  
	TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);  
	TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);  
 
	TIM_ARRPreloadConfig(TIM4,ENABLE);	
	TIM_ARRPreloadConfig(TIM2,ENABLE);	
	
	TIM_Cmd(TIM4, ENABLE);  
	TIM_Cmd(TIM2, ENABLE);  
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铠袖一触1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值