Programming/Arduino
아두이노 보드를 이용한 DC모터 제어
김구조
2013. 1. 23. 21:40
1. DC모터 제어하기.
DC모터를 제어하기 위해서는 DC모터 , DC모터 모듈 , 9V전지가 필요합니다.
제어 부분에 대해서는 아래그림을 참고해 주시면 됩니다.
in 핀의 HIGH(또는 아날로그값 ( 0 - 250 ) , LOW 를 조절하여 방향을 원하는대로 조절하는 기능을 가졌습니다.
또한 ENA핀을 HIGH , LOW 로 조절하여 ON/OFF 관리를 할 수 있습니다.
그럼 가변저항을 이용하여 속도를 조절하며 , 버튼을 이용하여 왼쪽 오른쪽 제어하는 소스를 구현해보겠습니다.
// 소스코드 1 // 버튼하나를 이용한 DC모터제어 int P1 = 10; // IN1 Pin int P2 = 11; // IN2 Pin int onOff = 9; // on/off (ENA Pin) int btn = 2; // Left & Right Select Button Pin int sensorPin = A0; // SensorPin int sensorValue = 0; // Input Sensor Value int val=0; // Sensor Value Mapping int btn_state = 0; void setup(){ pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(onOff,OUTPUT); pinMode(btn , INPUT); } void loop(){ btn_state = digitalRead(btn); digitalWrite(onOff , HIGH); //onoff sensorValue = analogRead(sensorPin); val = map(sensorValue , 0, 1023, 0, 250); if(btn_state == HIGH){ analogWrite(P1 , val); digitalWrite(P2 , LOW); }else{ analogWrite(P2 , val); digitalWrite(P1 , LOW); } }
소스만 올리고 회로도가없어서 주석을 추가적으로 달았습니다.
아두이노는 한글에 너무 약해서 한글주석도 달기 힘드내요.
위와같이 소스를 구현하시면 아래처럼 작동합니다.
조금 더 응용을 해보아서 버튼 2개를 두어 오른쪽 왼쪽 방향키처럼 제어해보겠습니다.
버튼하나만 더 추가해주시면 됩니다.
// 소스코드 2 // 버튼두개를 이용한 DC모터제어 int P1 = 10; int P2 = 11; int onOff = 9; int btn1 = 2; int btn2 = 3; int btn_state1 = 0; int btn_state2 = 0; void setup(){ pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(onOff,OUTPUT); pinMode(btn1 , INPUT); pinMode(btn2 , INPUT); } void loop(){ btn_state1 = digitalRead(btn1); btn_state2 = digitalRead(btn2); digitalWrite(onOff , HIGH); //onoff if(btn_state1 == HIGH && btn_state2 == LOW ){ digitalWrite(P1 , HIGH); digitalWrite(P2 , LOW); }else if(btn_state1 == LOW && btn_state2 == HIGH){ digitalWrite(P2 , HIGH); digitalWrite(P1 , LOW); }else{ digitalWrite(P2 , LOW); digitalWrite(P1 , LOW); } }
버튼 다시는 방법은 제글을 찾아보시면 됩니다.