Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] Dead Time in SPWM Motor Control Design

Status
Not open for further replies.
RC = 2.12us

But.. what's the voltage divider for? You're not using schmitt-trigger inverters?
 

RC = 1us/ln(4/2.5) = 2.12 *10^-6

Thus std values of R and C

R =100 ohm
C = 22nf

R1 ,C1 , R2, C2 ?????

- - - Updated - - -

Sorry sir ,

at first i Use opamp ckt..

now using schmit trigger 7414 ic

Vcc = 5v

so
UTP is 1.7v
LTP is .9v
 

You better use schmitt-trigger inverters. It's more easy to implement (they already have low/high thresholds), you've got six of them in one IC, they're faster, low consumption and so on. And you could use the rest of them in your circuit as simple inverters, too.

If you use an opamp as a comparator with a single threshold then you'll get output oscillations for sure (thus you have to use a hysteresis network).
 

Thnks sir

Vcc pin (14) of schmith trigger is 5v

Thus

LTP is .9 v

RC = 1us/ln(4/.9) = 6.7 * 10^-7

whats the value of R1 C1 R2 C2 ???
 

is this schematic is fine ?? IMG-20150223-WA0040.jpg

- - - Updated - - -

is this schematic is ok ??
 
  • Like
Reactions: karms

    karms

    Points: 2
    Helpful Answer Positive Rating
thnks

is power supply for 7414 and 7404 is 5v ??

next i wana to interface the output of schit trigger with 6n137

Anode of 6n137 is connected to 5 v.

and cathode is connected to output of schmit trigger through 390 ohm resistor.
 

sir,

i checked the output of schmit trigger is 4.85 V,

if i didnt supply inputs (3 inputs A,B,C)

Output Of 6 pulses is

1 - low>>>A
2- high>>>a
3- Low>>>B
4-high>>>b
5 -Low>>C
6 - high>>c

is this ouput is ok,??

can i get the output of 6 pulses is low,when the 3 input is jus floating, not connected to 5v or gnd ??

next i wana to interface deadtime ckt (output of schmith trigger) with optocopler 6N137

The output of schmith trigger (6 pulses, which is high) is 4.8v
ANODE of 6N137 IS connected to 5 V

cathode is connected to the output of schmith trigger through a resistor

the value of resistor is 390 ohm,

is this resistance value is right ??

pull up resistor of 6n137 is 390 ohm connected to 5.4v

is this pullup resistor value is right ??

regards

mobin
 

Just check if every inverter input/output is complementary. If the inputs are floating (not desirable for normal operation) the inverter could still read it as low (bellow the "high" threshold) thus the output will be high. For regular inverters (not having hysteresis) the output will oscillate so never let them floating.

If you want to do some further tests, just use some pull-up/pull-down resistors for those inputs.
 

Thnks Sir,

I got the supply voltage at Vcc ,GRnd of 6n137 is 5.4V
vdd and Vss is 5.4V

Vcc and Com is 15.8V

If i give Hin , to the driver Ic, HO+ output will high nly for few seconds,

I think the bootstrap capcitor voltage will down , driver ic will lockout,

or any other problem??

how to check the high side driving out of Fan7392??


should i use pull down resistor to the input of dead time??

Input to the deadtime ckt is arduino uno pwm pins 9,10,11 .
 
Last edited:

If i give Hin , to the driver Ic, HO+ output will high nly for few seconds,

