Control a BLDC-Motor with k8055?

dear user,
now I want to start a new project and I don´t know whether it will work or not with k8055. I am new to the field !!
1-so I want to controll a tree phase Brussles DC-motor with the k8055, it has only 2 PWM output but I need 3 PWM Output for my project ! How could I extend it to reach my target ?
2- I don´t know at that point, wath I will need for that project ! if someone of you has done something like that , could you tell me how you did it?
thank you for your suggestion/ help.

well, there is nobody who can give me a little bit help? I found out that I can connect two vellema Bord to be able to get tree or more PWM output, so to drive my bldc there is no more problem to optain 3 PWM over the tree phasis. i thing the problem will be: how can I synchronize this two Bords each other to optain a good result?
have someone already do a control of motor(dc or ac) on the k8055 ? how was it? which problem did you have?
thank you.

I am not entirely sure what exactly you try to accomplish.

Is it that you want to replace the inverter and control circuits of the BLDC with a K8055, so that the K8055 directly controls the rotation of the three phases?

Regards,
MH

thank you MostlyHarmless for your reply,
Like I said bevor, I don´t know if It will work, that´s why I asked it here .
so I want to control a rotation of bldc directly with k8055 because it have a pwm output, It is important for me to disigned my proper controller like PI-Control to realise my gool.but if it is not possible how can I do it else with that Bord, because I bought it to ralise simple experiment at home.
thank you.

[quote=“lolok8055”]thank you MostlyHarmless for your reply,
Like I said bevor, I don´t know if It will work, that´s why I asked it here .
so I want to control a rotation of bldc directly with k8055 because it have a pwm output, It is important for me to disigned my proper controller like PI-Control to realise my gool.but if it is not possible how can I do it else with that Bord, because I bought it to ralise simple experiment at home.
thank you.[/quote]

I may be wrong, but I do not think that it will be possible with an original K8055. Keep in mind that this is a USB experiment board, not a microcontroller experiment. The PIC on the K8055 is relatively “dumb”. The design idea for the K8055 is that most of the logic, when to do what, is in a program on the controlling PC, not on the board.

And there are limitations on what you can tell the K8055 to do. You cannot control the PWM frequency, it is fixed at 23.43 kHz. Nor do you have any way of synchronizing the beginning and end of the duty cycles of multiple PWM outputs. I think you need to do both to pulse the three phases properly timed.

Also the controllers for BLDC motors need some way to determine the angular position of the rotor to time the pulses correctly and to start the motor in the right direction. A motor starting up from a dead stop doesn’t spin at the desired speed instantaneously. Your controller can’t just hammer in pulses at some random frequency. BLDC controllers either use something like hall effect sensors, or the EMF detected in the unused coils, to do that. Obviously when the motor is standing still, there is no EMF, but that’s a whole different can of worms, so let us assume hall effect sensors or switches for this discussion. You would divide the full rotation of the rotor into three sections named 1, 2 and 3. While the rotor is in section 1, you drive coil 2 to pull it into section 2. When it reaches section 2 (beginning at about the dead stop of the rotor when coil 2 is permanently on), you turn off coil 2 and drive coil 3 and when it is in 3 you drive coil 1. Rinse and repeat. As the motor speeds up, your controller increases the frequency of the pulses.

All that could in theory be done using 3 digital inputs and 3 digital outputs. No PWM needed at all.

There are however limitations imposed by how the K8055 communicates with the PC over USB. It only reports input states every 10ms (the newer K8055N every 1ms). Each full rotation sends 3 different states as the rotor passes through the 3 sections. To operate reliable, any sampling needs to be done twice as fast as the highest possible input frequency. So with a sampling rate of 100 Hz (one sample every 10ms), your motor should not exceed 15 rotations per second, or 1,000 RPM. Otherwise you run the risk of your controller misfiring the coils.

A bigger problem with the slow IO protocol would be that as the motor reaches the desired speed, you need to shorten the duty cycle of the 3 pulses so that they don’t cover the whole 120 degrees of each section any more. That would require much more precise timing and I’m afraid that the K8055 just can’t do that. You may get away with just not firing some pulses at all at this point.

The above may be good enough for an experiment, or a proof of concept.

To do it right, you would be looking at a microcontroller experiment, where you program all that logic sensing the current rotor position and reacting to that by activating/deactivating the individual coils into the PIC and your PC only tells it the desired RPM. That is not possible with the original K8055. It may be possible to do that by exchanging the PIC with one that you can reprogram, as explained here: jannicash.info/k8055/ (link at the bottom for Hardware Modification). But be warned, that is a much bigger project than just exchanging the microcontroller. You will also need to modify the DLL with new commands and add the functionality to the PIC firmware. For high RPMs, it would preferably be interrupt driven, which presents yet another problem because the PIC18F2550 ports that support interrupts are the B-ports, which on the K8055 are used for the 8 digital outputs :frowning:

PICs are a lot of fun and can do a lot more than what is used on the original K8055. I did the above modification to my K8055 and now have a hybrid board that allows me to do mixed USB+microcontroller experiments.

Regards,
Jan

Hi,
Now I realise that it is difficult to drive/control a Motor on that Borad (frequency of PWM not variable !)

"You would divide the full rotation of the rotor into three sections named 1, 2 and 3. While the rotor is in section 1, you drive coil 2 to pull it into section 2. When it reaches section 2 (beginning at about the dead stop of the rotor when coil 2 is permanently on), you turn off coil 2 and drive coil 3 and when it is in 3 you drive coil 1. Rinse and repeat. As the motor speeds up, your controller increases the frequency of the pulses.

All that could in theory be done using 3 digital inputs and 3 digital outputs. No PWM needed at all."

This is what I will try first and hope that it will work and!

I Will post here the result when i had tried your suggestion.

soko.