久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3082|回復: 0
打印 上一主題 下一主題
收起左側

我的STM32單片機項目經驗(加力器報警器)

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-23 17:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以前為了解決單位實際需要制作了加力器報警器,其中里面的控制器是采用STM32單片機,這次去沈陽面試單片機崗位這個項目很適合做介紹,我把這個項目的過程介紹下。加力器是汽車中剎車系統的一部分,加力器是用氣體頂動油液來完成加倍力量帶動剎車片的。加力器的氣活塞容易在運動中卡死,本報警作用就是在卡住時報警提示司機。
工作原理:
1.定義一個數組 u16 distance_l[2] = {0,0};作用是先后采集的兩次ADC數據存儲在這個數組中,其中ADC經過了取平均數,冒泡排序等濾波方法。
2.在主函數中首先對系統時鐘,ADC,led,定時器初始化,然后完成一個超限報警功能,就是油液漏油氣活塞沒有阻力超過正常值時報警的功能。本程序采用函數模塊化編程,調用了一個返回超限標志的函數bool isOverrun(distance_l[0]);這個函數傳入ADC數據如果超限就返回一個超限標志值。
3.接著完成返回剎車中標志函數 bool isBrake_state(distance_l[0]);因為只有在踩剎車狀態下才需要檢測,所有控制需要知道是否踩剎車了,調用了返回剎車中標志函數傳入了ADC數據中就可以返回是否是踩剎車狀態。
4.然后調用警報函數voidAlarm_dispose(bool lim_l, bool lim_r, bool lock);需要傳入3個值,兩個超限標志值,一個活塞被卡標志位,這幾個標志位任何一個成立就完成報警。
5.定時器中斷服務程序是關鍵,定時器2的功能是控制蜂鳴器報警的,定時器3中斷服務程序完成任務有,調用氣活塞是否被卡函數voidStuck(void);
在采集數據方面首先采集了300個數據,然后采用了冒泡排序去掉了一個最高值和一個最值,再取平均數完成軟件濾波的,濾波程序如下:
void filter(u8 ch)  
{  
int count,i,j;

for ( count=0; count
{  
value_buf[count]=Get_Adc(ch); //采集數據  
   }

for (j=0;j
{  
      for(i = 0; i < N-j; i++)  
     {
         if ( value_buf[i] >value_buf[i+1] )  
         {  
           temp =value_buf[i];  
          value_buf[i] = value_buf[i+1];  
          value_buf[i+1] = temp;  
         }
      }
    }
sum = 0;
for(count = 1;count < N-1; count++)
sum += value_buf[count];

sum = sum / (N - 2);  
//  sum = sum;
}


主函數程序如下:
#include
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"   
#include "adc.h"
#include "alarm.h"

#define LIM 5 //卡住判斷參數
u16 distance_l[2] = {0,0}; //卡住比較數組
u16 distance_r[2] = {0,0};
u8 i = 0;   //采集數據計數變量
bool brake_state_l, brake_state_r; //剎車狀態標志位
bool lock_alarm_l, lock_alarm_r, lock_alarm;  //卡住報警標志位

u16 value_buf[N]; //濾波求平均緩存
u32 sum; //濾波求平均總和緩存
u16 temp; //濾波求排序緩存

void Stuck(void); //判斷是否活塞卡住
int main(void)
{
bool lim_alarm_l, lim_alarm_r; //超限警報標志位

  Stm32_Clock_Init(9); //系統時鐘設置
delay_init(72); //延時初始化
uart_init(72,9600); //串口1初始化  
LED_Init();
Adc_Init();
Timer2_Init(5000,7199); //定時報警
Timer3_Init(2000,7199); //定時采集ADC  
// Timer4_Init(5000,7199); //定時打印

while(1)
{
lim_alarm_l = isOverrun(distance_l[0]); //返回超限標志
lim_alarm_r = isOverrun(distance_r[0]);

brake_state_l = isBrake_state(distance_l[0]); //返回剎車中標志
brake_state_r = isBrake_state(distance_r[0]);
//報警處理函數
Alarm_dispose(lim_alarm_l, lim_alarm_r, lock_alarm);
}
}
void TIM2_IRQHandler(void)
{
        
if(TIM2->SR&0X0001) //溢出中斷
{
BUZZER = 0;
delay_ms(100);
BUZZER = 1;
}   
TIM2->SR&=~(1<<0); //清除中斷標志位   
}


void TIM3_IRQHandler(void)
{         
if(TIM3->SR&0X0001)//溢出中斷
{
if( (lock_alarm_l || lock_alarm_r) && (brake_state_l|| brake_state_r) )
lock_alarm = 1;

  if( (brake_state_l == 0) &&(brake_state_r == 0))
lock_alarm = 0;

Stuck(); //數據采集后判斷是否活塞卡住      
}   
TIM3->SR&=~(1<<0); //清除中斷標志位   
}
void Stuck(void)
{
filter(ADC_CH0);
distance_l[i] = sum;

delay_ms(20);

filter(ADC_CH1);
distance_r[i] = sum;

i++;

  if(i > 1) //采集了兩組數據后判斷一次是否卡住
{
i = 0;

if( ( (distance_l[1]-distance_l[0]) < LIM) && ((distance_l[1]-distance_l[0]) > -50) )
lock_alarm_l = 1;

if( ( (distance_r[1]-distance_r[0]) < LIM) && ((distance_r[1]-distance_r[0]) > -50) )
lock_alarm_r = 1;

printf("%d\n",distance_l[1]-distance_l[0]);
// printf("%d\n",distance_r[1]-distance_r[0]);
}
}
void TIM4_IRQHandler(void)
{         
if(TIM4->SR&0X0001) //溢出中斷
{
// printf("a1= %d\n",sum);
// printf("a1= %d,a2= %d\n",adc_l, adc_r);
// printf("a1 %d, d1 %d, %d\n",adc_l, distance_l[0],distance_l[1]);
// printf("a2 %d, d2 %d, %d\n",adc_r, distance_r[0],distance_r[1]);            
// printf("%b, %b\n",lock_alarm_l, lock_alarm_r );
}   
TIM4->SR&=~(1<<0); //清除中斷標志位   
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 夜夜爽99久久国产综合精品女不卡 | 美女视频网站久久 | 成人区一区二区三区 | 国际精品鲁一鲁一区二区小说 | 国产精品毛片一区二区三区 | 精品日韩一区 | 国产精品91视频 | 欧美一级精品片在线看 | 亚洲三区在线观看 | 国产一区二区在线播放视频 | 亚洲精品精品 | 久久久国产一区二区三区 | 国产激情毛片 | 欧美激情精品久久久久久 | 国产视频一区二区在线观看 | 午夜伦4480yy私人影院 | 欧美一区视频 | 免费啪啪| 国产欧美一区二区三区国产幕精品 | 婷婷久久精品一区二区 | 国偷自产av一区二区三区 | 久久久久国产精品午夜一区 | 亚洲日韩欧美一区二区在线 | 干一干操一操 | 欧洲亚洲一区二区三区 | 久久精品日产第一区二区三区 | 国产高清精品在线 | 国产精品视频一区二区三区 | 草久在线视频 | 国产日韩一区二区 | 国产精品久久久久av | 91精品久久 | 理论片免费在线观看 | 久久国产精品一区二区三区 | 在线欧美激情 | 一区二区三区四区国产 | 性一区 | 超碰在线观看97 | 日韩精品成人av | av影音资源| 成人免费视频观看视频 |