banner
뉴스 센터
뛰어난 서비스

내가 놓친 것: 16개의 서보용으로 용도가 변경된 LED 드라이버

Dec 04, 2023

나는 작은 Petoi 개 로봇 뒤에 있는 전자 장치를 보고 있었습니다(오른쪽), 이전에 알지 못했던 칩인 NXP의 PCA9685를 발견했습니다.

더 자세히 살펴보면 Adafruit가 취미용 서보의 위치를 ​​알려주는 고전적인 1.0~2.0ms 펄스를 생성하는 데에도 이를 사용한다는 사실을 발견했습니다.

I2C 입력이 있고 최대 16개의 PWM 채널을 생성할 수 있어 매우 편리한 장치입니다.

NXP는 디스플레이용 4색 백라이트의 빨간색, 녹색, 파란색 및 황색 LED를 제어하기 위해 이를 개발했습니다.

16개의 PWM 입력 채널 중 하나를 보여주는 NXP의 PCA9685

각 PWM은 12비트이므로 4,096단계(0% 및 100%도 가능)이며 모든 채널은 24Hz~1.5kHz 사이에서 프로그래밍 가능한 기본 주파수를 공유합니다(내부 발진기는 ~25MHz이고 외부에서는 최대 50MHz까지 적용 가능).

여담으로, 출력은 오픈 드레인(5.5Vmax) 또는 토템폴로 설정할 수 있습니다. 기능은 10mA 소스 및 25mA 싱크입니다.

2.3~5.5V 사이의 전원이 필요하며 입력은 5.5V를 허용합니다.

어느 영리한 사람이 이것이 서보(어쩌면 Adafruit?)용 신호 소스를 만들기로 결정했는지는 모르겠습니다. 하지만 1MHz에서 작동할 수 있는 단일 I2C 버스를 통해 제어되는 16개의 서보라는 정말 좋은 아이디어입니다.

각 출력에는 명목상 온타임 및 오프타임이라는 두 개의 12비트 레지스터가 있지만 실제로는 이름에서 알 수 있는 것보다 더 복잡한 방식으로 고정된 4,096개의 계산된 시간 프레임과 상호 작용하여 모든 채널 간의 상대 위상을 제어할 수도 있습니다. 켜짐 및 꺼짐 시간 - PCA9685 데이터 시트의 7.3.3장부터 시작하면 잠시 동안 당황하게 됩니다.

개별 비트는 각 채널을 완전히 끄거나 완전히 켜도록 설정하며 전역 명령을 사용하여 모든 채널을 켜거나 끄는 방법이 있습니다. 각 출력에는 자체 출력 반전 비트도 있습니다.

출력 주파수는 8비트 프리스케일러에 의해 설정되고 25MHz/4096/프리스케일러의 주파수를 생성합니다. 하지만 제가 알고 싶은 이유로 4로 나누기 아래로 설정할 수 없으므로 ¼1, ¼2로 설정합니다. 또는 ¼3은 자동으로 ¼4로 대체됩니다. ¶5 이상은 모두 가능합니다. 기본적으로 ~200Hz를 생성합니다.

다행스럽게도 AdaFruit은 칩을 다중 채널 서보 드라이버로 제어하기 위한 Arduino 라이브러리를 만들었습니다. Limor Fried는 수많은 훌륭한 Arduino 라이브러리에 대해 감사를 표하며 CircuitPython 및 Python에도 비슷한 기능을 제공합니다.

그런데 Peroi Bittle 로봇 개에 관심이 있다면 여기에서 찾아보세요. 기본적으로 Arduino 전자 장치(적절한 주변 장치를 갖춘 맞춤형 Arduino-esk 보드)가 있습니다.

오른쪽16개의 PWM 입력 채널 중 하나를 보여주는 NXP의 PCA9685스티브 부시