双动力船模模块
一.遙控電路部分
1.? 遙控電路規劃圖:
| ? MCU |
| RF收發模塊 |
| A/D轉向控制模塊 |
| 液晶顯示模塊 |
| 鍵盤控制模塊 |
2.? 各模塊說明
Rf收發模塊:
Rf收發芯片采用全雙工的nrf905,用于遙控電路和控制電路的通訊,將遙控器設定的set_speed和set_angle發送給控制電路執行,同時接受控制電路測得的real_speed。因而有一個接收驅動函數rfr()和一個發送驅動函數rft()。
?
????????????? A/d轉向控制模塊:
A/d轉向控制模塊由接有滑動變阻器的a/d轉換器組成。改變滑動變阻器的阻值,電壓在0-5v變化,輸出的數字量在0-255變化,再減去128后就是我們要的hand_angle(在-128-127變化)了
?
鍵盤控制模塊:
a. 遙控器鍵盤的組織:
| ? Send |
| ? On/off |
| up |
| ? left |
| ? right |
| down |
b.鍵的功能:
On/off:使驅使電路初始化。初始化后船的速度變為零。
Send:信號的發送。當send鍵按下時將調動rf收發模塊的rft(),將設定好的set_speed和set_angle發送給驅使電路。
| 鍵值 | 鍵的功能 | 備注 |
| Up | Set_speed0++;set_speed1++ | ? |
| Down | Set_speed0--;set_speed1-- | ? |
| Left | Auto_angle++ | 當按下send鍵后將自動清零。用于對轉向的智能控制。其優先級高于手動方式。 |
| Right | Auto_angle-- | |
| Up+left | Set_speed0++ | 由于螺旋槳的原因,在兩個電機在轉速相等時船體不一定就能直線航行,因而可以通過微調兩邊的轉速而達到直線航行的目的。 |
| Down+left | Set_speed0-- | |
| Up+right | set_speed1++ | |
| Down+right | set_speed1-- |
注:實現自動方式優先級高于手動方式
| 定時中斷入口 |
| 讀取自動角度auto_angle和a/d的手動角度hand_angle |
| Auto_speed==0 |
| Set_speed=hang_speed |
| Set_speed=auto_speed |
| 定時中斷出口 |
????????????? 液晶顯示模塊:
???????????????????? 用于顯示set-angle,real-speed和set-speed,寫在主函數中。
3.? 邏輯紐帶關系
a. 數據buffer的設定:
Structure? data_buffer
{
?????? Uchar set_speed0;//設定的左驅動電機的速度
?????? Uchar set_speed1;//設定的右驅動電機的速度
???????????????????? Char set_angle;//設定的轉過的角度
Uchar real_speed0;//實際測的左驅動電機的速度
???????????????????? Uchar real_speed1;//實際測的右驅動電機的速度
????????????? };
????????????? 注:real_speed0和real_speed1是通過rfr()接收的,set_speed0,set_speed1和set_angle
???????????????????? 是通過遙控自己設定的
????????????? b.數據關系結構圖:
?
| Set-speed?? set-angle (兩個) |
| 定時掃描鍵盤讀取set_speed值對其值進行修改 |
| 定時讀取hand_angle和auto_angle,對set-angle修改 |
| 當send鍵按下時發送 并將atuo_angle清零 |
| real-speed (兩個) |
| 主函數中讀set_speed和set_angle顯示 ? |
?
?
二.控制電路部分
1.? 控制電路規劃圖
| ? MCU |
| RF收發模塊 ? |
| 轉速檢測模塊(兩個) |
| 驅動電機模塊(兩個) ? |
2.? 各模塊說明:
Rf收發模塊:同上
?
驅動電機模塊:
a.閉環系統速度的調節:
由于水的阻力很大,在船航行中有加速慢降速快的特點,因而我們采用bang_bang算法來控制船的轉速。對real-speed和set-speed進行比較來實現pwm占空比的調節。
bang_bang算法調速方案:
| 定時中斷入口 |
| 獲得當前數度real_speed和設定的數度set_speed |
| Set_speeed>real_speed |
| 定時中斷出口 |
| 驅動電機占空比為0% |
| 驅動電機占空比為100% ? |
????????????? b.開環系統轉彎角度的控制:
由于轉彎的角度和兩個驅動電機的轉速,轉彎的時間有關。因而我們在設定兩
個驅動電機的轉速后,通過時間的長短來控制轉彎的角度。
?
轉速檢測模塊:
???? 由單片機的外部中斷,定時計數功能和光電探口組成。定時得到驅動電機的實際轉速real-speed。real-speed將作為驅動電機控制的一參數試用,同時定時發送回遙控電路作為實時監測。
速度檢測方案:
| 外部中斷intx打開 |
| 有下跳沿 |
| Countx++ |
| T0定時時間到 |
| Real_speedx=countx Countx=0; |
3.? 邏輯紐帶關系
?a. 數據buffer的設定:
Structure? data_buffer
{
?Uchar real_speed0;//實際測的左驅動電機的速度
???????????????????? Uchar real_speed1;//實際測的右驅動電機的速度
Uchar set_speed0;//設定的左驅動電機的速度
Uchar set_speed1;//設定的右驅動電機的速度
???????????????????? Char set_angle;//設定的轉過的角度
????????????? };
注:set_speed0,set_speed1和set_angle是通過rfr()接收的,real_speed0和real_speed1
???????????????????? 是通過遙控自己設定的
?
| Set-speed?? set-angle |
| 中斷接收 |
| Real-speed |
| 定時測轉速修改real-speed |
| 定時比較Real-speed和Set-speed得到輸出的占空比 ? |
| 由set_angle來確定轉向時間從而達到轉向 |
| 定時發送 |
| 驅動電機 |
| 驅動電機 |
?
?
總結
- 上一篇: C#WindowsMediaPlayer
- 下一篇: 前进吧,兄弟们—兄弟连IT教育