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.
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
-
23 KB Views: 140
-
10.2 KB Views: 125
Last edited: