電路原理圖如下:
111.png (126.77 KB, 下載次數: 86)
下載附件
2019-4-27 17:40 上傳
2222.png (90.01 KB, 下載次數: 68)
下載附件
2019-4-27 17:40 上傳
目前各種汽車上安裝的后視鏡都存在不同程度的盲區,
駕駛視野寬度的不足使車輛在行駛中始終存在安全隱患[1]。車輛在轉彎時駕駛員只能觀察到同水平線上車輛的后方視野,而看不到側方同向來車,尤其載貨汽車自身高度和長度的限制,使得駕駛員對后視鏡的依賴更加明顯,且載貨汽車貨箱長度大、載貨多、慣性大,轉彎時存在較大的內輪差,一旦發生事故,死傷慘重。根據公安部道路交通安全研究中心的數據顯示,2014 年貨車總量占全國汽車保有量的8%,但貨車事故致死人數卻達到28%[2-5]。因此提出針對改善載貨汽車轉向行駛過程中后視鏡視野的后視鏡隨動系統,對提高載貨汽車的行駛安全性具有重要意義。
載貨汽車后視鏡的控制系統主要是通過手動按鈕的方式
完成對后視鏡的調節,并且載貨汽車在轉彎時的后視鏡不會自動調節,導致駕駛員的視野范圍很局限。后視鏡智能調整
技術在轎車上有一些研究成果,有研究人員根據轉向燈的開啟及關閉為輸入信號,控制后視鏡電機的啟停及轉動方向[6],但是這種后視鏡調節方法,不能準確、實時性的為駕駛員提供最佳后視鏡駕駛視野;黃科[7]等人采用單片機實現了對后視鏡的自動翻轉控制,提高了后視鏡的調節精度,鄭芳芳[8]等人基于CAN 總線實現了后視鏡的自動折疊展開及位置記憶功能,但都沒有結合后視鏡視野盲區對后視鏡的轉動做出調整。
鑒于目前后視鏡系統的局限性,本文對載貨汽車交匯路口轉彎時的后視鏡視野情況做了分析,采用單片機作為主控單元,以方向盤的轉角作為輸入信號,設計了后視鏡隨動系統,該系統可以實現方向盤轉角數據的傳輸,并通過L298N后視鏡電機驅動模塊完成了對后視鏡鏡面的自適應控制,使車輛在交叉路口轉彎時駕駛員的后視鏡視野得到很大程度的改善,提高了載貨汽車在轉彎情況下的行車安全性。
1 系統硬件設計
本文所涉及的后視鏡隨動系統,主要由輸入端、主控單元、執行端三大部分組成。其中輸入端主要由方向盤轉角傳感器和CAN 模塊組成;主控單元采用STM32 系列單片機作為微處理器模塊的核心器件,執行算法及控制工作;執行端包括后視鏡鏡面控制器及電機驅動模塊L298N。方向盤轉角傳感器采集到的轉角數據,通過CAN 模塊傳送給主控單元STM32 系列單片機,STM32 系列單片機將接收到的數據進行數據處理后對電機驅動模塊輸入端進行高低電平的控制,可以實現對后視鏡鏡面控制器中調整電機的正反轉控制,后視鏡的轉動角度則通過時間控制來實現。系統的整體結構框
圖如圖1 所示。
圖1 隨動系統整體結構框圖
Fig.1 The overall structure diagram of the follow-up system
1.1 輸入端的設計
該后視鏡隨動系統采用的是型號為C68049XF25849366
ANA76100BA的方向盤轉角傳感器,該型號的傳感器抗干擾性能較強且工作信號穩定可靠。轉角傳感器的內部結構主要包括1 個角度測量芯片MLX90316、5 個槽型光電傳感器SG278 編碼陣列、電源穩壓電路等。轉角傳感器安裝在方向盤下方的轉向管柱上,能夠檢測方向盤轉動角度及轉動方向。
轉角傳感器的基本工作原理:方向盤轉動時通過轉向柱帶動主動齒輪轉動,此時從動齒輪的轉動引起從動齒輪上方小磁鐵周圍磁場方向的改變,這種變化由MLX90316 芯片檢測并輸出與小磁鐵轉動角度呈線性關系的模擬電壓[9-10],此電壓經DSP 芯片計算得到的轉角數據,然后經過CAN 模塊轉換傳送給主控單元52 單片機
單片機源程序如下:
- /*********************************************************************************/
- /*注意:本例程是基于STC89系列傳統型12T 51單片機編寫,由于不同系列51單片機一些外設*/
- /*功能配置存在差異,請親們在使用時對應進行修改。*/
- /*********************************************************************************/
- #include <reg52.h>
- #include "MCP2515.H"
- unsigned char CAN_Flag=0; //CAN接收到數據標志
- unsigned char CAN_R_Buffer[8]; //CAN接收數據保存緩沖區
- extern unsigned char ge,shi,bai,qian,wan; //顯示變量
- extern void Init_ADXL345(void); //初始化ADXL345
- extern unsigned char Single_Read_ADXL345(unsigned char REG_Address); //單個讀取內部寄存器數據
- extern void Multiple_Read_ADXL345(); //連續的讀取內部寄存器數據
- /*******************************************************************************
- * 函數名 : Exint1_Init
- * 描述 : 外部中斷1初始化函數
- * 輸入 : 無
- * 輸出 : 無
- * 返回值 : 無
- * 說明 : 無
- *******************************************************************************/
- void Exint1_Init(void)
- {
- PX1=1; //設置外部中斷1的中斷優先級為高優先級
- IT1 = 1; //設置INT1的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
- EX1 = 1; //使能INT1中斷
- EA = 1; //使能總中斷
- }
- /*******************************************************************************
- * 函數名 : Exint1_ISR
- * 描述 : 外部中斷1中斷服務函數
- * 輸入 : 無
- * 輸出 : 無
- * 返回值 : 無
- * 說明 : 用于檢測MCP2515中斷引腳的中斷信號
- *******************************************************************************/
- void Exint1_ISR(void) interrupt 2 using 1
- {
- CAN_Flag=1;//CAN接收到數據標志
- }
- /*******************************************************************************
- * 函數名 : main
- * 描述 : 主函數,用戶程序從main函數開始運行
- * 輸入 : 無
- * 輸出 : 無
- * 返回值 : 無
- * 說明 : 無
- *******************************************************************************/
- char Can_Tx_Buf[4];
- extern void delay(unsigned int k);
- void main(void)
- {
- unsigned char devid;
- Init_ADXL345(); //初始化ADXL345
- devid=Single_Read_ADXL345(0X00);//讀出的數據為0XE5,表示正確
- Exint1_Init(); //外部中斷1初始化函數
- MCP2515_Init(); //MCP2515初始化配置
- while(1)
- {
- Multiple_Read_ADXL345(); //連續讀出數據,存儲在BUF中
- display_x();
- Can_Tx_Buf[0] = qian;
- Can_Tx_Buf[1] = bai;
- Can_Tx_Buf[2] = shi;
- Can_Tx_Buf[3] = ge;
- delay(1000) ;
- CAN_Send_Buffer(Can_Tx_Buf,4);//CAN發送指定長度的數據
- }
- }
復制代碼
所有資料51hei提供下載:
基于52單片機汽車后視鏡.rar
(2.2 MB, 下載次數: 184)
2019-4-27 17:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|