我的購物車

快速報價可來圖加工
購物車0

最新加入的商品

您的購物車中暫無商品,趕快選擇心愛的商品吧!
掃描

多路伺服電機控制器

2015-12-24 瀏覽量 2026

????? 利用單片機控制伺服電機,可以使用集成了帶有PWM功能定時/計數器。但這種方式有它固有的諸多缺點,在需要控制的伺服電機比較多,運動關系復雜的情況下,這種方式是不適用的。本系統利用了ATmega16單片機內部集成的定時/計數器,以及非易失性存儲介質EEPROM和UART接口設計了多路伺服電機控制器。

? ? ? ?控制器用串口與上位機電腦進行通信,通過電腦的串口調試軟件發出指令,選擇實時在線調試,批量發送動作指令并存儲在單片機的EEPROM中,或單片機按照指令自動控制各路伺服電機運動。 ?

? ? ? ????系統選用ATmega16單片機的一個8位計數器Timer0和一個16位計數器Timer1協調工作,利用單片機的I/O接口產生出可以控制單片機的PWM信號。各伺服電機可以協調地運動。這種控制方法使得單片機有多少空余的I/0口,就能控制多少路伺服電機??刂齐姍C的數量根據具體應用而定,其余的I/O接口可以用來連接傳感器等器件,利于功能擴展。

? ? ????? 硬件設計

???????? 電路主要包括電源、單片機最小系統、伺服電機接口、RS-232接口電路、其他器件接口等幾個部分,見圖。

? ? ? ??

??????? 系統采用兩種電源模式:一種是伺服電機和單片機共用同一個電源。由于AVR系列單片機抗干擾能力強,功耗小,在伺服電機數量比較少的情況下,可以使用這種方式。另一種方式是伺服電機和單片機采用獨立電源,分別由各自的電源系統供電。兩種方式通過跳線選擇。系統輸入電壓為6V,單片機的電源采用LM1117低壓差穩壓器獲取5V電壓。

??? ????ATmega16單片機有一路串口可以與外界通信。系統采用MAX232芯片將單片機的TTL電平轉換為-10V~15V的RS-232電平。

??? ????最小系統包括單片機復位電路、時鐘電路,以及在系統編程(ISP)接口。系統使用8MHz石英晶體作為外部時鐘源。

???????? 軟件部分由主程序、定時/計數器和I/O接口控制部分以及串口通信部分組成。采用C語言編寫程序,流程圖見圖。程序在EEPROM中開辟一個30×16的二維數組,用來存放自動運行時,各伺服電機運動的相應值。各值存放在數組的第二維,可存放的動作序列有30組。 ?

??? ????主程序主要完成單片機片上硬件的初始化以及應用控制程序部分。系統初始化內容包括:用于控制伺服電機的I/O接口設置為輸出,低電平;其他I/0口設為輸入。Timer0和Timer1使能,Timer0使用主系統時鐘8分頻,Tiner1使用主系統時鐘不分頻,定時器同I/O口不相連,溢出中斷。UART接口使能,接收中斷。

??????? 主程序還完成讀取串口的值,確定用戶需要實時調試還是批量輸入指令,還是自動運行,并執行相應程序。? TimerO和,Timer1交替使用,在使用一個計數器時關閉另一個計數器。由于TimerO的時鐘頻率高,計數值小,因此,Timer0首先溢出中斷。在中斷中關閉,Tiner1,把代表各電機位置的變量值與一個用于控制各I/O接口電平時間的變量比較。如果超過它,就將該口電平設為低電平,否則為高電平。然后將這一用于比較的變量自加1。重新設置Timer0計數初值。這樣Timer0就不斷地中斷,不斷把代表各電機位置的變量同用于比較的變量比較,使各控制端口高電平時間根據需要在0.5ms~2.5ms之間,直到所有接口高電平時間都結束,禁能Timer0,使能Tliner1。利用Timer1控制低電平時間,使得方波周期為18ms~20ms。

???自動狀態下,系統按照EEPROM中存放的指令控制伺服電機運動。實時調試指令模式下,程序把串口讀到的16個數據分別賦給代表伺服電機位置的16個變量,定時器會自動產生相應的控制信號。如果需要存放指令,只需要把串口讀到的數據分別賦給在EEPROM中開辟二維數組的第二維。如果指令更多,可以采用外部擴展EEPROM的方法進行存儲空間擴展。

??? ????總結

??? ????通過測試,該系統性能可靠。系統采用單片機兩個定時器聯合工作的方法,利用中斷程序,產生了多路伺服電機控制信號。與一般所采用的直接使用定時器PWM功能的方法相比,本系統可控制電機路數多,控制簡單,通過設置各變量的值就可以控制伺服電機運動到相應位置。

日韩亚洲精品不卡在线