2019独角兽企业重金招聘Python工程师标准>>>

大家应该都看到过机器人的手臂啊腿脚啊什么的一抽一抽的在动弹吧...是不是和机械舞一样的有节奏,现在很多机器人模型里面的动力器件都是舵机。

但是大家一般见到的动力器件都是像步进电机,直流电机这一类的动力器件,应该对舵机比较陌生。(萝卜教育学科编程tpyboard。com)

舵机主要有以下3个优点:

一是体积紧凑,便于安装; 二是输出力矩大,稳定性好; 三是控制简单,便于和数字系统接口。

本次教程中使用的是SG90的舵机,个人感觉性能一般,但是比较稳定和耐用,做DIY实验器材用还是比较不错的。

舵机的基本介绍

舵机,又称伺服马达,是一种具有闭环控制系统的机电结构。舵机主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。 其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向,再驱动无核心马达转动, 透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一般舵机只能旋转180度。(萝卜教育学科编程tpyboard。com)


    舵机的接线

舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同。

舵机的控制原理

舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的。

占空比

1.指高电平在一个周期之内所占的时间比率。

2.正脉冲的持续时间与脉冲总周期的比值。例如:正脉冲宽度1μs,信号周期10μs的脉冲序列占空比为0.1。即:脉冲的宽度除以脉冲的周期称为占空比。标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms之间,但是,事实上脉宽可由0.5ms到2.5ms之间,脉宽和舵机的转角0°~180°相对应。(萝卜教育学科编程tpyboard。com)

Python语言驱动舵机的方法

其实说了以上这些呢,都是为了给大家介绍利用Python语言来控制舵机的转动角度,和普通单片机一样的,都是需要用不同宽度的脉冲来控制器转动的角度。 说白了,我们需要做的就是使用Python语言来输出不同宽度的脉冲信号,来给到信号线里面去。现在一般的舵机脉宽那都是在0.5ms到2.5ms之间,这就可以计算了。 0.5MS-2.5MS这两毫秒里面可以控制转动到180度,这样算下来,转一度的脉冲时间大约就是2毫秒/180度=0.011毫秒/度,这样依次计算就可以了。剩下的就是写一个脉冲信号了,相信写脉冲信号的程序大家都很熟悉啦。 但是,在舵机里面有一些几点几的毫秒的延时脉冲,这个在Python语言里如果想要利用delay()函数来做延时的话,很难做到每个角度都可以转到,甚至说是很难做到转动到大多数的角度。所以,你需要找到一个比毫秒延时还要精确的延时函数来作为脉冲的计时延时函数。我现在用的是time.sleep(i)这个函数,这个函数里面的i,建议设置在0.0000-0.0035之间。不能说精确的转动到每个角度吧,但是百分之九十的角度都是可以转到。如果想让舵机进行循环摆动,一定要记得加上适当的延时,因为程序可以飞快的跑,但是舵机转动也是需要一点时间的。舵机转动时间肯定要比程序跑一遍的时间要长的多啦。(萝卜教育学科编程tpyboard。com)

实验目的

通过加速度传感器的X方向控制舵机的转动,让舵机随TPYBoard 的转动而转动

实验材料

TPYBoard v10x 开发板 1块
    SG90舵机 1个
    杜邦线 若干

实验线路图

这里电路图很简单,只需要给舵机接上VCC和GNG(这是最基本的,这个开发板上好多电源和地可以用)。 然后把舵机的信号线接到任意一个GPIO口(后面程序里面要在这个GPIO往外输出脉冲的,我用了X1,还有很多其他的GPIO口可以用。)就可以了。 接线原理图:

import pyb
import time
from pyb import Pin
xlights = (pyb.LED(2), pyb.LED(3))
ylights = (pyb.LED(1), pyb.LED(4))
M0 = Pin('X1', Pin.OUT_PP)
accel = pyb.Accel()
i=0.0001
j=0.0000
while True:x = accel.x()print("x=")print(x)Y=x+20M0.high()time.sleep(i*Y)M0.low()time.sleep(i*Y)pyb.delay(12)if x > 0:xlights[0].on()xlights[1].off()elif x < 0:xlights[1].on()xlights[0].off()else:xlights[0].off()xlights[1].off()

虽然舵机只是能实现转动指定的角度,看起来功能很单一,但是单一的功能结合起来,就能完成很复杂的任务。

转载于:https://my.oschina.net/micropython/blog/2982336

