Edit 2022-12-09: The release is now done!
Now that firmware 5.03 is released the development of 6.00 has started. Considering the amount of changes that made it into 5.03 it should really have been called 6.00, but that is now done for this release instead (which probably also will include some major new features).
The master branch on github is now the version where all development happens and each stable release will be put in its own branch with the release name. There are a few reasons for that:
- It will make it easier to find old releases by going to that branch instead of searching through commits.
- When people contribute and make pull requests they should be working against the development branch and not the stable release.
- It makes it easier to see where development happens if it is on the default branch.
From now on I'm also not going to put a link to the beta binaries here, they can instead be downloaded from these (including free of course):
The reason for that is that it makes it easier to update the beta for me (just run a script instead of manually editing this post) and it will also be easier to explain where people can find the beta.
I will try to keep this post updated with changes and what to look out for.
One of the main new features for this release is scripting support on the vesc hardware using the old-but-still-useful language Lisp. Here is an early demo of that:
The intention is to make the scripting as simple as possible and have it completely sandboxed so that you cannot brick the vesc by uploading code that gets stuck, runs out of stack, writes to bad memory locations etc. So far is seems quite solid, but there is a lot of work left to make new features, examples and hopefully some documentation.
The reason for the scripting is to make it easier to connect different VESC-supported hardware (and others too with a bit more code) modules together and build e.g. an electric motorbike that has an IO-board controlling indicators, brake light, speed modes etc. You can already do this with custom applications, but then you have to get the entire toolchain up and running, get a debugger, understand how to compile the correct firmware, not interfere with other critical parts of the vesc code from your code and so on. The Lisp scripting is already in vesc tool, takes care of memory management (garbage collection) and dies nicely when something is wrong in the code.
- Motorbike with indicators, speed modes etc.
- Gokart with lap timer
- IO-board for controlling LEDs
- MPPT control for wind turbine
- Control cooling fan or pump based on external temperature sensors
- Automated production test rig
- Button for changing profiles on longboard, ebike, scooter
- Make your perfect PAS control for your ebike
- Share your scripts with others on e.g. github or gitlab and document how they work
- Custom throttle behavior
- Control RC servo
- Connect multiple VESCs over CAN and control motors based on inputs on the COMM-port
- Educational platform for teaching about motors, actuators and programming interactively
- Essentially anything that you would hook up an arduino to the VESC for
If you have ideas for applications in lisp let me know about them, and I can see if they can be done and/or add VESC extensions to support them.
Here you can see what currently is supported, adding more extensions is easy:
Here are a few screenshots:
I don’t really understand how you can now use the test version of the firmware).
Can you explain please.
Previously, it was only necessary to download the archive, the firmware was already there, but how to do it now?
I do not really understand.
If you re-purchase any of the vesc tool versions (free as well as usual) the same archive will show up under purchased files. The link there will always point to my latest beta build:
Edit: I just added the file to your purchased files, so you should have it there now.
It's cool I see them! Thanks! But I can't download)...
Can you try it again?
It's great!!! The download works! Thanks a lot!
Is there any chance we can make the IMU sample rate higher than 1000Hz? Because the Onewheel PID loop operates at 14khz. The BMI160 is capable of 25.6khz(39us data resolution). currently we are able to do 4khz only in the app and that limits the performance of VESC significantly in Balance application. Would you please consider lifting the limitation of the balance app PID loop hertz？
I don't think it can be increased a lot more in i2c mode, not in the bitbanged one at least. It would be quite easy to add support for connecting the bmi160 to the comm port via spi, which should be good for 10 khz or so. Above that the chibios scheduler will become an issue. I can't see how it would help to run it that fast though, but maybe I'm missing something.
Would you please add software support for MPU9250/Bmi160 connect to COMM port via SPI？If we can get it to run balance pid loop 4khz and imu samplerate 4khz, it would really be a huge leap forward, currently we run 1khz pid loop, it is just too slow to cope for terrain, for example, onewheel runs 14khz pid loop and 14khz sample rate, it is so much more predictive than our VESC wheel.
Hey Tony, I'd say it's highly likely that the 14kHz loop is FM's FOC motor control loop (ours is 20-30kHz). Their 6-axis IMU is most likely not sampled more often than our 1000Hz. So far I haven't seen anything to suggest that a higher IMU sampling rate would yield better balancing performance. In my opinion the biggest weakness of VESCs vs FM is that we're lacking a HFI+Hall Sensor low speed mode. Also, the IMU160 as well as the MPU9250 or whatever its number is produce very noisy (to me unusable) acceleration data, so I have to leverage ERPM to measure acceleration. Increasing the sampling rate wouldn't make this any better imho.
Can I assume that you are relying on FM marketing numbers only? Or do you have any evidence beyond that for a 14kHz PID loop?
I have the same issue ("You have attempted to download an incorrect file URL too many times."). I am not sure how to contact the site administrator and I can imagine flooding benjamins PM inbox with issues like this does not help in any way..
Issue came up when i clicked a download link in the "File Downloads for Order"-email which pointed to this URL (which seems wrong I later noticed):
I guess the generating function for these email-bodies is bugged.
Does it work if you download the file under purchased files at the top of the page?
is it possible to add selectable encoder index search when first powering vesc?
e.g. when the encoder index search is activated, vesc runs the motor into openloop for one turn to find the index pulse
No. Does not work. I reordered 24h ago and I guess just reordering now will not solve the issue, right?
I get the same error message when trying to download the file
"You have attempted to download an incorrect file URL too many times.Please contact the site administrator if this message has been received in error."
For some reason the file was missing, probably my build script is doing something strange. Should be working now.
One suggestion for the BETA zip files - it would be awesome if you could include the BETA number in there, either in a README or as part of the filename. Also the git hashes would be nice to know.
I am still having the same issue as the others mentioned. Also for some strange reason after I have typoed my pwd in chrome, I am receiving the error message even after the correct user and pwd was given. Firefox does not have this problem, just that I can not download any files nor from the re purchased original mail link, nor from the top/purchased files.
I updated the site and modules, and cleared the cache. Hope it does not break this time.
I have no problem downloading
It works fine now, thank you!
i too have the issue "You have attempted to download an incorrect file URL too many times.Please contact the site administrator if this message has been received in error."
Edit: working now, 24 hours later. guess it was just a matter of waiting a little:)
Hi Benjamin, i have an as yet un added application for the vesc, that of a controller for solar direct (no battery) powered pumps, i currently have one running a brushed piston pump for 3 years every day now using the low battery rollback as a crude MPPT to manage the panel and line voltage to a efficient level, the functionality needs to vary pump speed with solar output, and throttle both the motor and controller thermally. problems i have are that of start up errors from low voltage and poor current availability in the morning as the panel wakes up. This causes the controller to go into a cutout loop as the volts rise and it turns on but there is not enough current availability to sustain the chipset so it repeats an undervoltage fault shutdown and reboot cycle until there is enough current to stay alive. after about 20 minutes of fault looping it finally wakes up and stays on then some time later it begins to drive the pump. The controller does not try to start the motor until the voltage is around 35v and will reach full speed at 37v. it is set up with unsafe start and the throttle set to maximum at a voltage value below the noise floor. currently to switch it off the controller main power is switched off, i would prefer that the controller stays on and there is a switch to stop the motor when the tank level switch activates. it is a flipsky vesc mini 4.2hw running a 24v 300w 60 rpm rated nema frame industrial servo with reducer gearbox and panels are 36v 460w array.
I am about to build another larger pumping system, this time it will use a flipsky fsesc 75/100 driving a lorentz cs-600 3ph bldc pump will soak 600 to 700 w and have an 72v mpp array of 1600w and again no battery, i would like to know how to write a lisp program for this one that tracks input voltage to vary motor speed and maintain mpp voltage from panels with varying light levels and will add a temp sesor to the pump to throttle it to prevent overheat, it also needs to read a switch state for low water run dry protection, and a pot for speed control during testing, once it is functional it will move about 10 m3 an hour from one dam to another while the sun is up, the overly large array is so that it will still move water when its cloudy.
Iis there a location where i can read existing lisp scripts to learn how to write my own ? or a resource you would suggest to learn how to use lisp ?
Thanks for your tireless efforts so we can all enjoy vesc
Hi too have the issue "You have attempted to download an incorrect file URL too many times.Please contact the site administrator if this message has been received in error."
I have no idea why this keeps happening, but I have removed the check that causes this message to be displayed from the ubercart source code. Hope it will work from now on.
Anyone interested in collaborating on a newish rugged implementation of the VESC? How much of a Royalty does Benjamin usually get?
for people trying to download beta from eshop: just remove the text beginning with "%" so
where XX is the number id of the download.
Android beta build says the package is invalid when trying to install, build 7-13
Edit: Uninstalled fully instead of updating :-| - I'm the fool.
does anyone know more or less how long it will take till first official release of 6.0 ?
" The following URL is not a valid download link. Please contact the site administrator if this message has been received in error. "
issue still persists
I just started getting into Lisp scripting with v6.0 but ran into a problem when I have another VESC Package installed. I can get my Lisp code to run fine by itself but once I install a package (Float in my case) they do not play well in the sandbox. If I install Float, my Lisp code gets erased and if I upload my code, the Float App terminates.
How can I get both to work together? i.e. I want to have the Float App running for my FunWheel but I also want to be able to control IO for other things like lights.
UPDATE: I got it to work. Needed to download the running Float Lisp code and insert the other routines. (Thanks Dado)
Also, would you please consider expanding the functionality of your GPIO-Write to include other ST32 pins?
My Cheap FOCer has all the unused uC pins on one header but I noticed in your GPIO-Write function that only some pins can be written to or read from. I ended up using swclk and swdio but it would be nice to be able to use some of the others for additional peripherals. (PA15, PB2, PB3, PB4, PB5, PB12, PC5, PC13, PC14, PC15)