|
模擬剎車系統(tǒng),stm32主控,帶iic模式oled屏,驅(qū)動一個電機,模擬汽車運動,實踐表明,很穩(wěn)定。需要自己下載去打板,資料很詳細(xì),程序、pcb、模塊資料等等一應(yīng)俱全。
1、采用STM32的原因是因為驅(qū)動簡單,自帶ADC,pwm輸出,功耗也低。
2、L9110是電機驅(qū)動芯片,供電之后,給正反轉(zhuǎn)引腳加pwm或者高低電平就行,而且隔離了控制端與電機端,能對控制端起到保護作用。
3、AO3401是PMOS管,在電路里面用了兩個,構(gòu)成防反接電路。
4、四線制swd下載方式,請自行百度,不再贅述。
5、為什么單獨開了個串口不用,是因為在調(diào)試程序的過程中可以用他來返回調(diào)試信息,能更快的填好程序。
6、XL-1509-5V是開關(guān)電源芯片,選用他的原因是,它價格低,,使用簡單,保證一個電感和電容即可穩(wěn)定輸出5V電源。
7、OLED是四線制iic通訊方式,程序簡單,驅(qū)動快速,能顯示中英文,字符等等,不管是在功能上還是接線方式上都比1602和12864簡單。
Altium Designer畫的STM32模擬剎車系統(tǒng)電路原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (115.68 KB, 下載次數(shù): 58)
下載附件
2019-7-14 00:45 上傳
0.png (67.45 KB, 下載次數(shù): 64)
下載附件
2019-7-14 00:45 上傳
0.png (5.04 KB, 下載次數(shù): 75)
下載附件
2019-7-14 00:46 上傳
單片機源程序如下:
- #include "stm32f10x.h"
- #include "bsp_usart.h"
- #include "bsp_adc.h"
- #include "bsp_pwm_output.h"
- #include "TIM2.h"
- #include "UltrasonicWave.h"
- #include "bsp_systick.h"
- #include "OLED_I2C.h"
- #include "bsp_i2c_gpio.h"
- #include "bsp_buzz.h"
- void KaiJi_Init(void);
- void OLED_deal(void);
- extern float UltrasonicWave_Distance;
- extern uint8_t modeflage;
- /**
- * @brief 主函數(shù)
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- SystemInit();
- USART_Config();
- GENERAL_TIM_Init();
- ADCx_Init();
- NVIC_Configuration();
- TIM2_Configuration();
- UltrasonicWave_Configuration();
- i2c_Init();//I2C總線的GPIO初始化
- OLED_Init();//oled初始化
- Buzz_GPIO_Config();
- KaiJi_Init();
- printf("\r\n ---智能剎車系統(tǒng)----\r\n");
-
- while (1)
- {
-
- // KaiJi_Init();
-
- OLED_deal();
- ADC_deal();
- UltrasonicWave_StartMeasure();
- ZDSC_Init();
- SHACHE_Init();
- Buzz_serve();
-
- }
- }
- /*********************************************END OF FILE**********************/
- //開機顯示函數(shù)
- void KaiJi_Init(void)
- {
- int i;
- for(i=3;i<7;i++){OLED_ShowCN((i-1)*16,0,i);}
- OLED_ShowStr(12,3,(unsigned char*)"Name:",2);
- for(i=0;i<3;i++){OLED_ShowCN((i+4)*16,3,i);}
- OLED_ShowStr(12,6,(unsigned char*)"Date:",2);
- OLED_ShowStr(52,6,(unsigned char*)"2019/4/15",2);
- Systick_delay_ms(2500);
- OLED_CLS();
- }
- void OLED_deal(void)
- {
- int i;
- char j=10;
- for(i=7;i<13;i++){OLED_ShowCN((i-6)*16,0,i);}
- //定義三個數(shù)組,作為傳感器值緩沖
- char buffer1[5]={0},buffer2[5]={0};
- //用sprintf函數(shù)將測量值轉(zhuǎn)換為字符形式
- sprintf(buffer1,"%.2f",UltrasonicWave_Distance);
- sprintf(buffer2,"%d",(TIM_GetCapture2(TIM1))/90);
- // printf("%s\r\n%d\r\n",buffer2,(7200-TIM_GetCapture2(TIM1))/72);
- // printf("\r\n%d\r\n",TIM_GetCapture2(TIM1));
- if(modeflage==1)
- {
-
- //distance from the car in front 簡稱DFCF,表示離前車的距離
- OLED_ShowStr(0,2,(unsigned char*)"DFCF:",2);
- //顯示溫度測量值
- OLED_ShowStr(40,2,buffer1,2);
- //顯示單位cm
- OLED_ShowStr(72,2,(unsigned char*)"CM ",2);
- //顯示運行模式,具體作用函數(shù)在ZDSC_Init();里面:
- OLED_ShowStr(0,4,(unsigned char*)"MODE:",2);
- OLED_ShowStr(72,4," ",2);
- //顯示速度
- OLED_ShowStr(0,6,(unsigned char*)"SPEED:",2);
- //顯示模擬速度量0->80
- if(TIM_GetCapture2(TIM1)<720)
- {
- OLED_ShowStr(48,6,buffer2,2);
- OLED_ShowStr(56,6," ",2);
- }
- else
- {
- OLED_ShowStr(48,6,buffer2,2);
- OLED_ShowStr(64,6," ",2);
- }
- }
- if(modeflage==0)
- {
- //顯示 警告信息
- OLED_ShowStr(0,2," ",2);
- OLED_ShowStr(24,2,(unsigned char*)"Warning!!!",2);
- //顯示即將撞車
- OLED_ShowStr(0,4," ",2);
- OLED_ShowStr(20,4,(unsigned char*)"Crash Soon!",2);
- //顯示緊急制動
- OLED_ShowStr(0,6,(unsigned char*)"EmergencyBraking",2);
- }
- }
復(fù)制代碼
0.png (14.01 KB, 下載次數(shù): 60)
下載附件
2019-7-14 00:49 上傳
所有資料51hei提供下載:
剎車系統(tǒng)pcb+程序.7z
(7.39 MB, 下載次數(shù): 39)
2019-7-14 00:50 上傳
點擊文件名下載附件
程序及pcb 下載積分: 黑幣 -5
資料.7z
(5.34 MB, 下載次數(shù): 30)
2019-7-14 00:50 上傳
點擊文件名下載附件
資料 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|