ESP32 - Módulo MOSFET

Este tutorial ensina como usar o ESP32 para ligar e desligar uma carga DC de 12V e definir seu nível de potência com um módulo MOSFET, além de exibir o nível de potência no Serial Monitor. O tutorial funciona da mesma forma para os módulos AOD4184, LR7843 e FR120N, e mostra como ligar tanto uma fita LED quanto um motor DC ou ventilador.

Sobre o Módulo MOSFET

Um pino GPIO do ESP32 fornece apenas 3.3V e alguns miliampères. Isso é suficiente para um LED pequeno, mas muito pouco para uma fita LED de 12V, um motor DC, um ventilador, uma bomba, uma válvula solenoide ou um aquecedor. O módulo MOSFET funciona como uma chave eletrônica entre os dois. O ESP32 fornece um sinal fraco, e o módulo deixa passar a corrente forte da carga.

Existem três versões deste módulo no mercado: AOD4184 (o mesmo chip também é vendido como D4184), LR7843 e FR120N. A placa é idêntica para as três. Tamanho, pinos, ligação e código não mudam. A única diferença é o chip MOSFET no meio, que define quanta tensão e corrente a placa suporta.

AOD4184 LR7843 FR120N
O chip MOSFET AOD4184A (canal N) IRLR7843 (canal N) IRFR120N (canal N)
A tensão máxima da carga (especificação do chip) 40V DC 30V DC 100V DC
A corrente máxima (especificação do chip) 50A 161A 9.4A
A resistência de condução RDS(on) cerca de 7 mΩ cerca de 3.3 mΩ cerca de 210 mΩ
A corrente prática sem dissipador de calor cerca de 10–15A cerca de 15A cerca de 2A
O sinal de controle lógica 3.3V / 5V, ativo em HIGH lógica 3.3V / 5V, ativo em HIGH lógica 3.3V / 5V, ativo em HIGH
O isolamento optoacoplador PC817 optoacoplador PC817 optoacoplador PC817
O suporte a PWM sim, mantenha ≤ ~1 kHz sim, mantenha ≤ ~1 kHz sim, mantenha ≤ ~1 kHz
O tipo de carga somente DC somente DC somente DC

Para escolher um, pense na sua carga. O LR7843 tem a menor resistência, então é o que fica mais frio quando passa muita corrente. Use-o para fitas LED de 12V ou 24V de alta potência e motores grandes, mas nunca acima de 30V. O AOD4184 é a escolha intermediária segura: corrente alta e até 40V, o que cobre cargas de 12V, 24V e 36V. O FR120N aceita a tensão mais alta, até 100V, mas sua resistência é bem maior. Isso significa que ele esquenta rapidamente, então use-o para cargas pequenas de 24V ou 48V de cerca de 2A.

Não confie muito nos números de 50A ou 161A. Eles descrevem o chip sozinho, não esta pequena placa. Na placa, o calor é o limite real. Depois que a carga funcionar por alguns minutos, toque no MOSFET com cuidado. Se estiver quente demais, adicione um dissipador de calor ou use uma carga menor.

Pinagem do Módulo MOSFET

Pinagem do Módulo MOSFET AOD4184, LR7843 e FR120N

Os pinos ficam em dois lugares. Um pequeno conector de 2 pinos (espaçamento de 2.54mm) é para o ESP32, então ele encaixa facilmente em uma protoboard. Uma fileira de três bornes de parafuso é para a carga e sua fonte de alimentação.

Conector de controle:

  • Pino PWM: conecte este pino a um pino GPIO do ESP32 (GPIO18 neste tutorial)
  • Pino GND: conecte este pino ao GND do ESP32

Bornes de parafuso:

  • Pino +: conecte este pino ao fio positivo da fonte de alimentação da carga (ex.: 12V) e ao fio positivo da carga. Os dois fios compartilham este mesmo borne
  • Pino LOAD: conecte este pino ao fio negativo da carga. Este é o lado que o MOSFET chaveia
  • Pino −: conecte este pino ao fio negativo (terra) da fonte de alimentação da carga

As etiquetas impressas podem mudar um pouco de um lote para outro, então leia o texto na sua própria placa antes de fazer a ligação.

Recomendamos fortemente que você use o módulo AOD4184 se não tiver certeza de qual comprar.

Como o Módulo MOSFET Funciona

O sinal do GPIO18 não chega diretamente ao MOSFET. Ele entra no pino PWM, passa por um pequeno resistor e acende um minúsculo LED dentro do optoacoplador PC817. Essa luz aciona um fototransistor no mesmo chip, e o fototransistor alimenta o gate do MOSFET. Um resistor no gate o puxa de volta para 0V sempre que o optoacoplador está desligado. O próprio MOSFET fica entre o borne LOAD e o borne −, enquanto a carga fica entre + e LOAD. Portanto, o que a carga faz depende apenas do estado do pino PWM, e existem três estados possíveis.

