树莓派控制舵机

目录

工作原理 

 代码

硬件PWM

工作原理 

舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度(高电平)从0.5ms-2.5ms,相对应舵盘的位置为0—180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。
控制电路板接受来自信号线相应的PWM控制信号,进而控制电机转动,电机带动—系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。

1° = 500us/45 = 11.1us

舵机的控制需要MCU产生一个周期为20ms的脉冲信号,以0.5ms到2.5ms的高电平来控制舵机转动的角度。 

 代码

#include <wiringPi.h>
#include <stdio.h>

int main()
{
	wiringPiSetupGpio(); //当使用这个函数初始化树莓派引脚时,程序中使用的是BCM GPIO 引脚编号表。

	pinMode(1,OUTPUT);

	while(1)
	{
		digitalWrite(1,HIGH);
		delayMicroseconds(500);
		digitalWrite(1, LOW);
		delayMicroseconds(19500);
	}
	return 0;
}

 wiringPiSetupGpio();要用sudo超级权限操作

硬件PWM

#include <stdio.h>
#include <wiringPi.h>

int  Pwmpin =   18;         ////物理引脚12对应的是BCM的18引脚

int main()
{
	wiringPiSetupGpio();
	pinMode(Pwmpin, PWM_OUTPUT);
	pwmSetMode(PWM_MODE_MS);

	pwmSetRange(2000);  //周期设置为2000,最终我们要通过时钟,分频,配置最终频率为50hz才能得出20ms,舵机就是20ms


	pwmSetClock(192);
	//50hz = 19.2M/192/2000 
	pwmWrite(Pwmpin, 150);   //2000对应20ms,我们让他转90°是1.5ms,对应150

	delay(1000);
	pwmWrite(Pwmpin, 200);


	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Paradise_Violet

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

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

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

打赏作者

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

抵扣说明:

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

余额充值