Commuter Booster - <1kg Friction Drive

Laurent,

All I can say is :shock: Wow. Awesome effort, especially making it open source.

Pity I am a MechEng that struggles to fundamentally understand the HW or SW enough to make changes confidently.
This is going to start eating up all my spare time if I let it. :)

Do you mind giving me an opinion on how hard it would be to implement the following items.

HW
- ~100Amp @ 5 or 6s LiPo
- are there enough spare IOs for:
--- wheel sensor input
--- alternative throttle input, (see below)
--- pot input, for setting current limit

SW
1) Current limiting
- PI control over throttle, based on current sensor feedback
- reduces throttle when current exceeds threshold
- or possibly a power limit instead, that takes voltage and current into account.
2) Throttle Ramp control
- limits the rate of increase of the throttle, smooths engagement of drive
- limits the rate of decrease of the throttle, smooths disengagement of drive
3) Minimum Speed
- accept a wheel sensor input, and sets throttle to zero unless minimum speed is exceeded
4) Hall, Pot or Button Throttle
- accept a hall sensor, potentiometer, or simple on/off button as throttle input signal.

Thanks again for making all you hard work available for others to use.

Regards,
Adrian
 
Laurent,

Just had a look at your thread over here, and found your BMS design too. :shock:
http://www.gopednation.com/forum/showthread.php?t=302422

Great work.

- Adrian
 
Adrian, those alpha units looks professional!

Under files at hobyking.com you can find the firmware file for the 80A SuperBrain ESC. I have not had time to take a look at it yet but that is maybe something you could disassemble? I am very interested in being able to reprogram this ESC through the existing interface and I would gladly help you through (try) writing an current control algorithm.


Otherwise if we somehow could get hold of the FW for the 85A Turnigy ESC it could be possible to add an external current measurement and feed to the µC and write an algorithm...
 
Thanks. :)

Would really appreciate the help on the ESC reprogramming side, as this is not my area of expertise.
I did download those files, but couldn't immediately decipher the code from all the other files, so I was going to wait until I have the ESC.

I really don't want to stuff around with the hardware if I don't have to. Much prefer to just buy it and reprogram it to suit. But having said that I would ultimately like to implement a minimum speed, before the user can apply throttle, so that would mean an extra input at least...

Anyway any help you can throw at this would be really appreciated. If we make some headway, I'll send you a CB kit to test things out.

Cheers,
Adrian
 
adrian_sm said:
HW
- ~100Amp @ 5 or 6s LiPo
I don't think it is that simple but it's feasible and could be made more robust than most RC controller that assume high air flow for cooling.

adrian_sm said:
- are there enough spare IOs for:
--- wheel sensor input
You don't need any extra sensor to measure the motor speed. In sensorless controller the Bemf on the non energised phase is monitored to estimate the motor speed and phase angle. So, the motor speed is already an internal variable of the algorithm (the inverse actually P=1/F), see:
Code:
PERIOD_H            res 1
PERIOD_L            res 1

adrian_sm said:
--- alternative throttle input, (see below)
--- pot input, for setting current limit
no problem and actually much easier to handle from the SW point of view than a servo signal that requires software filtering and synchronisation.

adrian_sm said:
SW
1) Current limiting
- PI control over throttle, based on current sensor feedback
- reduces throttle when current exceeds threshold
- or possibly a power limit instead, that takes voltage and current into account.
Easy, I already have a PID for the soft LVC, see
Code:
UPDATE_BMC_PID

adrian_sm said:
2) Throttle Ramp control
- limits the rate of increase of the throttle, smooths engagement of drive
- limits the rate of decrease of the throttle, smooths disengagement of drive
Already there, see:
Code:
#define K_THR_CMD_ACC   (d'1')      ;acceleration factor
#define K_THR_CMD_DEC   (d'128')    ;deceleration factor

adrian_sm said:
3) Minimum Speed
- accept a wheel sensor input, and sets throttle to zero unless minimum speed is exceeded
Easy and would greatly simplify the motor start-up procedure which is always a challenge in sensorless controller :)

adrian_sm said:
4) Hall, Pot or Button Throttle
- accept a hall sensor, potentiometer, or simple on/off button as throttle input signal.
Easy and would also simplify the throttle input management compared to a servo signal.
 
Laurent,

Thanks for the reply. All music to my ears except for two things.

My motor is actually decoupled from the wheel before I apply power. So I do actually need an independent wheel speed sensor. So I think I still need that extra IO.

The other one is the hardware side of things. I really don't want to have to design, build and debug hardware if at all possible. It would take a far amount of investment in an area that I am really unfamiliar with. I would be much more tempted to try and reprogram existing hardware, and write my own code. What are you thought on how viable that is. My thoughts are using a off the shelf controller like the CC Pheonix, or SuperBrain, that has the ability to update firmware, data logs, and has current sensing. Then reverse engineer/update or right new code.

