Projetos de circuito eletrônicoProjetos de engenharia do ArduinoCircuito de controle de motor de alta corrente usando Arduino

Circuito de controle de motor de alta corrente usando Arduino

Relacionados

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

De Ankit 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 são usados ​​motores pesados ​​(indústrias, etc.).

Agora, os motores 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 microcontroladores como arduino com drivers de motor como L298 ou L293D.

Mas motores que são usados ​​para propósitos pesados ​​(maiores que 10amp), não podem ser controlados usando esses ic’s, pois eles podem fornecer corrente limitada (máximo de 2amp). Então, como esses motores são controlados do que?

A resposta é simples: usando Relés, que atuam como interruptores, ou seja, alternam grandes correntes usando pequenas correntes. Desta forma, duas coisas podem ser alcançadas:

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

2. Isolamento do circuito, evitando assim choques.

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

COMPONENTES NECESSÁRIOS PARA ESTE PROJETO:

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

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

COR AZUL DA IMAGEM DO RELÉ
RELÉ MOSTRANDO N/ON/C E DETALHES DO POLO

3.Power Mosfet: Você pode usar o mosfet IRF1010

MOSFETS IRF 1010E

4. BATERIA (12v): para alimentar o motor.

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

BOTÃO DE MICROINTERRUPTOR

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

RESISTOR DE 10K 1/4 WATT

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

ESQUEMA:

CIRCUITO DE CONTROLE DE MOTOR DE ALTA CORRENTE USANDO 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 o outro terminal ao terra.

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

4. **Não 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 ESTÃ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 possam ser um zero lógico quando a chave indicada estiver aberta

Em vez disso, implica que, quando o switch está aberto, o arduino pode assumir qualquer valor aleatório entre a lógica 0 e a lógica 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 estiver aberto, o arduino recebe 0 entrada do pino.

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

Esse resistor é chamado de resistor pulldown, pois está puxando a lógica do pino para 0. E esse processo é chamado de debouncing.

CÓDIGO:

Grave este código no 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);
}
}

Funcionando (compreendendo 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 entrada de ambos os pinos. Conforme especificado no código nesta condição, ambos os pinos de saída fornecem 0 lógica (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. Assim, 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 entrada1 do pino3. 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);}

Como a tensão de entrada do relé 1 é alta, a chave deste relé é acionada para a condição normalmente aberta, enquanto a tensão de entrada do 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 um sentido.

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

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

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

digitalWrite(9,HIGH);}

Como a tensão de entrada para o relé#2 é alta desta vez, o interruptor deste relé é acionado para a condição normalmente aberta, enquanto a tensão de entrada para o relé#1 é baixa, o interruptor deste relé permanece em 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 dão 0 lógica (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. Assim, há zero volt em ambos os terminais do motor, não causando rotação.

• CONTROLE DE VELOCIDADE:

Digamos que o potenciômetro está nessa posição quando dá 0 volts como entrada para o pino A0 do arduino. Devido a isso, o arduino mapeia esse valor como 0 e, portanto, fornece 0 como saída PWM no pino 10, ou seja,

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

Portanto, o portão do mosfet recebe 0 corrente devido ao qual permanece desligado e o motor está na posição desligada.

No entanto, à medida que o potenciômetro é girado e o valor do potenciômetro varia, a tensão no pino A0 também varia, e esse valor é mapeado no pino 10 com uma largura PWM proporcionalmente crescente, 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 a direção (reverso para frente) de um motor CC de alta corrente simplesmente ajustando o potenciômetro especificado e através de alguns botões.

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

CIRCUITO DE CONTROLE DE MOTOR ARDUINO PWM

Hashtags: #Circuito #controle #motor #alta #corrente #usando #Arduino
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc…
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados

Relacionados