8i20/BLDC component, limited spindle speed

More
21 Jul 2018 22:31 #114645 by blazini36

We've run the 8I20 over 6000 RPM with a 4 pole motor and LinuxCNC/BLDC

I suggested tuning changes because you stated that changing the servo thread rate didn't make a substantial difference (which is quite surprising) and I thought it might be that you had a low inductance motor so the default current loop tuning parameters were too high. This can lead to oscillations/ringing on the steps in commutations

Can you try a 2 KHz servo thread again with no other changes?

Or as Andy suggests, adjusting the lead angle when its running at high speed to see if the commutation delay is really the issue
or there's something else limiting your speed (motor voltage encoder setting etc, etc)

The motor is no name-plate 750w 6pole BLDC with 3 hall sensors. I believe I figured the pole count by applying a voltage to 2 leads and counting 3 cogs in 1 rotation. The original drive was just a chinesium board with no transformer of any actual mass and a couple of big caps so I assume it rectified 120v AC to ~160v DC and this ran at 2500rpm. I have the 8i20 powered from a 120vAC-bridge rectifier-2,1000uf caps=160vdc. My mains is switched by 2 solid state relays and I can easily take the plug off the power cord, stick a 240v drier plug on it and the power supply will be at 320v, but I doubt the motor can take that (any thoughts?)

Alright, so setting the servo thread to 500000 and starting the gui, A requested spindle speed of 3000 nets only a speed of just under 2100.

The BLDC lead angle is set in the hal file to 90 (always has been)

if I setp the bldc lead angle while it's running at a speed below the requested (2100 vs 3000) I get no noticeable change in speed. It eventually starts to hover around 2200 rpms.


Attachments:

Please Log in or Create an account to join the conversation.

More
21 Jul 2018 22:36 - 21 Jul 2018 22:38 #114646 by blazini36
BTW the motor runs cool as a cucumber at almost all times without any fan attached. only time I've ever seen it heat up is when I stalled it and didn't realize it(suppose I should write stall protection into the hal e-stop loop at some point). I don't know that that implies it's capable of higher voltage or not though I suppose it implies that I didn't draw 5amps from the line side to pop the fuses with the 8i20 current limit set at 10 amps.
Last edit: 21 Jul 2018 22:38 by blazini36.

Please Log in or Create an account to join the conversation.

More
21 Jul 2018 22:53 - 21 Jul 2018 23:06 #114648 by PCW
Are you sure the original drive did not use a voltage doubler to 320VDC?
This is really common in 3 phase drives...


Note that when stalled, the motor current can be much higher than the line current
perhaps as much as 5-10 times higher depending on the drives winding resistance.

BTW you can determine the motors V/RPM spec by spinning the motor some convenient way
and measuring the AC phase/phase voltage and the RPM
Last edit: 21 Jul 2018 23:06 by PCW.

Please Log in or Create an account to join the conversation.

More
22 Jul 2018 01:36 #114650 by blazini36

Are you sure the original drive did not use a voltage doubler to 320VDC?
This is really common in 3 phase drives...


Note that when stalled, the motor current can be much higher than the line current
perhaps as much as 5-10 times higher depending on the drives winding resistance.

BTW you can determine the motors V/RPM spec by spinning the motor some convenient way
and measuring the AC phase/phase voltage and the RPM


5-10 times, wow thats scary. I assumed the 8i20 limited the amount of current that went through it to the setting,is this not the case? There'2 no transformer in my 8i20 drive so I'm not sure what the winding resistance might be unless we're talking about the motors windings.

I didn't even know such a thing as a voltage doubler existed.

I hooked up a cordless drill to my spindle and set the 2:1 pulley. The drill rated a speed of 1300 so I estimated 2600rpms at the motor. I read 66v between 2 phases so I wasn't sure what to make of that.

Please Log in or Create an account to join the conversation.

More
22 Jul 2018 02:47 #114652 by PCW
The 8I20 does limit the motor current, but you cannot determine the motor current from the line current, as they are completely different values. Think of the 8I20 as being a step down switching power supply. When the motor is slow or stopped it has very low voltage say 10A at 20V (200W) but this is just 1A at 200V...

Many 120V VFDs have a full wave voltage doubler and run 230V motors...

Please Log in or Create an account to join the conversation.

More
22 Jul 2018 03:29 - 22 Jul 2018 03:29 #114654 by blazini36
I got ya, so realistically logic to trigger the estop when rpms or out of range is really the only way to handle that since the manual warns against motor side fuses.

