0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

树莓派驱动舵机介绍_树莓派驱动舵机代码

h1654155282.3538 来源:网络整理 2018-05-30 14:47 次阅读

舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度舵机为例,那么对应的控制关系是这样的:

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

1.0ms------------45度;

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

2.0ms-----------135度;

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

请看下形象描述吧:

树莓派驱动舵机介绍_树莓派驱动舵机代码

舵机的工作电压和电流

每一款舵机都有自己的参数,如TR213舵机的工作电压是4.8-7.2V,TR205舵机的工作电压是4.8-6V,电压不能超过这个范围,否则会很容易烧坏舵机,在不清楚舵机工作电压范围的情况下,建议使用5V给舵机供电

舵机的工作电流是根据舵机的实际情况而定的,如TR213舵机,在空载的时候电流几乎为0,而在正常负载的情况下,电流在0.5A左右,视实际情况而定。六足机器人需要18个TR213金属舵机,需要提高的电流大概在8A左右,如果电源功率不够会影响舵机的性能,最常见的现象是,当一个舵机负载的时候,其他舵机会出现混乱,无规律的乱摆。

舵机的接线如下图

树莓派驱动舵机介绍_树莓派驱动舵机代码

树莓派驱动舵机介绍_树莓派驱动舵机代码

市场上90%的舵机中间那根线都是正级。

基础知识介绍的差不多了,具体可以去百度看看舵机手册。

下面我们来说说在树莓派中,如何用wiringPi库去驱动舵机随心所欲的转。为什么要用wiringPi库呢,因为博主不怎么喜欢写Python,博主喜欢写c/c++代码。废话不多说,开始。

第一:首先,我已经知道了舵机的pwm周期为20ms,然后是这样的

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

1.0ms------------45度;

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

2.0ms-----------135度;

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

也就是说给它1.5ms的高电平,19.5ms的低电平转向0度位置。这里需要注意,是0度位置,不是舵机转0度,当然如果舵机怎么正好处于0度位置,当然也不转。这里可能就有人要问了,那啥位置算是0度位置呢?根据我对舵机的理解(180度的舵机),就是你向一个方向用手转动舵机,到一个你无法转动的地方,这个位置不是0度位置,就是180度位置。然后你用下面的代码运行一下就知道了。

树莓派驱动舵机介绍_树莓派驱动舵机代码

我这里就这样来模仿pwm的。这个代码一运行,舵机就自动到了0度位置。

同理,想转到45度位置,90度位置,135度位置,180度位置的代码如下:

树莓派驱动舵机介绍_树莓派驱动舵机代码

树莓派驱动舵机介绍_树莓派驱动舵机代码

这里可能有人要说为啥不用delay()函数呢,因为delay函数精确到毫秒,当我传1.5给它的时候,和传1给它的时候,你会发现舵机都是转向45度位置,因为delay(int x),当1.5传过去的时候精度丢失了。(我一开始就犯了这个错误,尴尬啊)

到这里我想你应该已经知道怎么旋转45度,90度,等等了吧。然后你可能发现舵机旋转的太快,可能不受自己的控制了。这里我就要给你提供一种思路,怎么去解决这个问题。

当然,本人能力有限,写的难免有错误,希望指正。

下面我给一个很不错的链接,想深入研究的可以去看看(他用的是单片机)

http://www.njliaohua.com/lhd_5xtsq7jr1e0088t3wpu3_1.html

我是这样认为的。0.5ms转向0度,1ms转向45度,那个这其中是不是经历了0.5ms,而且转了45度,所以我就用0.5=500us,500us/45度。然后得出约为11.11us/度。

接下来我的代码是这样写的。

树莓派驱动舵机介绍_树莓派驱动舵机代码

这样一来速度确实是降了下来,但是每次舵机都要先转向0度位置,然后才能转向我们输入的个角度位置。

树莓派3b+控制舵机、伺服电机的驱动代码

#include《stdio.h》

#include《wiringPi.h》

void init();

int main()

{

init();

int angle=0;

scanf(“%d”,&angle);

int i=0;

float x=0;

int k=180;//180次循环的时间够了

while(k--)

{

x=11.11*i;

digitalWrite(15,HIGH);

delayMicroseconds(500+x);

digitalWrite(15,LOW);

delayMicroseconds(19500-x);

if(i==angle)

break;

i++;

}

return0;

}

void init()

