在前面的幾節的學習筆記中,我們學習了幾種傳感器及用法,這一節學習筆記帶領大家學習舵機及使用Arduino對舵機進行控制。
舵機(英文叫Servo):它由直流電機、減速齒輪組、傳感器和控制電路組成的一套自動控制系統。通過發送信號,指定輸出軸旋轉角度。舵機一般而言都有最大旋轉角度(比如180度。)與普通直流電機的區別主要在,直流電機是一圈圈轉動的,舵機只能在一定角度內轉動,不能一圈圈轉(數字舵機可以在舵機模式和電機模式中切換,沒有這個問題)。普通直流電機無法反饋轉動的角度信息,而舵機可以。用途也不同,普通直流電機一般是整圈轉動做動力用,舵機是控制某物體轉動一定角度用(比如機器人的關節)。【文獻1】如圖1所示為9g舵機。一般的舵機接線為三線,VCC、GND和信號線。
如圖2所示,舵機主要有以下幾部分組成:齒輪組、直流電機、電位器、電機控制板、殼體。其中,齒輪組通過降低速度以提高扭矩;直流電機提供舵機的動力;電機控制板負責接收電位器的信號,通過算法驅動電機;電位器為位置編碼器的作用,作為電機驅動之后的反饋信號。【文獻1】
舵機的控制信號是脈沖位置調制(PPM)信號,是一種寬度可調的周期性方波脈沖信號,周期一般為20ms,當方波的脈沖寬度改變時,舵機轉軸的角度發生變化,角度變化與脈沖寬度的變化成正比。一般舵機的輸出軸轉角與輸入信號的脈沖寬度之間的關系可用圖3表示。【文獻2】
首先,我們需要proteus仿真里面添加舵機,在元器件搜索欄中輸入“servo”,并添加至元器件選擇欄中,如圖4所示。并將其中間的管腳接至數字口9腳,也就是ATmega328P的15管腳,同時上管腳接至+5V,下管腳接至地端,修改后的Proteus仿真圖如圖5所示。
Arduino代碼清單:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup()
{
}
void loop()
{
}
調試與演示