Compact Field Oriented Controller, ASI + Grin, limited run

Also, on the subject of the BAC2000 controllers. I did some more tests similar to what I'd done earlier on the BAC500 units, directly comparing the measured motor performance of the field oriented controller with a roughly equivalent 12mosfet infineon trapezoidal drive. In this case I used the V2 MXUS 3 turn motor as the control hub in order to run at a decently high RPM. The 12 fet infineon controller had a 31.5A battery current limit, so I set the motor power rating in the BACDoor software to produce the same 31.5A battery current rollback.

Here it is at 36V
MXUS Infineon vs BAC2000 at 36V.jpg

And at 48V


I was surprised to find that in this case no field weakening setting was required to make the unloaded RPM's match the trapezoidal case, it seems that the current firmware from ASI does this automatically as the default behavior.

At the high end of the speed range that the BAC2000 FOC has a much stiffer relationship between the RPM and load. In the 48V test case, while both motors unloaded are at about 575 rpm, once there is 20 Nm of load torque, then the MXUS motor driven with the BAC2000 slows down to about 540 rpm, while the infineon controller slows down almost twice as much to 518 rpm. So you'll get noticeably less speed drop when you hit hills running the FOC.

The performances are then fairly similar when both controllers are current/power limited at 31.5A, but as the motor slows further and further below about 350rpm then once again we see the FOC produce more torque and power output of the motor for the same input. In this case it's an extra 75-100 watts or so of motor power towards the end of the tests.
 
robbie said:
No - as far as I recall the higher the bandwidth, the faster the system will respond, I recall setting my geared eZee motor to a bandwidth of 3000 to get it running well.

12uH is really low.. haha wow.

so, whats the downside?. Why wouldnt everyone just run it at 3000 or higher?

Also, I notice a lag between when I release the throttle, and when it stops accelerating. about 3/4 of a second. Just long enough that you go "whoa." How do I tune this out? I always imagined that electric vehicles would be the only ones with throttle response quicker than my CR500... but I am finding that every EV has slower throttle response than a heavy flywheel v8 sports car. I suspect this is more from software intentionally tuning it out to be "smoother response" but it just feels slow and mushy to me.
 
ok, so turns out the bandwidth fix was a red herring. Took it out at lunchtime, and it cutoff on me again. same phase current error. I tried it at 3000 and the same thing happened.

I suspect though, that the reason it didnt cut off last time, was the controller was heating up and dialed the current back some. I have it all setup so its just sitting infront of me on the stand and I can work the throttle while on the PC. I bet the lack of airflow made it heat up my big heatsink block, and it didnt cool down yet when I started riding, so I was only seeing 40a or so of current. I never checked the controller temp.
I will keep an eye on that temp in the future. Luckily I can set it to show on the laptop screen.

so I am back to square one. Do I have to tell it a lower current limit than 96amps to keep it from flipping off?


on the throttle front, I did re-read the manual, found here:
http://www.ebikes.ca/downloads/BAC500_Controller_Manual_Rev%201.0.pdf
on page 34, I saw this:
It is recommended that the Throttle fault range and Throttle deadband threshold values be left at the factory default setting of 200 mV.
my throttle deadband is set at zero. I plan to play with this more once I get the motor to stop cutting out.

also re-reading the manual the "Instantaneous overcurrent trip threshold" is what causes my error 9-Instantaneous Phase Current... but that doesnt help me know WHY I am seeing that current.
The only idea I have right now, is my motor is so small, and pulls so hard on the controller, that it can accidentally exceed the limits... but how do I make it stay under the limit?
 
MrDude_1 said:
so, whats the downside?. Why wouldnt everyone just run it at 3000 or higher?

Also, I notice a lag between when I release the throttle, and when it stops accelerating. about 3/4 of a second. Just long enough that you go "whoa." How do I tune this out? I always imagined that electric vehicles would be the only ones with throttle response quicker than my CR500... but I am finding that every EV has slower throttle response than a heavy flywheel v8 sports car. I suspect this is more from software intentionally tuning it out to be "smoother response" but it just feels slow and mushy to me.

Downside is that because it is a tuning parameter, and depending on the variables in your system, running it high might lead to undesirable performance!

I find on my Grin motor that running it at defaults is just great, but on my eZee motor (1500rpm unloaded, 16 PP, 24000eRpm) I had to increase the value until the Instantaneous Phase Over Current error ceased to come up.

