Arduino를 사용한 고전류 모터 제어 회로

문제를 제거하기 위해 도구를 사용해보십시오





이 프로젝트에서 우리는 모터 속도 제어 Arduino PWM 회로를 사용하고 두 개의 푸시 버튼 스위치를 통해 Arduino를 사용하는 DC 모터에서 역방향 순방향 또는 방향 제어를 구현하는 방법. 이 설정을 사용하여 최대 30A의 고전류 모터를 제어 할 수 있습니다.

으로안킷 네기



모터는 많은 분야에서 액추에이터로 사용되기 때문에 전기 및 전자 분야에서 매우 필수적인 구성 요소입니다.

로봇 공학과 같은 소규모 응용 분야와 무거운 모터가 사용되는 분야 (산업 등)에는 모터가 필요합니다.



이제 소형 어플리케이션에 사용되는 모터는 많은 전류 (2amp 미만)를 소비하지 않기 때문에 쉽게 제어 할 수 있습니다.

그리고 이러한 모터는 arduino와 같은 마이크로 컨트롤러를 사용하여 쉽게 제어 할 수 있습니다. L298 또는 L293D와 같은 모터 드라이버 IC .

그러나 무거운 목적 (10amp 이상)에 사용되는 모터는 제어 할 수 없습니다. 이 IC를 사용하여 제한된 전류 (최대 2amp)를 공급할 수 있기 때문입니다. 그렇다면 이러한 모터는 어떻게 제어됩니까?

대답은 간단합니다. 릴레이 사용 즉, 작은 전류를 사용하여 대전류를 전환합니다. 이러한 방식으로 두 가지를 달성 할 수 있습니다.

1. 고전류 모터 자체 구동.

2. 회로를 분리하여 충격을 방지합니다.

이제 모든 마이크로 컨트롤러를 사용하여 이러한 릴레이를 전환 할 수 있습니다. 여기서는 arduino UNO를 사용할 것입니다.

이 프로젝트에 필요한 구성 요소 :

1. ARDUINO UNO : 릴레이의 1 차 측에 입력 로직을 제공합니다.

2. SPDT RELAY -2 : 양방향 회전에는 두 개의 릴레이가 필요합니다. 접점은 고전류 모터 사양을 처리 할 수있는 정격이어야합니다.

릴레이 이미지 파란색 N / O N / C 및 극 정보를 보여주는 릴레이3.Power Mosfet : IRF1010 MOSFET을 사용할 수 있습니다. 푸시 버튼 마이크로 스위치

4. BATTERY (12v) : 모터에 전원을 공급합니다.

5. 두 개의 푸시 버튼 : arduino에 입력을 제공합니다 (즉, 눌렀을 때와 눌리지 않았을 때).

10k 1/4 와트 저항

6. 2 개의 10K 저항기 : 디 바운싱 용 (아래 설명)

Arduino를 사용한 고전류 모터 제어 회로

7. 연결 배선 : 연결을 위해.

개략도:

PWM Arduino 모터 제어 회로

그림과 같이 연결하십시오.

1. 양 릴레이의 상시 개방 단자를 배터리 양극 단자에 연결하고 상시 폐쇄 단자를 배터리 음극 단자에 연결합니다.

2. 각 릴레이의 나머지 단자 (3 개 중) 사이에 모터를 연결합니다.

3. 코드에 지정된대로 릴레이의 1 차측 단자 중 하나를 arduino의 출력 핀에 연결하고 다른 단자를 접지에 연결합니다.

4. 코드에 지정된대로 두 푸시 버튼의 한 터미널을 arduino의 5v 핀에 연결하고 다른 터미널을 입력 핀에 연결합니다.

4. ** 저항은 아래에 설명 된대로이 회로의 적절한 기능에 매우 중요하므로 연결하는 것을 잊지 마십시오.

저항기가 연결된 이유는 무엇입니까?

Arduino의 입력 핀에 연결된 것이 전혀 없다는 것을 알 수 있지만 표시된 스위치가 열려있을 때 이러한 핀 배치가 논리적 0이 될 수 있다는 의미는 아닙니다.

오히려 스위치가 열려있을 때 arduino가 로직 0과 로직 1 사이의 임의의 값을 취할 수 있다는 것을 의미합니다. 이는 전혀 좋지 않습니다 (바운싱이라고 함).

그래서 여기서 우리가 원하는 것은 입력 핀에 아무것도 연결되지 않은 경우 즉, 푸시 버튼이 열려있을 때 arduino가 핀에서 0 입력을 가져 오는 것입니다.

이를 달성하기 위해 핀은 저항을 통해 푸시 버튼 이전에 접지에 직접 연결됩니다. 저항없이 직접 그라운드에 연결하면 핀이 그라운드로 단락되고 많은 양의 전류가 흐르게되어 소손 될 가능성이 있습니다. 이를 방지하기 위해 저항이 그 사이에 연결됩니다.

이 저항은 핀의 로직을 0으로 당기기 때문에 풀다운 저항이라고합니다. 그리고이 과정을 디 바운싱이라고합니다.

암호:

이 코드를 arduino에 굽습니다.

