Saturday, April 11, 2020

Make Digital Instrument Panel for CB400 on Raspberry pi - #4. 속도와 RPM 미터 펄스와 속도, RPM 값 매칭 및 속도 리밋 해제


3편에 이어.

계기판에 연결된 커넥터 두 개의 핀을 찾느라 배선도를 다 뒤진 끝에 커넥터 핀과 각 기능을 매치시켜 놓고, 동작 실험을 하였다. ( 작동 실험 다시 보기. 프레임 오버홀 8편 )

그런데, 4가지 기능은 확인하지 못하였다.
스피드 미터, 스피드 리밋, RPM 미터, 연료량 게이지.

이 중에서 스피드 미터와 RPM 미터는 펄스 신호가 계기판으로 들어올 것으로 생각되고, 스피드 리밋은 계기판에서 리밋 이상으로 속도가 올라가면 CDI로 접점 신호가 출력될 것이다.
연료량 게이지는 저항 값이 계기판으로 들어온다.

디지탈 계기판을 만들려면 시속과 펄스 값을 매칭 시켜야 한다.
그래서 펄스 제너레이터를 마련하여 해당 값을 찾기로 했다.

왼쪽은 pulse 갯수를 조절한다. 오른쪽은 듀티비를 조절한다.
원래는 PWM 컨트롤을 하기 위해 사용되는 보드이지만, 듀티비를 50으로 하면 일반 펄스 출력 모듈로 사용할 수 있다.

계기판의 시그널 접지인 3번에 (-)를 물리고, 계기판 메인 전원 4번에 +12를 물린다.
(핀 번호는 프레임 오버홀 8편 참고)

그리고 펄스 제너레이터 보드의 (-)선을 역시 3번에 물리고, 펄스 출력 선을 커넥터 12번 스피드 입력 핀에 물린다.

최소 펄스가 6Hz이다.

펄스를 올려본다.
166Hz 즈음에서 10 km/h가 나온다.
(사진을 자세히 보니 15km/h에서의 값을 측정했다. 실수...)

역시 예상이 맞았다. ㅎㅎ
스피드 신호는 펄스 입력이었던 것이다.

이렇게 각 속도별 펄스 카운트를 측정해보면 다음과 같다.
20km/h - 230Hz
30km/h - 353Hz
40km/h - 482Hz
50km/h - 603Hz
60km/h - 733Hz
70km/h - 860Hz
80km/h - 982Hz

문제는 1kHz가 넘어가면, 펄스 제너레이터 보드가 10Hz 단위로 값을 올려서, 속도와 펄스의 정확한 매칭이 힘들었다.

하지만 속도계는 비례로 움직이므로 함수값을 찾으면된다.
이 측정 값을 그래프로 그려보면 다음과 같다.

10km 근처 저속 구간에서 값이 차이가 많이 난다.
(실제로는 15km/h 값을 측정한 것이라서 그렇다. ㅋ)

측정 오차가 있어서 그런 것이므로 보정해서 다시 그려보면,

이 값으로 함수식을 만들어보자.
몇 개 펄스 당 1km/h 이렇게 계기판을 만들었을 것이다.
즉, 속도는 펄스의 배수이다.
위 값을 보면 자연스럽게 보인다.

대충,

speed = pulse / 12

현재는 80km/h 까지만 측정되었으므로 이 수식을 이용해서 190km/h에서 펄스값과 비교해보자.

계산대로라면 190km/h의 펄스는 190*12 = 2280 이라야 한다.
정확하진 않지만 아래와 같이 190이 약간 안되었을 때 2340 펄스였다.
2350을 주면 190을 약간 넘어가는 것으로 보았을 때 190일 때 2347 쯤의 펄스가 필요한 것 같다.

그렇다면 속도 기준의 펄스 갯수는 정수가 아닌 것으로 보인다.
13을 사용하면 2470이므로 좀 많기 때문이다.

12.35를 사용하면 190일 때 2346.5 펄스이므로 2347과 가장 근접하다.

이 값을 사용해서 위 속도-펄스를 다시 계산해보면

오! 비슷하다.
비례적이지 않고 오차가 있는 것은, 속도계의 바늘을 읽을 때 정확하게 읽기가 힘들어서 오차가 있을 수 있기때문이다.
따라서 그것을 고려하여 펄스의 갯수를 이용한 속도 계산 함수는 다음과 같다.

speed = pulse / 12.35

디지털 계기판을 만들 때, 속도센서에서 올라오는 펄스 신호 갯수를 위 식에 집어 넣어서 속도를 계산해서 표시하면 된다.

계기판의 속도는 실제 속도보다 일반적으로는 빠르게 표시되므로, 새 계기판을 만들 때 이 값을 바꿔서 실제 속도에 비해 계기판에 표시된 속도의 오차 비율을 조절할 수 있다.

그 다음,
스피드 리밋.
계기판 상의 최고속인 190km/h를 넘어가면 점화가 차단되므로 최고속을 넘어가면 접점 신호가 나오는 줄 알았다.
우선 아래 동영상을 보자.


반대다.
항상 접점이 붙어 있고 최고속이 넘어가면 떨어진다.
접점이 붙어 있을 때 접점 저항은 67옴 정도이다.

이것을 이용하면 스피드 리밋을 해제할 수 있다.

