Md. Khairul Alam
Published © Apache-2.0

High Power DC Motor Starter with Overload Protection

A DC motor starter using 600 V CoolMOS™ C7 Gold superjunction MOSFETs for industrial applications.

IntermediateProtipOver 1 day4,015
High Power DC Motor Starter with Overload Protection

Things used in this project

Hardware components

CoolMOS C7 Gold SJ MOSFET
Infineon CoolMOS C7 Gold SJ MOSFET
×4
Arduino Nano R3
Arduino Nano R3
×1
Infineon IR2110 Gate Driver
×2
Linear Regulator (7805)
Linear Regulator (7805)
×1
Resistor 1k ohm
Resistor 1k ohm
×4
Resistor 100 ohm
Resistor 100 ohm
×4
1N4148 – General Purpose Fast Switching
1N4148 – General Purpose Fast Switching
×4
47 Ohm, 50 W Resistor
×3
Capacitor 1 µF
Capacitor 1 µF
×2

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

Schematic Diagram

Design in Eagle CAD

Schematic PDF

PCB Layout

PCB Layout PDF

Schematic SCH File

Eagle Schematic File

Eagle Board File

Eagle BRD file

Code

Arduino Sketch

Arduino
const int sensorIn = A0;
// Set your scale factor
int mVperAmp = 40; // See Scale Factors Below

/* Scale Factors
50A bi-directional = 40
50A uni-directional = 60
100A bi-directional = 20
100A uni-directional = 40
150A bi-directional = 13.3
150A uni-directioal = 26.7
200A bi-directional = 10
200A uni-directional = 20
*/

// Set you Offset
int ACSoffset = 600; // See offsets below

/* Offsets
If bi-directional = 2500
If uni- directional = 600
*/

int RawValue= 0;
double Voltage = 0;
double Amps = 0;

const int mos1 = 4;
const int mos2 = 5;
const int mos3 = 2;
const int mos4 = 3;

const int button = 2;

void setup() {

pinMode(mos1, OUTPUT);
pinMode(mos2, OUTPUT);
pinMode(mos3, OUTPUT);
pinMode(mos4, OUTPUT);
pinMode(button, INPUT_PULLUP);

if(!digitalRead(button)){
  digitalWrite(mos1, HIGH); //start the motor with 150 ohm
  delay(5000);

  digitalWrite(mos2, HIGH); //short one 50ohm
  delay(5000);

  digitalWrite(mos3, HIGH); //short another 50 ohm
  delay(5000);

  digitalWrite(mos4, HIGH); //short last 50 ohm
  delay(5000);
  }

}

void loop() {
  if(calculateCurrent()>3){
    digitalWrite(mos1, LOW);
    digitalWrite(mos2, LOW);
    digitalWrite(mos3, LOW);
    digitalWrite(mos4, LOW);
    while(1);
    }
  delay(10);
}



double calculateCurrent()
{   
    RawValue = analogRead(sensorIn);
    Voltage = (RawValue / 1023.0) * 5000; // Gets you mV
    Amps = ((Voltage - ACSoffset) / mVperAmp);
    return Amps;
}

Credits

Md. Khairul Alam

Md. Khairul Alam

68 projects • 584 followers
Developer, Maker & Hardware Hacker. Currently working as a faculty at the University of Asia Pacific, Dhaka, Bangladesh.

Comments