宁波网站排名优化,徐州cms模板建站,app公司网站建设价格,自己做的网站如何链接到百度1.舵机原理
舵机内部有一个电位器#xff0c;当转轴随电机旋转#xff0c;电位器的电压会发生改变#xff0c;电压会带动转一定的角度#xff0c;舵机中的控制板就会电位器输出的电压所代表的角度#xff0c;与输入的PWM所代表的角度进行比较#xff0c;从而得出一个旋转…1.舵机原理
舵机内部有一个电位器当转轴随电机旋转电位器的电压会发生改变电压会带动转一定的角度舵机中的控制板就会电位器输出的电压所代表的角度与输入的PWM所代表的角度进行比较从而得出一个旋转的方向与角度。 该舵机可以控制0°~180°旋转 舵机0°~180°旋转对应高电平的时间为500us ~2500us而一般舵机的频率为50Hz也就是周期为20ms,对应的占空比就是2.5% ~12.5%2.5%对应舵机转0°12.5%对应舵机转180°7.5%就对应着转90°。
2.简单使用
使用旋转编码器对舵机进行控制旋转编码器转一圈是20个脉冲也就是计数40次为了让旋转编码器与舵机旋转对应上也就是旋转编码器最大计数20就可以了对应舵机的半圈 舵机的PWM输入引脚为PB8我们需要将PB8设置为PWM输出引脚 而PB8也是定时器4的通道3 代码
#define MAX_COUNT 20
int main(void)
{HAL_TIM_Encoder_Start(htim1,TIM_CHANNEL_ALL);//编码器启动HAL_TIM_PWM_Start(htim4, TIM_CHANNEL_3);//PWM输出启动int count0;int duty0;//舵机高电平对应的计数次数while (1){ count__HAL_TIM_GET_COUNTER(htim1);//统计编码器count20就是转半圈if(count60000)//反转{count0;__HAL_TIM_SET_COUNTER(htim1,0);}else if(countMAX_COUNT){countMAX_COUNT;__HAL_TIM_SET_COUNTER(htim1,MAX_COUNT);}//限制编码器最多输出10个脉冲20次计数duty(10*(count/(float)MAX_COUNT)2.5)/100.0*2000;__HAL_TIM_SET_COMPARE(htim4,TIM_CHANNEL_3,duty);}}duty(10*(count/(float)MAX_COUNT)2.5)/100.0*2000;count/MAX_COUNT在0~1之间 10*count/MAX_COUNT在0~10之间 10*count/MAX_COUNT2.5在2.5~12.5之间 (10*(count/(float)MAX_COUNT)2.5)/100.0在2.5%~12.5%之间 2000为自动重装值*2000就是看比较寄存器的值应该放多少形成占空比 count/MAX_COUNT整形/整形还是整形为了不舍弃强转为float