MPU의 키 입력 방법에는 여러가지가 있다. 개발자들 마다 저마다의 노하우와 설계 방법에 따라
많은 것들이 있다.
나는 시스템이라고 하기에는 좀 뭐...한 작은 제품들을 개발한다. 그래서 버튼이 크게 많이 필요한 것은 아니다.
보통 4개에서 16개 정도의 키를 사용한다.
수량이 적을때에는 포트에 직접 연결하고, 수량이 많을때에는 매트릭스 방법이나 ADC를 이용한다.
그럼 내가 알고 있는 내용을 한 번 적어볼까??
1. 포트에 직접 연결
포트 하나당 하나의 스위치를 연결한다. 당연히 풀업이나 풀다운이 필요하다. 그래야 노이즈에 좀 강해진다.
포트 스캔을 하거나 인터럽트를 이용한다. 소프트웨어로 노이즈를 처리한다.
2. 매트릭스 방법
포트 수에 비해 사용할 수 있는 키의 수가 많아진다. 회로를 쬐끔 복잡하게 하면 키가 하나만이라도 눌렸을때
키 스캔을 하도록 할 수 있으나 궂이 그리할 필요성을 못느껴 타이머를 이용하여 주기적으로 키스캔을 한다.
씨줄과 날줄의 원리로 만나는 곳의 스위치를 알아낼 수 있다.
3. FND 다이나믹 구동의 COM 단자 시그널 이용법
음..이 방법은 쬐끔 생소했었다. FND를 구동시키는 방법 중 다이나믹 구동에서 COM단자에 시그널을 주는 것을
TR의 베이스에 물려서 키가 눌리면 High, 아니면 Low로 만들어 해당 키를 구할 수 있도록 한다. 이 방법을 몇번
사용해 봤는데 FND의 구동에 약간의 영향을 준다. 가능하면 이 방법을 쓰지 않으려고 한다. 하지만 매트릭스
방법과 마찬가지로 많은 키를 사용할 수 있다. 74HC595를 이용하는 회로에서도 많이 사용된다. 595가 SPI통신을
이용해서 포트를 확장시켜 주는 칩이라 유용하다. 거의 몰랐었는데 의외로 여러곳에서 이 칩을 이용하고 있다.
동호회에서도 많은 분이 이 칩을 사용하신다고 한다.
4. ADC이용법
요즘 MPU에 ADC가 거의 4~8채널 이상씩 있다.
ADC 한 채널당 키를 몇개씩 연결한다. 그리고 각 키는 저항으로 분압된 전압을 ADC핀에 전달 하도록 해 둔다.
만약 0V~5V 사이에 1K 저항을 5개연결하면 각각의 전압이 1, 2, 3, 4, 5V가 된다. 8비트 AD를 하면 각각의 값이
약 50, 100, 150, 200, 250이 된다. 키가 눌리지 않으면 0V를 측정하고, ADC를 계속 체크하다가 해당 키가 눌리면
위의 값들의 결과치를 얻게 된다. ADC가 정밀하고 거의 흔들리지 않는 놈이라면 키를 여러개 달아도 될듯 싶다.
지금 테스트 하고 있는 보드에는 4개씩 4개 채널의 16개 키를 검색하는데 크게 무리가 없는듯 싶다. AD도 10비트라
테스트 후 하위 2비트를 버려주므로 약간의 측정값 재현성도 얻을 수 있다.
현재 내가 알고 있는, 사용하고 있는 키 스캔 방법들이다. 유용하게 사용하고 있으며, 아마도 이러한 것이
노하우가 아닐까 싶다. 많이 알고 있어야 제품에 맞게 가장 적합한 것을 고를 수 있으니.....
'임베디드' 카테고리의 다른 글
FreeRTOS - 2 (0) | 2023.01.02 |
---|---|
FreeRTOS - 1 (0) | 2022.12.30 |
마이크로프로세서 제대로 공부하기 (0) | 2022.11.05 |
[myMP3P uCOS-II]일주일간의 삽질 결과.... (0) | 2022.11.05 |
MPU6050 (0) | 2021.11.03 |