int x// initialise variables
int y
int z
int w
void setup() {
pinMode(6,OUTPUT)//initialise pin 6 as output to RL1
pinMode(9,OUTPUT)//initialise pin 9 as output to RL2
pinMode(3,INPUT)//initialise pin 3 as input
pinMode(4,INPUT)//initialise pin 4 as input
pinMode(10,OUTPUT)//initialise PWM pin 8 as output to gate of mosfet
pinMode(A0,INPUT)//initialise pin A0 as input from pot.
Serial.begin(9600)
}
void loop() {
z=analogRead(A0)// read values from potentiometer in terms of voltage
w= map(z,0,1023,0,255)// map those values from 0 to 255
analogWrite(10,w)// write the mapped value to 10thpin as output
delay(1)//on time period of mosfet
analogWrite(10,w)
delay(1)//off time period of ,mosfet
Serial.println(z)//print value from pot to serial monitor
Serial.println(w)//print mapped value to serial monitor
x= digitalRead(3)
y= digitalRead(4)
if(x==0 && y==0){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)}
if(x==1 && y==0){digitalWrite(6,HIGH)// clockwise rotation of motor
digitalWrite(9,LOW)}
if(x==0 && y==1){digitalWrite(6,LOW)// anticlockwise rotation of motor
digitalWrite(9,HIGH)}
if(x==1 && y==1){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)
}
}

작동 중 (코드 이해) :

• 방향 제어 :

A. 두 푸시 버튼을 누르지 않은 경우 :

이 상태에서 arduino는 두 핀에서 0 입력을받습니다. 이 조건의 코드에 지정된대로 두 출력 핀 모두 0 논리 (LOW)를 제공합니다.

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

두 릴레이의 1 차측에 대한 입력 전압이 0이기 때문에 두 릴레이의 2 차 단자는 정상적으로 닫힌 위치에 유지됩니다. 따라서 모터의 양쪽 단자에 0 볼트가있어 회전하지 않습니다.

B. 푸시 버튼 X를 눌렀지만 Y를 누르지 않은 경우 :

이 조건에서 arduino는 핀 4에서 0 입력을 가져 오지만 핀 3에서 input1을 가져옵니다. 이 조건의 코드에 지정된대로 핀 6은 로직 1 (HIGH)에 있어야하지만 핀 9는 로직 0 (LOW)에 있어야합니다.

if (x == 1 && y == 0) {digitalWrite (6, HIGH)

digitalWrite (9, LOW)}

릴레이 # 1에 대한 입력 전압이 높기 때문에이 릴레이의 스위치는 일반적으로 열린 상태로 던져지고 릴레이 2에 대한 입력 전압은 낮습니다.이 릴레이의 스위치는 일반적으로 닫힌 상태로 유지되어 모터 단자에 각각 12v 및 0v가 발생합니다. 한 방향으로 모터의 회전.

C. 누름 버튼 Y를 눌렀지만 X를 누르지 않은 경우 :

이 조건에서 arduino는 핀 4에서 1 개의 입력을 가져 오지만 pin3에서 input0을 가져옵니다. 이 조건의 코드에 지정된대로 핀 6은 로직 0 (LOW)에 있어야하고 핀 9는 로직 1 (HIGH)에 있어야합니다.

if (x == 1 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, HIGH)}

이번에 릴레이 # 2에 대한 입력 전압이 높기 때문에이 릴레이의 스위치는 정상 개방 상태로 던져지고 릴레이 # 1에 대한 입력 전압은 낮으므로이 릴레이의 스위치는 정상 폐쇄 상태로 유지되어 모터에 각각 12v 및 0v가 발생합니다. 다른 방향으로 모터를 회전시킵니다.

D. 두 푸시 버튼을 모두 눌렀을 때 :

이 상태에서 arduino는 두 핀에서 1 개의 입력을받습니다. 이 조건의 코드에 지정된대로 두 출력 핀 모두 0 논리 (LOW)를 제공합니다.

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

두 릴레이의 1 차측에 대한 입력 전압이 0이기 때문에 두 릴레이의 2 차 단자는 정상적으로 닫힌 위치에 유지됩니다. 따라서 모터의 양쪽 단자에 0 볼트가있어 회전하지 않습니다.

• 속도 제어 :

전위차계가 arduino의 A0 핀에 입력으로 0V를 제공하는 위치에 있다고 가정 해 봅시다. 이로 인해 arduino는이 값을 0으로 매핑하므로 핀 # 10의 출력 PWM으로 0을 제공합니다.

analogWrite (10,0) // 매핑 된 값을 10 번째 핀에 출력으로 씁니다.

따라서 MOSFET의 게이트는 꺼진 상태로 유지되고 모터가 스위치 OFF 위치에 있기 때문에 0 전류를 얻습니다.

그러나 포트가 회전하고 포트의 값이 변함에 따라 핀 A0의 전압도 달라지며이 값은 비례 적으로 증가하는 PWM 폭으로 핀 # 10에 매핑되어 모터와 MOSFET을 통해 더 많은 전류가 흐르게합니다. 이는 차례로 모터가 비례 적으로 더 많은 속도를 얻을 수 있도록하며 그 반대의 경우도 마찬가지입니다.

따라서 위의 논의에서 Arduino를 사용하여 단순히 지정된 포트를 조정하고 몇 개의 푸시 버튼을 통해 고전류 DC 모터의 속도와 방향 (역 전진)을 제어하는 ​​방법을 알 수 있습니다.

최신 정보 : 고전류 모터의 경우 다음 수정 된 다이어그램에 표시된대로 이러한 고전력 릴레이를 작동하기 위해 12V / 30A 릴레이 및 BJT 드라이버 단계를 사용하십시오.




이전 : 알람이있는 자동차 역방향 주차 센서 회로 다음 : Arduino PWM 신호 발생기 회로