DIY Brushless Speed Control - Page 13 - RC Groups
 Jan 31, 2004, 08:56 AM Registered User Takao, The oscillogram is nice and clean. I assume there was no pwm, the Fets are open all the time. What is the time/div and y/div on the picture? The ringing can be lowered by using using lower value resistors in the R13,14,19 positions (1k). Anyway, if the ringing is as short as looks on the picture, it is not important at all. Would yo please show some oscillograms when the signal is not so perfect?
Jan 31, 2004, 09:50 AM
Registered User
mmormota,

>What is the time/div and y/div on the picture?

X:100uS/Div.Y:0.5V/div.

>it is not important at all.
Well, to catch and measure timing for the 1/2Vcc point with duty on/off control, You would be in trouble. I need to find new idea.

>Would yo please show some oscillograms when the signal is not so perfect?
I will show you some difficult wave forms, later.
I am writing the timing compensate control routine.

Anyway, Kreature,

The EMF sampling data in timing diagram is here.
You may need to measure the ringing at FETs off as all opened to get back EMF.

.equ duty_max =240 ;on-duty timing at maximum power.
.equ phase_max =2 ;phase timing at maximum speed. frame frq.=CLK/1/256(40kHz)/this value. Consider sampling law.

### Images

 Jan 31, 2004, 10:58 AM Impossible? Hah! mmormota I understand the limits you have because of the method you use. Anyway... You say the drive voltage would interfere. This is actually not quite true. The great thing is that the +/- drive cancel each other aout and create a offset of v/2 for the EMF. I have researched this extensively. On my image earlier this thread, I show you the signal I achieve. The reason I have no trouble with the phase driving voltage is because I composite all 3 phases into a single EMF signal. This is what cancels out the drive-voltage. (There is always a high fet and a low fet active, in any place along the EMF wave, in addition to a strong PWM on it. The lower signal on my image is only a single phase. I will post a image when I get home of the unfiltered composite EMF signal. Then you will see why the only thing I need to consider is: 1. Filter out PWM while causing as little phase-shifting as possible for the EMF signal. Alternatively causing a max of 29-30° phase shift to allow for time to detect and react in time for 0-30° lead-angle (for later software) The phase would either be ignored in the 0-2° case or it would be compensated for in steps based on a lookup-table, at a resolution good enough to achieve about 2° accuracy throughout the rpm-range targeted. 2. Filtering out the DC-offset from the signal and impose my own 5v/2 offset. This will allow direct TTL signal conversion through minimal phase offset. Each state transition on the TTL signal can then be treated as a commutation signal and be used to adjust the timer used for commutation. If no signal is received within a certain time, commutation will be stopped and all phases tristated. Then one can continue for a certain timeframe to listen for a new commutation signal and if this period ellapses without a new signal, synch can not be regained and one should do a full lower-side shortout to use EMF breaking to stop the motor completely. Then one goes back to forcably commutating the motor in a new startup-sequence. Because I will have to use off-cycles to do commutation detection, and I will not have any duty-cycle limits I can achieve very high frequency commutation. The limit would be set by the error created in the EMF filter. The higher the commutation frequency the better the EMF signal, and at full duty the EMF is gone and it would be possible to just use a small filter to take out the commutation noise.
 Jan 31, 2004, 05:27 PM Impossible? Hah! Here's a image of a raw phase during running (bottom) and of the composite EMF signal (top). Notice the two shadows of the EMF signal and the lack of other "issues". The posetive and negative drive voltage always cancel each other out and the pwm causes 2 intermittent ghosts. The v/div is 5v and the time/div is 2ms. The image is poor, but the upper and lower ghosts are composed of 10 kHz 10% duty pwm noise and will dissapear when filtered. By then removing DC-offset from EMF signal and imposing my own 2.5v offset I will have a clean signal for commutation.
Jan 31, 2004, 07:50 PM
Registered User
This is one of the worst wave form.

X:200uS/div. Y:0.5V/div.

Vcc:6V, loaded by my hand to get slow down.

### Images

 Jan 31, 2004, 08:20 PM Impossible? Hah! I just stuffed the Berka-Herpy filter through Multisim with 3 CA3240E OpAmps. (Basically the 3240 is a dual version of the 3140 to save boardspace.) I get 2.4° phase shift at 6,000 Hz and I just realized a cool thing. My EMF signal is half the frequency of what I thought. After all, it is on every rising *and* falling flank there is a commutation, not only rising. Thus commutating 6,000 times pr second only creates a 3,000 Hz waveform This means I can redesign my filter for 3kHz instead of 6 kHz ! 0° here we come! Oh, the way it is now: at 6Khz I have 2.4° phase delay and -24 dB attenuation. I want double the attenuation and I'll also go for half the frequency, but at 0°... Should be possible with only 2 OpAmps
 Feb 01, 2004, 08:08 AM Impossible? Hah! Man, I must have been tired yesterday... 6000 commutations pr second only creates a 2,000 Hz EMF sinewave... Well, this is great news, wonder how I could have missed it.
Feb 01, 2004, 09:27 AM
Registered User
Quote:
 Originally posted by Takao Shimizu This is one of the worst wave form. X:200uS/div. Y:0.5V/div. Vcc:6V, loaded by my hand to get slow down.
Takao,

Thank you for the answers and the oscillogram.

If I read the oscillogram the right way, the situation is as follows:
- the simple comparator suffered from the smaller and maybe slightly asimmetrical input under load
- the forced drive followed the improper comparator input
- the oscillogram shows the situation when the drive is highly asymmetrical too, and it makes the job of the comparator harder
- a small comparator error occours in a driver phase error, and it forces a bigger comparator error.

If this is the situation, there are several ways to improve:
a, in the firmware equalise the commutation points, filter out the phase jitter of the comparator:
- use a moving average representation of the rotor phase and
cycle time
- the commutation is based on this internal representation of the phase
- the represented phase is slowly following the comparator input, every input is correcting it a little bit

b, the comparator itself can be improved:
- use a/d converter instead of comparator, the a/d samples the signal of course in the time windows between the fet switch glitches
- sample the signal as much as the controller can handle, and use this analog signal to correct the moving average

More about the representative moving average:
- the internal representative has 4 parameters: amplitude, cycle time, phase, zero voltage if a/d is the input (2 parameters only, cycle time and phase, if comparator toggle is the input)
- when an input a/d value is coming, the algorythm compares it to the internal values, and corrects the internal parameters according to the error
- this is kind of a negative feedback. the tau loop parameter depends on the necessary delta(rpm) / delta(t)
- the fet drive follows the internal representative, it is a moving average, free of phase unequality and input jitter (but , on the other hand, suffers from the usual negative feedback problems like overshot, ringing if not properly tuned)
 Feb 01, 2004, 09:17 PM Registered User mmormota, There is no hardware problem. Takao
 Feb 02, 2004, 12:05 AM Dreamin' in 3D So does anyone have a working brushless DIY controller that can be built yet?
 Feb 02, 2004, 01:34 AM Registered User Well yes Blackhawk3D. Currently waiting for some long leed components to complete my version 3 board. Hope to fly with this one soon. Mine is probably far to difficult for most people to build. You need a good microscope to do the soldering and some experiance in soldering fine pitched SMD ics ect.
 Feb 02, 2004, 06:52 AM Impossible? Hah! Mr DIY One of my biggest headaches is finding a good chip for the BEC. Wich one are you using ? Low dropout and high current usually implies large, bulky non SMD parts.
 Feb 02, 2004, 07:17 AM Registered User When I though I had everything sorted out, out popped the biggest heat problem of all …BEC. Yea ... the BEC will always be a problem no matter which chip you go for if you intend using more than 8 or 9 cells. I did not want to go bigger than DPAK size, so I have ordered and waiting for a cheap On-Semi NCP1117 5Volts Regulator in DPAK. 1.2V drop at 800mA, but does handle above 1 Amp. For simple 3 cell li-poly pack, it should be OK. I did experiment with a Toshiba 5V dpak device (not low drop-out) with 3 servos to see how much heat is going to be generated. The average current over time is small, but the peak power can be high. Did not have a problem with 3 modern servos. Some older servos did draw excessive current though and push the limits to above the limits that I would be happy with. The PCB layout must also be designed in such a way to help remove heat. The pad under my device has 30 off 0,3mm vias. The vias really help suck the heat through the board. It is also my intention to add a small lightweight piece of copper shim (if required). Time will tell.
 Feb 02, 2004, 07:47 AM Impossible? Hah! I will use a regulator the same size as my FET's. Then I can use a alu sink over it together with the FET's. Just like most controllers use. However, My first brushed design used a circuit where I hadn't checked the drop. Result was it crashed every time I used more than 60% throttle... Reason was the 8 batterys were loaded down to 0.75 v/cell quite fast and this stopped the servos as BEC voltage now was a mere 4 volts. I have found a cheap circuit with only 1.15 volt drop, and it is available at my local electronics store. Will pick it up and test it. Worst case, I will use 2 of them.
 Feb 02, 2004, 10:14 AM Dreamin' in 3D Are there any simpler controllers that could be built by someone with limited experience, even on a breadboard for the first try?