Micropython教程之TPYBoard开发板驱动舵机教程(萝卜学科编程教育)
大家应该都看到过机器人的手臂啊腿脚啊什么的一抽一抽的在动弹吧...是不是和机械舞一样的有节奏,现在很多机器人模型里面的动力器件都是舵机。
但是大家一般见到的动力器件都是像步进电机,直流电机这一类的动力器件,应该对舵机比较陌生。(萝卜教育学科编程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+20
M0.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://www.cnblogs.com/xxosu/p/10086633.html
Micropython教程之TPYBoard开发板驱动舵机教程(萝卜学科编程教育)的更多相关文章
- MicroPython教程之TPYBoard开发板DIY红外寻迹小车
智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言 ...
- MicroPython教程之TPYBoard开发板DIY小型家庭气象站
众所周知,iPhone6/6Plus内置气压传感器,不过大家对于气压传感器还是很陌生.跟字面的意思一样,气压传感器就是用来测量气压的,但测量气压对于普通的手机用户来说又有什么作用呢? 海拔高度测量 对 ...
- Micropython教程之TPYBoard制作蓝牙+红外循迹小车
1.实验目的 学习在PC机系统中扩展简单I/O接口的方法. 进一步学习编制数据输出程序的设计方法. 学习蓝牙模块的接线方法及其工作原理. 学习L298N电机驱动板模块的接线方法. 学习蓝牙控制小车的工 ...
- MicroPython教程之TPYBoard v102 CAN总线通信
0x00前言 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串行通信协议.CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探测和管 ...
- MicroPython实例之TPYBoard开发板控制OLED显示中文
0x00 前言 之前看到一篇文章是关于TPYBoard v102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近利用空余时间搞定了这个实验,特此将实验过程及源码分享出来,方便以 ...
- TPYBoard开发板搭建与阿里云服务发送数据
今天给大家带来的是TPYBoard V202开发板的一次测试项目使用心得.而测试项目就是给服务端发送硬件底层数据,而数据有产品名称,WF模块MAC地址,温湿度数据. 什么是MicroP ...
- Xamarin Anroid开发教程之Anroid开发工具及应用介绍
Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Andro ...
- HealthKit开发快速入门教程之HealthKit开发概述简介
HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“He ...
- 迅为iTOP-4418/6818开发板-驱动-实现GPIO扩展
实现 GPIO 扩展,先弄清楚“复用”的概念,将调用这些 GPIO 的驱动去掉配置,重新编译,加到自己的驱动中,就可以实现扩展的 GPIO 的输入和输出.另外必须要先看文档“迅为iTOP-4418开发 ...
随机推荐
- vue使用axios发送post请求时的坑及解决原理
前言:在做项目的时候正好同事碰到了这个问题,问为什么用axios在发送请求的时候没有成功,请求不到数据,反而是报错了,下图就是报错请求本尊 vue里代码如下: this.$http.post('/ge ...
- Nginx知多少系列之(五)Linux下托管.NET Core项目
目录 1.前言 2.安装 3.配置文件详解 4.Linux下托管.NET Core项目 5.Linux下.NET Core项目负载均衡 6.Linux下.NET Core项目Nginx+Keepali ...
- Nginx知多少系列之(二)安装
目录 1.前言 2.安装 3.配置文件详解 4.Linux下托管.NET Core项目 5.Linux下.NET Core项目负载均衡 6.Linux下.NET Core项目Nginx+Keepali ...
- 【PHP】数组
一.生活中的数组: a) 教室的座位:第一天来教室的时候,每个座位上都有自己的一个名字,我们可以通过这个名字快速定位到自己的座位在什么位置! b) 电影院的座位:我们买了电影票之后,能够通 ...
- 使用mpvue开发小程序如何定义全局变量
我们创建好mpvue项目之后,找到src/main.js打开在后面添加一行代码 (注意:不能在const app = new Vue(App) 之前添加) Vue.prototype.globalDa ...
- http之抽丝剥茧,深度剖析http的那些事儿
最近,小编一心扎跟学技术,毫不顾及头发的掉落速度,都快成地中海了,不过也无大碍,谁让咱是一个爱钻技术的男人呢.最近两周老是看到http,那么这个http,有哪些猫腻呢,很多同学都有这种理解,就是对于h ...
- 如何用VmwareWorkstation安装Centos系统
教你如何安装虚拟机系统 首先你得有虚拟化软件,常用的VmwareWorkstation一般能满足日常需求. 下载地址,请自行搜索. 第一步,新建虚拟机 选择安装系统源 这里有三个选项. 1.第一个是使 ...
- CVE-2019-17671:wrodpress 未授权访问漏洞-复现
0x00 WordPress简介 WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持 PHP 和 MySQL数据库的服务 ...
- Python工业互联网监控项目实战3—websocket to UI
本小节继续演示如何在Django项目中采用早期websocket技术原型来实现把OPC服务端数据实时推送到UI端,让监控页面在另一种技术方式下,实时显示现场设备的工艺数据变化情况.本例我们仍然采用比较 ...
- B - Raising Modulo Numbers
People are different. Some secretly read magazines full of interesting girls' pictures, others creat ...