Quando o GPIO18 fornece 0V (LOW)

Com 0V no pino PWM, nenhuma corrente pode passar pelo LED do optoacoplador, então ele permanece apagado. Assim, o fototransistor permanece desligado, e o resistor do gate mantém o gate do MOSFET em 0V. O MOSFET está DESLIGADO, o que significa que o caminho de LOAD para − está aberto, exatamente como uma chave aberta. O fio negativo da carga não tem como voltar à fonte, então nenhuma corrente flui e a carga fica em 0V. Você obtém este estado com analogWrite(MOSFET_PIN, 0) ou digitalWrite(MOSFET_PIN, LOW).

Quando o GPIO18 fornece 3.3V (HIGH)

O ESP32 fornece apenas 3.3V, mas isso é suficiente: o LED do optoacoplador precisa de apenas alguns miliampères, então o pino GPIO pode acioná-lo diretamente (uma placa de 5V funcionaria da mesma forma). O LED acende dentro do chip, onde você não consegue vê-lo, e o fototransistor liga. Agora o gate do MOSFET recebe cerca de metade da tensão da fonte da carga, aproximadamente 6V quando você usa uma fonte de 12V. O MOSFET liga totalmente e se comporta como uma chave fechada com uma resistência minúscula, apenas alguns mΩ nas placas AOD4184 e LR7843 e cerca de 0.2Ω na placa FR120N. A corrente sai do positivo da fonte, entra no borne +, passa pela carga, entra no borne LOAD, passa pelo MOSFET, sai pelo borne − e volta ao negativo da fonte. A carga recebe quase os 12V completos e funciona com potência máxima. No código, isso é analogWrite(MOSFET_PIN, 255) ou digitalWrite(MOSFET_PIN, HIGH).

Quando o GPIO18 fornece um sinal PWM

Um sinal PWM é simplesmente os dois estados acima, repetidos muito rapidamente. Com analogWrite(), o GPIO18 alterna entre LOW e HIGH cerca de 1000 vezes por segundo, e o MOSFET copia cada alternância: ele fica LIGADO durante cada parte HIGH e DESLIGADO durante cada parte LOW. Assim, a carga recebe pulsos curtos de 12V. A fração do tempo em que o pino permanece em HIGH é chamada de ciclo de trabalho (duty cycle), e o valor que você passa para analogWrite() o define (ciclo de trabalho = valor / 255). A tensão média e a potência que a carga recebe são simplesmente o ciclo de trabalho multiplicado pelo valor máximo. Com uma fonte de 12V, por exemplo:

  • 10% (valor 26): LIGADO um décimo do tempo, média de cerca de 1.2V, um brilho muito fraco ou um giro bem lento
  • 50% (valor 128): LIGADO metade do tempo, média de cerca de 6V, cerca de metade da potência
  • 90% (valor 230): LIGADO nove décimos do tempo, média de cerca de 10.8V, perto da potência máxima

Uma fita LED não pisca de forma visível nessa velocidade, então ela simplesmente parece mais fraca. Um motor, ventilador ou bomba gira mais devagar, porque a massa do seu rotor suaviza os pulsos. Mantenha a frequência baixa, entre 500 Hz e 1 kHz, porque o PC817 é um componente lento. Em uma frequência muito mais alta, o MOSFET não tem tempo de chavear totalmente, a carga recebe pulsos irregulares em vez de pulsos limpos, e o MOSFET esquenta. A função analogWrite() do ESP32 já usa 1 kHz por padrão, então nenhuma alteração é necessária. O código deste tutorial usa este caso de PWM para aumentar a potência de 10% até 100%.

Mais alguns fatos sobre a placa ajudam você a evitar problemas:

  • O optoacoplador mantém o lado do ESP32 e o lado da carga eletricamente separados. O GND do sinal e o GND da carga não são conectados na placa, e você não deve uni-los.
  • Como o MOSFET é do tipo canal N no lado baixo (low side), ele corta o fio negativo da carga, não o positivo.
  • A tensão do gate vem da fonte da carga por meio de um divisor de tensão, e é por isso que ela é apenas cerca de metade dessa fonte. Portanto, a fonte da carga deve ter cerca de 6V ou mais. Escolha 9V ou mais quando a carga consumir mais do que alguns ampères. Uma fonte de carga de 5V não funcionará bem.
  • A placa não tem diodo flyback. Motores, bombas, solenoides e relés precisam de um diodo adicionado fora da placa.
  • Ela é somente para cargas DC. Nunca a use com a rede elétrica AC. Para dispositivos AC, veja o tutorial de relé com ESP32.

