首页 接线图文章正文

基于Arduino UNO和HC-05蓝牙模块的伺服电机控制

接线图 2023年01月26日 09:41 267 admin

了解如何在移动设备,Arduino UNO和HC-05蓝牙模块中使用Android应用程序控制伺服电机

硬件部件:

Arduino UNO × 1个

HC-05蓝牙模块 × 1个

SG90微型伺服电机 × 1个

软件应用程序和在线服务:

MIT App Inventor 2

手动工具和制造机:

10个 跳线套件,5厘米长

面包板,170针

伺服电机是一种闭环系统,它使用位置反馈来控制其运动和最终位置。

基于Arduino UNO和HC-05蓝牙模块的伺服电机控制  第1张

RC伺服电机在相同的原理上工作。它包含一个小型直流电动机,通过齿轮连接到输出轴。

输出轴驱动伺服臂,并且还连接到电位器(电位计)。

电位计向伺服控制单元提供位置反馈,在此将电机的当前位置与目标位置进行比较。

根据错误,控制单元会校正电动机的实际位置,使其与目标位置相匹配。

通过通过信号线发送一系列脉冲来控制伺服电机。控制信号的频率应为50Hz或每20ms产生一个脉冲。脉冲的宽度决定了伺服器的角度位置,这些类型的伺服器通常可以旋转180度

控制线用于传达角度。该角度由施加到控制线的脉冲的持续时间确定。这称为脉冲编码调制。伺服器希望每20毫秒(.02秒)看到一个脉冲。脉冲的长度将决定电机旋转多远。例如,一个1.5毫秒的脉冲将使电动机转到90度位置(通常称为空挡位置)。如果脉冲短于1.5毫秒,则电动机会将轴旋转到接近0度的位置。如果脉冲长于1.5毫秒,则轴将更接近180度。

基于Arduino UNO和HC-05蓝牙模块的伺服电机控制  第2张

电路原理图:

基于Arduino UNO和HC-05蓝牙模块的伺服电机控制  第3张

首先,使用Arduino连接伺服电机。

将两个伺服电机的黑线连接到Arduino的GND将两个电机的橙色线连接到Arduino的5V将第一个电机的橙色线连接到Arduino的引脚9

首先,在没有蓝牙的情况下使用以下arduino代码测试Servo电机扫描功能:

#include Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }

输出结果:

之后,与Arduino建立蓝牙模块的连接。 将蓝牙模块的VCC连接至Arduino的5V将蓝牙模块的GND连接至Arduino的GND将蓝牙模块的TX连接至Arduino的Rx引脚将蓝牙模块的RX连接至Arduino的Tx引脚

用于蓝牙控制的Arduino代码:

#include Servo myservo; const int Pin = 9; // myservo pin3 PWM char Text; String Spilt; String angle; int pos = 0; // variable to store the servo position int k1; void setup() { Serial.begin(9600); pinMode (Pin, OUTPUT); myservo.attach(Pin); } void loop() { if(Serial.available()) { Text = Serial.read(); Spilt = Spilt + Text; if (Text == '*') { Serial.println(Spilt); Spilt = Spilt.substring(0, Spilt.length() - 1); // Delete last char * k1 = Spilt.indexOf('*'); angle = Spilt.substring(0, k1); myservo.write(angle.toInt()); delay(15); Spilt = ""; } } }上载程序后,重新连接TX和RX,并确保手机已与相应的Bluetooth模块配对。连接到Android手机的步骤如下:

打开蓝牙模块的电源,然后转到Android设备上的设置。

配对设备。在某些电话上,此步骤必须执行两次才能配对。确保准备好PIN码(大多数Bluetooth Mate的默认设置为“ 1234”)>开启两个设备的电源>在Android“设置”应用程序的Bluetooth图标下搜索模块。

将设备与手机配对后,打开BT Servo应用程序。

使用列表连接到并找到包含文本HC-05的正确设备名称。

基于Arduino UNO和HC-05蓝牙模块的伺服电机控制  第4张

基于Arduino UNO和HC-05蓝牙模块的伺服电机控制  第5张

基于Arduino UNO和HC-05蓝牙模块的伺服电机控制  第6张基于Arduino UNO和HC-05蓝牙模块的伺服电机控制  第7张基于Arduino UNO和HC-05蓝牙模块的伺服电机控制  第8张

编辑:hfy

版权与免责声明

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

标签: 程序 Android 伺服电机

发表评论

接线图网Copyright Your WebSite.Some Rights Reserved. 备案号:桂ICP备2022002688号-2 接线图网版权所有 联系作者QQ:360888349