Arduino, DC motor

이도현·2023년 8월 10일
0
  • 전원공급기에서 브러쉬를 통해 전류가 N극과 S극이 있는 로터 코일로 흐르게 되면, 플레밍의 왼손법칙에 의한 방향으로 로터코일이 힘을 받아 회전
  • 로터코일: 로터 축 위에 원통형으로 감겨져 있고 양쪽 끝은 축 위에 절연되어 설치된 2개의 슬립 링에 각각 접속
  • 로터: 회전자
  • 슬립링: 회전하는 장비에 전원 또는 신호라인을 공금할 때 전선의 꼬임없이 전달 가능한 일종의 회전형 커넥터
  • 브러쉬: 돌아가는 발전기나 전동기의 정류자에 닿아서 밖으로 전류를 끌어내거나 밖으로부터 전류를 끌어 들이는 장치
  • 플레밍의 왼손법칙: 엄지 검지 중지를 서로 직각이 되도록 펼치고, 검지를 자계의 B방향으로 중지를 전류 i 방향으로 하면 엄지의 방향이 전자력 F의 방향을 표시하게 된다.


1. 실습

//포텐쇼미터 핀 설정
int potentioMeterPin = 0;

int ENAPin = 9; // enable 핀 설정
int in1Pin = 8; // in1 핀 설정
int in2pin = 7; // in2 핀 설정

int motorPWM; //Enable pin 으로 출력할 PWM 신호 변수
int motorVelocity; // 속도 표시를 위한 변수

void setup(){
	//시리얼 통신 설정
	Serial.begin(9600);

	//핀 입출력 설정
	pinMode(ENAPin, OUTPUT);
	pinMode(in1Pin, OUTPUT);
	pinMode(in2pin, OUTPUT);
}

int loop(){
	//포텐쇼미터 값을 읽어옴
	int potentioMeter = analogRead(potetionMeterPin);
	
	//포텐쇼미터 아날로그 입력값이 0~500일 때 CW로 동작
	if((potentioMeter >= 0) && (potentionMeter <= 500)){
		motorPWM = map(potentionMeter, 500, 0, 0, 255);
		analogWrite(ENAPin, motorPWM)
		digitalWrite(in1Pin, HIGH);
		digitalWrite(in2Pin, LOW);

		// 모터의 회전 방향을 출력하고 백분율로 속도를 표시한다.
		motorVelocity = map(potentioMeter,500,0,0,100);
		Serial.print("CW ");
		Serial.print(motorVelocity);
		Serial.println(" %");
	} else if((potentioMeter >= 524) && (potentioMeter <=1023)){ // 포텐쇼미터 아날로그 입력값이 524~1023 일 때 CCW로 동작
      // 포텐쇼미터 값에따라 motorPWM값을 변경한다
      motorPWM = map(potentioMeter,254,1023,0,255);
      // enable 핀에 PWM 펄스를 출력하여 속도를 조절한다.
      analogWrite(ENAPin,motorPWM);
      // 모터를 CCW로 회전
      digitalWrite(in1Pin, LOW);
      digitalWrite(in2Pin, HIGH);
      // 모터의 회전 방향을 출력하고 백분율로 속도를 표시한다
      motorVelocity = map(potentioMeter,254,1023,0,100);
      Serial.print("CCW ");
      Serial.print(motorVelocity);
      Serial.println(" %"); 
	} else{
      // 모터를 정지시킨다
      analogWrite(ENAPin,0);
      digitalWrite(in1Pin, LOW);
      digitalWrite(in2Pin, LOW);
      // 모터 정지 메세지를 출력한다
      Serial.println("STOP"); 
	}
	delay(100);
}
profile
좋은 지식 나누어요

0개의 댓글

관련 채용 정보