Search Code

Project: RJMD-R2101 H-Brug MOSFET Motorstuurder

Project: RJMD-R2101 H-Brug MOSFET Motorstuurder

In deze tutorial zullen we verkennen hoe we een DC-motor kunnen aansturen met behulp van de RJMD-R2101 H-brug MOSFET-motorstuurder. Dit project zal demonstreren hoe we de IRFZ44N MOSFETs effectief kunnen gebruiken in combinatie met de IR2101 poortstuurders om de motorsnelheid en -richting te regelen. Aan het einde van deze gids heeft u een functionele motorbesturingsopstelling die de motor soepel kan versnellen, remmen en stoppen.

RJMD-R2101 H-Bridge MOSFET Motor Driver 0

Naarmate we vorderen, zullen we de noodzakelijke hardwarecomponenten, bedradinginstructies en voorbeeldcodefragmenten behandelen om te verduidelijken hoe alles samenwerkt. Voor een meer visuele weergave raad ik aan de bijbehorende video te bekijken (in video om 02:15).

RJMD-R2101 H-Bridge MOSFET Motor Driver 3

Hardware Uitleg

De belangrijkste componenten in dit project zijn de IR2101 poortdriver en de IRFZ44N MOSFETs. De IR2101 is een hoog-snelheidsdriver ontworpen voor het aansturen van N-kanaal MOSFETs in een halfbrugconfiguratie. Het maakt efficiënte schakeling en controle van de MOSFETs mogelijk, waardoor de motor soepel kan draaien.

De IRFZ44N MOSFETs fungeren als de schakelingselementen die de stroom naar de motor regelen. Wanneer ze worden geactiveerd door de IR2101, kunnen deze MOSFETs hoge stromen aan, waardoor de benodigde kracht wordt geleverd om de motor aan te drijven. Samen stellen deze componenten in staat om nauwkeurige controle over de draairichting en snelheid van de motor te hebben.

Datasheet Gegevens

FabrikantInternationale Rectifier
OnderdeelnummerIRFZ44N
Logica/IO spanning10 V (VGS)
Voedingsspanning55 V (VDS)
Uitgangsstroom (per kanaal)49 A (max)
Piekstroom (per kanaal)120 A (max)
PWM frequentie richtlijnentot 100 kHz
Invoerlijn drempels2,0 V (VGS(th))
Spanningsval / RDS(on)/ verzadiging0,025 Ω (max)
Thermische limieten175 °C (max)
PakketTO-220
Notities / variantenVeel gebruikt in H-brugconfiguraties

  • Zorg voor een goede warmteafvoer voor de MOSFET's om oververhitting te voorkomen.
  • Gebruik PWM voor snelheidsregeling om een soepele motorwerking te bereiken.
  • Controleer of de voedingsspanning de MOSFET-waarden niet overschrijdt.
  • Zorg ervoor dat de polariteit correct is bij het aansluiten van de motor om schade te voorkomen.
  • Gebruik decoupling condensatoren nabij de voeding om de spanning te stabiliseren.

Bedradinginstructies

Arduino wiring for H-bridge IR2101 with IRFZ44N
Arduino wiring for H-bridge IR2101 with IRFZ44N

Om de RJMD-R2101 motorstuurder aan te sluiten, begin met het aansluiten van de voeding. Verbind de VCC-pin van de stuurder met een 5V-voedingsbron. De GND-pin moet worden verbonden met de aarde van de voeding. Verbind vervolgens de controlepinnen: het PWM-signaal voor de eerste MOSFET moet naar pin gaan.PWM1_HIN1_PIN(pin 9), en de inschakelpunt voor de eerste MOSFET moet worden aangesloten opEN1_LIN1_PIN(pin 8). Voor de tweede MOSFET, verbind het PWM-signaal metPWM2_HIN2_PIN(pin 3) en de inschakelpunt naarEN2_LIN2_PIN(pin 2).

RJMD-R2101 H-Bridge MOSFET Motor Driver 5

Zorg ervoor dat je de motorterminals aansluit op de juiste uitgangen van de H-brug. Als je Arduino gebruikt, sluit dan de PWM-pinnen aan op de aangewezen pinnen op de Arduino-bord. Bijvoorbeeld, sluit aanPWM1_HIN1_PINnaar pin 9,EN1_LIN1_PINnaar pin 8, enzovoort. Deze opstelling stelt je in staat om de motor effectief te bedienen.

Codevoorbeelden en Stappenplan

De code-sectie bevat functies om de motorsnelheid en -richting te regelen met behulp van de gedefinieerde pinnen. Hieronder staat een fragment uit de motorbesturingsschets:

