首页 > 其他分享 >mBlock & Arduino(9)舵机(Servo motor)控制

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

时间:2024-05-14 22:08:59浏览次数:27  
标签:motor Servo 舵机 Arduino 角度 ms mBlock

舵机(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++JavaRuby/RailsPythonJavaScriptHaskell 等多个领域,出版电子书 Java SE 6 技術手冊Java Lambda TutorialJava TutorialPython TutorialEssential JavaScriptHaskell Tutorial

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

 

 

 

 

标签:motor,Servo,舵机,Arduino,角度,ms,mBlock
From: https://www.cnblogs.com/FBsharl/p/18192357

相关文章

  • ESP32-S3-WROOM-1 arduino测试选项
    1、2、3、 ......
  • 串口U盘 - 基于STM32+CH375的郁闷的工程师利器+Arduino Laser Infrared Thermometer -
    1、串口U盘-基于STM32+CH375的郁闷的工程师利器辛勤地打工的工程师们,你们是否曾经有过这样的经历,自己辛辛苦苦为公司写的代码和设计的PCB,却无论如何都不能据为己有?因为公司不允许个人电脑上网,因为公司的电脑居然把USB口也封闭了!这时候,我们是万般地郁闷,但是,作为一个以电子开发......
  • stm32-arduino压力薄膜传感器读取
     https://item.taobao.com/item.htm?id=674959275850&skuId=5150222163940&spm=a1z0d.6639537/tb2.1997196601.3.43b97484vSZsIQ      #include<Arduino.h>#defineDEBUGSerialSerialintsensorPin=A0; //定义传感器的引脚//下面4项内容需要根据实......
  • 基于arduino+as608+360舵机的宿舍指纹锁
    需要的制作材料Arduinonano开发板AS608指纹模块MG995360舵机(360舵机的控制与180舵机控制不相同,360舵机只可以控制旋转的速度,180舵机可以控制旋转的角度)面包板,电线若干准备部分参考了大佬的代码http://t.csdnimg.cn/GB29Qarduino模块可以看b站视频,,零基础(c语言零基础......
  • arduino uno+LCD12864(ST7735S)+蓝牙模块实现贪吃蛇
    1.前言:1.1本实验实现的贪吃蛇能穿越边界,结束游戏的唯一条件是贪吃蛇到达指定长度1.2本实验所用LCD可能不是LCD12864,LCD12864所用库为u8glib,笔者在词库中并没有找到型号为ST77355的初始化函数,而是在ucglib中找到,其方法为Ucglib_ST7735_18x128x160_SWSPIucg(/*sclk=*/13,/*data......
  • ESP32-C3-MINI arduino测试
    1、文件——首选项2、设置开发板管理器网址3、工具——开发板——开发板管理器4、输入ESP32选择EspressifSystems最新版本、安装5、等待下载。。。6、等待安装完成7、选择开发板:ESP32C3DevModule8、新建例程9、修改LED_BUILTIN10、为IO标号数字11、连接最......
  • ESP32 Arduino开发 MQTT
    ESP32Arduino开发MQTT目录ESP32Arduino开发MQTT1.安装程序库2.编写相关程序2.1.引入头文件2.2.定义MQTT相关参数2.3.创建对象2.4.连接网络2.5.连接MQTT服务器2.6.MQTT回调函数3.完整的代码例程4.MQTT连接测试1.安装程序库打开库管理工具工具->管理库.........
  • servo_led共用pin
    舵机和LED使用了同一个GPIO,但他们确实可以正常使用。原因是引脚只是给出一定脉宽的信号,而舵机和LED分别对这个信号做出响应。20ms的脉冲周期,各自脉宽的表现LED在20ms时熄灭,随着脉宽减小,越来越亮。舵机在0.5ms至2.5ms之间工作,其余部分都不工作因此只要设置LED亮度时避开......
  • ESP8266_Servo
    Servo的使用,以SG90舵机为例舵机控制说明(Servo.h里时间单位都是微秒us,角度是°)舵机通过脉冲宽度的时间来控制(PWM),频率是50Hz的(即一个周期是20ms)。(!!!脉宽是本质)SG90舵机的控制参数范围是:0°:0.5ms,180°:2.5ms。然后对于每一度,将脉宽范围除以180°即得。servo.attach......
  • 基于Arduino的RFID智能门禁
    引言RFID(无线射频识别)技术作为现代物联网的重要组成部分,已经广泛应用于门禁、支付、物流等众多领域。本文将带领大家使用Arduino开发板和RFID读写模块,实现RFID卡片的刷卡识别功能。百度网盘链接经过优化后的代码,删掉了没用的那些代码,并且将代码整合到了一个文件中。链接......