질문게시판 > 답변 : 적외선 거리센서 공식

TODAY52 TOTAL124,255
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


BASIC4MCU | 질문게시판 | 답변 : 적외선 거리센서 공식

페이지 정보

작성자 master 작성일2018-05-15 00:17 조회43회 댓글0건

본문

	

 

int volt1=map(analogRead(A0),0,1023,0,5000);
distance1=(27.61/(volt1-0.1696))*1000;

 

직감상 이상하다 싶어서 공식이 이상한 것 같다고 적었는데요

제 느낌이 틀릴 수도 있으니 체크 해보겠습니다.

 

?src=%22http%3A%2F%2Fcafeptthumb1.phinf.naver.net%2F20150519_50%2Fskadjr1_1432026589545m1yhD_PNG%2F%25C0%25FB%25BF%25DC%25BC%25B1%25BC%25BE%25BC%25AD2.png%3Ftype%3Dw740%22&type=cafe_wa740 

int volt1=map(analogRead(A0),0,1023,0,5000); 

이 식에 의하면 volt1은 mV 단위의 값입니다.

 

가장 낮은 값인 0.4V ( 400mV ) 와 

가장 높은 값인 3.15V ( 3150mV ) 에서 

각각 80cm, 6cm가 나오는지 계산 해보겠습니다.

 

distance1=(27.61/(400-0.1696))*1000 = 69.05427901430206 

distance1=(27.61/(3150-0.1696))*1000 = 8.765551313492942 

 

0.1696을 무시하고 계산 해보죠

distance1=27610/400 = 69.025 

distance1=27610/3150 = 8.765079365079365 


결과에서 차이가 거의 없죠?
mV 단위는 큰 값을 얻는 것인데
큰 값에서 고작 0.1696을 빼는 것이 이상해서 공식이 이상하다고 적은겁니다.

이 식의 출처가 궁금하군요

 

 

void loop (){
  long IR_value = analogRead(IR_sensor);
  long IR_range = gp2y0a21yk(IR_value);
  
  Serial.println (IR_value);
  Serial.print (IR_range);  Serial.println (" cm");  Serial.println ();
  delay (1000);
}
long gp2y0a21yk (long IR_value){
  if (IR_value < 10IR_value = 10;
  return ((67870.0 / (IR_value - 3.0)) - 40.0)/10;
 

결과는 이 식이 더 잘나옵니다.

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 0

조회수 43

등록된 댓글이 없습니다.

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.

게시물 검색

Privacy Policy
                   MCU BASIC ⓒ 2017 모바일버전으로보기