안전거리 확보 시스템


사용자 삽입 이미지
...임베디드는..개발자에게 가혹하고 눈에 띄지도 않는...
암울한 프로젝트


이번 시스템 프로젝트 관련 동영상



속도 측정 알고리즘

9.80665m/s^2 : 162 = 1 : x
162 = 9.80665m/s^2 * x
x = 162 / 9.80665 = 16.519402650242437529635502439671
받는 값 1당 = 0.060534876543209876543209876543214(m/s^2)
2m/s^2 : 33
m/s -> km/h *3.6
x(km/h) = 4.5887229584006770915654173443528
현재속도(km/h) = 기존속도(km/h) + △t
 △t  = ( (X m/s^2 * 3.6) * t) /n

1m/s^2 = 0.001km/(1/3600)h^2 = 12960km/h^2
1m/s^2 => 1m/1s / 1s/1 = 1m/s /1s => 3600m/3600s => 3.6km/h/1s
=>3.6km/h /(1/3600)h => 3.6 * 3600 km/ h/h => 12960 km/h^2
if(v>=16 || v>=19)
{
   if(v - (f/100))
   {
 /*비프음 + LCD Waring*/
   }
}
---------source-----------------
static int Xaxis;
static int speed_x = 0;
double ac,onea = 0.060535;//onea = 1칸 가속도(단위 M/S^2)
int lcd_a;
-------------------------------
unsigned int Adc_Data( unsigned char mux )
{
 unsigned int value = 0x0000;
 ADCSRA &=0x3f;  // Adc_disable, ADSC:0
 ADMUX |= mux;
 ADCSRA |= 0xC7; // Adc_Enable
 delay(5);
 
 value = (ADCL)&0x00ff;
 value |=  (ADCH << 8);
 value &= 0x03ff;
 return value;
}
----------------------
Xaxis = Xaxis - 333;//중앙값 1G = 162칸 = 9.800665m/s^2
 
lcd_a = onea * 3.6 * Xaxis * 0.53571; //m/s^2으로 변환;+km/h/s * t
if(((onea * Xaxis) - lcd_a)>=0.5) lcd_a += 1; // 반올림
speed_x = speed_x + lcd_a;
-----------------------
if(speed_x >= 16 && speed_x <= 19)
 {
  if(micro_front-((speed_x - 15)*100)<=0)
  {
   if(!(micro_front <= risk_front || micro_left <= risk_left || micro_right
<= risk_right))
   {
    Gotoxy(10, 0);
    _lcd_str("Waring");    
   }
   sp_flags = true;
  }   
 }

..간단히 말하면 실패작...어떻게 하든 속도를 가속도로 잰다는게 문제 였던..
by Tomoya 2007.11.29 15:37
| 1 |