• Tinymovr January update

    Yannis6 days ago 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!

  • Tinymovr alpha: Production Update #2

    Yannis07/26/2020 at 17:37 0 comments

    Here's a short update featuring a video that demonstrates the Tinymovr alpha Dev Kit in action:

    Torque tests go up to 10A due to absence of a good ventilation system, but extrapolated you should be able to reach around 0.6Nm at 30A.

    I've open sourced the STL files for the Dev Kit motor mount so you are welcome to build one yourself (you'll still need a CAN adapter and associated data and power cables though). 

    Tinymovr alpha is now closed. Thanks to everyone that participated! Boards and Dev Kits will be shipping soon.

    There will be a new round of boards/kits in the near future, so stay tuned!

  • Tinymovr alpha: Production Update #1

    Yannis07/22/2020 at 18:12 0 comments

    Here is the first update on the Tinymovr alpha board and Dev Kit manufacturing progress.

    I have received all R3.2 PCBs from the manufacturer. Around half of the received boards are assembled and tested, and they perform as expected. For the rest I am waiting for components to be delivered, expected towards the end of the coming week.

    In addition, I’ve completed design, assembly and testing of the first Dev Kit (image below).

    The rest of the kits will be assembled in the coming week. In the meanwhile, I’ll be posting a video on the Dev Kit operation soon.

    For the Dev Kits I have designed a lightweight mount that allows air circulation and that can be secured on a flat surface by adhesive or bolts. The mount allows access to all of the board’s ports while protecting the more sensitive polymer capacitors on the rear side. It is noted that in this configuration the encoder magnet is on the rear side of the board. This places tighter tolerances on the distance of the magnet from the board, but the magnetic field is within the allowed tolerances by the encoder manufacturer. 

    Tinymovr Dev Kits include a USB-CAN Bus adapter board. This is an adaptation of the CANable design to use DF13 connectors as well as 2.54mm headers, and utilize a sturdier USB micro connector. This design will be open sourced in the spirit of the original CANable board. 

    For this board, PCBWay kindly offered a sponsorship, and the boards just arrived today. They are beautiful in black matte soldermask and ENIG plating (image below).

    Stay tuned as I’ll be posting a more in detail review of the boards in a few days.

    Regarding the boards themselves; Qorvo, the manufacturer of the PAC5527 chip, have recently released a bootloader that allows firmware upgrades through serial. This is a great solution to enable user-upgradeable firmware as the PAC is currently only supported by J-Link adapters, which, while very capable, carry quite the price tag. I’m working to have the alpha boards and dev kits bootloader-enabled before shipping. I’ve already integrated the bootloader into the Tinymovr project and tested it on one board, which seems to be working as expected. More tests to follow.

    Finally, today I’m open-sourcing the first of the Tinymovr software components, the Tinymovr Studio. Tinymovr Studio is a cross-platform (Windows, Macos, Linux) Python library and command line app that takes care of communication with Tinymovr using CAN bus. The user can type in commands in an IPython prompt to send/receive messages, or integrate the library to their project and take advantage of the simple API. Tinymovr Studio will be available through PyPI once Tinymovr alpha is sent out to users. Tinymovr Studio uses the python-can library, allowing it to interface with a broad array of hardware interfaces (including CANable through slcan). In the workshop I’m using it with an Arduino and MCP2551 based adapter I cobbled together for testing. 

    The Tinymovr Studio repository also includes work-in-progress project documentation.

    Head over to the Tinymovr github repository for more.

    Stay tuned for more updates and releases in the coming days.

  • Tinymovr alpha Available to Order

    Yannis07/06/2020 at 20:35 0 comments

    Tinymovr is entering alpha testing phase, and you are invited to participate! Sign up below to get a super-early bird Tinymovr R3.2 Board or Dev Kit:

    https://forms.gle/omLXWxJpDSP388qm6

    Tech specs:

    • 3-phase brushless motor controller with Field Oriented Control
    • Input Voltage: 12 - 26V, XT30UPB connector, 35A continuous phase current
    • PAC5527 Integrated MCU+Gate Driver (150MHz Cortex-M4F w/ 128k flash, 32k RAM)
    • MA702 absolute position magnetic encoder with 12.5 bit resolution
    • FDMD8530 mosfets, 30V 1.25mΩ max. rDS(on), mosfets rated for 127A continuous
    • CAN bus and serial (TTL) connectivity, SWD header for debugging and flashing firmware.
    • 20kHz switching and control frequency
    • Board Dimensions: 40mm x 42mm x 10mm(approx height)

    The price of the alpha boards will be $39/39€, plus shipping costs (includes Tinymovr, diametrically-magnetized magnet and 1x DF-13 to female header cable). You will need your own means of talking CAN with the controller, a 3-phase brushless motor, a way of securing the magnet on the motor axis and Tinymovr on the motor, and a 12-26V power source.

    There are also dev kits available for $119/119€, plus shipping costs. Dev kits include Tinymovr + diametrically magnetized magnet + high quality T-Motor 4004 motor integrated in a compact stand, a Canable-compatible CAN Adapter and assorted power and signal cables and wires. You'll need a micro USB cable and a 12-26V power source.

    Alpha users will receive individual support in setting up Tinymovr for their projects.

    Please note that currently the amount of Tinymovr boards/dev kits is limited to one per person. In later batches it will be possible to purchase more boards.

    Tinymovr ships from the EU to addresses in Australia, Canada, the EU, UK or US.

    Estimated shipping is beginning of August 2020.

    Have fun building awesome robots!

  • Production updates, availability, open source etc.

    Yannis07/02/2020 at 21:54 0 comments

    There are a lot of important news to share :). Here they are in no particular order:

    1. I’m currently making an attempt at moving PCB assembly of the first Tinymovr batches in house. For those new to the project, assembly of previous batches was outsourced to Chinese manufacturers. While this is a safe and painless option, it is becoming increasingly challenging to realize the vision of Tinymovr as a low-cost but fully-featured servo motor controller, due to import taxes and customs fees. At the same time, PCB assembly prices in EU are sky high. Therefore, I decided to move assembly of the first prototype batches in house. Got the first PCBs from Aisler a few days ago and built two prototype boards. The boards have been tested with phase currents up to 20A and angular velocities up to 300000CPR/s (around 2100 rpm). I’ll be building a few more in the next days, at the same time trying to optimize assembly. I am so far confident that this is a viable option. I’ll reconsider outsourcing production if and when production scales to justifiable numbers.

    Here below the first home-grown Tinymovr :) :

    2. The CAN Bus transceiver swap outlined in previous posts has been a success. It has vastly improved connection reliability, and reduced MCU power draw (since it is powered directly from VBus) and thermal performance.

    3. There are questions regarding open sourcing of PCB schematics/drawings and firmware, so I think it’s time to clear things up for everyone:

    • Tinymovr drawings and schematics will NOT be open sourced or available for purchase. Maybe in the future. Not right now.
    • The firmware WILL BE open source, licensed under the GPL v3. There are still things to sort out in the firmware before releasing but I expect that by the end of July the it will be available in Github.

    4. There are also questions regarding availability of Tinymovr. If the in-house assembly experiment goes as planned, my goal is to have a limited alpha run beginning in the next 2-3 weeks. I’ll probably include options to order just the Tinymovr boards as well as dev kits that will include motor, CAN Bus adapter and programmer (most probably a J-Link EDU Mini). The alpha boards and kits will be distributed at a price near the cost of the board, components and materials. This means that the price of alpha boards/kits will be lower than the price of production Tinymovr, when released. The boards and kits will be thoroughly tested before being sent out. 

    5. I’ve been doing some performance validation mainly looking at switching transients and ripple current. Below I attach the relevant scope shots. 

    Below is seen around 3V overshoot on the rising edge and 5V on the falling.

    In the grab below there is a 200mV ripple at 18A phase current, using 3x 68uF 30mOhm ESR polymer capacitors. 

    6. I've complete the quadruped robot based on Tinymovr R3.1 boards. I'm glad to report that, using the 3D printed actuators the motor phase current is less than 2A at stance. Here a short video below:

    I’m really excited to be reaching an important milestone in this journey, roughly a year and a half after my first design attempts at Tinymovr. I hope this project will be able to foster a strong community and ultimately make creating awesome robots easy and affordable!