Is this more hassle than it is worth, or doable?

- Adrian
 
I've been reading about the ESC and it seems as if it already incorporates some sort of current control that one could set to between different sensitivity levels. One idea would be to take the throttle input signal to control the already implemented over current function through letting it control at which level the cutoff should appear and then change the implementation of cutoff so that it will just reduce the output duty cycle instead.

Are anyone getting anything out of the firmware files at hobbyking.com?


/bose
 
Will see if get some time to see if I can hack the controller have a Tz85 to :D
Have get my 6354 250kV running now and with some good exicice I get to 50+ kmh :D
Limit the the current to aprox 45A and now the motor only get 50-60 C vill see wene I get the temp sensor working how hot it get.
//Jonas
 
Adrian,

I'm following your build since the beginning and I love it.

walls99 said:
You don't need any extra sensor to measure the motor speed. In sensorless controller the Bemf on the non energised phase is monitored to estimate the motor speed and phase angle.

adrian_sm said:
My motor is actually decoupled from the wheel before I apply power. So I do actually need an independent wheel speed sensor. So I think I still need that extra IO.

What if the controller is programmed so that just a tiny current is applied at first, merely enough for the motor to engage the wheel?
If at that moment the bike is at stall, then nothing should happen, apart from little amount of energy being wasted (but not enough to burn anything).
If the bike is then pedaled, the evolving speed would be estimated, and the controller may accordingly allow higher current (suitable for "real power" - not just engagement).

This could save the need for an independent sensor and extra IO, no?

Keep on the great work and good luck!

Gordon
 
Sorry for the lack of updates guys. The last week has been a rough one, with both my kids, my wife and myself sick. Running on vapours at the moment.

bose said:
Are anyone getting anything out of the firmware files at hobbyking.com?

Nah no luck. The DLC files aren't a straight hex dump, and I can't work out how to disassamble it, using SiLabs IDE.

The more I look at the problem, the more I come back to the best solution would be a stand alone solution. Hacking Watt-Meters and ESC is all good fun, but not a long term solution. For those interested in hacking something together the watt meter mod isn't that hard. Or you can go bare bones with the ramp control and modified servo tester. This is quick and easy to get up and running, and what I suggest for the alpha testers, especially with the 6374 motor that can take the power.

But longer term, I would like something that does it all in one little package. So I think a dedicated uC with shunt, wheel sensor, throttle inputs. Throttle output. All driving off of the ESC BEC 5V. It can then control the throttle ramp up, limit the power, enforce a minimum speed. If I get fancy then maybe user selectable power limits, and different throttle input types (button, hall, pot). It will allow users to pick there own ESC, and just plug in this little magic box.

walls99 said:
Modifying an existing controller is doable but it will be very challenging if you don't have the support of the manufacturer...

Agree. Since I don't have the schematics, have bad programming skills, and know nothing about ESC programming in general. I would also then be locked in to using just one ESC, after all the hard work. Hmmm. Never liked being stuck with single source suppliers.

umejopa said:
Will see if get some time to see if I can hack the controller have a Tz85 to :D

Not sure if it is worth it, since the Tz85 doesn't have current sensing.

umejopa said:
Have get my 6354 250kV running now and with some good exicice I get to 50+ kmh :D
Limit the the current to aprox 45A and now the motor only get 50-60 C vill see wene I get the temp sensor working how hot it get.

Nice. It still amazes me the sort of performance you can get out of such little packages.

I received a bunch of motors from HobbyKing the other day. But been too crook to try them out, apart from spinning them over, and checking no load currents.

beeorchid said:
I'm following your build since the beginning and I love it.

Thanks, and welcome!

beeorchid said:
What if the controller is programmed so that just a tiny current is applied at first, merely enough for the motor to engage the wheel?
If at that moment the bike is at stall, then nothing should happen, apart from little amount of energy being wasted (but not enough to burn anything).
If the bike is then pedaled, the evolving speed would be estimated, and the controller may accordingly allow higher current (suitable for "real power" - not just engagement).

This could save the need for an independent sensor and extra IO, no?

Keep on the great work and good luck!

Gordon

Interesting idea. Would probably work for Kepler's drive. Since he has his motor always lightly dragging on the wheel. But mine is always clear of the tire, and requires a bit of initial current to kick the motor up to touch the tire. When you do try to gently start the motor from a stand still, it is not a gentle motion when it hits the stationary tire, so I think it is just a more robust solution to go to the pain of an extra sensor. The biggest downside is that it make it a lot harder to quickly install, or swap between bikes. So it may have to be an optional thing.... hmmm.... that requires more thought.

Your idea would definitely be simpler for the person using the drive. But it may not be so straight forward to make it work.

