Back-EMF Zero Cross Detection Method (ESC)

Thread Starter

mwalden824

Joined Mar 6, 2011
51
I am working on my Senior Project and I have created the circuit shown below on a breadboard which is supposed to be an Electronic Speed Controller for a small BLDC RC motor with ratings of 25 A, 11.1 V, 1250 RPM/V so ~13,875 maximum mechanical RPM with 14 Poles and 12 stator windings, 3-Phase, Y connected floating neutral. I have the motor spinning in open loop. I first align the motor by raising phase A high and phase B low, which is the first in my drive pattern. Then I clamp all three bottom transistors (turn them on) for about 200 ms. I believe this is called active braking, but I am not sure. I was told it was supposed to stop the rotor if it spun past the position it should be in because of angular momentum. Then I use a ramp up function that starts at about 1 rps then it ramps up linearly by decreasing the time between switching to the next sequence in the drive pattern and ending at about 300 RPM mechanical. I use a temporary function to get it to stay spinning at this speed that I will take out later.

OK here is the problem. You see the circuitry I use for the Back-EMF detection and the capacitor that I am using doesn't round the square waves of the PWM too much. I am attaching it into the ADC channels 1, 2, and 3, and the software always monitors the floating phase wire. In the software I am waiting for the value to fall between 500 and 524 (10 bit ADC 2^10=1024) for some tolerance. I have adjusted these values. I still can't get it to spin in closed loop. I was just wondering if this could be a hardware problem? If you can see anything wrong with the schematic?

By the way, I have snubbers on the schematic but I haven't actually attached any yet because I am not sure exactly what values I should use? I know the idea is to reduce the inductive kick of the motor but I just don't know exactly a way to calculate or even approximate values for this? Any tips for me?

I will post my code for the function that waits for the "zero crossing/half way crossing" if necessary. It is the only thing I added to the code besides some macros and such before it quit working. Also, the motor still spins up to to ~300 RPM before switching over to this detection method then quits spinning altogether.

Thanks for any help.
 

Attachments

Last edited:

Thread Starter

mwalden824

Joined Mar 6, 2011
51
Can anyone atyleast point me in the right direction on how to come up with the values for the snubbers on each phase? Would just trial and error work until those voltage spikes come down to a reasonable level? or is there some way to calculate it based on motor characteristics and other characteristics, etc.?

That's all I really want to know. I almost have the closed loop working now. Just tuning it.

Thanks for any help,
Michael Walden
Senior Student Electrical Engineer
University of South Alabama
 
Top