Diagrama de Ligação

A alimentação de 12V vai somente para os bornes de parafuso do módulo. Nunca deixe que ela toque em nenhum pino do ESP32.

Como conectar o ESP32 e o módulo MOSFET com uma fita LED de 12V

Diagrama de Ligação do ESP32 com Módulo MOSFET AOD4184, LR7843 ou FR120N

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

De Para
ESP32 GPIO18 Pino PWM do módulo
ESP32 GND Pino GND do módulo
Fonte de 12V + (via conector DC) Borne + do módulo
Fonte de 12V − (via conector DC) Borne − do módulo
Fita LED + Borne + do módulo (compartilhado com o + da fonte)
Fita LED − Borne LOAD do módulo

Como conectar outros dispositivos de 12V ao módulo MOSFET

Muitos dispositivos podem ocupar o lugar da fita LED. O GPIO18 e o GND do ESP32 continuam ligados exatamente como na tabela acima, então as imagens abaixo mostram apenas o lado da alimentação. O padrão nunca muda: o positivo da fonte vai para +, o negativo da fonte vai para −, o fio positivo do dispositivo também vai para +, e o seu fio negativo vai para LOAD.

Escolha uma fonte com a mesma tensão do seu dispositivo, de modo que um dispositivo de 12V receba uma fonte de 12V. Seja qual for o dispositivo, a fonte não deve ser inferior a 6V. Pense também na corrente que o seu dispositivo consome. A placa FR120N só consegue lidar com dispositivos leves de cerca de 2A sem dissipador de calor, enquanto as placas AOD4184 e LR7843 são adequadas para dispositivos mais pesados.

Você pode manter o código do ESP32 exatamente como está para todos esses dispositivos. Com uma trava solenoide ou uma válvula solenoide, porém, envie apenas potência máxima ou zero (HIGH ou LOW) e deixe de fora o efeito de fade.

Usando um motor DC de 12V
Ligação do módulo MOSFET com motor DC de 12V

This image is created using Fritzing. Click to enlarge image

Conecte o fio positivo do motor ao borne + e o fio negativo do motor ao LOAD. Dentro de um motor há uma bobina, e quando o MOSFET desliga, essa bobina gera um pico de tensão. Com o tempo, esse pico pode danificar o MOSFET. Para absorvê-lo, coloque um diodo flyback, como um 1N5819 ou um 1N4007, entre os fios do motor, com a extremidade listrada (o catodo) no fio positivo do motor e a outra extremidade (o anodo) no fio negativo do motor. Os dispositivos com bobina mais abaixo precisam deste mesmo diodo, colocado da mesma forma.

O ciclo de trabalho PWM controla a velocidade, mas apenas em um sentido. Se você precisa que o motor gire nos dois sentidos, use um driver como o L298N, conforme mostrado no tutorial de motor DC com ESP32.

Usando um ventilador de resfriamento de 12V
Ventilador de resfriamento ligado ao módulo MOSFET

This image is created using Fritzing. Click to enlarge image

O fio vermelho do ventilador é o positivo e vai para o borne +, e o fio preto vai para LOAD. Se o seu ventilador tiver um terceiro fio amarelo, ele apenas informa a velocidade, então deixe-o desconectado. Adicione o diodo flyback aqui também; ele é barato e não causa nenhum problema. Muitos ventiladores não conseguem partir com um ciclo de trabalho muito baixo, então comece em cerca de 30% ou mais.

Usando uma bomba d'água de 12V
Diagrama de ligação do módulo MOSFET para uma bomba de 12V

This image is created using Fritzing. Click to enlarge image

Ligue o positivo da bomba ao borne + e o negativo da bomba ao LOAD, e instale o diodo flyback entre os terminais da bomba. Um ciclo de trabalho maior bombeia mais água. Certifique-se de que a bomba esteja sempre submersa, porque funcionar a seco pode estragá-la.

Usando uma válvula solenoide de 12V
Diagrama de ligação da válvula solenoide de 12V com módulo MOSFET

This image is created using Fritzing. Click to enlarge image

O positivo da válvula vai para o borne + e o negativo da válvula vai para LOAD, com o diodo flyback entre seus terminais. Uma válvula normalmente fechada abre quando o ESP32 liga o módulo totalmente, e fecha novamente quando ele o desliga. Não tente controlar a intensidade com PWM; ela está aberta ou fechada.

Usando uma trava solenoide de 12V
Ligação da trava solenoide e do módulo MOSFET

This image is created using Fritzing. Click to enlarge image

