stm32校准ztw的shark电调的油门行程

书接上回按键控制舵机,这次是不同按键发送不同pwm来设置电调的油门行程。

先放上我使用的电调样式和部分说明

 

 

pwm频率是50HZ,周期是20ms,脉宽范围是 0.8ms~2.2ms,占空比是4%~11%。

我需要设置正反转,双向模式,又担心速度太快,于是我取9.5%为最高点,7.5%为中立点。

下面展示一下部分代码:

tim.c

# include "tim.h"
 
void TIM2CH2_init(void)
{	
	//使能GPIO时钟、定时器时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		//使能 GPIO时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);		//使能 外设时钟
	
	//配置GPIO引脚为复用功能,即用于定时器
	GPIO_InitTypeDef	GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;		//选择引脚为复用推挽功能
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;	//选择引脚速度	
	GPIO_Init(GPIOA,&GPIO_InitStructure); 					//初始化GPIO
	
	//配置定时器
	TIM_TimeBaseInitTypeDef		TIM_TimeBaseStructure;
	TIM_TimeBaseStructure.TIM_Period=(arr-1);									//定时器周期
	TIM_TimeBaseStructure.TIM_Prescaler=(psc-1);							//预分频器
	TIM_TimeBaseStructure.TIM_ClockDivision = 0;
	TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;	//计数模式:向上计数
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);  					//初始化定时器
	
	//配置定时器的通道
	TIM_OCInitTypeDef		TIM_OCInitStructure;
	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_OC2Init(TIM2,&TIM_OCInitStructure);											//初始化定时器通道1
	
	//使能预装载
	TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);
	
	//开启定时器
	TIM_Cmd(TIM2,ENABLE);
}

tim.h

#ifndef __TIM_H
#define __TIM_H
 
#include "stm32f10x.h"

#define arr					2000		//计数周期
#define psc					720	//分频

void TIM2CH2_init(void);
 
#endif /* __TIM_H */

main.c

#include "stm32f10x.h"
#include "delay.h"
#include "key.h"
#include "led.h"
# include "tim.h"

int main(void)
{		
	// 初始化
	delay_init();
	key_init();
	led_init();
	TIM2CH2_init();
	
	delay_ms(100);
	
	TIM_SetCompare2(TIM2,arr*0.095);
	
	while (1)
	{
		if(Key_Scan(KEY1_PORT, KEY1_PIN) == 1)
		{
			GPIO_SetBits(LED_PORT,LED_PIN);
			TIM_SetCompare2(TIM2,arr*0.075);
		}
		if(Key_Scan(KEY2_PORT, KEY2_PIN) == 1)
		{
			GPIO_ResetBits(LED_PORT,LED_PIN);
			TIM_SetCompare2(TIM2,arr*0.055);
		}
	}
}
/*********************************************END OF FILE**********************/

操作步骤:

1.将电调和推进器或马达相连;

2.电调的pwm三根细线与stm32相连,此时pwm为最高点(按照说明书来的);

3.电调的电源线即两根粗的线连接电源,等待三秒(按照说明书来的);

4.听到滴滴两声后,按下按键1,将pwm转为中立点信号(按照说明书来的);

5.再次听到滴滴两声就设置完成了;

6.按下按键2,推进器或马达快速旋转,证明设置成功了;

7.正常使用时,需要把电调,马达,stm32,电源,全部连接,然后stm32发送pwm,电调就会对应的旋转了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值