카테고리 없음

아두이노 가변저항으로 서보모터 제어하기

JaGG 2018. 6. 24. 21:34

안녕하세요. 오늘은 아두이노 sg-90 서보모터와 가변저항으로 간단하게 모터를 제어하는 방법에 대해서 살펴보겠습니다.


서보모터는 관절값을 가지는 모터로 로봇팔과 같은 관절로봇이나 각도값을 가지는 프로젝트용 모터로써 사용됩니다.


1. 서보모터(sg-90)


위의 사진에 있는 모터가 sg-90 서보모터 입니다.


가격이 2000원 정도로 저렴하고 사이즈가 매우 작기 때문에 아두이노 프로젝트를 할 때 가장 많이 쓰이는 모터입니다.


그리고 한가지 더 sg-90의 특징은 다른 모터들은 모터 드라이버를 사용해서 제어해야 하지만 sg-90은 드라이버없이 아두이노에서 라이브러리를 받아서 손쉽게 사용이 가능합니다.

아두이노 연결은 빨간색(+), 검정색(-), 주황색(data)로 아두이노에 연결하면 됩니다.



2. 가변저항



다음은 가변 저항입니다. 흔히 볼륨 이라고도 말하며 우리가 흔히 볼 수 있는 오디오같은 기기의 볼륨설정을 할 때 사용되는 부품입니다.


가변저항은 말 그대로 값이 변하는 저항입니다.


저항은 전기의 흐름을 방해하는 역할을 하는 부품으로 앞서 LED, 버튼 등에서 저항을 많이 사용해 왔습니다. 가변 저항은 이 저항들과 기능은 같지만 그 값을 변화시킬 수 있다는 특징을 가지고 있습니다.


볼륨을 돌려서 최대값 부터 최소값까지 저항을 조절할 수 있으며 이 때 가변저항에서 출력되는 전기의 세기에 따라서 아날로그 값으로 변환이 가능합니다.


그리고 앞서 배웠던 CDS센서 역시 가변 저항의 원리를 가지고 만들어진 부품입니다.


아두이노 연결은 중간에 data핀을 연결하고 양쪽에 각각 Vcc와 GND를 연결해주면 됩니다.



3. 회로연결




연결은 다음과 같습니다.


항상 우선적으로 해야할 일은 브래드보드에 아두이노 +, -선을 연결하는 것입니다.


아두이노 우노 보드에는 Vcc(5v)단자가 하나밖에 없기 때문에 두 개 이상의 부품을 연결하기 위해서는 브래드보드의 사용이 필수입니다.


그리고 각 부품의 연결은 위 부품설명에서 했던것과 같습니다.


가변 저항은 A1, 서보모터는 D13번에 연결했습니다.



4. 소스코드


비교적 간단한 소스코드로 제어가 가능합니다. 먼저 서보모터를 사용하기 위해서 Servo.h라이브러리를 정의합니다.


그리고 Servo 함수에 sv라고 이름을 재정의 하여 프로그램 상에서 코드를 간결하게 만들어줍니다.


오늘 배우는 프로그램에서 가장 중요한 포인트는 map()함수 입니다.


map함수는 기존의 목표값(0 ~ 1023)을 원하는 범위의 값으로 재정의 해주는 기능을 가지고 있습니다.


가변 저항의 값의 범위는 0 ~ 1023인 반면에 서보모터의 범위는 0~180이기 때문에 map함수가 필요한 것입니다.


map(val, 0, 1023, 0, 120);


이라는 코드를 사용함으로써 가변 저항에서 나오는 값을 0~ 120으로 만들어 서보모터의 각도값으로 사용할 수 있는 것입니다.