Because it's a parameter used to auto generate Kp and Ki for the current regulator, if you really want to tune it properly, I'd suggest going straight to Kp and Ki, instead of using ASI's algorithms to populate the control loop. They are using the Inductance, Resistance and this Bandwidth value and I don't know what exactly their algorithm is. They have a vast amount of experience, so it's likely a sound method and all you need to do is play with the C.R.Bandwidth parameter... but old school tuning of Kp and Ki may yield better response for you!

The lag for throttle response can be tuned under Peripheral Configuration -> Throttle -> Negative and Positive Motoring Torque Ramp time - be sure that if you're using a CA3 you set the appropriate throttle voltage ramp rates, be sure to use either the CA or the BAC to do ramping, and not both or you'll probably get weird operation or oscillation.
 
I am speculating:
the ultra low inductance & the flyback current is murdering the safety shut down circuitry, same problems with the exichange controllers...

what is the most effective inductor coil to series with 2 phases? iron toridial?
Arlo played with them when trying to tame the colossus...

edit:robbie has chimed in....thank you for keeping the information flowing.
 
MrDude_1 said:
also re-reading the manual the "Instantaneous overcurrent trip threshold" is what causes my error 9-Instantaneous Phase Current... but that doesnt help me know WHY I am seeing that current.
The only idea I have right now, is my motor is so small, and pulls so hard on the controller, that it can accidentally exceed the limits... but how do I make it stay under the limit?
I apologize if it's a stupid question and totally offtopic but do you still run your motor inside a steel pipe?
Your build thread where you did have the high current problem from the start(?) isn't updated for a while - that's why I'm asking.
 
silence said:
MrDude_1 said:
also re-reading the manual the "Instantaneous overcurrent trip threshold" is what causes my error 9-Instantaneous Phase Current... but that doesnt help me know WHY I am seeing that current.
The only idea I have right now, is my motor is so small, and pulls so hard on the controller, that it can accidentally exceed the limits... but how do I make it stay under the limit?
I apologize if it's a stupid question and totally offtopic but do you still run your motor inside a steel pipe?
Your build thread where you did have the high current problem from the start(?) isn't updated for a while - that's why I'm asking.

Yeah. But my high current problem was from poorly placed hall sensors. There's a full quarter inch or larger gap around the motor. The amp draw from it outside the pipe and inside are identical... so I'm assuming no extra eddy current losses.

Right now I have the instant current limit at it's 116a max, and I moved the motor max down from 96 to 80. It does it less often... but it's still an issue. I will play with it more tomorrow.
 
MrDude_1 said:
ok, so turns out the bandwidth fix was a red herring. Took it out at lunchtime, and it cutoff on me again. same phase current error. I tried it at 3000 and the same thing happened.

While I was fiddling around with settings I tried the Kp and Ki values in your 80-100 file. It gave me a lot of over current faults under various loads and rpm's. I know all setups will be different but it's worth trying an extremely low value for Ki like 5 while leaving Kp at 0.03 or whatever the software spits out. I've found that I can get away with really low values for Ki but raising it too high brings oscillations and phase current trips.
 
district9prawn said:
MrDude_1 said:
ok, so turns out the bandwidth fix was a red herring. Took it out at lunchtime, and it cutoff on me again. same phase current error. I tried it at 3000 and the same thing happened.

While I was fiddling around with settings I tried the Kp and Ki values in your 80-100 file. It gave me a lot of over current faults under various loads and rpm's. I know all setups will be different but it's worth trying an extremely low value for Ki like 5 while leaving Kp at 0.03 or whatever the software spits out. I've found that I can get away with really low values for Ki but raising it too high brings oscillations and phase current trips.

Thank you, I will try that.
 
MrDude_1 said:
district9prawn said:
MrDude_1 said:
ok, so turns out the bandwidth fix was a red herring. Took it out at lunchtime, and it cutoff on me again. same phase current error. I tried it at 3000 and the same thing happened.

While I was fiddling around with settings I tried the Kp and Ki values in your 80-100 file. It gave me a lot of over current faults under various loads and rpm's. I know all setups will be different but it's worth trying an extremely low value for Ki like 5 while leaving Kp at 0.03 or whatever the software spits out. I've found that I can get away with really low values for Ki but raising it too high brings oscillations and phase current trips.

Thank you, I will try that.

Well I tried and and... It has not cutout yet! Im going about 31-32mph both up and downhill (very slight hill), and pulling 2300watts according to the CA... Although I have to be honest, I dont fully trust the CA at the moment, because its amp readings are slightly different than what I read on my meters... but my meters are cheap Chinese crap so what do they know? lol. I need to borrow a Fluke and verify them. In the meantime, the CA reads more amps in and out than my meters... so if its wrong, im doing even better than I thought.

