C51(蓝牙,红外)智能遥控小车
目錄
?
?
1模塊準備
2實現功能
1模塊準備
三輪小車底盤
l298n電機驅動模塊
?51最小系統開發板
ds1302時鐘模塊
?藍牙串口模塊hc-06
?18650電池盒和電池組三節,12v左右
ds18b20溫度傳感器
紅外接收頭與遙控
lcd1602顯示屏
ttl電機2只
2實現功能
小車由藍牙模塊和紅外遙控控制運行軌跡,通過pwm功能調整小車的速度,同時lcd1602實時顯示當前日期和時間和當前環境溫度。
3模塊功能詳解
藍牙模塊:使用串口中斷,中斷號4,單片機接收到相應的指令后使小車執行相應功能。
?紅外遙控:使用外部中斷,下降沿觸發,首先得看懂紅外接NEC收協議如下。
紅外遙控器采用了NEC編碼規則:
NEC 載波頻率為 38Khz
引導碼:9ms 高電平 + 4.5ms 低電平
0碼 :0.56 ms 高電平 + 0.56 ms 低電平
1 碼 : 0.56ms 高電平 + 1.68 ms 低電平
結束碼 :0.56ms 高電平
數據幀格式:引導碼 +識別碼 + 識別碼反碼 + 鍵值 + 鍵值反碼 + 結束碼
重復幀格式:9ms 高電平 + 2.25ms低電平 + 結束位 + 結束碼,總共110ms左右
整個完整數據格式:引導碼 + 識別碼 + 識別碼反碼 + 鍵值 + 鍵值反碼 + 結束碼+一段空閑時間+9ms 高電平 + 2.25ms低電平 + 結束位 + 結束碼+重復碼循環~~~
高位在前,即首先收到的是高位的數據
?
?將接收到的數據碼傳給單片機執行相應的功能。
ds18b20溫度傳感器:首先先搞定傳感器初始化后再進行寫命令和讀數據這些。
初始化步驟:先拉低io口480~960us,再把io拉高,判斷io口在15~60us間是否變為低電平,如是則初始化成功,注意當超過一定時間后記得退出判斷,否則會進入死循環。最后可以通過返回的i值知道是否初始化成功。(其他地方說讀取到低電平后還要做延時處理,自己實測可以不加延時)
pwm控制車速(l298n):利用51的定時器在l298n輸出pwm信號來控制小車的速度,pwm控制車速的原理是通過改變輸出電機端口的電壓,從而改變車輪的轉速,那怎么改變電壓值呢?毋庸置疑只能通過定時器,設置定時器在一個周期(100ms)中30ms讓電機的端口輸出高電平,剩下的70ms輸出低電平,這樣一來pwm的占空比就是0.3,假設你的電池組是6v的,這時電機的有效電壓就是1.8v,這樣就可以通過改變占空比來控制車速啦。
這個是對定時器的初始化,一開始我設的是650us后發生中斷,pwm和pwm1分別是兩個電機的pwm口。
?
?當650us到達后就會進入中斷,在中斷里面判斷當前pwm端口為1還是0,一開始設為0后進中斷后就會執行else里的程序,重新給定時器設置計數時間350us,并把pwm端口置1,當350us到達后又會進入中斷執行if里的語句,就這樣一直重復。這樣pwm的周期就為1000us,其中有效時間為350us,即占空比為350/1000=0.35。
總結
以上是生活随笔為你收集整理的C51(蓝牙,红外)智能遥控小车的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 若依代码生成使用教程
- 下一篇: 大学生电子设计大赛最全资料