Circuito de controle de motor de alta corrente usando Arduino

Experimente Nosso Instrumento Para Eliminar Problemas





Neste projeto, discutimos como controlar a velocidade do motor usando o circuito PWM do Arduino e como implementar o controle reverso para frente ou de direção em um motor DC usando o Arduino por meio de alguns botões. Qualquer motor de alta corrente de até 30 amp pode ser controlado usando esta configuração

DeAnkit Negi



O motor é um componente muito essencial em elétrica e eletrônica, pois são usados ​​como atuadores em muitas áreas.

Precisamos de motores para pequenas aplicações como robótica, bem como em áreas onde motores pesados ​​são usados ​​(indústrias, etc.).



Agora, os motores que são usados ​​para pequenas aplicações podem ser controlados facilmente, pois não consomem muita corrente (menos de 2 amperes).

E esses motores podem ser facilmente controlados usando um microcontrolador como o Arduino com drivers de motor como L298 ou L293D .

Mas os motores que são usados ​​para fins pesados ​​(maiores que 10 amperes), não podem ser controlados usando esses ic's pois podem fornecer corrente limitada (máx. 2 amp). Então, como esses motores são controlados do que?

A resposta é simples: usando relés , que atua como interruptores, ou seja, alternar grande corrente usando pequena corrente. Desta forma, duas coisas podem ser alcançadas:

1. Operando nosso próprio motor de alta corrente.

2. Isolar o circuito, evitando choques.

Agora, qualquer microcontrolador pode ser usado para alternar esses relés. Estaremos usando o arduino UNO aqui.

COMPONENTES EXIGIDOS PARA ESTE PROJETO:

1. ARDUINO UNO: para fornecer lógicas de entrada para o lado primário do relé.

2. SPDT RELAY -2: dois relés são necessários para rotação em ambas as direções. Os contatos devem ser classificados para lidar com as especificações de alta corrente do motor

Cor azul da imagem do relé relé mostrando N / O N / C e detalhes do pólo3. Power Mosfet: Você pode usar IRF1010 mosfet botão micro interruptor

4. BATERIA (12v): para fornecer energia ao motor.

5. DOIS BOTÕES: para dar entradas ao Arduino (ou seja, quando pressionado e quando não pressionado)

Resistor de 10k 1/4 watt

6. DOIS RESISTORES DE 10K: para debouncing (explicado abaixo)

Circuito de controle de motor de alta corrente usando Arduino

7. FIOS DE CONEXÃO: para fazer conexões.

ESQUEMA:

Circuito de controle do motor PWM Arduino

Faça as conexões conforme mostrado na figura.

1. Conecte o terminal normalmente aberto de ambos os relés ao terminal positivo da bateria e o terminal normalmente fechado ao terminal negativo da bateria.

2. Conecte o motor entre o terminal restante (de três) de cada relé.

3. Conecte um terminal do lado primário dos relés aos pinos de saída do Arduino conforme especificado no código e outro terminal ao aterramento.

4. Conecte um terminal de ambos os botões de pressão ao pino 5v do Arduino e outro terminal aos pinos de entrada conforme especificado no código.

4. ** Não se esqueça de conectar os resistores, pois eles são muito importantes para o bom funcionamento deste circuito, conforme explicado abaixo:

POR QUE OS RESISTORES SÃO CONECTADOS?

Você pode descobrir que não há nada conectado aos pinos de entrada do Arduino, mas isso não significa que essas pinagens podem ser um zero lógico quando a chave indicada está aberta

Em vez disso, implica que, quando a chave está aberta, o arduino pode assumir qualquer valor aleatório entre o lógico 0 e o lógico 1, o que não é nada bom (isso é chamado de salto).

Então, o que queremos aqui é que quando nada estiver conectado ao pino de entrada, ou seja, o botão de pressão está aberto, o arduino obtenha 0 de entrada do pino.

E para isso, o pino é conectado diretamente ao terra antes do botão de pressão via resistor. Se ele estiver conectado diretamente ao terra sem resistor, há boas chances de que ele se queime, pois o pino entrará em curto com o terra e uma grande quantidade de corrente irá fluir. Para evitar isso, um resistor é conectado no meio.