I hadn't thought of VFDs, I work with small 1-5hp single to 3 phase VFDs all the time at work and didn't even think of that.

Any thoughts on why I only pulled 66v off the motor when I spun it?

A quick google search of a voltage doubler showed a couple of large caps and diodes. Now I assumed the caps on the original drive were just rectifier filter caps but I suppose they could have been pulling double duty with the voltage doubler circuit? My drive was completely potted, couldnt see anything other than the 2 caps. I found a picture of a drive for the same mill that was likely made before they started potting the drives.

https://www.cnczone.com/forums/attachment.php?attachmentid=344676&d=1482981775
Last edit: 22 Jul 2018 03:29 by blazini36.

Please Log in or Create an account to join the conversation.

More
22 Jul 2018 16:44 - 22 Jul 2018 16:46 #114673 by blazini36
I actually stumbled across an unpublished component that Andy wrote in a forum post a while back that I wanted to test for spindle stall protection. having a bit of trouble getting it compiled.
justin@CNC-MillingMachine ~ $ cd '/home/justin/linuxcnc-7i96/scripts' 
justin@CNC-MillingMachine ~/linuxcnc-7i96/scripts $ . ./rip-environmentjustin@CNC-MillingMachine ~/linuxcnc-7i96/scripts $ cd '/home/justin/linuxcnc-7i96/src/hal/components'  
justin@CNC-MillingMachine ~/linuxcnc-7i96/src/hal/components $ halcompile --install spindle_monitor.comp
spindle_monitor.comp:9:10: Trying to find one of TYPE
>  param rw level "state machine state";
>           ^
while parsing Declaration():
>  param rw level "state machine state";
>       ^
while parsing File():
>  param rw level "state machine state";
The pointers likely aren't showing up right, it's pointing at the space between param and rw

File Attachment:

File Name: spindle_monitor.comp
File Size:1 KB
Attachments:
Last edit: 22 Jul 2018 16:46 by blazini36.

Please Log in or Create an account to join the conversation.

More
22 Jul 2018 23:04 #114679 by rodw
You need to insert a type where the pointer is.
Try:
param rw unsigned level "state machine state";
You will also need to add a type to threshold

See linuxcnc.org/docs/devel/html/hal/comp.html

Please Log in or Create an account to join the conversation.

More
23 Jul 2018 22:37 #114725 by blazini36

You need to insert a type where the pointer is.
Try:
param rw unsigned level "state machine state";
You will also need to add a type to threshold

See linuxcnc.org/docs/devel/html/hal/comp.html


I actually figured that out after I posted this. I believe it starts to compile now but throws a bunch of other errors that are beyond me.

I assumed (which may be the issue):
param rw bit level "state machine state";
param rw unsigned threshold;
halcompile --install spindle_monitor.comp
Compiling realtime spindle_monitor.c
spindle_monitor.comp: In function \u2018_\u2019:
spindle_monitor.c:150:15: warning: switch condition has boolean value [-Wswitch-bool]
 #define level (__comp_inst->level)
               ^
spindle_monitor.comp:19:9: note: in expansion of macro \u2018level\u2019
spindle_monitor.comp:29:9: warning: implicit declaration of function \u2018absf\u2019 [-Wimplicit-function-declaration]
spindle_monitor.comp:34:1: warning: case label value exceeds maximum value for type
spindle_monitor.comp:38:46: error: expected expression before \u2018>\u2019 token
spindle_monitor.comp:38:57: error: expected statement before \u2018)\u2019 token
spindle_monitor.comp:42:12: error: invalid storage class for function \u2018__comp_get_data_size\u2019
spindle_monitor.comp:42:1: error: expected declaration or statement at end of input
spindle_monitor.comp:42:1: error: expected declaration or statement at end of input
spindle_monitor.comp: At top level:
spindle_monitor.c:41:12: warning: \u2018__comp_get_data_size\u2019 used but never defined
 static int __comp_get_data_size(void);
            ^
/home/justin/linuxcnc-7i96/src/Makefile.modinc:113: recipe for target 'spindle_monitor.o' failed
make: *** [spindle_monitor.o] Error 1

Please Log in or Create an account to join the conversation.

More
24 Jul 2018 00:25 #114727 by andypugh
state can't be a "bit" it needs to be a "signed"

Please Log in or Create an account to join the conversation.

Time to create page: 0.234 seconds
Powered by Kunena Forum