Micropython教程之TPYBoard开发板驱动舵机教程(萝卜学科编程教育)相关推荐

  1. Micropython教程之TPYBoard DIY金属探测仪实例演示(萝卜学科编程教育)

    1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法. 2. 进一步学习编制数据输入输出程序的设计方法. 3. 学习LJ12A3-4-Z/BX 金属接近开关的工作原理. 4. 硬件接线方法 ...

  2. Micropython教程之TPYBoard开发板DIY智能温控小风扇(萝卜学科编程教育)

    2019独角兽企业重金招聘Python工程师标准>>> 1.实验目的 1.?学习在PC机系统中扩展简单I/O?接口的方法.     2.?进一步学习编制数据输出程序的设计方法.?? ...

  3. micropython教程nucleo-f767zi开发板_Micropython教程之TPYBoard开发板制作电子时钟(萝卜学科编程教育)...

    1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法. 2. 什么是SPI接口. 3. 学习TPYBoard I2C接口的用法. 4. 学习LCD5110接线方法. 5. 设定时钟并将当前 ...

  4. Micropython教程之TPYBoard制作蓝牙+红外循迹小车

    1.实验目的 学习在PC机系统中扩展简单I/O接口的方法. 进一步学习编制数据输出程序的设计方法. 学习蓝牙模块的接线方法及其工作原理. 学习L298N电机驱动板模块的接线方法. 学习蓝牙控制小车的工 ...

  5. Micropython教程之TPYBoard DIY电子时钟(萝卜学科编程教育)

    1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法. 2. 什么是SPI接口. 3. 学习TPYBoard I2C接口的用法. 4. 学习LCD5110接线方法. 5. 设定时钟并将当前 ...

  6. micropython仿真器_Micropython教程之TPYBoard DIY超声波测距仪实例演示

    1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法. 2. 进一步学习编制数据输出程序的设计方法. 3. 学习超声波模块的测距原理. 4. 学习LCD5110接线方法 5. 学习TPYb ...

  7. micropython做中继_超声波测距仪编程_Micropython教程之TPYBoard DIY超声波测距仪实例演示...

    1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法. 2. 进一步学习编制数据输出程序的设计方法. 3. 学习超声波模块的测距原理. 4. 学习LCD5110接线方法 5. 学习TPYb ...

  8. 超声波测距仪编程_Micropython教程之TPYBoard DIY超声波测距仪实例演示

    1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法. 2. 进一步学习编制数据输出程序的设计方法. 3. 学习超声波模块的测距原理. 4. 学习LCD5110接线方法 5. 学习TPYb ...

  9. python can总线_MicroPython教程之TPYBoard v102 CAN总线通信

    原标题:MicroPython教程之TPYBoard v102 CAN总线通信 0x00前言 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串 ...

最新文章

  1. OpenCV-Java版学习(2.图像入门)
  2. 向大脑学习智能本质,探索通用 AI 的另一条可行路径
  3. ASP.NET JScript公共类(非常有用)
  4. 剑指Offer:合并两个排序的链表【25】
  5. java16下载_java lombok下载
  6. oracle函数lp,Oracle 执行计划的查看方式
  7. 牛客网-数据结构笔试题目(七)-k-amazing数字求解
  8. 高性能MySQL(1)——MYSQL架构
  9. 【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
  10. Android 解决ViewPager双层嵌套的滑动问题
  11. 【整理】什么是优先级反转+有何危害+如何避免和解决
  12. 哈夫曼树的生成详解(C++)
  13. UGUI小技巧之Text随文本内容自动变化大小
  14. 360浏览器不能打开CSDN登陆页面
  15. Java弹球游戏,刚学Java时做的
  16. cpu架构之体系架构
  17. DiskPart-删除磁盘分区
  18. BAT批处理提取文件内容替换指定文件内容
  19. 3D相机技术 | 立体视觉传感器+TOF相机
  20. 把时间还给洞察,且看PPT调研报告自动生成攻略

热门文章

  1. Android学习系列(16)--App列表之圆角ListView
  2. 五、顺序访问性能测试
  3. Google陆续收购技能机器人技术公司——智能机器人未来是否会发热?
  4. 二叉树——数据结构课堂作业
  5. WordPress 修改固定链接出错(apache2)
  6. Cacti+Nagios安装后按自己的相关要求修改相关信息
  7. jquery取得text,areatext,radio,checkbox,select的值
  8. eigrp与ospf的综合实验(还是要想想办法才做得出来哦)
  9. 荷花用计算机怎么画,怎样画荷花荷叶简笔画
  10. android的fragment讲解