Esse resistor é chamado de resistor suspenso, pois puxa a lógica do pino para 0. E esse processo é chamado de debouncing.

CÓDIGO:

Grave este código em seu 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)
}
}

Trabalhando (entendendo o código):

• CONTROLE DE DIREÇÃO:

A. Quando ambos os botões não são pressionados:

Nesta condição, o arduino recebe 0 de entrada de ambos os pinos. Conforme especificado no código nesta condição, ambos os pinos de saída fornecem lógica 0 (LOW):

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

digitalWrite (9, LOW)}

Como a tensão de entrada para o primário de ambos os relés é zero, o terminal secundário de ambos permanece na posição normalmente fechada. Portanto, há zero volts em ambos os terminais do motor, não causando rotação.

B. Quando o botão X é pressionado, mas Y não é pressionado:

Nesta condição, o arduino recebe 0 entradas do pino 4, mas a entrada 1 do pino 3. Conforme especificado no código nesta condição, o pino 6 deve estar na lógica 1 (HIGH), enquanto o pino 9 na lógica 0 (LOW):

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

digitalWrite (9, LOW)}

Uma vez que a tensão de entrada para o relé nº 1 é alta, a chave deste relé é colocada na condição normalmente aberta, enquanto a tensão de entrada para o relé 2 é baixa, a chave deste relé permanece na condição normalmente fechada causando 12v e 0v respectivamente nos terminais do motor, causando rotação do motor em uma direção.

C. Quando o botão Y é pressionado, mas X não é pressionado:

Nesta condição, o arduino recebe 1 entrada do pino 4, mas a entrada0 do pino 3. Conforme especificado no código nesta condição, o pino 6 deve estar na lógica 0 (BAIXA), enquanto o pino 9 na lógica 1 (ALTA):

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

digitalWrite (9, HIGH)}

Uma vez que a tensão de entrada para o relé # 2 é alta desta vez, a chave deste relé é colocada na condição normalmente aberta, enquanto a tensão de entrada para o relé # 1 é baixa, a chave deste relé permanece na condição normalmente fechada causando 12v e 0v respectivamente no motor terminais, causando a rotação do motor em outra direção.

D. Quando ambos os botões são pressionados:

Nesta condição, o arduino recebe 1 entrada de ambos os pinos. Conforme especificado no código nesta condição, ambos os pinos de saída fornecem lógica 0 (LOW):

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

digitalWrite (9, LOW)}

Como a tensão de entrada para o primário de ambos os relés é zero, o terminal secundário de ambos permanece na posição normalmente fechada. Portanto, há zero volt em ambos os terminais do motor, não causando rotação.

• CONTROLE DE VELOCIDADE:

Digamos que o potenciômetro esteja em tal posição quando ele fornece 0 volts como entrada para o pino A0 do Arduino. Devido a isso, o Arduino mapeia este valor como 0 e, portanto, dá 0 como saída PWM no pino # 10, ou seja,

analogWrite (10,0) // escreve o valor mapeado para o 10º pino como saída

Conseqüentemente, o gate do mosfet obtém corrente 0 devido ao qual ele permanece desligado e o motor está na posição desligada.

No entanto, conforme o potenciômetro é girado e o valor do potenciômetro é variado, a tensão no pino A0 também varia, e este valor é mapeado no pino # 10 com uma largura PWM aumentando proporcionalmente, fazendo com que mais corrente flua através do motor e do mosfet dreno, que por sua vez permite que o motor ganhe mais velocidade proporcionalmente, e o mesmo acontece vice-versa.

Assim, a partir da discussão acima, podemos ver como um Arduino pode ser usado para controlar a velocidade e também a direção (reverso para frente) de um motor CC de alta corrente simplesmente ajustando o potenciômetro especificado e por meio de alguns botões.

Atualizar : Para motor de alta corrente, use relés de 12 V / 30 A e estágios de driver BJT para operar esses relés de alta potência, conforme indicado no seguinte diagrama modificado:




Anterior: Circuito do sensor de estacionamento reverso do carro com alarme Próximo: Circuito Gerador de Sinal Arduino PWM