{

wiringPiSetup();

pinMode(15,OUTPUT);

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 舵机
    +关注

    关注

    17

    文章

    239

    浏览量

    40393
  • 树莓派
    +关注

    关注

    113

    文章

    1639

    浏览量

    104742
收藏 人收藏

    评论

    相关推荐

    #硬声创作季 树莓教程:23、舵机控制原理

    舵机舵机控制树莓
    Mr_haohao
    发布于 :2022年10月02日 08:37:26

    #硬声创作季 #树莓 树莓PICO-05 PWM驱动舵机

    舵机树莓
    水管工
    发布于 :2022年10月08日 23:23:22

    树莓驱动程序开发求解

    本人菜鸟一枚,刚入门linux,买了一块树莓二代B+的板子来学习驱动程序的开发,但现在网上很多都是用python库写的代码,与以前学的s3c6410
    发表于 05-08 15:45

    请教利用树莓制作六足机器人的问题

    本人新手,最近在准备制作一个六足机器人,如果利用舵机控制器+遥控手柄套件的话,可以很容易就实现简单的功能。为了能让六足机器人实现更加复杂的功能,我想利用arduino+树莓+舵机控制
    发表于 11-10 15:33

    树莓网络控制的船

    一个使用webiopi框架的基本的简单的Python代码建立的。第一步:零件和工具零件[树莓(任何型号)L298N电机驱动模块TP-Link USB WiFi遥控船电池组USB电源
    发表于 01-20 15:24

    我买了两个SG90舵机 树莓怎么写代码!?

    我买了一个云台 舵机是SG90 树莓派上用python 怎么写代码驱动两个舵机!?怎么同时控制两个舵机
    发表于 04-19 00:32

    请问树莓派上的gpio口能驱动多大的设备?

    我试过用树莓直接驱动舵机,可以驱动,但对性能是有影响的;点led,没问题;点一个5W的激光器,点不亮。。。
    发表于 03-25 00:44

    硬件小白,请教各位大神,锂电池和树莓的供电解决方案

    我自己是搞软件的,想自己尝试整个机器人自己玩,基于树莓、多个舵机做关节、马达驱动轮子、锂电池供电等主要部件,最近一直在找资料和看淘宝找相关的部件。现在有一个问题困扰多日,今天特地注册
    发表于 03-27 23:19

    树莓之MPU6050控制舵机转向

    一、材料清单树莓3B+MPU6050PCA9685扩展板(输出16路pwm)一个舵机面包板、GPIO扩展板(可有可无,只是方便接在面包板上)二、电路接线PCA9685和树莓
    发表于 07-05 07:32

    树莓是如何驱动电机的

    使用电机驱动模块的原因是什么?树莓是如何驱动电机的?有哪些步骤?
    发表于 08-13 06:29

    树莓控制多个舵机

    系统驱动程序的编写,用到了uboot裁剪移植,内核的裁剪和移植,还有文件系统的制作等等内容,应用层软件通过系统调用控制底层设备,还需要封装库等等,很是复杂,这段时间接触到了树莓和Python,发现很多基...
    发表于 09-03 06:44

    基于树莓驱动小车

    让我们一起共建树莓派生态圈!树莓环境搭建好后,就可以开始动手驱动小车了,本教程采用的是python语言编写,编译工具为emacs。物理连接部分:首先,在连接线
    发表于 09-06 07:55

    树莓遥控视频小车的方法

    树莓遥控视频小车实现功能硬件材料控制程序PS2手柄驱动程序运动控制程序源码链接扩展功能实现功能基于树莓3B+的视频车:可遥控,显示小车两
    发表于 02-08 06:02

    微雪电子树莓舵机驱动板 Servo Driver HAT (B)介绍

    树莓舵机驱动板 16路12位分辨率 弯排针版 16路12位分辨率(4096级), 弯排针版 型号 Servo Driver HAT (B)
    的头像 发表于 11-13 15:12 1609次阅读
    微雪电子<b class='flag-5'>树莓</b>派<b class='flag-5'>舵机</b><b class='flag-5'>驱动</b>板 Servo Driver HAT (B)<b class='flag-5'>介绍</b>

    微雪电子树莓舵机驱动板|Servo Driver HAT介绍

    树莓舵机驱动板 16路12位分辨率(4096级) I2C接口 直排针版 可控制16路舵机,每路12位分辨率,适合用于机械臂或六足等机器人舵机
    的头像 发表于 11-13 15:14 3082次阅读
    微雪电子<b class='flag-5'>树莓</b>派<b class='flag-5'>舵机</b><b class='flag-5'>驱动</b>板|Servo Driver HAT<b class='flag-5'>介绍</b>