了解如何在移動設(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),它使用位置反饋來控制其運(yùn)動和最終位置。

RC伺服電機(jī)在相同的原理上工作。它包含一個小型直流電動機(jī),通過齒輪連接到輸出軸。
輸出軸驅(qū)動伺服臂,并且還連接到電位器(電位計)。
電位計向伺服控制單元提供位置反饋,在此將電機(jī)的當(dāng)前位置與目標(biāo)位置進(jìn)行比較。
根據(jù)錯誤,控制單元會校正電動機(jī)的實(shí)際位置,使其與目標(biāo)位置相匹配。
通過通過信號線發(fā)送一系列脈沖來控制伺服電機(jī)。控制信號的頻率應(yīng)為50Hz或每20ms產(chǎn)生一個脈沖。脈沖的寬度決定了伺服器的角度位置,這些類型的伺服器通??梢孕D(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文章
4031瀏覽量
134114 -
伺服電機(jī)
+關(guān)注
關(guān)注
88文章
2187瀏覽量
61335 -
Arduino
+關(guān)注
關(guān)注
190文章
6526瀏覽量
197044
發(fā)布評論請先 登錄
PLC怎么控制多臺交流伺服電機(jī)達(dá)到同步工作
探索用于Arduino的TLE94112ES直流電機(jī)控制盾牌
UNO Q:開啟Arduino的全新未來
FSC-HC05藍(lán)牙模塊:高性能無線連接的核心解決方案
伺服電機(jī)的控制方式簡述
貿(mào)澤電子開售全新Arduino UNO Q單板計算機(jī)
Arduino Uno l兩輪自平衡機(jī)器人 電機(jī)驅(qū)動無輸出求解
Arduino UNO Q 登陸 DigiKey,現(xiàn)已開放預(yù)訂
舵機(jī)與伺服電機(jī)的區(qū)別是什么?
高性能多協(xié)議藍(lán)牙6.0無線模塊
如何在 NuMaker-IoT-M467 板上使用 Arduino IDE 控制 Wi-Fi 模塊?
如何用Arduino Nano/UNO R3開發(fā)板給另一個Arduino IDE不能下載的Arduino Nano/UNO R3開發(fā)板重新燒錄引導(dǎo)程序bootlaoder
ESP32用作經(jīng)典藍(lán)牙串口透傳模塊與手機(jī)進(jìn)行串口通信
基于Arduino UNO和HC-05藍(lán)牙模塊的伺服電機(jī)控制
評論