아두이노 모터 회전수 제어 - adu-ino moteo hoejeonsu jeeo

[복사하고 따라하는 아두이노] DC모터 속도 제어(feat. PWM )

안녕하세요 공대 박형입니다.

오늘은 아두이노 DC모터를 구동시키고 PWM제어를통해 속도조절을 해보겠습니다.

코드부터 보시죠

const int dc=11; int speed = 0; void setup() { Serial.begin(9600); pinMode(dc,OUTPUT); } void loop() { analogWrite(dc,speed); Serial.print("speed = "); Serial.println(speed); speed = speed +85; // 속도를 0, 85, 170, 255, 0...순으로 if ( speed > 255 ) speed=0; // 속도가 255초과되면 0으로 변환 delay(1000); }

회로도 및 동작영상입니다.

PWM제어가 가능한 디지털 11번핀을 이용해 아날로그 값을 입력해 DC모터를 구동시켰습니다. pwm은 0~255값을 가질 수 있고 0에 가까울수록 속도가 낮아지고 255에 가까울수록 속도가 빨라집니다.

초기 speed 변수를 0으로 지정하고 1초마다 speed값이 85씩 증가됩니다. speed변수 값이 255를 초과하는 경우에는 speed값을 0으로 만들어 모터를 정지하도록 코드를 작성했습니다. 영상의 모터 그림 밑에 rpm이 변화하는것을 확인할 수 있습니다.

만약 속도 조절이 필요하지 않다면 digitalWrite(dc, HIGH)를 사용하여 디지털 신호로 모터를 제어할 수 있습니다.

다음 시간에는 L293D IC를 사용하여 DC모터를 속도, 방향 제어하는법을 배우도록 하겠습니다.

궁금한 부분은 문의주시면 답해드리겠습니다.

읽어주셔서 감사합니다.

목차
1) DC 모터란?
2) 가변저항을 이용한 모터 속도 제어하기
3) 스위치를 이용하여 모터 방향 바꾸기
4) 스위치를 이용하여 기어드모터 방향 바꾸기
5) 버튼 두개를 연결하여 기어드모터 방향 바꾸기

1. DC 모터란?

DC(Direct Current) 직류 모터이다. (교류 Alternative Current = AC모터)

직류전원으로 동작하며, 다른 고정장치에 비해 가볍고 간단하다.

DC 모터는 속도 및 방향 제어 등이 쉽다.

미니카 같은 장난감 모터로도 사용하는 DC 모터,

DC 모터 선택 기준은,

RPM(Revolutions Per Minute) : 분당 회전수, 예를 들어 500 rpm은 분당 500회전을 뜻함.

이번 수업에서는 RPM을 조절하기 위해서 PWM 포트에 연결하여 속도를 조절해 보겠습니다!

2. 가변저항을

이용한 모터 속도 제어하기

int mpin = 9; void setup() { pinMode(mpin , OUTPUT); Serial.begin(9600); } void loop() { int val = analogRead(A5); //아날로그 입력을 val에 입력받는다. int convertval = map(val,0,1023,0,255); //val변수가 가지고 있는 0~1024 센서 값을 0~255로 연산하여 convertval변수값에 넣어준다. Serial.println(convertval); //가변저항 값을 출력한다. analogWrite(mpin,conval); //가변저항 값에 따라 모터의 속도를 조절한다. delay(100); }

3. 스위치를 이용하여 모터 방향 바꾸기

void setup() { pinMode(9 , OUTPUT); //pwm 지원 pinMode(10, OUTPUT); //pwm 지원 pinMode(8, INPUT); //스위치 입력 받기위한 핀 Serial.begin(9600); } void loop() { int val = analogRead(A5); int convertval = map(val,0,1023,0,255); int inputSwitch = digitalRead(8); //스위치값을 inputSwitch 변수에 넣는다 int OnOff = inputSwitch; //입력받은 스위치값이 On 인지 Off 인지 확인하기위한 변수 if(inputSwitch == LOW){ //스위치의 값이 LOW이면 9번 핀에 전원을 넣고 analogWrite(9,convertval); analogWrite(10,0); } else{ //스위치의 값이 HIGH이면 10번 핀에 전원을 넣는다 analogWrite(9,0); analogWrite(10,convertval); } Serial.print(OnOff); //스위치가 On인지 Off인지 출력한다 Serial.print(" "); Serial.println(convertval); //가변저항으로 받는 전압의 값을 출력한다 delay(100); }

4. 스위치를 이용하여 기어드모터 방향 바꾸기

5. 버튼 두개를 연결하여 기어드모터 방향 바꾸기

참조: //m.blog.naver.com/icbanq/2215999245

Toplist

최신 우편물

태그