so. good news is, its working so far. Now that its working though, I need to figure out why I get zero regen. always one more thing. :lol:

on the bad side, trying to heat it up by accelerating/stopping/accelerating over and over got my brakes really hot. I had my speedometer magnet siliconed to my brake rotor. I guess it got hot enough to loosen it, and at that speed it flung off.

Heres the file I ended up with. Can you tell me if there is anything there that is more than the controller can handle? I dont want to damage it...
View attachment 80-100 settings version 2.xml

Also, This controller is so nice to work with, and it looks so very good... I am thinking of buying another one when they come out of testing. Put it on the wifes bicycle so she can keep up. :lol:




EDIT:

one more thing.
when I first did it, I set the bandwidth to zero... according to the note, this put it in Ki/Kp only mode
then I put 5 for Ki and .3 for the Kp... but it had a horrible oscillation with the wheel in the air.
so I played around with the two but no changes on the oscillation.
then I changed the speed regulator Kp.. and it had a good effect. I think I was hitting "max speed" and bouncing off it. (remember, small wheels, 10" OD, in the air)
so I ended up with a speed regulator Kp of 3. no more oscillation effect at max speed.
 
I'm still experiencing 1 or 2 faults on every ride, and I have some thoughts I want to bounce off the hive mind...

To recap, I'm using the PhaseRunner with an 8-turn Mac and 12s 10 Ah Multistars. The Mac is, of course, a geared hubmotor, and with 8 turns, the inductance is fairly low (autotune measured ~45 uH IIRC). I've been using hall-start, sensorless-run mode.

The faults almost always happen in one of two situations. First, when I re-engage the throttle after coasting. Second, when I accelerate from a stop at full throttle. In this case, the power cuts out a few seconds into the acceleration and normally comes immediately back to full strength - I'm guessing this is the hall-sensorless transition. But sometimes the power cuts and just doesn't come back.

Now, what do these two situations have in common? Clutch engagement with a moving wheel. So I'm thinking that what happens is the unloaded motor spins up with very low torque and inertia, and then the clutch grabs the wheel, and suddenly there's a spike in the torque. The controller responds by ramping up the current, and due to the low inductance, the current overshoots and trips the instantaeous overcurrent threshold before it can settle down to the current limit.

I packed my laptop yesterday and had BacDoor's datalogging feature running, and I was able to see this overshoot in the accelerating case, although the overshoot only reached 70 A (current limit is 60 A). But the datalogging interval was 1 s so I couldn't get the fine detail of the overshoot. And this didn't result in a fault; operation just continued normally.

Couple things that don't really fit into this scenario. First, in the coasting case, I'm not re-engaging at full throttle - I'm usually easing the throttle on as little as possible. So the target current is tiny, and it's hard to believe it's overshooting all the way to the threshold.

Second, I'd expect to feel a torque pulse when the current spikes before it faults, but I don't feel anything in either scenario. I just twist the throttle and nothing happens.

I'm really busy this week so I haven't had the chance to experiment with settings, but I wanted to put this out there to get feedback on my hypothesis and maybe some ideas about what direction to go. Settings are basically all defaults (aside from autotuning parameters, of course) except that the phase current limit is 60 A, current loop Ki was reduced from 70 to 10, and hall stall time was increased to 1 s.

Any thoughts?
 
cycborg said:
I'm still experiencing 1 or 2 faults on every ride, and I have some thoughts I want to bounce off the hive mind...

To recap, I'm using the PhaseRunner with an 8-turn Mac and 12s 10 Ah Multistars. The Mac is, of course, a geared hubmotor, and with 8 turns, the inductance is fairly low (autotune measured ~45 uH IIRC). I've been using hall-start, sensorless-run mode.

The faults almost always happen in one of two situations. First, when I re-engage the throttle after coasting. Second, when I accelerate from a stop at full throttle. In this case, the power cuts out a few seconds into the acceleration and normally comes immediately back to full strength - I'm guessing this is the hall-sensorless transition. But sometimes the power cuts and just doesn't come back.

Now, what do these two situations have in common? Clutch engagement with a moving wheel. So I'm thinking that what happens is the unloaded motor spins up with very low torque and inertia, and then the clutch grabs the wheel, and suddenly there's a spike in the torque. The controller responds by ramping up the current, and due to the low inductance, the current overshoots and trips the instantaeous overcurrent threshold before it can settle down to the current limit.

I packed my laptop yesterday and had BacDoor's datalogging feature running, and I was able to see this overshoot in the accelerating case, although the overshoot only reached 70 A (current limit is 60 A). But the datalogging interval was 1 s so I couldn't get the fine detail of the overshoot. And this didn't result in a fault; operation just continued normally.

Couple things that don't really fit into this scenario. First, in the coasting case, I'm not re-engaging at full throttle - I'm usually easing the throttle on as little as possible. So the target current is tiny, and it's hard to believe it's overshooting all the way to the threshold.

Second, I'd expect to feel a torque pulse when the current spikes before it faults, but I don't feel anything in either scenario. I just twist the throttle and nothing happens.

I'm really busy this week so I haven't had the chance to experiment with settings, but I wanted to put this out there to get feedback on my hypothesis and maybe some ideas about what direction to go. Settings are basically all defaults (aside from autotuning parameters, of course) except that the phase current limit is 60 A, current loop Ki was reduced from 70 to 10, and hall stall time was increased to 1 s.

Any thoughts?

There was another variable where it said how many times it polled to get a amp average. I remember raising that number so that tiny spikes evened out a bit better.
unfortunatly, BACdoor is not on the PC I am at, but it should be under the controller debug, in one of the fault areas.
 
MrDude_1 said:
There was another variable where it said how many times it polled to get a amp average. I remember raising that number so that tiny spikes evened out a bit better.
Yeah, that's under Controller Debug -> Bridge. There's an instantaneous threshold and an averaged threshold, and the "averaged over" parameter relates to the averaged threshold, but I'm getting an instantaneous threshold fault.
 
cycborg said:
I'm still experiencing 1 or 2 faults on every ride, and I have some thoughts I want to bounce off the hive mind...

To recap, I'm using the PhaseRunner with an 8-turn Mac and 12s 10 Ah Multistars. The Mac is, of course, a geared hubmotor, and with 8 turns, the inductance is fairly low (autotune measured ~45 uH IIRC). I've been using hall-start, sensorless-run mode.

I have a hunch the transition between Hall & sensorless may be a factor. The higher RPM of a MAC may take a bit of settling time along with the added resonance of loading the gears.

If I ever get the one I ordered, it will be tethered to a MAC 10T for a while. Maybe. In a few weeks I need to strip off the power assist to get into shape for Tour de Tuscon sans assist, and after that I'll be testing the BBS02.

I am curious if the Phaserunner toned down the MAC audible noise a bit.
 
Triketech said:
I am curious if the Phaserunner toned down the MAC audible noise a bit.

It makes my 80-100 MUCH quieter, but its not silent.
 
so, any theories why my CA v3 reads a different battery voltage than the controller reads through BacDoor?

66.2 on the CA 65.5 on the controller, and 66.2 via my external multimeters.
 
MrDude_1 said:
so, any theories why my CA v3 reads a different battery voltage than the controller reads through BacDoor?

66.2 on the CA 65.5 on the controller, and 66.2 via my external multimeters.

See this post here:

https://endless-sphere.com/forums/viewtopic.php?f=31&t=65031&start=400#p1083942
 
Well I got my PhaseRunner on Friday with a hand full of other parts. For those with no patience to read, the summary is: Wow it is smooth and quiet with my old 9C front hub motor!

But it did take a few minutes to get running. Ironically the hardest part was just connecting to the controller! The CA-USB cable wouldn't install for me. Tried it on 3 different laptops of varying ages and versions of windows. Tried updating drivers from FTDI, tried using an archived previous driver, nothing... :|

In order to make myself feel and better and re-assure myself that I qualify as an "Advanced Tech Savvy User" :p, I grabbed an Arduino UNO, popped the main Atmel off the board, cut an old 3.5mm TRS cable in half and wired it up to the onboard USB-TTL serial implementation on the Uno board. (The wire is super thin on this 3.5mm TRS cable, so the resister ends are just to help put some tension in the headers where the wires are).

Arduino UNO USB-TTL.jpg

Arduino has abandoned the FTDI chips opting for their own implementation of USB-TTL using another onboard Atmel and their own USB firmware. The driver is super well tested, installed in 5 seconds and had my USB-TTL COM port up and running quickly. I'm hoping my Grin tech USB cable was just faulty with a cold solder joint or something... but in case anyone else has issues there are other USB-TTL serial driver chips available. I wasn't about to wait a week or two (or even a day or two) to get a replacement cable while I've got my fancy new controller just sitting there. 8)

Now back to the fun parts. My motor is an old Nine Continent front hub motor, fast winding. This motor has had multiple hall sensor replacements, and has another dead hall now (we get a fair bit of rain in the pacific north west = corrosion problems). I wanted to run it sensorless and was told this controller will do it well. I followed Robbie's tuning posts almost verbatim and it runs SUPER smooth and quiet!

The 9C motor is almost silent, a slight high pitch PWM noise if you listen carefully on a quiet/smooth road section at lower speeds, but even the ratchet noise of my rear freewheel drowns out any noise from the motor. It's almost a bit weird like driving a hybrid car. You kind of wonder if its working properly or not because its not noisey enough or jolty enough. (I set the ramp timings as robbie suggested earlier, its very smooth, perhaps less punchy feeling than the old Infineon which makes you wonder if its working if you are used to "feathering" your throttle for smooth starts). The old Infineon controller I had was a dead give away that the bike was electric because it had a noticeable motor whine that made it not-so-stealth.

Took it for a quick 10-12km run about with my 2 year old boy on the back of the big dummy for the maiden voyage with the PhaseRunner. That's pushing a solid >300 lbs load (cargo bike + 9C hub motor + 2x 48v eZee batteries + me + kid seat + kid). It ran beautifully, sensorless with all those params. I'm rather impressed with this little controller right now. Thought it was worth a quick post to confirm to others that this is the cats-meow and confirmed works with the NineContinent hub motors quite nicely (and to add my programming work around in case others end up googling this later one day and need an alternative).
 
Nice report Ben.

I was wondering what kind of power you were drawing under load? I have the old BAC500 (baby Phaserunner) and was wondering...

Thanks.
 
Funny you should ask ambroseliao. I did my initial test run with no Cycle Analyst. As soon as I was able to order the PhaseRunner controller they went out of stock on Cycle Analyst 3's! :(

My old cycle analyst (and I do mean old, like the small screen project box version) doesn't seem to play nice out of the box. This may be because I have no hall sensors AND no speedo sensor pickup. The CA2 throttle override either open the throttle wide open (with no halls attached) or with halls attached it would oscillate with a spin of the wheel then clamp, then spin the wheel, then backoff (presumably because the 2/3 hall sensors were confusing it a bit).

So I'm still playing around with it. Just while I was writing this I'm wondering if I just configured the CA2 with 2/3rds the pole count with 1 dead hall sensor whether it might behave "properly"? Either that or I'm just going to disconnect the throttle overhead pin from the JST connector and see what happens.

Anyway, the ultimate goal for me is to replace it with a new CA3 with a torque sensing bottom bracket. Looks like it'll be a 1 month wait for the CA3 to get back in stock according to the ebikes website. I know from past experience that the 9C motor can comfortably run 1200w without issue on 48v. My old controller was a 25A Infineon and I could max out that controller without any issues. So I setup the PhaseRunner as per Robbie's earlier suggestions which also targeted a 25A controller (with the proposed 1375w motor plate rating). Oh yah, and on that bike ride yesterday we did go over one big overpass over the highway. It's a pretty good hill that would normally require going to the lowest granny gear and just barely make it up the hill. So I'm sure for at least some part of the ride I max'd out the power config on this setup.
 
Received mine. Very nice small beast. Very different from BAC500+, but same question: how to cut power ?
With Grinfineon controllers, there's a very convenient switch, here there isn't such function.
As I always work with either homemade or artisanal packs, there's no power switch.
RB3 bag from Ebikes.ca will not do the trick for high power vehicles as it's rated for 20 A, I need at least 50 A.
Any good solution to avoid plugging/unplugging Powerpoles ?
 
@cavallo pazzo: Power switch wires are "hidden" under the throttle shrink wrap. Remove the heat shrink tubing on the throttle lead and extend these wires out to some kind of switch and you are good to go! The power switch only carries the current load for the controller itself (+ Cycle Analyst/Light) but not the current for the motor, so you don't need to switch the full current load of your system.

see this post: https://endless-sphere.com/forums/viewtopic.php?f=31&t=65031&start=350#p1075988
 
yeah, the power switch is also a must-do mod if you're riding around while its still not tuned 100%... I can go 13+ miles without an issue... or 15ft. I never know.. but miles from home, its nice just tapping a button, letting it reset, and tapping it back on.
 
Back
Top