多通道舵機控制器設(shè)計
本文的設(shè)計中,采用P1口作為舵機信號輸出控制端口,分別對應(yīng)CH1~CH8通道,在晶振為12 MHz,采用定時器方式1工作方式。
舵機控制器軟件控制分為兩個部分,即主程序和中斷服務(wù)程序。主程序完成定時器初始化、串口信令解析、舵機位置刷新的工作。設(shè)置各通道序號為i,當(dāng)前定時器脈寬定時為Time,Tab[i]為各通道最新定時值。定時器初始化進行定時器工作模式及初值設(shè)置,各舵機位置初始化使所有舵機的位置定在0°的位置,使舵機處于等待指令的狀態(tài)。串口信令程序?qū)⒔邮盏降闹噶罱馕?,并隨時提取信令中各通道舵機的最新值。舵機位置刷新程序?qū)崟r計算最新舵量并修改每個通道的定時值Tab[i],供定制中斷服務(wù)程序調(diào)用。中斷程序流程圖如圖5所示。
中斷復(fù)位程序依次修改各個通道對應(yīng)I/0口的輸出電平,并依次加載下一通道的定時器計數(shù)值,通道號計數(shù)指針累加。當(dāng)計數(shù)指針為8時表明各通道輸出結(jié)束,剩余時間I/O口全部置0,下一輪循環(huán)開始。
3 串行通信協(xié)議的設(shè)計
為了滿足上位機對舵機控制器的實時控制,可以設(shè)計一個簡單通用的控制協(xié)議。從便于輸出控制的角度來考慮,可以設(shè)置單通道控制和多通道控制兩個信令,采用二進制命令行格式,固定幀長。
本文采用基于短幀的協(xié)議設(shè)計思想,每個舵機動作對應(yīng)的控制信號是一幀一幀發(fā)送的,動作的分解和步長由功能強大的上位機完成,而下位機只負責(zé)完成對應(yīng)的偏轉(zhuǎn)角度執(zhí)行。一個標(biāo)準(zhǔn)的串行通信短幀包含幀首、數(shù)據(jù)和幀尾幾部分,每個部分可以根據(jù)實際需要定義。
(1)幀首,表示本數(shù)據(jù)幀的開始,用于數(shù)據(jù)幀的同步和控制的類型屬于串口通信協(xié)議,并為下位機是否接收此數(shù)據(jù)幀的標(biāo)志。一般可以設(shè)0xFE為單通道控制幀,0xFF為多通道控制幀。
(2)數(shù)據(jù),表示上位機通過串口要控制的舵機輸出通道號以及通道所對應(yīng)的舵量偏轉(zhuǎn)值。
(3)幀尾,表示此幀信號的結(jié)束,一般可以用0xF0表示。
單通道控制信令較為簡單,如圖6所示,其幀首為0xFE,CHn表示該幀所控制的通道號,Dn則表示所控制的通道對應(yīng)的舵量偏轉(zhuǎn)值,0xF0作為該幀結(jié)束的標(biāo)志。例如,當(dāng)幀數(shù)據(jù)為“FE 01 5A F0”時,表示CH1通道信號置于中位(90°=0x5A)。
多通道控制信令格式如圖7所示,幀首為0xFF,其控制命令的數(shù)據(jù)長度可以每個字節(jié)對應(yīng)一個通道,±90°可以用數(shù)字0~180表示,對應(yīng)二進制數(shù)為0x00~0XB4。例如,當(dāng)幀數(shù)據(jù)為“FF 5A 5A 5A 5A 78 78 3C 3C FO”時,則表示CH1~CH4通道都居中,CH5,CH6為+30°;CH7,CH8為-30°。
4 結(jié)語
本文所提出的多路舵機控制器的設(shè)計方法是以微處理器為核心,利用定時器中斷實現(xiàn)了對多路舵機的控制信號輸出,并可以實現(xiàn)上位機與下位機的通信控制,可適用于機器人、無人機等需要控制多個舵機的場合,以及其他需要產(chǎn)生多路PWM系統(tǒng)。
本文引用地址:http://2s4d.com/article/162491.htm 三相異步電動機相關(guān)文章:三相異步電動機原理
評論