了解如何使用移动设备上的Android 应用程序、Arduino UNO 和HC-05 蓝牙模块来控制伺服电机。
硬件组件:
Arduino UNO 1
HC-05蓝牙模块1
SG90微型伺服电机1
软件应用程序和在线服务:
麻省理工学院应用发明家2
手动工具和制造机器:
10 套毛衣,长5 厘米
面包板,170 针
伺服电机是一个闭环系统,使用位置反馈来控制其运动和最终位置。
RC 伺服电机的工作原理相同。它包含一个通过齿轮连接到输出轴的小型直流电动机。
输出轴驱动伺服臂,同时还连接电位器(pot)。
电位计向伺服控制单元提供位置反馈,将电机的当前位置与目标位置进行比较。
根据误差,控制单元修正电机的实际位置以匹配目标位置。
通过信号线发送一系列脉冲来控制伺服电机。控制信号的频率应为50Hz或每20ms产生一个脉冲。脉冲的宽度决定了舵机的角度位置,这些类型的舵机通常可以旋转180度
控制线用于传达角度。该角度由施加到控制线上的脉冲的持续时间确定。这称为脉冲编码调制。服务器期望每20 毫秒(0.02 秒)看到一个脉冲。脉冲的长度将决定电机旋转多远。例如,1.5 毫秒的脉冲将导致电机转动到90 度位置(通常称为中立位置)。如果脉冲短于1.5 毫秒,电机会将轴旋转到接近0 度的位置。如果脉冲长于1.5 毫秒,轴将接近180 度。
电路原理图:
首先,使用Arduino连接伺服电机。
将两个伺服电机的黑线连接到Arduino 的GND。将两个电机的橙色线连接至Arduino 的5V。将第一个电机的橙色线连接到Arduino 的引脚9。
首先,使用以下arduino 代码在没有蓝牙的情况下测试伺服电机扫描功能:
包括
伺服我的伺服; //创建伺服对象来控制伺服
//大多数板上可以创建12 个伺服对象
int 位置=0; //存储舵机位置的变量
无效设置(){
myservo.attach(9); //将引脚9 上的伺服连接到伺服对象
}
无效循环(){
for (pos=0; pos=180; pos +=1) { //从0 度变为180 度
//以1 度为步长
myservo.write(pos); //告诉舵机转到变量“pos”中的位置
延迟(15); //等待15ms让舵机到达该位置
}
for (pos=180; pos=0; pos -=1) { //从180 度变为0 度
myservo.write(pos); //告诉舵机转到变量“pos”中的位置
延迟(15); //等待15ms让舵机到达该位置
}
}
输出结果:
之后,建立蓝牙模块与Arduino的连接。
将蓝牙模块的VCC连接到Arduino的5V。将蓝牙模块的GND连接到Arduino的GND。将蓝牙模块的TX连接到Arduino的Rx引脚。将蓝牙模块的RX连接到Arduino的Tx引脚。
蓝牙控制的Arduino代码:
包括
伺服我的伺服;
常量int Pin=9; //myservo pin3 PWM
字符文本;
绳子裂开;
弦角;
int 位置=0; //存储舵机位置的变量
整数k1;
无效设置(){
串行.开始(9600);
pinMode(引脚,输出);
myservo.attach(Pin);
}
无效循环(){
if(串行.可用())
{
文本=Serial.read();
溢出=溢出+ 文本;
如果(文本=='*'){
Serial.println(Spilt);
溢出=Spilt.substring(0, Spilt.length() - 1); //删除最后一个字符*
k1=Spilt.indexOf('*');
角度=Spilt.substring(0, k1);
myservo.write(angle.toInt());
延迟(15);
溢出='';
}
}
}上传程序后,重新连接TX和RX,并确保手机已与相应的蓝牙模块配对。连接Android 手机的步骤如下:
打开蓝牙模块电源并转到Android 设备上的设置。
配对设备。在某些手机上,必须执行此步骤两次才能配对。确保您已准备好PIN 码(大多数蓝牙配对的默认值为“1234”) 打开两个设备的电源在Android 设置应用程序中的蓝牙图标下搜索模块。
将设备与手机配对后,打开BT Servo 应用程序。
使用列表连接并查找包含文本HC-05 的正确设备名称。
编辑:hfy