I'll think about it a bit more when I can think straight. At the moment I just need some more sleep.

- Adrian
 
Was calc. to get help downhills to soo it will have no load rpm at 6000 24V (71km/h) but I vill not get there i think .
Needed current limit to it not get to hot. It gaing speed not soo fast but i get assist to get 40km/h uphill but have not tested longer hill will think it will reduce the speed.
Have about 1kw and will get speed of a moped . Vill do about 75-85% no load rpm with no wind but the batteri will not last soo long betwen charge. Have 2st //4,5Ah 2S now .

//Jonas
 
adrian_sm said:
beeorchid said:
What if the controller is programmed so that just a tiny current is applied at first, merely enough for the motor to engage the wheel?
If at that moment the bike is at stall, then nothing should happen, apart from little amount of energy being wasted (but not enough to burn anything).
If the bike is then pedaled, the evolving speed would be estimated, and the controller may accordingly allow higher current (suitable for "real power" - not just engagement).
This could save the need for an independent sensor and extra IO, no?
Interesting idea. Would probably work for Kepler's drive. Since he has his motor always lightly dragging on the wheel. But mine is always clear of the tire, and requires a bit of initial current to kick the motor up to touch the tire. When you do try to gently start the motor from a stand still, it is not a gentle motion when it hits the stationary tire, so I think it is just a more robust solution to go to the pain of an extra sensor.

I think this could be made to work if you control the start-up sequence and power. The actual difficulty in sensor-less motor start-up is to maximize the torque, here it's the opposite since you are looking at the minimum torque that would engage the drive and not the maximum torque to start your "vehicle". If the tire was not rotating at the time the drive engages, the motor would simply stall, the controller would lose sync and the torque (already small) would collapse. if you can monitor the torque (current) and controller sync, that approach would be feasible.
 
walls99 said:
I think this could be made to work if you control the start-up sequence and power. The actual difficulty in sensor-less motor start-up is to maximize the torque, here it's the opposite since you are looking at the minimum torque that would engage the drive and not the maximum torque to start your "vehicle". If the tire was not rotating at the time the drive engages, the motor would simply stall, the controller would lose sync and the torque (already small) would collapse. if you can monitor the torque (current) and controller sync, that approach would be feasible.

Oh man. It would be great to avoid the need for the wheel sensor. But rewriting the code for an ESC would really lock me in to specific hardware. It would be a fair amount of work to commit for either a one off or for a long term solution without an agreement on future supply of controllers. I am not up for making my own hardware, so involving the manufacturer sounds the best option for me, but I can't see them signing up for it without some commitment to volumes. If it proves quick to hack the firmware I'll give it a go, but if it is ground up new code, I think a separate bit of hardware that could hook up to any ESC will probably win out.

For hacking an ESC to be worthwhile it would need to do it all. So it must have current sensing, and be hackable. So that rules out the 85A & 100A turnigy ESC I have been using. The new super brain 80A, might fit the bill. But it looks a bit light on with wimpy phase wires, and crappy heat sinking. Or step up, and go with a CC Phoenix ICE 100a. Wonder what uC it has?
 
Alpha Tester Update:

Well I have now got the kits all put together, most people have dropped some cash in my account (thanks everyone), so now I just need to bundle them up in the post. :D

The kits will include a few little extra bits to make life easier, like quality counter sunk screws for mounting the motor, grip tape for the motor, things like that.

Over the last few weeks, I have also been throwing together a website with useful information for people considering the kit, or trying to build one up. It is still a rough work in progress, and will be evolving over time. So please feel free to let me know what needs to be fixed up via a new email address I have set up.

Anyway here are the details:
web http://sites.google.com/site/commuterbooster/
email commuterbooster@gmail.com

- Adrian
 
Thanks. There is a lot of info in this thread, but it is so huge now (800 posts, 55 pages, nearly 20,000 views) that it all gets buried. I tried to do an index at one stage, but the info just gets outdated and people still need to sift through to find it.

Hopefully this will collate the main relevant knowledge in a more digestible format. It feels a bit random at the moment, jumping between sales pitch/brochure stuff to tech stuff that requires previous knowledge. Well it's a starting point anyway. :?
 
Managed to drag my sick arse up to the post office, and ship out the Alpha kits.

What a painfully slow and tedious experience. Will have to find a quicker/easier way to pack & ship these in the future.

Just for the record I had to pay about:
- $22-26 to ship registered air post one unit O/S (Canada, US or Sweden)
- $38 to ship registered air post two units to the US (some new additional charge based on being over 429grams, WTF)
- $7 for shipping air post within Australia.

In the future I will probably pass on the postage cost.

- Adrian
 
adrian_sm said:
...In the future I will probably pass on the postage cost.
probably :?: :shock:

