PWM驱动智能小车舵机运动


一、硬件电路

通过TIMER3的通道3提供PWM驱动电机
在这里插入图片描述
在这里插入图片描述

二、舵机初始化

初始化让舵机位于最左边,也就是0°。

static int ServoInit(struct Servo *ptdev){
	if(NULL == ptdev){
		LogDebug("ServoInit EINVAL \r\n");
		return -EINVAL;
	}
	int ret = ServoDevPwm.Config(&ServoDevPwm,SET_PERIOD_VALUE,20000000);
	if(ret != ESUCCESS){
		LogDebug("ServoDev.Config EIO \r\n");
		return -EIO;
	}
	
	ret = ServoDevPwm.Config(&ServoDevPwm,SET_COMPARE_VALUE,500000);
	if(ret != ESUCCESS){
		LogDebug("ServoDev.Config EIO \r\n");
		return -EIO;
	}
	return ESUCCESS;
}

在本文中
舵机0°时 PWM周期为20ms 占空时间为0.5ms
舵机45°时 PWM周期为20ms 占空时间为1ms
舵机90°时 PWM周期为20ms 占空时间为1.5ms
舵机180°时 PWM周期为20ms 占空时间为2ms

三、舵机控制

static int ServoSetAngle(struct Servo *ptdev,uint8_t angle){
	if(NULL == ptdev || angle > 180){
		LogDebug("ServoSetAngle EINVAL \r\n");
		return -EINVAL;
	}

	uint32_t compare = 500000 + angle*500000/45;
	int ret = ServoDevPwm.Config(&ServoDevPwm,SET_COMPARE_VALUE,compare);
	if(ret != ESUCCESS){
		LogDebug("ServoDev.Config EIO \r\n");
		return -EIO;
	}
	
	return ESUCCESS;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

葛霸霸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值