Projeto: RJMD-R2101 Driver de Motor MOSFET H-Bridge
Neste tutorial, exploraremos como controlar um motor DC usando o driver de motor MOSFET RJMD-R2101 H-Bridge. Este projeto demonstrará como utilizar efetivamente os MOSFETs IRFZ44N em conjunto com os drivers de porta IR2101 para controlar a velocidade e a direção do motor. Ao final deste guia, você terá uma configuração funcional de controle de motor que pode acelerar, frear e parar o motor suavemente.

À medida que avançamos, cobriremos os componentes de hardware necessários, as instruções de fiação e trechos de código de exemplo para esclarecer como tudo funciona em conjunto. Para uma representação mais visual, recomendo assistir ao vídeo associado (no vídeo às :15).

Hardware Explicado
Os componentes principais deste projeto são o driver de porta IR2101 e os MOSFETs IRFZ44N. O IR2101 é um driver de alta velocidade projetado para acionar MOSFETs de canal N em uma configuração de meio ponte. Ele permite uma comutação e controle eficientes dos MOSFETs, possibilitando que o motor funcione suavemente.
Os MOSFETs IRFZ44N atuam como os elementos de comutação que controlam a potência fornecida ao motor. Quando ativados pelo IR2101, esses MOSFETs podem lidar com altas correntes, fornecendo a potência necessária para acionar o motor. Juntos, esses componentes permitem um controle preciso sobre a direção e a velocidade do motor.
Detalhes da Ficha Técnica
| Fabricante | International Rectifier |
|---|---|
| Número da peça | IRFZ44N |
| Tensão de lógica/IO | 10 V (VGS) |
| Tensão de alimentação | 55 V (VDS) |
| Corrente de saída (por canal) | 49 A (máx) |
| Corrente de pico (por canal) | 120 A (máx) |
| Orientação sobre a frequência PWM | até 100 kHz |
| Limiares de lógica de entrada | 2,0 V (VGS(th)) |
| Queda de tensão / RDS(on)/ saturação | 0,025 Ω (máx) |
| Limites térmicos | 175 °C (máx) |
| Pacote | TO-220 |
| Notas / variantes | Comumente usado em configurações de ponte H |
- Assegure um dissipador de calor adequado para os MOSFETs para evitar superaquecimento.
- Use PWM para controle de velocidade para alcançar uma operação suave do motor.
- Verifique se a tensão de alimentação não excede as classificações do MOSFET.
- Garanta a polaridade correta ao ligar o motor para evitar danos.
- Use capacitores de desacoplamento perto da fonte de alimentação para estabilizar a voltagem.
Instruções de Fiação

Para conectar o driver de motor RJMD-R2101, comece ligando a fonte de alimentação. Conecte o pino VCC do driver a uma fonte de 5V. O pino GND deve ser conectado ao terra da fonte de alimentação. Em seguida, conecte os pinos de controle: o sinal PWM para o primeiro MOSFET deve ir para o pinoPWM1_HIN1_PIN(o que é o pino 9), e o pino de habilitação para o primeiro MOSFET deve se conectar aEN1_LIN1_PIN(pin 8). Para o segundo MOSFET, conecte o sinal PWM aPWM2_HIN2_PIN(pin 3) e o pino de habilitação paraEN2_LIN2_PIN(pin 2).

