搜索
您的当前位置:首页正文

mBlock & Arduino(9)伺服马达(舵机)控

来源:二三娱乐

伺服马达控制原理

伺服马达的基本原理是接受 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 度。

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

如果直接使用 Arduino 官方语言,可以使用delayMicroseconds函式来控制脉冲宽度,不过 mBlock 中只有“等待”方块,没办法达到这么短的时间控制,然而,mBlock 中有个“设置伺服马达脚位…”的方块,可以直接指定马达转动角度,例如,以下的程式,可以一秒为间隔,不断转动马达为 0、45、90、135 与 180 度:

有指针的亮度感应器

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

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

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

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

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

Top