1.軟體設計
小車前進和轉向的核心思想:pwm輸出訊號的占空比越高,即單位時間內高電平的 時間越長,電機轉速越快,設定兩路pwm就可以分別控制兩個輪子的轉速以及它們的轉速 差。首先,使用pwm輸出實驗(10.3節)中介紹的t1m1高階定時器的ch1通道輸出一 路,再使用t1m3普通定時器的ch2通道輸出一路。它們的初始化大同小異,只是高階定 時器多了乙個引數。
為了程式設計方便,就用乙個初始化函式來設定,也順便將分頻係數和自動重灌係數設定成 一樣的:
void tim_pwm_init (ul6 arr, ul6 psc)
電機是靠電機驅動模組來驅動的,微控制器只要給電機驅動模組訊號就可以了,不用考慮能量輸出。步進電機乙個電機有2極,需要2個訊號,其中乙個由 pwm負責,另乙個就是i/o 口。當pwm輸出不同占空比的訊號時,1/0 口輸出低電平, 輪子就以不同的速度向前轉動;當pwm輸出為0時,1/0 口輸出高電平,輪子就向後轉 動。至於串列埠模組,同樣需要2個i/o來設定模式,全部置低即可設定成廣播模式。所以, 需要參考流水燈來設定4個i/o 口進行輸出:
void
motor_cfg
(void
)
接下來是串列埠的部分,要使用中斷服務函式來接收指令,所以在進行串列埠初始化的同 時,不要忘記配置中斷優先順序。這裡要求實現速度實時遙控,指令只有一位,修改串列埠 1的 中斷服務程式,只用其中一位就可以了:
# if en_usart1_rx 〃如果使能了接收
void
usartl_irqhandler
(void
) 〃串列埠 1 中斷服務程式
{u8 res;
res =
usart_receivedata
(usartl)
;//(usart1 - > dr); 〃讀取接收到的資料
usart_rx_buf[o]
= res ;
)井 endif
在本設計中,若中斷分組函式和pwm初始化函式同時執行,就常會導致一方不起作用 的情況,所以在初始化的過程中加上乙個關於時鐘的stm32庫函式,即systemlnito函式, 可以使時鐘精確,在多個韌體初始化的情況下能得以順利進行。
初始化結束之後,可以通過不斷判斷usart_rx_buf[o]位記錄的字元,也就是串列埠 接收中斷函式所得到的指令,改變pwm和1/。口的輸出,使小車進行相應操作。本設計用 的是6v乾電池供電,pwm的占空比低於2/3的情況下,小車也是不會動的,所以,將 pwm的占空比設定在8/9到1之間波動。
智慧型小車 循跡模組
這幾天了arm9什麼都不想做了,每天都想著這兒,買的板子實際上講板子的內容很少的,都是些實際操作之類的,這個需要不斷的聯絡才能熟練,板子配送的其餘13張光碟都是講的基於linux的嵌入式,這個更需要時間去理解了,整好現在正在玩智慧型小車,準備弄個循跡,避障,超聲波的車子,至於別的藍芽模組的燒錢的就看...
智慧型小車 循跡模組 避障模組使用介紹
在介紹循跡模組時,先介紹乙個知識點 黑色的東西吸收比較強,反射能力弱 循跡模組在 上一般分為兩種 這一種,根據產品使用說明可以知道,當檢測到黑線時,紅外線反射強度不 夠,模組輸出端為高電平,二極體熄滅。未檢測到黑線時,則模組輸出端為低電平,二極體點亮。另外一種 這一種和上面的高低電平正好相反。檢測到...
微控制器尋跡小車 尋跡模組
一 沒有檢測到黑線,則 h4發光到白紙光反射到h4接收端,h4接收端導通,導通則t1接地 0 提問會不會等於0,哪位有測試 二 有檢測到黑線,則 h4發光到黑線光全部被吸收,h4接收端,沒有收到任何訊號,因為h4不導通 截止 則t1 vcc 提問t1會不會等於5v,哪位有測試 原理圖 檢測到白紙有接...