I will collect here requests and information concerning the BLMC, that I expect to be interesting for all.

last update: 2004-08-18

 

What is the PWM frequency and max. Controller frequency ?
How many amps can you get with your SI4420 & 25 devices ?
What about max. RPM ?
Is it starting up safely all the time ?
The efficiency is comparable to a commercial controller ?
How can I program the AT90S2313 ?
Can I lower the start-up current ?
How can I change the UB-low cut off value ?
What means the beep signal ? - What rc-puls range is used ?
How can I get a longer beep ?
What means .if RC_PULS == 1 ?
What happens if no valid rc puls is received ?
How can I change the dymamic for power regulation ?
Does a BRAKE exist for folding props ?
Can I disable current-control ?

 

What is the PWM frequency and max. Controller frequency ?

The PWM has a period of 100µs that makes a frequency of 10kHz. The conroller runs with 8MHz. 100µs makes it all very easy: the rc-puls from 1100µs to 1900µs is evaluated and the range (800) than shifted right 3 times means divided by 8 - makes 100 and is directly used for PWM. Timer0 is set to 1µs and has only to generate the PWM and to evaluate the PWM state.

 

How many amps can you get with your SI4420 & 25 devices ?

The FETs should run near to 8A. But then they should have at least a sheet of alu for cooling. Without I think it's good for 5A continuously. My destinations are cdrom motors with neodym with the powerrange fo 6 to 7 cells and about 5A max.

 

What about max. RPM ?

There is an upper limit, fixed in the software, to detect a deadlock in the commutation control-loop on startup. Since software version 3.02 there is a maximum RPM of 138000 for full power down to 73000 for lowest power.

 

Is it starting up safely all the time ?

I can stop the running motor and it restarts again. I never had a deadlock with this software version.

 

The efficiency is comparable to a commercial controller ?

I think it is. With an excel sheet I made some efficiency calculations. The calculations were satisfying and the controller kept cold.

 

How can I program the AT90S2313 ?

I use a STK200 dongle. The schematic along with a great programming software can be found here: http://www.lancos.com/prog.html

 

Can I lower the start-up current ?

Since version 3.02 a duty-cycle-limiter is implemented for low RPM.

The minimum startup-current is defined by MIN_DUTY=16, but you can also try value down to MIN_DUTY=8 .

 

How can I change the UB-low cut off value ?

Because the comparator only can detect higher or lower, the resistor values has to be changed for different UB-low values. The voltage at the green LED is about 1.85V. With 10k from (+) to GND the resistor from (+) to UB is calculated in this way:

R = ( ( UBlow * 10k ) / 1.85V ) - 10k

Examples:

6.4V for 2 LiPoly => R = 24k6
with 24k you get 6.3V

9.6V for 3 LiPoly => R = 41k9
with 43k you get 9.8V
with 39k+2k7 you get 9.56V

But you should control the voltage at the green LED or comparator (-) first. Maybe, that different LED-types have different voltages.

 

What means the beep signal ? - What rc-puls range is used ?

If it beeps once it is a good sign: The At90S2313 works and at least 2 half-bridges are connected and can be controlled.

Only if the rc-puls is lower than 1100µs it beeps additionally twice for low pulse detection. If all detected pulses are higher than 1100µs nothing will happen. For full power the rc-puls must be higher than 1900µs. This I did for simple pulse evaluation.

If you have a servo-reverse it may be set wrong. Low speed must be short pulse and high speed must be long pulse.

 

How can I get a longer beep ?

Try this and you should have doubled the beep time:
****************
ldi temp2, 250
beep_ApBn: clr temp1
....
wait260ms: ldi temp2, 250
beep_ApBn20: ldi temp3, 8
****************

 

What means .if RC_PULS == 1 ?

I use conditional assembling in the source to switch simply from development to release version. If you are using a AVR assembler lower than version 1.74 there may be trouble with the conditional assembly directives. An appropriate version is included in AVR-studio4.

Settings for rc-control:
.equ UART_CONTROL = 0
.equ UART_FULL = 0
.equ RC_PULS = 1

 

What happens if no valid rc puls is received ?

If 100 times timer1 overflows and no valid rc-puls is received, the system
restarts (in state6).

.def rcpuls_timeout = r11
.equ RCP_TOT = 100

 

How can I change the dynamic for power regulation ?

CHANGE_TIMEOUT and CHANGE_TOT_LOW are responsible for the dymamic.
CHANGE_TIMEOUT controls the power-up timing and
CHANGE_TOT_LOW controls the power-down timing.

The active values are:
..equ CHANGE_TIMEOUT = 0x64
..equ CHANGE_TOT_LOW = 0x50

The former values with faster reaction were:
..equ CHANGE_TIMEOUT = 0x32
..equ CHANGE_TOT_LOW = 0x28

You can test different values, but don't go very much lower as 0x32 and 0x28

 

Does a BRAKE exist for folding props ?

No, there is still no brake implemented. Thanks to Sergey meanwhile I know, how it should work.

 

Can I disable current-control ?

Change the following lines:
****************
; do it not more often as every 65µs
cbr state2, (1<<T1OVFL_FLAG)

; control current
eval_sys_i: sbrs state0, I_pFET_HIGH
rjmp eval_sys_i_ok
****************

in this way:

****************
; do it not more often as every 65µs
cbr state2, (1<<T1OVFL_FLAG)
rjmp eval_sys_i_ok
****************

and current control is disabled.

 

Back