• Tinymovr April Update

    Yannis04/14/2021 at 17:11 0 comments

    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!

  • March Update

    Yannis03/11/2021 at 16:57 0 comments

    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!

  • Meet the new Tinymovr Dev Kit R2

    Yannis03/06/2021 at 22:13 0 comments

    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.

    Learn more at the Tinymovr store.

  • Tinymovr February Update

    Yannis02/13/2021 at 22:00 0 comments

    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!

  • Tinymovr January update

    Yannis01/12/2021 at 15:33 0 comments

    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:

    • Encoder outliers are now detected and used to set Tinymovr into an error state. In a nutshell, any reading with |d_{Pos}| > 1024 (ticks) will put Tinymovr into an error state and trigger transition to idle mode. The threshold value, 1024, is highly unlikely to be encountered during normal operation, as it corresponds to a rotational velocity of around 150000rpm, way above the control bandwidth at 20kHz.
    • Hard limits for velocity and current have been added, and set to 45A and 600000ticks/s (around 4000rpm). This is as an additional safety to the user-configurable limits.
    • Tinymovr now exposes the velocity integral term to both CAN and uart protocols. The integral term allows for better tracking of velocity throughout all ranges. Check out the docs for more.
    • Various bug fixes and minor improvements all around.

    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!

  • Tinymovr December Update

    Yannis12/12/2020 at 14:16 0 comments

    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:

    • Tinymovr Firmware now handles the motor control loop as part of the main loop (it used to be part of an interrupt). This allows for increased flexibility with respect to passing functions to the main loop for execution. From a user perspective, this change is not noticeable in any way, but it will facilitate future firmware development enormously.
    • An initial test suite has been developed, aiming to test Tinymovr Studio features, as well as validate board and firmware functionality for commissioned boards. The tests use Python's unittest framework and are available in the tests/ folder of Studio. In addition, tests are performer as part of continuous integration (CI) in Github, using simulation.
    • A significant bug has been fixed that prevented proper communication using UART.
    • Tinymovr Studio now works with units (amperes, radians, rad/s etc.), via the Pint package. You can seamlessly use any units you wish for reading and writing to endpoints that support them. For instance, the following is now possible in Studio:
    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!

  • R3.3 Dev Kits and CAN bus adapters available

    Yannis11/07/2020 at 12:34 0 comments

    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

  • Tinymovr R3.3 (alpha2) now available!

    Yannis10/18/2020 at 18:36 4 comments

    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:

    • Better signal routing allowing wider power traces on the rear side of the board.
    • Bigger current sense (shunt) resistors with twice the power rating and twice the resistance (2mOhm instead of 1mOhm), allowing for more accurate current measurements.
    • In alpha1 I skipped the ceramic capacitors near the FETs, thinking that high-frequency ringing from transistor switching could be handled by the polymer caps. Evidently I was wrong and the ceramic caps are back.
    • Changes in polymer cap arrangement with 3x 180μF instead of 4x 68μF ones for better handling of torque ripple and current transients. 
    • Same 4-pin DF-13 connectors on all I/O, including 2x CAN, UART and debug port, enabling more flexible connectivity with the same wires.

    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:

    • Tinymovr Firmware now has a proper duty cycle limiter that works in dq space (the previous one was just a failsafe that worked in alpha-beta).
    • Tinymovr Firmware implements a few changes that improve power usage when idle by up to 20%!
    • Tinymovr Studio now has a plotter! It is based on matplotlib and enables fast and lightweight plotting of multiple endpoints of a single or multiple Tinymovrs.

    So, head over to the store, fork the repo or join the discussion now!

  • Project state & next steps

    Yannis08/24/2020 at 19:35 0 comments

    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!

  • Tinymovr alpha: Production Update #3

    Yannis08/01/2020 at 18:37 0 comments

    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!