오늘 리니어 모터에서 수정할 부분은 다음과 같은 2가지 였다.
1. 모터의 동작 시간 측정 코드 만들기
2. 리니어 모터의 RED LED가 BLINK되지 않도록 해제 설정하기
3. 모터 시간 측정
1. 모터의 동작 시간 측정 코드 만들기
모터의 동작 시간을 핸드폰의 시간 측정으로 하게 되면 오차도 많이 발생하고
일일히 모니터링을 해야하는 불편한 점이 있었다.
따라서 공식적으로 모터의 동작 시간을 1초 오차로 측정하기 위해
코드를 짜기로 하였다.
우선 모터가 동작하는 여부를 구분할 방법은
duty / 전류 / 전압의 변화로 구분하려고 하였다.
하지만 duty인 경우 모터의 정지와 구동에 따라 차이가 없이 4 - 7% 사이를 사인파형에 따라 오갔으므로
duty는 제외.
전압 같은 경우도 모터의 정지와 구동에 따라 변화가 거의 없으므로 제외.
전류의 경우 모터가 구동했을 때 25mA이상이 흐르게 되고
모터가 정지한 상태에는 25mA 이하로 흐르게 됨을 전류[mA] 웨이브폼으로 측정하게 되었다.
따라서 경과 시간 VI을 이용하여
25ms 이상의 전류가 흐르면 0으로 초기화 하고 (모터가 계속 동작되는군)
25ms이하로만 전류가 흐르는 증상이 1초 이상 지속되면 (모터가 정지되었군)
control loop를 정지시키고 tickcount를 second 단위로 측정 값을 출력하기로 하였다.
다음과 같이 사인 진폭을 0으로 만들면 모터 구동인 멈춘 것이므로
tick count로 측정한 모터 동작 시간 [s] 20초를 출력하였다.
20초는
프로그램 실행 시작 시간부터
사인 진폭을 0으로 만든 시간까지 걸린 시간을 의미한다.
해결!!
2. 리니어 모터의 RED LED가 BLINK되지 않도록 해제 설정하기
모터의 overload로 인한 30초 동작 후 정지하는 설정은 해제했지만
여전히 빨간색 LED가 깜빡이는 증상은 지속되었다.
모터의 구동에는 문제가 없지만
시각적으로 보기 안 좋을 수 있으므로 해제할 방법으로 찾기로 하였다.
우선 모터에 IR-USB02를 연결하고
Alarm LED에서 InputVoltage 또한 체크를 해제하였다.
그래도 30초가 지나 overload가 되면 RED LED가 여전히 BLINKING 되었다.
그렇다면
LED 부분은 잘 설정되어있다.
더 이상 방법이 없는 것 같다.
3. 모터 시간 측정
overload 자동 정지 기능을 해제하였기 때문에
긴 시간 모터를 구동하면
혹시 모터가 과부하로 고장날 수 있다고 생각하였다.
이를 예방하기 위해 치구에 고정된 모터가 아닌
여분의 모터를 이용하여 시간을 측정하기로 하였다.
물론 컴퓨터 자동 절전 설정도 없애고 시작하였다.
1. 진폭 최대(100)으로 했을 때 시간 측정
우선 100으로 최대 진폭을 입력하였을 때 걸리는 시간을 측정하기로 한다.
돌리고 점심을 먹고 와보았다.
1시간 넘짓 동작했는데 모터가 뜨거워졌다.
음 1시간 정도로는 큰 문제 없어보이는 모터.
퇴근할 때 구동 해놔야겠다.
그리고 현재 몇 초가 지났는지 측정 값을 실시간으로 봤으면 좋겠다.
이런 식으로 control loop에 tick count를 넣어 소요된 시간을 측정하였다.
실행 정지 버튼을 눌렀을 때 모터 동작 시간까지 나오도록 하려면
진폭 값을 0으로 만들어야 끝이 난다.
다음 글은 시간 측정을 하여
값들을 logging 해놓는 코드를 추가해야겠다.