const int PWM1_HIN1_PIN= 9; // PWM pin for first MOSFET
const int EN1_LIN1_PIN= 8; // Enable pin for first MOSFET

In dit deel definiëren we de pinnen die worden gebruikt voor het aansturen van de eerste MOSFET. DePWM1_HIN1_PINword wordt gebruikt voor snelheidsregeling, terwijl deEN1_LIN1_PINschakelt de motorstuur in.

void Motor(boolean direction, int speed=0) {
    int speedPWM = map(speed, 0, 100, 0, 255);
    // Control motor direction and speed here
}

Deze functie neemt eendirectionparameter om te bepalen of de motor met de klok mee of tegen de klok in moet draaien. Despeedparameter is toegewezen aan een PWM-waarde, wat een soepele controle over de motorsnelheid mogelijk maakt.

void stop() {
    digitalWrite(EN1_LIN1_PIN, LOW); // Disable first MOSFET
}

Destopde functie schakelt de motor uit door de inschakelpunt laag te zetten, waardoor de stroomdoorvoer door de motor effectief stopt. Dit zorgt voor een snelle stop zonder de componenten te beschadigen.

Voor de volledige code, verwijzen we naar het complete programma dat onder het artikel is geladen.

Demonstratie / Wat te Verwachten

Wanneer de setup compleet is, zou je moeten zien dat de motor reageert op de commando's die van de Arduino worden verzonden. De motor zal in de opgegeven richting draaien, en je kunt de snelheid aanpassen met PWM-signalen. Veelvoorkomende problemen om op te letten zijn omgekeerde polariteitsverbindingen, die ervoor kunnen zorgen dat de motor in de tegenovergestelde richting draait, en zwevende ingangen die kunnen leiden tot onvoorspelbaar gedrag.

Tijdens het testen kunt u ook opmerken dat de motorsnelheid verandert op basis van de verzonden PWM-waarden. Zorg ervoor dat alle verbindingen stevig zijn om onderbrekingen in de stroomvoorziening te voorkomen, wat de prestaties kan beïnvloeden (in de video om 05:45).

Videotijdstempels

  • 00:00- Inleiding tot het project
  • 02:15- Overzicht van hardwarecomponenten
  • 05:45- Demonstratie van motorische controle
  • 08:30- Code doorloop en uitleg

Afbeeldingen

RJMD-R2101 H-Bridge MOSFET Motor Driver 0
RJMD-R2101 H-Bridge MOSFET Motor Driver 0
RJMD-R2101 H-Bridge MOSFET Motor Driver 1
RJMD-R2101 H-Bridge MOSFET Motor Driver 1
RJMD-R2101 H-Bridge MOSFET Motor Driver 2
RJMD-R2101 H-Bridge MOSFET Motor Driver 2
RJMD-R2101 H-Bridge MOSFET Motor Driver 3
RJMD-R2101 H-Bridge MOSFET Motor Driver 3
RJMD-R2101 H-Bridge MOSFET Motor Driver 4
RJMD-R2101 H-Bridge MOSFET Motor Driver 4
RJMD-R2101 H-Bridge MOSFET Motor Driver 5
RJMD-R2101 H-Bridge MOSFET Motor Driver 5
Arduino wiring for H-bridge IR2101 with IRFZ44N
Arduino wiring for H-bridge IR2101 with IRFZ44N
796-Arduino H-Bridge code to control IRFZ44N Mosfets using IR2101 gate drivers
Taal: C++
/*
 * IR2101 Motorbesturingsschema  
 * Bestuurt een DC-motor met snelheid, rem en stop  
 * IRF44ZN Mosfets gebruikt voor de hoge en lage kant.  
 * IR2101 Poortdriver gebruikt om de MOSFETs aan te sturen.  
 * Je kunt de code, het gerberbestand voor PCB-productie en het bedradingdiagram verkrijgen van http://robojax.com/RJT390  
 * 
 * geschreven door Ahmad Shamshiri op 19 nov 2024  
 * www.Robojax.com https://youTube.com/@robojax
 */
const int PWM1_HIN1_PIN= 9; // moet een pint zijn met ~
const int EN1_LIN1_PIN= 8;

const int PWM2_HIN2_PIN= 3; // moet een pint zijn met ~
const int EN2_LIN2_PIN= 2;

const boolean CW =1;
const boolean CCW =0;


void Motor(boolean, int); // prototype
void brake(); // prototype
void stop(); // prototype

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); // in CW op 50% snelheid
  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);
  }

}




Hulpmiddelen en referenties

Bestanden📁

Gerber files