Q. 아두이노 도플러효과실험
아두이노와 도플러효과키트를 이용하여 도플러효과 실험을 하고 싶은데요. 어떤 센서는 사용하면 쉽게 주파수 변화값을 얻을수 있는지 알려주세요
#아두이노 #도플러효과
[일루미나] 포부를 실현하는 최고 수준의 처리량! |
답변하기
<본 정보는 네티즌에 의해 작성된 정보로, BRIC에서 추가적인 검증과정을 거친 정보가 아님을 밝혀드립니다.>
목록
프리미엄 할인행사
16,000종, 연구의 성공률를 높여줄 1차항체 전품목 ABclonal 1+1 EVENT
~ 11-30까지 | 에이비클로널코리아
Thermo Scientific 마지막 겨울 할인 이벤트 최대 25%! (Co2 Incubator, Loca...
~ 12-31까지 | 대일랩서비스
최대 800개 유전자 발현량을 동시에 확인할 수 있는 nanoString nCounter SPRINT SAL...
~ 12-31까지 | 필코리아테크놀로지
고온(45℃ ~ 60℃)에서 활성을 갖는 NEB의 혁신적인 신제품 !! Msz Exonuclease Ⅰ
~ 12-28까지 | 필코리아테크놀로지
Amersham™ ImageQuant™ 500 연말 프로모션 세일(컨설팅/소모품 혜택)
~ 12-16까지 | 싸이티바
[TECAN No.1 한국공식대리점] TECAN Automation / Liquid handler / Mic...
~ 12-31까지 | 바이오닉스
[TECAN한국공인대리점] liquid handler 실험실 자동화장비 프로모션~!!
~ 12-31까지 | 그린메이트바이오텍
3차원 세포배양용기를 사용하여 기존 2차원 세포배양의 한계를 극복해보세요!
~ 11-30까지 | 나노팬텍
도플러 효과
고등학교 물리 시간에 도플러 효과를 떠올리면, 흔히들 엠뷸런스를 생각하게 합니다.
멀리서 다가오는 사이렌소리가 가까이 오게 되면 점점 높은 소리로 변하다가 멀어져가면서 낮은 음으로 바뀝니다.
소리가 왜곡되는 것 같은 효과를 느낄 수 있죠. 이러한 현상을 도플러 효과의 예로 배웠습니다.
위의 그림에서 엠뷸런스가 정지해 있는 사람에게 가까이 오게 되면, 파장이 짧아지고 이에 따른 주파수(진동수)가 올라가게 됩니다.
이를 이용해서 속도를 측정할 수 있는데, 그 예로 스피드건을 대표적으로 들 수 있습니다.
스피드건은 레이더파를 발사하고, 이 레이더파가 차량에 반사되어 돌아오는 것을 측정합니다.
레이더파는 전자기파의 일종으로 보낼 때의 주파수와 반사되어 돌아오는 주파수를 비교하여 속도를 측정하게 됩니다.
예를 들어, 스피드건이 내보내는 주파수가 f 라고 가정하고, 전자기파의 속도는 빛의 속도인 c, 그리고 측정된 주파수의 차이가 Δf 라면, 자동차의 속도는 다음과 같습니다.
이러한 도플러 효과를 이용하여 속도를 측정할 수 있는 장비를 소개하면 다음과 같은 소자들이 있습니다.
//goo.gl/PkkQSc
iSYS-101, IPM-165 : 제품 바로가기
아두이노 및 라즈베리파이와 연결해서 어렵지 않게 사용할 수 있는데, 자율주행자동차에 대한 교육 및 연구에서도 많이 활용할 수 있을 것이라 생각됩니다.
1) 속도 측정 아두이노 소스코드 (iSYS-101)
int ledPin = 13; // onboard LED
int sensorPin = 7; // OC connected to digital Pin 7
int val = 0; // variable to store the read value
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT_PULLUP);
}
void loop()
{
val = digitalRead(sensorPin); //read the Sensor input pin
if (val == 0)
{
digitalWrite(ledPin, HIGH);
delay(1000);
}
else
{
digitalWrite(ledPin, LOW);
delay(1000);
}
}
아두이노 소스코드
1) 속도 측정 아두이노 소스코드 (IPM 165)
int v, vmax, pin = 7 ;
void setup ()
{Serial.begin ( 9600 );
pinMode (pin, INPUT);
}
void loop ()
{ unsigned long T; // period in us
double f; // frequency in MHz
char s [ 20 ]; // output
string vmax = 0 ; //
Serial.println ( "ready" ); // trigger;
while (digitalRead (pin));
while ( ! digitalRead (pin));
for ( int i = 0 ; i <16 ; i ++ ) // 16 measurements (LCD)
{T =pulseIn (pin, HIGH) + pulseIn (pin, LOW);
f = 1 / ( double ) T; // f = 1 / T
v = int ((f * 1e6 ) /44.0 ); // 24 GHz radar
vmax = max (v, vmax); //
slave pointer Serial.print ( ">" ); // 16 points (LCD)
}
sprintf (s, "% 3d km / h" , vmax);
Serial.println (s); // output
delay ( 2000 ); // 2 seconds
}
2) 속도 측정 아두이노 소스코드 + 16x2 LCD 디스플레이 (IPM 165)
#include <LiquidCrystal.h>
LiquidCrystal lcd ( 12 , 11 , 5 , 4 , 3 , 2 );
int v, vmax, pin = 7 ;
void setup ()
{lcd.begin ( 16 , 2 );
lcd.print ( "Arduino radar" );
pinMode (pin, INPUT);
pinMode ( 13 , OUTPUT);
}
void loop ()
{ unsigned long T; // period in us
double f; // frequency in MHz
char s [ 20 ]; // output
vmax = 0 ; //
lcd.setCursor ( 0 , 1 ); lcd.print ( "Ready ..." );
while (digitalRead (pin));
while ( ! digitalRead (pin));
for ( int i = 0 ; i <16 ; i ++ ) // 16 measurements (LCD)
{T = pulseIn (pin, HIGH) + pulseIn (pin, LOW);
f = 1 / ( double ) T; // f = 1 / T
v = int ((f * 1e6 ) /44.0 ); // 24 GHz radar
vmax = max (v, vmax); //
slave pointer lcd.setCursor (i, 1 ); lcd.print ( ">" );
}
sprintf (s, "% 3d km / h" , vmax);
lcd.setCursor ( 0 , 0 );
lcd.print ( "Measured" ); lcd.print (s);
lcd.setCursor ( 0 , 1 ); lcd.print ( "===============" );
delay ( 2000 ); // 2 seconds
}
3) 모션 감지 아두이노 코드 (IPM 165)
#define LED 13
#define PIN 7
void setup ()
{PinMode (PIN INPUT); pinMode (LED, OUTPUT);}
void loop ()
{ while ( ! digitalRead (PIN)); while (digitalRead (PIN));
delay ( 50 ); digital write (LED, HIGH);
delay ( 4000 ); digitalWrite (LED, LOW); // 4 seconds
}
4) 모션 감지 아두이노 코드 + 블루투스 모듈 (IPM 165)
#define LED 13
#define PIN 7
void setup ()
{
pinMode (PIN INPUT);
pinMode (LED, OUTPUT);
Serial.begin ( 9600 );
}
void loop ()
{ while ( ! digitalRead (PIN));
while (digitalRead (PIN));
delay ( 50 );
Serial.println ( "This is the Arduino." );
digital write (LED, HIGH);
delay ( 4000 ); // 2 seconds
digital write (LED, LOW);
}
5) 속도 측정 + 블루투스 모듈 (IPM 165)
int v, vmax, pin = 7 ;
void setup ()
{Serial.begin ( 9600 );
pinMode (pin, INPUT); pinMode ( 13 , OUTPUT);
}
void loop ()
{ unsigned long T; // period in us
double f; // frequency in MHz
char s [ 40 ]; // output
vmax = 0 ; // maximum value
while (digitalRead (pin)); while ( ! digitalRead (pin));
digitalWrite ( 13 , HIGH);
for ( int i = 0 ; i <5 ; i ++ ) // 5 measurements
{T = pulseIn (pin, HIGH) + pulseIn (pin, LOW);
f = 1 / ( double ) T; // f = 1 / T
v = int ((f * 1e6 ) /44.0 ); // 24 GHz radar
vmax = max (v, vmax); // slave pointer
}
// For the smartphone via HC06-Bluetooth
sprintf (s, "Maximum speed:% 3d km / h" , vmax);
Serial.println (s); // output
delay ( 4000 ); // 4 seconds
digitalWrite ( 13 , LOW);
}