우선 계기판 커넥터의 14번 전선(속도 제한 용)을 자른다.
그리고 3번 전선(계기판 시그널 접지)을 살짝 깐다.
잘라낸 14번 전선의 계기판 쪽은 잘 테이핑하고, 커넥터 쪽 전선과 3번 전선을 60옴 정도의 저항으로 연결하여 잘 테이핑한다.

이렇게 되면 계기판에서 CDI 쪽으로 들어가는 속도 제한 신호는 늘 붙어 있는 상태이기때문에 CDI 입장에서는 제한 속도를 감지할 수 없다.

그리고 RPM 미터.
같은 방법으로 RPM 신호 선 1번 핀에 펄스 신호를 넣었다.
그러나 바늘이 꼼짝을 안한다.
이 신호는 펄스 제너레이터에서 계기판으로 직접 안 오고 CDI 쪽으로 우선 들어간 다음, CDI에서 계기판으로 보낸다.
펄스는 점화에 관계된 중요한 값이므로 CDI로 먼저 가는 것이 맞다.
그러면, CDI에서 계기판으로 뭔 값을 보내는 것일텐데, 펄스가 아니면 무엇이란 말인가?

보통 펄스 카운트, 펄스 듀티비, 전압, 저항, 전류, 통신의 방법이 있으나, digital potentiometer 가 출현한 지는 그렇게 오래되지 않았으므로 1999년에 출시된 이 CB400에서는 저항 방식은 아닐 것이고, 가변 전류 방식은 가변 전압 전송보다는 비용이 더 들어가므로 아마 안 썼을 것이고, 통신은 더더군다나 아닐 것이다.

그러면 전압일 가능성이 크다.
가변 전원 장치를 가져와서 0~12V 사이의 전원을 가변해서 넣어 줘 봤지만 바늘이 끄덕도 안한다.

뭐지???

그런 실험을 하던 중, 1번 핀에 전원을 툭 툭 건드리는 순간 바늘이 움찔 움직였다.
아~
펄스가 맞구나~
보통 5V 펄스인데, 12볼트 펄스를 사용하나 보다고 생각했다.
사진의 펄스 제너레이터는 5V 펄스가 나오는 제품이었다.

어떻게 할까? 생각하다가 MOSFET을 이용해서 펄스 제너레이터를 만들기로 했다.
5V 디지털 신호를 이용해서 12V 전압 펄스를 만들어 줄 수 있다.
집에 있던 P MOSFET 하나 가져다가 회로를 구성했다.
요즘에 잘 안 써서 AVR도 많이 버렸는데, 간신히 하나 찾았다.

회로 구성해서 LED 점멸 기본 예제 하나 실행했다.
다행히 잘 작동되었다.

2초 ON, 2초 OFF 프로그램을 만들어 업로드한 다음 지정된 디지털 핀의 전압을 측정했다.
2초 간격으로 0V, 5V를 잘 출력해주었다.

1 msec 간격으로 On, Off를 반복했다.
테스터의 주파수 기능을 이용해서 측정을 했는데, 프로그램에서 지정된 대로 하면 500Hz가 나와야 하고, 부정확했지만 비슷하게 출력한다.

프로그램을 바꿔서 주파수를 변경하고 RPM에 따른 주파수를 찾으면 된다.

이제 MOSFET과 저항을 결선하여 12V가 제대로 단속되는 지 확인해본다.

OK. 동작 잘 한다.

자, 이것을 위 회로도대로 연결하여 RPM 미터가 동작하는 지 확인한다.
그런데... 안된다...

왜지? 왜지???

회로도를 자세히 들여다보았더니...
오류가 발견되었다.
MOSFET 회로를 하이 사이드로 구현했어야 했는데, 로우 사이드로 구현해버렸다... ㅋ

이러면 RPM 핀 1번에 늘 12V가 공급되므로 단속을 할 수 없다.
아, 젠장 바보. ㅋ

회로는 아래처럼 구현해야 한다.(하이 사이드)

보다시피 복잡하다.
이게 싫으면 하이 사이드 게이트 드라이버 칩을 사용해야 한다.

이 회로를 오늘 만들려니 급 귀찮아진다.

내가 사용했던 펄스 제너레이터의 펄스에 RPM 게이지가 동작하지 않았던 원인도, 펄스 전원이 5V 이었던 것이 문제가 아니고, 하이 사이드로 구성된 펄스 제너레이터가 필요했던 것이다. ㅋ

위에 로우 사이드로 구성된 회로도 간단한 것 같지만, 부품 찾아서 땜하고 전선 끊고 다듬고 배선하느라 2시간은 족히 걸린 것 같은데 이 하이 사이드 회로를 지금 이 시점에 해야하나?

그냥 포기했다.
RPM 게이지는 하이사이드 MOSFET으로 구성된 펄스로 동작하는 것은 알았으니, 나중에 디지털 계기판 만들 때 다시 테스트를 해야겠다.

오늘은 일단 여기까지.


Leonard.

No comments:

Post a Comment

CBR650F 스티어링 댐퍼 장착 시 주의할 점, 장착 후 시험 주행 200km. 여주, 괴산

 CBR650F에 장착할 스티어링 댐퍼를 구매해 놨고, 드디어 장착이다. 공교롭게도 최근에 주변 지인이 핸들 털림으로 사고를 당한 터라, 이게 없이 운행하기가 부담스러웠다. 드디어 주말이 되어서 스티어링 댐퍼를 설치했다. 기본 설치는 유튜브 이곳에 잘...