반응형

【 아두이노 기초 】 #30 서보(Servo) 모터 제어 하기 응용

 지난 시간(http://rasino.tistory.com/147)에는 서보 모터를 정방향과 역방향 180도 회전제어를 해보았다. 

  이번 시간에는 빛에 따라 저항값이 변하는 CDS(광도전셀)를 이용해서 빛에 따라 서보모터를 제어 해보도록 하자.  이를 이용하면 매우 간단하게 빛에 따라 도어를 개폐하는 등의 작업이 가능하다. 



▶ SG90 및 각종 서보 모터 


《 SG90 》

《 HS311FS5106R 》

《 FS5106R - 무한 회전 서보 모터 》






▶ 실습 목표 :  

 CDS를 이용하여 빛의 밝기에 따라 서보모터를 0˚ 에서 180˚ 회전 시켜 본다.


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)








▶ 부대품 목록 : 아두이노 보드, 브레드 보드 


▶ 부품 목록    : 서보모터(SG90), CDS, 저항(220Ω)


▶ 실습 절차  : 

 1. 회로도를 참고하여 모터 와 부품들을 연결한다.
 
 2. CDS는 실습 상황에서는 크기(용량)는 상관 없으니 구할 수 있는 것을 사용한다.

 3. 회로의 모든 GND(그라운드, - 단자)는 하나로 연결 한다. 

 4. 회로에 서보모터 두 개 이상을 연결할 때는 아두이노 전원 만으로는 충분치 않으므로 외부 전원을 모터 전원선(+적색선, -흑색선) 에 직접 인가해야 정상적으로 동작 될 것이다. 






▶ 프로그램 (코드& 설명) : 


#include <Servo.h>

#define  ServoPin 9                      //  서보모터 연결할 핀 설정

Servo myservo;

int Angle = 0;

void setup() {

  myservo.attach(ServoPin);      

  Serial.begin(9600); 

}

void loop() {

  val=analogRead(TEMP); 

  int Val_light = analogRead(A0); // CDS로부터  전압 값  받아서 저장

  Serial.println(Val_light);

   Angle = map(Val_light, 1,42, 0, 180);  // 실 측정값으로 맵핑

   myservo.write(Angle);

   delay(50);                              // 서보모터가 동작하는 시간을 기다려 줌

}   


※ 보충 설명

1. CDS는 빛이 최대로 들어 올 때 저항 값이 ‘0’에 가깝고, 가장 어두울 때 저항 값을 무한대로 

가지는 소자다.

2. CDS와 저항에 인가되는 5V 전압 값으로부터, 빛의 밝기에 따른 CDS
저항 값의 변화로 인해 ‘A0’포트로 입력되는 전압이 조절 된다.

 

▶ 실행 영상 : 





▶ 아두이노 소스 코드 다운로드 : 



반응형