Edit: Adrian, I had a look at your web page. Enclosed are some suggestions. It is a zipped html sub-page of the "Recent announcements". I also notice this section is a different font to the paragraphs above it, is this how you wanted it?

Cheers,
GT
 

Attachments

  • test.zip
    558 bytes · Views: 46
ESC PWM Settings: Just a few notes on ESC PWM settings.

Increasing the PWM setting increases the number of times the FETs switch during partial throttle.
This creates waste heat, and will increase the ESC temperature.

So if the ESC is used at partial throttle a lot, and you are over heating it, try lowering the PWM down to 8kHz instead.

This hasn't been an issue for me, but I have done most of my testing running at full throttle trying to stress the motor. :twisted:
Now that I am implement current limitting methods, this will be operating the ESC at partial throttle a lot more, so it may become more important.
 
Commuter Booster - 50mm

Now that I have shipped off the 63mm CB kits, I am keen to see if I can make the 50mm motor version work. It will fit more frames, suit the legal market better, and packages nicely main due to the shorter motor length.

I have a dual swing arm design in mind, but I still have to clean up the way I adjust the spring tension.
I'll probably set this up with modest power levels, of 500-700w, and on/off button throttle on the road bike.

Next will be to design a more universal throttle interface.

Reprogramming a ESC is beyond my skill level, unless I magically got access to the original code to play with.
Hacking the watt meter works well but is not a long term solution. The main thing it did is opened my eyes to what is possible with the uCs.

Soooo I am now keen on making a standalone uC that can accept a throttle, shunt (& maybe wheel sensor) input, then spit out the PWM signal for the ESC. While controlling throttle ramp rates, and enforcing current/power limits, and now believe is doable. Essentially stripping down what the watt meter hack does to a bare minimum. This would then provide a plug-n-play solution that still allows people to pick whatever ESC they want.

Here are a few links to relevent resources:
Jeremy Harris - PicAxe RC Throttle Interface
Jeremy Harris - Neat Display - using a PicAxe again this time with a current sensor that is relevent to my needs.
Fetcher's Current Based Throttle
[EDIT: Found another one]
Ron Z - Motor Current Control Circuit

Just need to decide on what uC, what type of shunt, feature set, draw up schematic, fix it, mock it up, program it, debug it, fix it, cost it up, think about small batch build, blah, blah, blah....
 
I think you missed this one posted once before on this thread. http://www.recumbents.com/wisil/tetz/TransientSpikeReduction/default.htm I like the way this is a very simple analogue current limiter, just pulling down the throttle input when the current goes too high in much the same way the CA current limiting works.
 
Thanks for that. I like it.

But I think digital might be the way to go, if I want to include the wheel sensor to enforce a minimum speed.

I would like to be able to use off-the-shelf hardware, mainly because I have no idea how to or how expensive it would be to get boards made, and this seems to have been the downfall of previous attempts. Such as the throttlizer, fechter design etc. But this may just end in another cobbled together mess if I am not careful.

Currently toying with the concept of using a prebuilt uC board like these, which would be easy to hook things up to. Running it off of the ESC BEC 5V.
http://www.australianrobotics.com.au/products/micro-maestro-6-channel-usb-servo-controller
http://www.australianrobotics.com.au/products/arduino-pro-mini-328-5v16mhz

Then hooking up the necessary IOs:
- open collector hall sensor for wheel speed, should just need a pull up on the IO, or maybe the uC does that already?
- hall effect current sensor for main power current measurements to get rid of noise http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=620-1238-ND
- or just measure the voltage drop on my parallel adapter cables from one end to the other, but worried about noise, since voltage drops would be in the 10's mV.
- throttle in (button, hall or pot)
- pot or switch to set current limit
- throttle out PWM signal

I really just want to hook up wires/sensors to an existing PCB, program it, pot it, then go.

Any suggestions from people?

Looking at the turnigy/GT-power servo tester, it looks like it is using a 14pin PIC, with half the legs spare. If only I knew what it was, that would be some damn cheap hardware to use.

- Adrian
 
adrian_sm said:
I would like to be able to use off-the-shelf hardware, mainly because I have no idea how to or how expensive it would be to get boards made

Thought I would do a quick bit of research, and found some online PCB manufacturers, and fairly simple methods to reflow solder the SM parts. I am sure this is all very familiar to many, but wasn't to me.

PCB Manaufacture: $110 for 1000cm^2 http://www.goldphoenixpcb.biz/quote2.php
Solder Paste Stencils: $25.00 for the first 4 square inches, $1 for each additional square inch. http://www.pololu.com/catalog/product/446
Solder Paste Stenciling Guide: plastic stencil to apply solder past where you want http://www.sparkfun.com/tutorials/58
Reflow Skillet Soldering Guide: Using an electric skillet/frypan http://www.sparkfun.com/tutorials/59

- Adrian
 
Back
Top