orangepizero2舵机测试

一、舵机s90

二、舵机原理

        首先看一般舵机的原理,舵机内部有一个基准电路,产生周期为20ms,高电平宽度为1.5ms的基准信号,这个位置其实是舵机转角的中间位置。通过比较信号线的PWM信号与基准信号,内部的电机控制板得出一个电压差值,将这个差值加到电机上控制舵机转动。控制舵机的高电平范围为0.5ms到2.5ms。0.5ms为最小角度,2.5ms为最大角度。

以180度舵机为例:

0.5ms----------------0度;

1ms -----------------45度;

1.5ms----------------90度;

2ms -----------------135度;

2.5ms ---------------180度;

        舵机是一个伺服电机,属于伺服系统控制,伺服系统(servomechanism)又称随动系统,是用来精确地跟随或复现某个过程的反馈控制系统。伺服系统使物体的位置、方位、状态等输出被控量能够跟随输入目标(或给定值)的任意变化的自动控制系统。舵机的转动由PWM脉冲控制,每经过一个脉冲舵机转过一个特定的角度。同时舵机是一个闭环控制系统,因为,伺服电机本身具备发出脉冲的功能,所以伺服电机每旋转一个角度,都会发出对应数量的脉冲,这样,和伺服电机接受的脉冲形成了呼应,或者叫闭环,如此一来,系统就会知道发了多少脉冲给伺服电机,同时又收了多少脉冲回来,这样,就能够很精确的控制电机的转动,从而实现精确的定位。

三、舵机测试代码

#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
#include <signal.h>
#include <wiringPi.h>


#define SG90Pin 1

static int i = 0;
int jd;


void signal_handler(int signum)
{
    if(i <= jd){
        digitalWrite(SG90Pin,HIGH);
    }else{    
        digitalWrite(SG90Pin,LOW);
    }

    if(i == 40){
        i=0;
    }
    i++;
}


int main()
{
    struct itimerval itv;

    wiringPiSetup();
    pinMode(SG90Pin,OUTPUT);


    //设定定时器时间
    itv.it_interval.tv_sec = 0;
    itv.it_interval.tv_usec = 500;
    //设定开始生效,启动定时器的时间
    itv.it_value.tv_sec = 1;
    itv.it_value.tv_usec = 0;
    //设定定时方式
    if(-1 == setitimer(ITIMER_REAL,&itv,NULL)){
        perror("error");
        exit(-1);
    }
    signal(SIGALRM,signal_handler);
    while(1){
    
        scanf("%d",&jd);
    }


    return 0;
}
 


四、说明

        本次实验使用的是wiringOP-master.zip。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值