Post

Robot / AI Robot Hand with Raspberry Pi - 3. 하드웨어 연구

회로설계

회로도

전체적인 하드웨어 및 회로의 구상은 다음과 같다.

Fig. 1

$[Fig.\,1]$ 구상 회로도

관절 기능을 하는 서보모터 14개와 이 모터들을 한번에 제어할 수 있는 PWM/Servo I2C Interface, 중추 역할을 하는 Raspberry Pi로 구성된다. 브레드보드는 나중에 확장성을 늘리기 위해 같이 구성하였다.

회로 개요

Fig. 2

$[Fig.\,2]$ 서보모터 연결을 위한 인터페이스 구축

PWM/Servo I2C Interface 구성

먼저, PWM/Servo I2C Interface부에 대해서 살펴보자. 짧게 PWM/서보 모듈이라고 부르겠다.

fig_3

$[Fig.\,3]$ PWM/Servo I2C Interface부

사용할 PWM/서보 모듈은 Adafruit의 PCA8685 모델이다. 16채널의 프리런 PWM 출력을 제어할 수 있다. Pinouts을 보면, Power Pins으로는 GND, VCC, V+를 가지고 있으며, Control Pins으로는 SCL, SDA, OE를 가지고 있다. Output Ports로는 16개의 포트를 가지고 있으며, 각 포트는 V+, GND, PWM으로 구성된다.

fig_4

$[Fig.\,4]$ Adafruit PCA8685 회로도

여기서 가장 먼저 주목해야 할 부분은 옆쪽 단자 및 파워이다.

fig_5

$[Fig.\,5]$ Adafruit PCA8685 단자부

빨간색 점선 부분이 Raspberry Pi와 직접적으로 연결되는 단자 부분인데, 1번부터 5번까지 각각 5.0V(V+), VCC, SDA, SCL, OE, GND로 구성되어있다. 5.0V(V+)는 모터를 돌리기 위한 전압을 공급하며, 파란색 점선의 5-6VDC 파워를 통해 5.0V(V+) 대신 전압을 공급할 수 있다. VCC2.3 - 5.5V의 전압을 통해 기판에 PWM을 위한 전원을 공급한다. SDASCL은 I2C 통신을 위해 쓰이고, OE는 출력을 가능케하며, GND는 접지를 뜻한다.

fig_6

$[Fig.\,6]$ Adafruit PCA8685 Overview

여기서 우리가 사용할 부분은 VCC, SCL, SDA, GND이다. 이 네 단자를 통해 Raspberry Pi로부터 PWM/서보 모듈로 데이터를 전송할 수 있게 한다.

Raspberry Pi 구성

Raspberry Pi 4B의 GPIO는 40핀의 헤더를 공유한다.

fig_7

$[Fig.\,7]$ Raspberry Pi 4B GPIO 40-pin Header

이 GPIO와 PWM/서보 모듈을 연결하여 제어가 가능하다.

fig_8

$[Fig.\,8]$ Raspberry Pi 4B GPIO 결선

검은색 와이어는 핀 #9Ground, 노란색 와이어는 핀 #5GPIO 3 (SCL), 초록색 와이어는 핀 #3GPIO 2 (SDA), 빨간색 와이어는 핀 #13V3 power이다. 각 단자를 PWM/서보 모듈의 GND, SCL, SDA, GND에 연결해 준다.

여기서 한가지 들 수 있는 의문점은, 5V power가 아닌 3V3 power에 연결하였냐는 것이다. 실은, 5V에 연결해도 상관은 없다. 그 이유는 보통 GPIO에 5V의 전압이 지속적으로 가해지면 회로가 탈 우려가 있기 때문이라고 설명한다. Raspberry Pi로 들어오는 5V의 전압을 3.3V로 강압하여 내보내준다.

PWM/Servo I2C Interface 신호 데이터 제어

지금까지의 내용을 정리해보면, PWM/서보 모듈의 모터 파워는 외부 5V를 통해 공급되고, Raspberry Pi로의 5V 입력이 3.3V로 조정되어 PWM/서보 모듈의 신호 데이터 입력 및 전송에 사용되며, SCLSDA 라인을 이용해 Raspberry Pi ー PWM/서보 모듈 ー 서보모터 간의 I2C 통신을 하게 된다.

PWM/서보 모듈의 PWM 출력 포트에 서보모터를 연결하여 서보모터를 제어할 수 있다.

fig_9

$[Fig.\,9]$ PWM 출력 포트 회로

PWM 출력 포트는 PWM, V+, GND로 구성되어 있다. V+는 위에서 언급한 PWM/서보 모듈의 외부 5V 입력과 공유하고, PWM의 신호는 Raspberry Pi 및 PWM/서보 모듈의 SCL, SDA 라인을 통해 전송된다.

여기서 한가지 중요한 점이 PWM 출력 포트에 연결되는 서보모터의 Datasheet 정보이다. PWM/서보 모듈 PCA8685는 공식 문서를 보면The PCA9685 operates with a supply voltage range of 2.3 V to 5.5 V and the inputs and outputs are 5.5 V tolerant.로, 2.3 - 5.5V의 공급을 통해 동작하는데 VCC의 입력이 3.3V이므로 이를 만족한다. 여기에 연결하는 서보모터도 이와 같이 입력 조건이 존재하는데 범용 서보모터의 Datasheet를 보면 다음과 같다.

fig_10

$[Fig.\,10]$ 범용 서보모터 Datasheet

#1 Signal은 PWM 역할을 하는 부분인데 최소 입력이 3.3V, 최대 입력이 Vservo + 0.2V로 되어있다. 이 입력은 서보모터를 돌리기 위한 전압이 아니라 서보모터에 데이터를 전송하기 한 전압(=PWM/서보 모듈을 동작시키기 위한 전압)이며, Raspberry Pi의 3V3을 통해 3.3V의 전압이 공급되므로 최소 입력 조건을 만족한다. 서보모터를 동작시키기 위한 전압인 핀 #2 Vservo 또한 외부 입력을 통해 Typical 5.0V를 만족시키며 모든 회로가 정상 동작한다.

This post is licensed under CC BY-NC-ND 4.0 by the author.

© KIM DONGHEE. ALL RIGHTS RESERVED.

We’ll find a way. We always have. -Cooper