아두이노UNO를 사용하여 새로운 타입의 아두이노 SoftPot(위치감지)센서와 서보모터 연동 사용예입니다.
아트로봇(
artrobot.co.kr)에서 취급중인 아두이노 스타터킷 및 아두이노 인벤터킷에 포함된 새로운타입의 센서입니다.
SoftPot센서는 세개의 단자가 있으며 기본 작동법은 가변저항과 같습니다. 전압핀과 GND을 연결하면 나머지 단자를 통해 접촉위치에 해당되는 전압을 측정할 수 있습니다. 아래의 회로도 참조
[그림1. SoftPot센서 단자안내 - 대응 회로도(사용법은 가변저항과 같습니다.)
아두이노 스케치 소스는 아래와 같습니다.
스케치에서 기본제공하는 서보제어 예제코드를 거의 그대로 사용했습니다. 참 쉽죠잉~!
알림:
스케치제공 서보모터 작동 기본예제 코드는 작동범위를 0~180으로 설정했지만, 실제로 서보모터의 종류에따라 이값의 범위를 지원하지 못하는경우가 있습니다. 이경우 서보모터에 무리가 가게 되므로 제경우 10~170으로 값의 범위를 줄여줬습니다. 항상 사용하려는 기기의 한계범위를 고려해서 프로그래밍을 해줘야 기기를 오래오래 고장없이 사용할 수 있습니다.
#include
Servo myservo; // 서보모터제어를 위한 객체를 생성합니다
int potpin = 0; // 센서입력을 받은 아날로그핀을 A0로 설정합니다.
int val; // 센서입력(아날로그)값을 임시저장할 변수입니다
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
val = analogRead(potpin); // A0에 연결된 SoftPot센서의 값을 읽어옵니다.
val = map(val, 0, 1023, 10, 170); // 아날로그입력값 0~1023을 서보모터에 맞게 10~170으로 변환합니다.
myservo.write(val); // 서보모터신호를 센서 입력값에 따라 변경합니다
delay(15); // 약간의 지연시간을 줍니다.
}
2012.2.9 알림
SoftPot센서는 일반 가변저항과 그 사용법이 유사하지만, 주의할 점이 있습니다.
접촉지점의 끝지점에서 내부저항없이 접촉이 이뤄지는 경우가 있으니 끝 부분은 누르지 마시기 바랍니다.
또한 센서와 연결부는 플라스틱 소재로 되어있어 납땜시 변형될 수 있으므로 랩핑와이어(가는선을 여러번 감아서 결합하는법)나 소켓등을 이용한 결합을 권장드립니다.
회원에게만 댓글 작성 권한이 있습니다.