Certifique-se de conectar os terminais do motor às saídas apropriadas do H-Bridge. Se você estiver usando Arduino, conecte os pinos PWM aos pinos designados na placa Arduino. Por exemplo, conectePWM1_HIN1_PINpara o pino 9,EN1_LIN1_PINpara o pino 8, e assim por diante. Esta configuração permitirá que você controle o motor de forma eficaz.
Exemplos de Código e Passo a Passo
A seção do código inclui funções para controlar a velocidade e a direção do motor usando os pinos definidos. Abaixo está um trecho do esboço de controle do motor:
const int PWM1_HIN1_PIN= 9; // PWM pin for first MOSFET
const int EN1_LIN1_PIN= 8; // Enable pin for first MOSFET
Nesta parte, definimos os pinos usados para controlar o primeiro MOSFET. APWM1_HIN1_PINé usado para controle de velocidade, enquanto oEN1_LIN1_PINativa o driver do motor.
void Motor(boolean direction, int speed=0) {
int speedPWM = map(speed, 0, 100, 0, 255);
// Control motor direction and speed here
}
Esta função recebe umdirectionparâmetro para determinar se o motor deve girar no sentido horário ou anti-horário. Ospeedo parâmetro é mapeado para um valor PWM, permitindo um controle suave sobre a velocidade do motor.
void stop() {
digitalWrite(EN1_LIN1_PIN, LOW); // Disable first MOSFET
}
Ostopa função desativa o motor definindo o pino de habilitação como baixo, efetivamente interrompendo qualquer fluxo de corrente através do motor. Isso garante uma parada rápida sem danificar os componentes.
Para o código completo, consulte o programa completo carregado abaixo do artigo.
Demonstração / O que Esperar
Quando a configuração estiver completa, você deve observar o motor respondendo aos comandos enviados pelo Arduino. O motor girará na direção especificada, e você pode ajustar a velocidade usando sinais PWM. Problemas comuns a serem observados incluem conexões de polaridade invertida, que podem fazer o motor funcionar na direção oposta, e entradas flutuantes que podem levar a um comportamento errático.
Durante os testes, você também pode notar a velocidade do motor mudando com base nos valores de PWM enviados. Certifique-se de que todas as conexões estejam seguras para evitar interrupções no fluxo de energia, o que pode afetar o desempenho (no vídeo às 05:45).
Marcas de Tempo do Vídeo
- 00:00- Introdução ao projeto
- 02:15- Visão geral dos componentes de hardware
- 05:45- Demonstração de controle motor
- 08:30- Demonstração e explicação do código
Imagens
/*
* Esboço de Controle de Motor IR2101
* Controla motor DC com velocidade, freio e parada
* Mosfets IRF44ZN usados para lado alto e lado baixo.
* Driver de porta IR2101 usado para acionar os MOSFETs.
* Você pode obter o código, o arquivo gerber para PCB produzir e o diagrama de fiação em http://robojax.com/RJT390
*
* escrito por Ahmad Shamshiri em 19 de novembro de 2024
* www.Robojax.com https://youTube.com/@robojax
*/
const int PWM1_HIN1_PIN= 9; // deve ser uma pinta com ~
const int EN1_LIN1_PIN= 8;
const int PWM2_HIN2_PIN= 3; // deve ser uma pinta com ~
const int EN2_LIN2_PIN= 2;
const boolean CW =1;
const boolean CCW =0;
void Motor(boolean, int); // protótipo
void brake(); // protótipo
void stop(); // protótipo
void setup() {
Serial.begin(9600);
pinMode(PWM1_HIN1_PIN, OUTPUT);
pinMode(EN1_LIN1_PIN, OUTPUT);
pinMode(PWM2_HIN2_PIN, OUTPUT);
pinMode(EN2_LIN2_PIN, OUTPUT);
}
void loop() {
Motor(CW, 100);
delay(5000);
brake();
delay(3000);
Motor(CCW, 100);
delay(5000);
stop();
delay(3000);
Motor(CCW, 50); // em CW a 50% de velocidade
delay(5000);
brake();
delay(3000);
for(int i=0; i<=100; i++)
{
Motor(CCW, i);
delay(100);
}
delay(3000);
for(int i=100; i>=0; i--)
{
Motor(CCW, i);
delay(100);
}
brake();
delay(3000);
}
void stop()
{
Serial.println ("=== Stop");
digitalWrite(EN1_LIN1_PIN, LOW);
digitalWrite(PWM1_HIN1_PIN, LOW);
digitalWrite(EN2_LIN2_PIN, LOW);
digitalWrite(PWM2_HIN2_PIN, LOW);
}
void brake()
{
Serial.println ("=== Brake");
digitalWrite(PWM1_HIN1_PIN, HIGH);
digitalWrite(EN1_LIN1_PIN, LOW);
digitalWrite(PWM2_HIN2_PIN, HIGH);
digitalWrite(EN2_LIN2_PIN, LOW);
}
void Motor(boolean direction, int speed=0)
{
int speedPWM = map(speed, 0, 100, 0, 255);
Serial.print("Speed: "); Serial.print (speedPWM);
Serial.print("(");Serial.print(speed);Serial.print("%)");
if(direction){
Serial.print(" dir: ");Serial.println ("CW");
analogWrite(PWM1_HIN1_PIN, speedPWM);
digitalWrite(EN1_LIN1_PIN, HIGH);
digitalWrite(PWM2_HIN2_PIN, LOW);
digitalWrite(EN2_LIN2_PIN, LOW);
}else{
Serial.print(" dir: ");Serial.println ("CCW");
digitalWrite(PWM1_HIN1_PIN, LOW);
digitalWrite(EN1_LIN1_PIN, LOW);
analogWrite(PWM2_HIN2_PIN, speedPWM);
digitalWrite(EN2_LIN2_PIN, HIGH);
}
}
Recursos e referências
-
ExternoFicha técnica do MOSFET IRFZ44Ninfineon.com
-
ExternoFolha de Dados do Driver de Porta IR2101infineon.com
-
Externo
Arquivos📁
Outros Ficheiros
-
RJMD-R2101_H-Bridge_Motor_Driver_Fabricacao_Pacote.zipDriver de Motor MOSFET H-Bridge, todos os três arquivos que você pode precisar para fazer o pedido. Contém: arquivos Gerber do PCB zip, arquivo Excel BMO e arquivo de coordenadas.
RJMD-R2101_3_file_to Order.zip0.17 MB