본문 바로가기

카테고리 없음

알 수 없는 오작동의 원인: 아두이노 우노 CH340 호환 보드

아두이노 우노 호환보드에는 주로 2종류가 사용된다. CH340 칩을 사용하는 3천원대 보드와, ATmega16u2칩을 사용하는 6천원대 보드가 있다. 

 

필자는 아두이노 우노 키트(중국에서 1.5만원에 파는 키트를 국내에서 들여와서 몇 만원 붙여 파는 것)에 딸려온 ATmega16u2칩 호환보드를 통해 처음 아두이노를 접하게 되었는데 지금 생각해보면 다행이 아닐 수 없다. 아무런 문제없이 우노 호환보드를 사용할 수 있었기 때문이다.

 

ch340호환 보드. 3천원 정도에 팔림.
ATmega16u2 칩을 사용한 호환보드. 6천원대에 팔림.

 

처음 문제를 접한 것은, 알리에서 파는 아두이노 RC카 키트를 주문했는데 CH340 우노 호환보드가 딸려와서 그것을 사용하면서부터였다.

 

8x8 매트릭스를 네 개 연결한 MX7219를 사용해 붉은 불빛 글자를 출력해놓으면 5~10분쯤 뒤에 오작동하는 것이었다. 글자가 망가지며, 마치 회로에 이상이 생겼거나 전력이 부족하거나 했을 때 발생하는 현상이 일어나는 것이었다. 그래서 ATmega16u2칩 호환보드로 교체하여 작동시켜보니 장시간 사용시에도 이상이 없었다.

 

최근에는 6DOF 로봇암을 공부하느라 CH340 보드를 사용했었는데 몇 분 지나면 로봇암에 전력 공급이 중단되면서, 서보 모터가 힘없이 축 쳐지는 현상이 자주 있었다. 외부 전원 공급이 부족해서인가 싶어서 5V 5A 아답터를 꽂아줘도 마찬가지였고 25A 전원공급장치를 연결해도 마찬가지였다. ATmega16u2칩 보드로 확인해봐야 정확하겠지만 현재로선 CH340보드에 sensor shield v5.0을 붙여 사용하고 있는데 CH340 보드가 주범인 것 같다.

 

이렇게 추정하게 된 이유는, 최근, MPU6050칩을 탑재한 6축 자이로센서 GY-521을 테스트하면서 알게 되었는데, CH340 우노 보드에 꽂아 테스트를 했다. 몇 분을 버티지 못하고 freeze 현상('동작 정지'처럼 갑자기 시스템이 얼어붙으면서 아무런 움직임을 보이지 않는 것)이 일어났다. 시리얼 모니터 출력을 하지 않아도 마찬가지였고, 온갖 쇼를 해도 이 문제는 소프트웨어적으로 해결되지 않았다. 결국 싸구려 호환 보드의 하드웨어 문제라는 판단이다. CH340 보드의 3V 5V 전원 공급 능력이 정품이나 ATmega16u2칩 보드에 미치지 못하기 때문이라고 본다. 나노 호환보드(2천 몇 백원에 구입한 것)에 확장보드를 꽂아 다시 테스트를 했는데 3V 공급시에는 동일한 freeze 문제가 있었고 5V 공급시에는 freeze 현상이 일어나지 않았다. esp32로 넘어와서는 (확장보드를 꽂아 현재 작업중) freeze 현상이 전혀 일어나지 않았다. 

 

유튜브에서 봤는데, 어떤 분은 무선 nRF24L01 모듈을 아두이노 호환보드(아마도 ch340보드)에 꽂아 테스트를 했을 때는 3.3V 전원 공급 관련해서 이상 동작을 보였는데 정품으로 바꾸고 나서는 제대로 작동했다,고 했다. ch340보드에서 3.3V 전원 공급을 원활하게 해주지 못한다는 이야기는 해외 아두이노 사용자들 사이에 좀 퍼져 있는 이야기인 듯했다.

 

센서 하나를 간단히 테스트해보는 용도라면 모르지만, 자이로 센서, 서보 모터, DC 모터 제어 등에 사용하는 것은 가급적 피해야겠다. 예비로 하나 갖춰 놓는 것은 좋지만, 메인으로 사용하는 것은 이제부터 지양해야겠다. 정품이나 ATmega16u2 호환 보드를 당근 마켓이나 오픈마켓에서 2개 정도 사놓아야겠다.

 

현재 ch340 우노 호환보드는 3,090원, ATmega16u2 호환 보드는 6,390원에, 내가 자주 이용하는 가게에서 판매하고 있는데, ch340은 이제 그만 사고, 정 필요하다면 나노 보드(2,530원)를 하나 더 구입해야겠다. ch340을 어떻게 처분해야 할까. 놔두면 자꾸 사용할 테고, 그러면 이상한 현상을 일으킬 텐데 그때마다 ch340을 왜 구입했을까 하는 후회를 해야 할까...

 

아, 그리고 한 가지 첨언하자면, 서보모터를 여러개 붙여서 사용할 때 아두이노 우노에 sensor shield v5.0을 붙여서 사용하면 아주 편리한데, 이 쉴드에 점퍼 선을 복잡하게 연결한 상태에서 어떤 다른 테스트를 간단하게 하는데 오류가 발생했다. 꼭 센서 쉴드만의 문제는 아니겠지만 복잡한 설정의 부가 장치를 장착해서 문제가 생긴다면, 이를 제거하고 테스트를 해보면 잘 되는 경우가 있더라. 이제 sensor shield 보다는 서보 모터를 16개까지 사용할 수 있는 PCA9685를 주로 사용해야겠다. 둘 다 외부 전원을 사용하긴 하지만 콘트롤 칩을 별도로 장착하고 있는 PCA9685 쪽이 훨씬 안정감을 주는 것 같다. PCA9685 쪽은 라이브러리를 별도로 설치해야 하고, sensor shield v5.0 쪽은 라이브러리 설치가 필요없다. 라이브러리가 별도로 필요없다는 이야기는 회로가 1:1로 우노와 이어져서 작업이 이루어진다는 이야기인데, 우노 보드의 안정성에 크게 기댄다는 이야기기도 하다.