0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于Arduino UNO和HC-05蓝牙模块的伺服电机控制解决方案

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

来源: elecfans
2021-02-25
类别:工业控制
eye 68
文章创建人 拍明

原标题:基于Arduino UNO和HC-05蓝牙模块的伺服电机控制解决方案

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

  硬件部件:

  ArduinoUNO×1个

  HC-05蓝牙模块×1个

  SG90微型伺服电机×1个

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

  MITAppInventor2

  手动工具和制造机:

  10个跳线套件,5厘米长

  面包板,170针

  

pIYBAGAXm_GAT4meAAasJ6fmqso400.png


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

  

o4YBAGAXm_-ABigqAAEpRcD9tB8637.png


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

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

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

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

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

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

  

o4YBAGAXnBCAcD6IAAIv_QqXR_g014.png


  电路原理图:

  

o4YBAGAXnCuAeXNUAAEPsAEIKtE068.png


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

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

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

  #include

  Servomyservo;//createservoobjecttocontrolaservo

  //twelveservoobjectscanbecreatedonmostboards

  intpos=0;//variabletostoretheservoposition

  voidsetup(){

  myservo.attach(9);//attachestheservoonpin9totheservoobject

  }

  voidloop(){

  for(pos=0;pos<= 180; pos += 1) { // goes from 0 degrees to 180 degrees

  //instepsof1degree

  myservo.write(pos);//tellservotogotopositioninvariable'pos'

  delay(15);//waits15msfortheservotoreachtheposition

  }

  for(pos=180;pos>=0;pos-=1){//goesfrom180degreesto0degrees

  myservo.write(pos);//tellservotogotopositioninvariable'pos'

  delay(15);//waits15msfortheservotoreachtheposition

  }

  }

  输出结果:

  之后,与Arduino建立蓝牙模块的连接。

  将蓝牙模块的VCC连接至Arduino的5V将蓝牙模块的GND连接至Arduino的GND将蓝牙模块的TX连接至Arduino的Rx引脚将蓝牙模块的RX连接至Arduino的Tx引脚

  用于蓝牙控制的Arduino代码:

  #include

  Servomyservo;

  constintPin=9;//myservopin3PWM

  charText;

  StringSpilt;

  Stringangle;

  intpos=0;//variabletostoretheservoposition

  intk1;

  voidsetup(){

  Serial.begin(9600);

  pinMode(Pin,OUTPUT);

  myservo.attach(Pin);

  }

  voidloop(){

  if(Serial.available())

  {

  Text=Serial.read();

  Spilt=Spilt+Text;

  if(Text=='*'){

  Serial.println(Spilt);

  Spilt=Spilt.substring(0,Spilt.length()-1);//Deletelastchar*

  k1=Spilt.indexOf('*');

  angle=Spilt.substring(0,k1);

  myservo.write(angle.toInt());

  delay(15);

  Spilt="";

  }

  }

  }上载程序后,重新连接TX和RX,并确保手机已与相应的Bluetooth模块配对。连接到Android手机的步骤如下:

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

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

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

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

  

pIYBAGAXnFWAbCYnAAHcsGdBAD4858.png


  


  


  


  


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