Broccoli's House

#3-(3) 포토인터럽터를 이용한 RPM 측정 본문

공부/캡스톤 디자인

#3-(3) 포토인터럽터를 이용한 RPM 측정

김콜리 2018. 1. 30. 22:31

3주차 - (3) 아두이노를 이용한 RPM 측정




  • 포토 인터럽터(Photo Interrupter) 제원 : LM393 H2010

 - 한 쪽 면에서 빛을 쏘아 반대편의 광센서가 그 빛을 받아들인다. 광센서에 입력이 없으면 0을, 투과하여 입력이 있으면 1을 반환한다. 따라서 패턴이 그려진 투명 디스크를 사용하면, 패턴의 수만큼 센서에서 펄스를 생성하고 회전수를 계산할 수 있다.






  • 하드웨어 세팅 : 포토인터럽터, 아두이노 DUE, NI-6008, 엔코더, 마인드스톰 컨트롤러 및 모터, 패턴 디스크

 - 아두이노 및 NI-6008, 마인드스톰의 컨트롤러를 컴퓨터에 연결한다.

 - NI-6008에 엔코더를 연결하고, 포토인터럽터는 아두이노의 5V, GND와 디지털 입력 포트(44)에 각각 연결한다.

 - 패턴 디스크는 마인드스톰의 모터에 꽂고, 모터와 컨트롤러를 연결한다.

 - 본 계측은 포토인터럽터를 이용하고, 계측 값을 검증하기 위해 엔코더를 사용한다.






  • 소프트웨어 세팅
 - 레고 마인드스톰 EV3 프로그램을 설치하여, 설정 시간과 파워에 따라 회전하도록 프로그램을 구성한다.


 - Arduino IDE에서 포토인터럽터의 펄스를 읽어 펄스 수를 세고, RPM을 계산하여 출력하는 프로그램을 구성한다.


 - 포토인터럽터를 사용해보면, 미세한 진동이나 외부 요인에 의해 펄스 카운트가 매우 튀는 것을 알 수 있다. 센서의 감도와 읽어들이는 시간이 너무 촘촘하여 발생하는 것으로, 이를 방지하기 위해 센서가 측정하는 간격을 설정해줄 필요가 있다. 프로그램이 실행 시작한 직후의 시간을 oldtime 변수에 저장하고, 센서가 펄스를 생성하여 카운트를 할 때까지 걸린 시간을 t 변수에 저장한다. 그리고 그 차이 값이 ignoremilli 변수에 저장된 값보다 작으면 펄스가 생성되더라도 카운트를 하지 않는다. 다만, 이렇게 프로그래밍한 경우 회전 속도에 따라 ignoremilli 변수에 저장되는 값은 사용자가 적절히 넣어주어야 한다. 





 - 랩뷰의 DAQ 어시스턴트에서 신호를 수집하여 에지 카운트를 할 수 있도록 설정한다. DAQ 어시스턴트에서 계측하여 출력된 데이터를 RPM으로 변환하는 프로그램을 구성한다.






  • 결과 비교

 - 레고 마인드스톰 EV3에서 파워를 25와 50으로 각각 10초간 모터를 회전시켜 RPM을 측정하였다.


 - 파워 50일 때의 RPM은 25일 때 RPM의 2배였다. 


 - 포토인터럽터와 엔코더는 중간 부분에서 약간씩의 차이를 보였지만,  최종 RPM은 동일하게 나왔다. 



     




Comments