基于CH340的遙控器與PC機接口設計
1.2 信號調理電路
本文引用地址:http://www.104case.com/article/117115.htmPPM格式的指令編碼信號由遙控器的教練口輸出,由于信號的電平幅度與單片機不匹配,所以要經過信號調理電路對電平幅度進行變換,然后送給控制單片機進行指令譯碼。
1.3 控制單片機
控制單片機的作用是對脈沖信號進行譯碼,并把譯碼以后的結果輸出。由于PPM編碼輸出的是一系列脈沖信號,故單片機的譯碼可以采用外部中斷的方式,測量脈沖間隔(即每個通道的脈寬信號),然后以串行信號的格式送給USB接口模塊。
1.4 USB接口模塊
USB接口模塊采用的是芯片CH340 ,它是一個USB 總線的轉接芯片,可以實現USB 轉串口、USB 轉IrDA 紅外或者USB 轉打印口。
采用CH340設計USB接口電路,不需要了解任何USB協議和編寫任何固件程序,可以實現USB 與串口的轉換(原理圖如圖4所示),并且可以使用現有的驅動程序,易于迅速開發使用。本系統設計中所采用的是將USB轉3線制RS232 串口,應用于單片機與PC機之間的數據通信,這樣一來,就會在計算機上產生一個虛擬的COM口,用戶只需按照通用串行口一樣使用USB口即可。這樣不僅能使單片機具備USB通信的諸多優點,簡化了USB編程,同時還可以利用USB對控制單片機提供5V的工作電源(500mA以下)。
2 軟件設計
軟件設計的重點是遙控指令信號的讀取以及單片機與PC機之間的通訊。
2.1 遙控指令信號的讀取
遙控指令信號的讀取是由控制單片機利用外部中斷的方式來實現的,每個脈沖到來時進入中斷一次,然后讀取脈沖寬度并判斷是否是同步脈沖。正常的脈寬信號標準在1ms到2ms之間,同步脈沖信號的脈寬大于2ms。如果讀到的脈寬大于2ms,就表示下一個脈沖串開始了,需要更新每個通道的脈寬值;如果讀到的脈寬不大于2ms,表示這仍然是某個通道的脈寬,把它送到相應的數組中儲存起來,接著讀取下一個通道的脈寬,直至同步脈沖的到來。
2.2 單片機與PC機之間的串行通訊
串行通訊主要實現單片機譯碼結果(即通道脈寬值)的發送,把讀取的指令脈寬信號利用串行中斷,經串口發出,再經過USB接口電路發送到上位機,由計算機完成對操縱指令的讀取和識別,從而獲取遙控器操縱舵量的方向和大小。
正常情況下,每一串信號都有固定的脈沖個數,如果計算機讀到的信號個數發生了變化,說明在信號傳輸過程中遇到了干擾。為了預防干擾造成的飛機在飛行中出現誤動作,軟件在脈沖數判斷方面采取了一些抗干擾措施。當發現信號個數發生變化時有幾種處理方法:一是保持上次正確的數值不變;二是取各個通道的中間值;三是取某一預先設定的固定值。本系統設計中采用的是第一種方法,即把當前讀到的一串脈寬數丟掉,保持上次脈寬數值不變。
紅外遙控器相關文章:紅外遙控器原理 脈沖點火器相關文章:脈沖點火器原理
評論