mBlock Arduino(9)舵机(Servo motor)控制

news/2024/9/21 20:38:42

舵机(Servo motor)英文常简称 Servo,中文也有人称伺服机,由控制电路、齿轮、直流马达等组成,可使用〈mBlock & Arduino(4)利用 PWM 模拟类比讯号〉中谈过的 PWM 技术来控制舵机转动角度,像Plotclock就应用了三个舵机,以手臂在白板上绘制出目前的时间。

舵机控制原理

舵机的基本原理是接受 PWM 讯号,经由内部电路计算出转动角度,根据我查到的资料来看,大多数舵机旋转角度是 0 到 180 度,PWM 讯号的频率必须是 50 Hz,控制舵机角度的脉冲持续时间约是 1.0 ms 到 2.0 ms,脉冲持续时间若为 1.0 ms 时角度为 0 度,1.2 ms 时角度为 45 度,1.5 ms 时角度为 90 度,2.0 ms 时角度为 180 度。

Plotclock 用的是Tower Pro 9g servos(SG90 digital servo),为三线式舵机,红线接电源,棕色的线接 GND,橘色线为信号线:

在 Fritzing 中,是以红色线接电源,黑色线接地,黄色为信号线作代表,你可以如下连接线路:

 

如果直接使用 Arduino 官方语言,可以使用delayMicroseconds函式来控制脉冲宽度。

根据

Servo library

的说明,除了 Arduino Mega 之外,如果使用了 Arduino 的 Servo 程式库,D9 与 D10 脚位的 PWM 功能就会被停用,因此,通常会把舵机的信号线接在 D9 或 D10 脚位,实际测试 mBlock 的“设置舵机脚位…”方块时,也是如此。

有指针的亮度感应器

在〈mBlock & Arduino(8)光敏电阻、亮度感应器与光线追踪器〉中,我们使用光敏电阻制作了简单的亮度感应器,你可以加上舵机,配合 SG90 的手臂,作个有指针的亮度感应器,你可以如下拉设电路:

实际测试我手中的光敏电阻,完全盖住它的话,类比输入脚位约可量得 400 左右的值,以手电筒直接照射下,约为 1000 出头的值,因此暂且定义全暗为 400,全亮为 1000,这个范围要转动舵机 0 到 180 度,因此,每个类比输入量得的值减去 400,再乘上 0.3,就是打算转动的角度:

因为我们读取指针的习惯,多半是顺时针方向是越来越大,这正好与舵机的角度计算方向相反,所以使用 180 减去算出来的角度,就可以改为顺时针指示亮度大小。

感谢CodeData用户:caterpillar的贡献 著作权归作者所有

caterpillar:目前为自由工作者,喜好研究程式语言、框架、社群,从中学习设计、典范及文化。闲暇之余 記錄所學,技术文件涵盖 C/C++, Java, Ruby/Rails, Python, JavaScript, Haskell 等多个领域,出版电子书 Java SE 6 技術手冊、Java Lambda Tutorial、Java Tutorial、Python Tutorial、Essential JavaScript、Haskell Tutorial。

整理:宁波家电物联网云平台,中科极动云

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31591.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

PPO近端策略优化玩cartpole游戏

这个难度有些大,有两个policy,一个负责更新策略,另一个负责提供数据,实际这两个policy是一个东西,用policy1跑出一组数据给新的policy2训练,然后policy2跑数据给新的policy3训练,,,,直到policy(N-1)跑数据给新的policyN训练,过程感觉和DQN比较像,但是模型是actor…

实验8-tensorboard

VMware虚拟机 Ubuntu20-LTS python3.6 tensorflow1.15.0 keras2.3.1 运行截图:代码: 实验8-1tensorboard可视化import tensorflow as tf#定义命名空间 with tf.name_scope(input):#fetch:就是同时运行多个op的意思input1 = tf.constant(3.0,name=A)#定义名称,会在tensorboa…

实验7-使用TensorFlow完成MNIST手写体识别

VMware虚拟机 Ubuntu20-LTS python3.6 tensorflow1.15.0 keras2.3.1 运行截图:代码:import os os.environ[TF_CPP_MIN_LOG_LEVEL]=2import numpy as np import tensorflow as tf from tensorflow_core.examples.tutorials.mnist import input_data import time #%% #使用tens…

C121 李超树+DP P4655 [CEOI2017] Building Bridges

视频链接:C121 李超树+DP P4655 [CEOI2017] Building Bridges_哔哩哔哩_bilibili Luogu P4655 [CEOI2017] Building Bridges#include <iostream> #include <cstring> #include <algorithm> using namespace std;#define ll long long #define ls u<&l…

实验1-波士顿房价预测

VMware虚拟机 Ubuntu20-LTS python3.6 tensorflow1.15.0 keras2.3.1 运行截图 代码:from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge, LogisticRegression from sklearn.datasets import load_boston from sklearn.model_selection import train_tes…

穿越

题目描述解析 纯搜索,注意不能用 \(dfs\) !!!每次四个方向以及所有传送门,判断 \(rain\) 最早下的时间,判雨;对于兽,如果醒了,等它着再走过去,需要判脚下兽,脚下雨,下一个点的雨。code #include<bits/stdc++.h> #define se second #define fi first using na…

windows下volumetric video conference环境搭建

最近在做volumetric video的rtc,在此记录下相关内容方便之后复习。所采用的end to end平台来自于mmsys24的 Scalable MDC-Based Volumetric Video Delivery for Real-Time One-to-Many WebRTC Conferencing. 源码地址:https://github.com/MatthiasDeFre/webrtc-pc-streaming …

mysql+node.js前后端交互(简单实现注册登录功能)

目录 sql文件 user.js 注册部分 登录部分 对应的表操作 usersql.jsresult.js 用户提交的信息会进行格式化