Conecte o positivo da trava ao borne + e o negativo da trava ao LOAD, e adicione o diodo flyback. Acione a trava apenas totalmente LIGADA ou totalmente DESLIGADA. Sua bobina esquenta rapidamente, então ligue-a por um breve momento para abrir o trinco e, em seguida, desligue-a novamente. Um exemplo completo de trava de porta está no tutorial de trava solenoide com ESP32.

Usando uma fita LED de 12V de cor única
Ligação do módulo MOSFET com fita LED de 12V de cor única

This image is created using Fritzing. Click to enlarge image

Este é o mesmo circuito do diagrama principal, visto pelo lado da alimentação. O positivo da fita, que muitas vezes vem impresso como 12V, vai para o borne +, e o negativo da fita vai para LOAD. Uma fita LED não tem bobina, então não precisa de diodo. O ciclo de trabalho define o brilho. Lembre-se de que uma fita mais longa consome mais corrente, então verifique a especificação dela antes de escolher um módulo. Fitas RGB e endereçáveis precisam de uma montagem diferente.

Como Programar o Módulo MOSFET

Nenhuma biblioteca é necessária. O código usa funções que já estão integradas ao núcleo (core) do ESP32.

  • Dê um nome ao pino GPIO que aciona o módulo: const int MOSFET_PIN = 18;
  • Configure o pino como saída: pinMode(MOSFET_PIN, OUTPUT);
  • Ligue a carga totalmente: analogWrite(MOSFET_PIN, 255); (ou digitalWrite(MOSFET_PIN, HIGH);)
  • Desligue a carga totalmente: analogWrite(MOSFET_PIN, 0); (ou digitalWrite(MOSFET_PIN, LOW);)
  • Defina parte da potência, por exemplo 50%: analogWrite(MOSFET_PIN, 128);
  • Converta uma porcentagem em um valor PWM de 0 a 255: int duty = map(percent, 0, 100, 0, 255);

Código ESP32 - Módulo MOSFET

O código abaixo liga a carga totalmente por 2 segundos e a desliga totalmente por 2 segundos. Em seguida, aumenta a potência de 10% até 100% em passos de 10%, um passo a cada meio segundo, e a reduz de volta a 0% da mesma forma. Após uma pausa de 1 segundo, o ciclo recomeça.

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-mosfet-module */ const int MOSFET_PIN = 18; // ESP32 GPIO18 connected to the PWM pin of the MOSFET module void setup() { Serial.begin(9600); pinMode(MOSFET_PIN, OUTPUT); analogWrite(MOSFET_PIN, 0); // start with the load OFF } void setLoad(int percent) { int duty = map(percent, 0, 100, 0, 255); // convert 0-100% to 0-255 analogWrite(MOSFET_PIN, duty); Serial.print("Load power: "); Serial.print(percent); Serial.println("%"); } void loop() { // turn the load fully ON, then fully OFF Serial.println("Load: ON"); setLoad(100); delay(2000); Serial.println("Load: OFF"); setLoad(0); delay(2000); // increase the power step by step (PWM) for (int percent = 10; percent <= 100; percent += 10) { setLoad(percent); delay(500); } // decrease the power step by step (PWM) for (int percent = 90; percent >= 0; percent -= 10) { setLoad(percent); delay(500); } delay(1000); }

Passos Rápidos

Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.

  • Ligue o ESP32, o módulo MOSFET, a fita LED (ou ventilador) e a alimentação de 12V conforme mostrado no diagrama acima.
  • Conecte o cabo USB ao ESP32 e ao seu PC. Mantenha a fonte de 12V desconectada por enquanto.
  • Abra a Arduino IDE e, em seguida, selecione a placa ESP32 Dev Module e a porta COM correta.
  • Copie o código acima e cole-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para compilar e carregar o código no ESP32.
  • Conecte a fonte de alimentação de 12V.
  • Clique no ícone Serial Monitor e, em seguida, digite ou selecione 9600 como baud rate.
  • Observe a fita LED: brilho máximo por 2 segundos, apagada por 2 segundos e, depois, ela fica mais clara aos poucos e mais fraca aos poucos. Um ventilador fará o mesmo com a sua velocidade.
  • Veja as mensagens no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Load: ON Load power: 100% Load: OFF Load power: 0% Load power: 10% Load power: 20% Load power: 30% Load power: 40% Load power: 50% Load power: 60% Load power: 70% Load power: 80% Load power: 90% Load power: 100% Load power: 90% Load power: 80% Load power: 70% Load power: 60% Load power: 50% Load power: 40% Load power: 30% Load power: 20% Load power: 10% Load power: 0%
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Se a carga não ligar de forma alguma, verifique primeiro a tensão da fonte da carga. Lembre-se de que ela deve ser de cerca de 6V ou mais.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!