나사산
의 크기는 직경의 크기와 비례된다. 나사산은 범용적으로 쓰이기 의해 직경의 크기에 비례하여 고정되었다. 같은 직경의 크기의 나사의 모든 나사산은 동일하다.
체결하려는 장소
에 따라 사용하는 머리 모양이 달라집니다.
접시머리 나사
는 홈이 나있는 곳에 써서 체결 시 튀어나오지 않아 평평하게 체결하기 위해 쓴다.
큰기어 -> 작은기어 : 속도를 높인다.
1바퀴 -> 3바퀴 : 힘이 1/3로 줄어들지만, 3배 만큼 속도가 높아진다.
키 : 축과 기어가 같이 돌어가게 고정시키는 나사 구멍
베어링 : 안쪽 원과 바깥 쪽 원 사이에 구슬같은 회전에 용이하게 하는 것이 포함되어 있다.
서보모터
를 통해 조향장치를 구현할 것입니다. 포텐셜모터가 엔코더 역할을 한다. 180도
범위를 갖는다.
바퀴의 방향을 바꾸는 역할
18650 : 직경 18mm 길이 650mm 3.6V 2600mAh 리튬 이온 배터리
3개를 연결해서 11.8v로 약 12v를 전원어탭터에 전원을 인가합니다.
전원 어댑터에 인가된 전압은 라즈베리파이와 모터 드라이버에 각각 5V
씩 인가된다.
라즈베리파이에서 공급할 수 있는 전류
는 너무 한정되어있다. 하지만, 차량용 모터를 동작시키기 위해서는 전류가 턱없이 부족합니다. 또한, DC모터를 역으로 회전
시키기위해서 배선을 일일히 바꿔줘야하는 번거롭습니다.
모터 드라이버와 라즈베리파이를 I2C을 통해 연결합니다.
I2C는 여러 장치를 동시에 연결하여 제어할 수 있지만, 장치 구분 및 송수신 판별로 인해 속도 및 효율이 떨어진다
.
클럭과 데이터 전송 선만으로 연결이 가능할만큼 단순
하다.
장치 구분을 위해 각 Slave마다 주소
를 갖는다. 데이터에 주소가 실린다.
sudo i2cdetect -y 1
명령어를 통해 사용할 모터드라이버의 주소는0x6f
임을 확인할 수 있다.
sudo raspi-config
명령어를 통해 설정창을 열고, interface options > i2c >켜기
로 I2C를 가능토록 설정합니다.
모터드라이버 라이브러리 설치 :
wget http://wiki.geekworm.com/images/a/ac/Raspi-MotorHAT-python3.zip
압축해제 : unzip Raspi-MotorHAT-python3.zip
cd Raspi-MotorHAT-python3
를 통해 확인해보자!
test 예제를 제외한 필수적인 라이브러리를 홈 디렉토리로 옮겨준다. => cp Raspi_* ~/
파이썬에서 I2C를 사용하기 위한 툴 설치 : sudo apt-get install python-smbus i2c-tools
DC 모터 제어
: 이동 제어
# motor move
from Raspi_MotorHAT import Raspi_MotorHAT, Raspi_DCMotor
mh = Raspi_MotorHAT(addr = 0x6f)
motor = mh.getMotor(2) # because of dc motor connected with M2
try:
while True:
motor.setSpeed(125) # speed limit : 0~255
motor.run(Raspi_MotorHAT.FORWARD) # FORWARD
# motor.run(Raspi_MotorHAT.BACKWARD) # BACKWARD
finally:
motor.run(Raspi_MotorHAT.RELEASE) # STOP
디지털 신호를 강약으로 나타내는 방법
Pulse의 폭에 따라 특정 각도로 움직인다.
Servo 모터 제어
: 방향 제어
# servo motor control
from Raspi_MotorHAT import Raspi_MotorHAT
mh = Raspi_MotorHAT(0x6F) # motor-HAT i2c address
servo = mh._pwm
servo.setPWMFreq(60) # 사용할 서보모터의 주파수
# because of sevro motor is connected with #1
# 1주기 2^12 = 4096
# 0degree = 200, 90degree = 400, 180degree = 600
servo.setPWM(1, 0, 400) # 3개의 파라미터 : 장치번호, 시작, 끝