了解如何在移動設(shè)備,Arduino UNO和HC-05藍(lán)牙模塊中使用Android應(yīng)用程序控制伺服電機(jī)。
硬件部件:
Arduino UNO × 1個
HC-05藍(lán)牙模塊 × 1個
SG90微型伺服電機(jī) × 1個
軟件應(yīng)用程序和在線服務(wù):
MIT App Inventor 2
手動工具和制造機(jī):
10個 跳線套件,5厘米長
面包板,170針
伺服電機(jī)是一種閉環(huán)系統(tǒng),它使用位置反饋來控制其運動和最終位置。
RC伺服電機(jī)在相同的原理上工作。它包含一個小型直流電動機(jī),通過齒輪連接到輸出軸。
輸出軸驅(qū)動伺服臂,并且還連接到電位器(電位計)。
電位計向伺服控制單元提供位置反饋,在此將電機(jī)的當(dāng)前位置與目標(biāo)位置進(jìn)行比較。
根據(jù)錯誤,控制單元會校正電動機(jī)的實際位置,使其與目標(biāo)位置相匹配。
通過通過信號線發(fā)送一系列脈沖來控制伺服電機(jī)。控制信號的頻率應(yīng)為50Hz或每20ms產(chǎn)生一個脈沖。脈沖的寬度決定了伺服器的角度位置,這些類型的伺服器通常可以旋轉(zhuǎn)180度
控制線用于傳達(dá)角度。該角度由施加到控制線的脈沖的持續(xù)時間確定。這稱為脈沖編碼調(diào)制。伺服器希望每20毫秒(.02秒)看到一個脈沖。脈沖的長度將決定電機(jī)旋轉(zhuǎn)多遠(yuǎn)。例如,一個1.5毫秒的脈沖將使電動機(jī)轉(zhuǎn)到90度位置(通常稱為空擋位置)。如果脈沖短于1.5毫秒,則電動機(jī)會將軸旋轉(zhuǎn)到接近0度的位置。如果脈沖長于1.5毫秒,則軸將更接近180度。
電路原理圖:
首先,使用Arduino連接伺服電機(jī)。
將兩個伺服電機(jī)的黑線連接到Arduino的GND將兩個電機(jī)的橙色線連接到Arduino的5V將第一個電機(jī)的橙色線連接到Arduino的引腳9
首先,在沒有藍(lán)牙的情況下使用以下arduino代碼測試Servo電機(jī)掃描功能:
#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
}
}
輸出結(jié)果:
之后,與Arduino建立藍(lán)牙模塊的連接。
將藍(lán)牙模塊的VCC連接至Arduino的5V將藍(lán)牙模塊的GND連接至Arduino的GND將藍(lán)牙模塊的TX連接至Arduino的Rx引腳將藍(lán)牙模塊的RX連接至Arduino的Tx引腳
用于藍(lán)牙控制的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,并確保手機(jī)已與相應(yīng)的Bluetooth模塊配對。連接到Android手機(jī)的步驟如下:
打開藍(lán)牙模塊的電源,然后轉(zhuǎn)到Android設(shè)備上的設(shè)置。
配對設(shè)備。在某些電話上,此步驟必須執(zhí)行兩次才能配對。確保準(zhǔn)備好PIN碼(大多數(shù)Bluetooth Mate的默認(rèn)設(shè)置為“ 1234”)>開啟兩個設(shè)備的電源>在Android“設(shè)置”應(yīng)用程序的Bluetooth圖標(biāo)下搜索模塊。
將設(shè)備與手機(jī)配對后,打開BT Servo應(yīng)用程序。
使用列表連接到并找到包含文本HC-05的正確設(shè)備名稱。
編輯:hfy
-
Android
+關(guān)注
關(guān)注
12文章
3966瀏覽量
129657 -
伺服電機(jī)
+關(guān)注
關(guān)注
87文章
2105瀏覽量
59238 -
Arduino
+關(guān)注
關(guān)注
189文章
6493瀏覽量
190216
發(fā)布評論請先 登錄
CW32模塊使用 HC05藍(lán)牙模塊

電機(jī)控制器與伺服系統(tǒng)的關(guān)系
伺服電機(jī)的工作原理和控制方式
伺服電機(jī)原理及控制應(yīng)用
伺服電機(jī)的控制方式有哪些?舉例分析
什么是伺服電機(jī)?伺服電機(jī)的工作原理是什么?
步進(jìn)電機(jī)的伺服控制方法有哪些
步進(jìn)電機(jī)伺服控制系統(tǒng)的作用
伺服電機(jī)怎么選型和計算(伺服電機(jī)電流環(huán)控制原理)

評論