Affordable, precise, integrated motion control for robotics
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
Welcome to another Tinymovr Update! Work on Tinymovr in the past month focused mainly on fixing various small issues, as well as improving performance and safety!
Sometimes breaking changes may occur in either firmware or client software. This is inevitable in the early stage of product development, but may occur even in the mature development stage. To ensure API compatibility, a mechanism to ensure compatibility between firmware and client side is necessary. Even more so in mission critical systems such as motion control, where API incompatibility may result in undesired behavior, property damage or even injury!
With this in mind Tinymovr is introducing a new system of compatibility “self-verification” for Tinymovr Firmware and Studio, starting from v0.8.7 and v0.3.7, respectively. The system is simple: The firmware holds, together with its own version, a flag that denotes the minimum supported Tinymovr Studio version. This can be obtained through a standard CAN Bus endpoint, and is also user-readable. In parallel, Studio has its own flag that denotes the minimum supported Firmware version. At Studio startup, two comparisons are made: min studio version requirement with actual studio version, and min firmware version requirement with actual firmware version. If one of them fails, Studio exits with an error message.
In this way, it is possible to manage compatibility separately for Firmware and Studio, and always ensure that versions working together are compatible. This also allows for the least number of upgrades to be performed by the user: If a new firmware upgrade is available that does not break API, the user can continue with the same version of Studio if they wish, and vice versa.
The second feature addition allows user-defined rotor zero-point and direction. It is now possible through Tinymovr studio (and CAN Bus API of course) to set a user-defined zero point for the rotor, also known as offset, as well as set the direction of the rotor to be either positive, i.e. electrical phase same as encoder, or negative, i.e. electrical phase opposite to encoder. The settings are persisted in Non-Volatile Memory.
Besides, several minor issues have been addressed, both in firmware as well as studio. Indicatively, writing to NVM has been simplified, better fault handler debugging features have been added, and the CAN Bus module in Tinymovr Studio has seen a cleanup and renaming to better distinguish it from the Python CAN module. All these changes may break some programs using the Tinymovr Python API, but overall disturbances should be minimal.
The latest firmware is available now and goes together with Tinymovr studio, which you can easily install with
pip3 install tinymovr
And since this month’s update is mostly text-text-text, here’s a Tinymovr-powered jumping robot video to cheer things up a bit! :
Till next month!
Welcome to another Tinymovr monthly update, with a lot of news to share. The Tinymovr store is now fully stocked with boards as well as dev kits and accessories. Dev kits include a Tinymovr R3.4 controller, a high-quality 5005 size motor from MAD Components, and a 6mm diametrically magnetized magnet securely mounted on the shaft.
The mount is made of precision CNC machined 6061 aluminum designed to be in contact with both stator and power MOSFETs, enhancing heat dissipation. Using the mount, you can turn the dev kit into a compact servomotor unit, fully integrated with your project. Or, you can use the kit standalone, using the provided 3D printed stand.
In addition, we introduced the ACT8.3 Open Source actuator, a lightweight module that achieves 1.7Nm@15A, while weighing a little over 200g (0.44 lbs). ACT8.3 is suitable for building legged robots, and soon a completely open source robot based on ACT8.3 will be published.
The firmware has seen important improvements as well. The most important being the introduction of encoder eccentricity calibration, which allows for more accurate positioning and smoother performance in high rotational velocities. See the video below for more information, and upgrade using the firmware in the latest release.
Finally, on the devops side, CI has seen vast improvements, with the firmware check and build pipeline getting a major overhaul.
For more details on related changes, check out the commit history.
See you next month!
I'm glad to report that the upgraded Tinymovr Dev Kit R2 is available in the Tinymovr store.
The new Dev Kit R2 is more compact, and can be used as an integrated servo actuator in your next robotics project! Simply detach the mount from the 3D printed stand using the two screws, and integrate it into your robot! Full 3D CAD drawings are available.
R2 has been upgraded from the ground up to include a new R3.4 Tinymovr, a MAD 5005 350Kv motor, and a precision CNC machined mount! The new R3.4 Tinymovr, included with the new Dev Kit, has an enhanced PCB layout for better heat dissipation, and better labeling of all headers onboard.
Back with another update in what seems to resemble a regular monthly update cycle :D
The big news is the release of the new Tinymovr R3.4, with immediate availability of boards in store. There is a temporary shortage of Dev Kits, but these should be restocked by the end of the month. Tinymovr R3.4 features some optimizations in power routing, allowing wider traces and better via interconnects between layers. Also, all IOs are now properly labeled, and a small geometry deviation with the board shape is fixed! So head over to the Tinymovr store to find out more!
Besides, this month’s update brings two important improvements to the Tinymovr firmware (0.8.4) as well as to Studio (0.3.4).
The first is support for gimbal motors out of the box. It is now possible to set the motor type to gimbal and specify resistance and inductance (those are not measured in gimbal mode, so to find them consult your motor datasheet), and continue with calibration as normal. The firmware will detect all other parameters except R and L as usual, and you will be able to use the motor in all control modes.
Here is a video of a gimbal motor driven by Tinymovr:
The second concerns an important fix to a bug in the scheduler that would sometimes permit “dead” control cycles, due to the MCU entering sleep state prematurely. This has been fixed and minor improvements were done to the scheduler as well.
Besides, minor improvements are to be found all around, from documentation to Tinymovr studio, testing, and CI. For more details, check out the commit history.
Finally, here are a few updates on projects using Tinymovr:
Till next month, stay safe and stay tuned!
Happy new year! This month's update comes rather early, and brings several improvements all around, with the aim of making Tinymovr perform better and safer. The latest firmware & studio app feature the following improvements:
Here is a brief demonstration of the velocity integrator in action tracking low velocities:
In addition, CAN bus adapters are back in stock at the Tinymovr store. Head over to the product page for more.
Stay safe and stay tuned for more updates!
Things have been moving at a fast pace in terms of development, with the firmware and studio receiving updates all around. In a nutshell the following major updates have been completed:
from tinymovr.units import get_registry ureg = get_registry() A = ureg.ampere s = ureg.second rad = ureg.radian tm1.set_pos_setpoint(1.0*rad, 0*rad/s, 0.5*A)
The second and third arguments to the function above are feedforward values for velocity and current.
Keep in mind that the addition of units may break some programs that you might have built around Tinymovr Studio API. To restore broken functionality, it is usually sufficient to modify your calls to getters to work with units. Alternatively, for a quick fix, you can obtain the "magnitude" property of the object returned. See the docs for more information on units.
If you prefer to take some time before diving in the latest changes, the last major version (0.2.x) is still available on PyPI and you can install it easily as follows:
pip uninstall tinymovr # if tinymovr is installed
pip install tinymovr==0.2.7
Finally, here are two of the latest demos of Tinymovr. The first demonstrated full-body kinematics on the Tinymovr Quad. The second demonstrates a ‘telepresence’ device: A pair of Tinymovr controllers and motors that mirror each others dynamics.
The code to this last demo is available at the Tinymovr Github repo.
Stay safe and stay tuned for updates!
The new R3.3 Dev Kits as well as USB-C <-> CAN Bus adapters are now available at tinymovr.com.
The new dev kit features a Tinymovr R3.3, a MAD Components 5005 motor, and an aluminum backplate that holds both motor and controller, and is designed to make contact with both controller mosfets and stator for increased cooling efficiency.
The CAN Bus adapter is a revision of the CANable adapter with USB-C connector and DF-13 connectors matching the ones on Tinymovr.
Head over to tinymovr.com to browse more
Good news, after an admittedly long wait, the new alpha2 boards (R3.3) are now available! These boards have a few layout improvements compared to the alpha1 boards, namely:
The Tinymovr store stock is updated, and now you can browse and make your orders! Currently only Tinymovr boards are available, but in the near future it will be stocked with Dev Kits, essential items and accessories.
In the meantime, improvements have been made in both firmware as well as Tinymovr Studio. For a list of detailed changes, please take a look at Github Issues. Here below a few highlights:
So, head over to the store, fork the repo or join the discussion now!
It's been some time since the last update however the project has been moving on at rapid pace. First, the alpha boards and dev kits have been completed and sent out to their owners in early August. In addition, the Tinymovr Github repository now hosts the complete array of Tinymovr modules: Firmware, client (Studio), documentation and some related schematics and drawings. Furthermore, I've set up a Discord server to stir up the discussion. Hey! There's not much there yet, but given time.. :)
Most importantly, the new batch (I call it alpha2, for lack of a better name) is in the works. There is no clear timeline yet, but I've been really busy with minor improvements in the PCB layout and planning production (hint: it will be outsourced this time). As part of this, I've recently received a bunch of 5005 motors from MAD Components, which will make it into the next Dev Kits:
They are larger in diameter compared to the T-Motor 4004 shipped with the alpha, which means that Tinymovr will be able to be completely integrated behind the motor face, good news for building integrated servo drives :).
That's all for now, stay safe and stay tuned for more updates!
Production of Tinymovr boards and dev kits is almost complete! Here is a photo of most of them (a few are still getting connectors fitted):
It took quite a sprint during the past few days but the alpha batch is now almost ready for shipment. This includes the boards themselves, Dev Kit motor holders, CAN bus adapters (CANdapters) and associated wires.
I'll be finalizing the boards today, and tomorrow I’ll be testing all boards and kits for a final time before packaging them. The aim is to ship on the 5th of August.
Once the alpha boards/kits are on their way, I’ll be focusing on releasing the Tinymovr Firmware and creating a Discord server for support and discussion. I’ll be posting here with updates.
Today I’m releasing the schematic of the CANdapter, the CAN adapter that is included with the Dev Kits, which is an adaptation of the CANable boards. You can find them in the Tinymovr Github repo.
Once again, I’d like to thank all Tinymovr alpha participants for their support! I hope that you will enjoy your boards and use them in creating awesome robots!
Create an account to leave a comment. Already have an account? Log In.
It's because each MOSFET (FDMD8530) is dual channel. Basically, it can do the job of two MOSFETs in the package of one.
Exactly as @Gravis explained. These are FDMD8530, if you are looking for the part number.
Hi Yannis, are there any provisions for brake resistors, whats the strategy for dealing with large decelerating masses (e.g. CNC mill)?
Hi, I'm planning to implement flux braking at some point, which uses the coils of the motor itself as a resistor to dissipate power. Nonetheless, I'm not sure if Tinymovr is ideal for a spindle application, i.e. 10k+ RPM rotation speeds. For such an application one would typically use sensorless commutation, for which a regular ESC would suffice. As it stands Tinymovr has a hard RPM limit implemented at 4k RPM.
Is there already any code written so that this controller could be used as a brushed DC motor controller? For a haptic application, I am currently searching for open source dc motor controllers with current control capability.
Hi, there is currently no code for controlling brushed DC motors, although of course the hardware is perfectly capable.
Hi Yannis. I would like to know if it would be possible to use Tinymovr driver for a 24V brushless ebike motor or it would be too much power. Regards,
Hi Ivan, 24V is certainly within spec, but it also depends on the total power. Tinymovr has been tested up to 30A. With good cooling it should be ok.
How much power does your application require?
are these for sale somewhere? or is it still being tested in and going to be for sale in the future
H Justin, the alpha2 batch will be very soon for sale at tinymovr.com . You can sign up there to get an email notification once they are available.
Hey, I was wondering what kind of control you were using and how you implemented it - are you using FOC, Sinusoidal control? Thanks a lot :)
This is more or less the same as the mini-Cheetah controller... Why not to use the MIT project or branch it? What are the differences?
Hi, there are several differences; MCU, Driver, FETs, angle sensor.. all are different. Tinymovr uses integrated MCU+Driver vs discrete of Ben's design. Layout is 2 layer vs 4 layer. Also Tinymovr mainly uses 0603 for ease of hand assembly. Finally BOM cost is less.
Well, really the angle sensor are the same (MA700 and MA702), and I think the MCU chosen by Ben is more standard and with way better support.
But at the end, we are going to have two different projects so... better for everyone!
I will follow your progress and improvements. Nice project!
Great work! It is fun to see the steady progress. Keep it up!
Very impressive project! Do you have any plans to open source the firmware/EDA files once it is released? Also, do you have an idea of how much the boards will sell for?
Thank you for your comment. I'll be discussing these issues in the next update, soon.
Hi, our design is similar, I use PAC5523(PAC5527 voltage is too low)+MA702. My PCB is 5X5 cm. I also have CAN bus, do you use CAN OPEN?You're great!
Hi, great to hear about your project and please do share if it is public. Tinymovr will be using a protocol similar to Odrive's CANSimple for compatibility
Sorry for replying late, Hackaday has a really lousy notification system. Unfortunately the bandwidth of the MA730 filter at 23Hz is just too low for highly dynamic applications. Even mild accelerations throw the encoder off course and the commutation is all messed up, often leading to velocity runaway. MA702 has a much higher bandwidth close to 1kHz if I remember correctly, which is more than adequate.
hi Yannis I recently use this chip for develop too, do you manuly calibrate PAC5523 ADC ? I find the ADCOFFSET and ADCGAIN value in the INFO-2 register not correct.
Hi, I do a cycle-by-cycle offset correction, thus I do not use ADCOFFSET. Interesting though, I'll have to take a look at my ADCOFFSET values.
Thank you for your reply. I can read VREF/2 ADC output value to correction offet, and just use 2.5/4096 as the ADC gain but it seems to have some errors from the actual measurement. How do you solve the ADC gain problem?
I'm implementing current sensing very similar to ODrive, you can take a look here https://discourse.odriverobotics.com/t/the-motor-timing-diagram/219 maybe this addresses your question
Good luck and looking forward to seeing your project live :)
Great job. What is the motor you are using . Could you post a link ?
Could you post the current BOM? I'm curious which components you are using.
OMG! You really do the great job! Oh I love it. The motor just run so so well! Very impressive!
Will this work with an external quadrature encoder? I'd like to play around with servos for x-y on a 3d printer and need the extra precision.
Not directly. You could handle the external loop yourself at the application level and send position or velocity commands to Tinymovr. But there is no provision for handling an additional encoder at this point.
Oh that looks exciting! No capacitors for the DC link voltage? I did not know the controller so far. Have you worked with it a lot already? Which mosfets did you use? For which performance is the board intended and what should it cost in the end? Many questions, I would be very happy about an answer - gladly also by PM. Greetings Ben
Hi Ben, caps are on the other side, not shown. Board is intended for small legged robots mainly, but should cover many light robotics tasks as well. Controller has it's quirks and documentation issues (which one doesn't?) but once some basic stuff is figured out its rather smooth sailing and you can focus on actual development. This prototype is 30A@20V but the next one should be able to do 30V. PM me for more info if you'd like.
Become a member to follow this project and never miss any updates
Maybe a stupid question, but why do I see only three MOSFETs instead of six? Very nice looking boards in any case.