The bootstrap capacitor is only charging when the low-side IGBT (MOSFET) is in ON state (that's the bootstrap technique) thus you can't keep the high-side in ON state for a long period.

For testing purpose only, you could tie the Vs terminal of FAN7392 to ground (without any IGBT connected) to have the bootstrap capacitor always charged then you could check if the high-side driver is woking properly.

should i use pull down resistor to the input of dead time??

It's not necesary during normal operation, just define those Arduino pins as outputs in the setup{} subroutine then set them up as to keep the low-side IGBTs in ON state for a while, to allow for bootstrap capacitor charging.
 

It's not necesary during normal operation, just define those Arduino pins as outputs in the setup{} subroutine then set them up as to keep the low-side IGBTs in ON state for a while, to allow for bootstrap capacitor charging.

i defined the 3 pwm pins 9,10,11 as output in setup ()

pls check the code

void setup()
{
pinMode(LED_PIN, OUTPUT);
// sets the digital pin as output
Serial.begin(115200); // connect to the serial port
Serial.println("DDS Test");

pinMode(TEST_PIN, OUTPUT); // sets the digital pin as output
pinMode(PWM_OUT_1, OUTPUT); // PWM output / frequency output
pinMode(PWM_OUT_2, OUTPUT); // PWM output / frequency output
pinMode(PWM_OUT_3, OUTPUT); // PWM output / frequency output

// Setup the timers
setup_timer1();
setup_timer2();

// disable interrupts to avoid timing distortion
cbi (TIMSK0, TOIE0); // disable Timer0 !!! delay() is now not available
sbi (TIMSK2, TOIE2); // enable Timer2 Interrupt
dfreq = 1000.0; // initial output frequency = 1000.0 Hz
tword_m = twoTo32 * dfreq / refclk; // calulate DDS new tuning word
}

then set them up as to keep the low-side IGBTs in ON state for a while, to allow for bootstrap capacitor charging.

how to set them up as to keep the low - side IGBTs ON ??

also i wana to use external interrupt to sense the rpm speed of induction motor by hall sensor ,

by using attach interrupt ().

In setup Timer 0 is disabled
should i enable the Timer 0 to use attach interrupt () ,millis()??

pls check the code

// read RPM and calculate average every then readings.
const int numreadings = 10;
int readings[numreadings];
unsigned long average = 0;
int index = 0;
unsigned long total;

volatile int rpmcount = 0;//see **broken link removed**
unsigned long rpm = 0;
unsigned long lastmillis = 0;

void setup(){
Serial.begin(9600);
attachInterrupt(0, rpm_fan, FALLING);
}

void loop(){


if (millis() - lastmillis >= 1000){ /*Uptade every one second, this will be equal to reading frecuency (Hz).*/

detachInterrupt(0); //Disable interrupt when calculating
total = 0;
readings[index] = rpmcount * 60; /* Convert frecuency to RPM, note: this works for one interruption per full rotation. For two interrups per full rotation use rpmcount * 30.*/

for (int x=0; x<=9; x++){
total = total + readings[x];
}

average = total / numreadings;
rpm = average;

rpmcount = 0; // Restart the RPM counter
index++;
if(index >= numreadings){
index=0;
}


if (millis() > 11000){ // wait for RPMs average to get stable

Serial.print(" RPM = ");
Serial.println(rpm);
}

lastmillis = millis(); // Uptade lasmillis
attachInterrupt(0, rpm_fan, FALLING); //enable interrupt
}
}


void rpm_fan(){ /* this code will be executed every time the interrupt 0 (pin2) gets low.*/
rpmcount++;
}
 
Last edited:

You didn't mention on the schematic above the signal identifiers (low-side/high-side driver inputs) so I can't tell what branch will drive the low-side IGBTs. Just follow the path from arduino pins to driver inputs to identify what state the arduino pins should have to turn on the low-side IGBTs.
 

pls check the schematic,

also the component values

R = 100 OHM, C = 10NF

RC = t/(Vi/Vthl)

Vi = Vcc - Vf

= 5 - 1
= 4V

Vcc of 7414 schmith trigger is 5v

Thus Vthl is .9v
is this dead time is 4.4us??

should i decrease the deadtime to 2us??
View attachment deadtimeckt.BMP


arduino uno pins

pin 9 >> A

Pin 10 >> B

PIN 11>> C
 
Last edited:

You already made some calculation (check the post #24 above) for the RC constant:

RC = 1us/ln(4/.9) = 6.7 * 10^-7 (deadtime = 1us)

For a different deadtime ("k" us), just multiply the above formula with "k".

The "A" input from Arduino corresponds to "A" output toward driver. If "A" is low-side driver input and "a" is high-side driver input then you have to put Arduino output pins to "HIGH", to get "HIGH" at the low-side driver inputs thus turning on the low-side IGBTs.

Keep those pins "HIGH" for a short delay (0.5s or something) at startup to allow bootstrap capacitors to fully charge, then you could start the timers to generate the sPWM signals.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top