Archives: Development

power_dist load test circuit

While testing some variants and new versions of the power_dist board, I wanted to be able to simulate the types of loads that it experiences with a fully loaded robot. Some things are easy, like this capacitor attached to an XT30 connector:

I also have giant power resistors in a similar form factor:

However, a dumb load resistor isn’t a particularly representative load. Most likely, the loads that a power_dist will drive are active loads with switching regulators. When the output voltage is lower, the current will be correspondingly higher. That is especially important when validating pre-charge behavior, because it means that the current is much higher during the initial pre-charge window than it would be for a pure resistive load.

Microscope mount

I’ve been using a relatively inexpensive microscope for SMD soldering work for some time, connected via HDMI to a 24" monitor.

For the price, I’m definitely happy with it, but as I’ve been doing more soldering work, I’ve become less happy with the mounting stand. The arm it mounts to often does not reach far enough to get the optics over the part of the board in question, or the base is too tall or wide to fit under it. If you want to examine something from the side, you have to tip the entire base over. I have resorted to spinning the microscope around and counterbalancing the base with a large weight, which works for some definition of “works” but only improves the reach by a little bit.

moteus and socketcan

Various users have been trying to use lower-cost Raspberry Pi CAN-FD adapters for the moteus controller for some time (like this one from Seeed), but have had problems getting communication to work. I buckled down and went to debug the problem, discovering that the root of the issue was that the linux kernel socketcan subsystem calculates very sub-optimal CAN timings for the 5Mbps bitrate that moteus uses. This results in the adapters being unable to receive frames sent at the actual 5Mbps rate, but instead only slightly slower.

mjbots repository reorganization

In the spirit of “most of your users are yet to come”, I’ve gone through a moderate re-organization of some of the mjbots github repositories to make them more usable and sensible.

The biggest change is that mjbots/moteus has had a history rewrite and a directory structure re-organization. The current development (and default branch) is now “main”. The biggest changes:

  • Proprietary pdfs have been removed
  • All hardware which isn’t related to the moteus PCB has been removed
  • The firmware source has moved from “moteus/” to “fw/
  • The client side utilities moteus_tool and tview have moved to the “utils/” directory
  • There is now a “lib/” directory which houses client side libraries

Second, mjbots/power_dist is a new public repository that houses the power_dist board firmware and software.

New tool day: Pace ADS200

I’ve muddled along for a long time soldering with a little Weller WES50. I’ve done a lot of work with it, but given how many SMD boards I’m doing with big ground planes and tiny components, I needed something a bit more capable. Enter the Pace ADS200 from tequipment:

Made in the USA, with 120W of power and a wide range of tip selection it has been an incredible upgrade. All those soldering jobs which were painful before are so much easier, and I don’t even have all the tips I wanted for different jobs yet. I also have the MiniTweez, but don’t yet have the tips that will let me show that off. I’ll try to post some soldering videos in the not too distant future.

Pocket NC windowed machining

When I first acquired my Pocket NC v2-50, I was planning on using it for rapid prototyping of small aluminum parts. I figured with 5 axes, I could do many things with a single setup just clamping from the bottom. However, I was initially thwarted in that plan and had to resort to more creative workholding solutions due to two problems.

First was the vice that came with the Pocket NC. It is serviceable, but provides very little clamping force if you want to hold something that is tall and skinny. For now, while it isn’t ideal, I’m making good progress with the wcubed vise.

Recalibrating the Pocket NC's X/Y home position

This summer I had to send my Pocket NC in for some service, when it came back, I immediately noticed that the X axis homing was very far off, something like 0.01 inches, as I was boring a hole in one side of a part, spinning it around the B axis, then boring a countersink in the other side. The two were very clearly not concentric. I suspect the homing mechanism shifted in transport or something, because the error was very consistent.

New compilation commands for moteus

To stay on top of bazel development, and to prepare for some future improvements, I’ve gone ahead and upgraded the moteus firmware build system, rules_mbed to use the new bazel “platforms” toolchain resolution mechanism.

Previously, rules_mbed used the “crosstool_top” bazel mechanism for toolchain configuration. This allowed a single package to contribute a set of C++ toolchains which would be selected based on CPU and compiler. One of the downsides from the rules_mbed perspective, is that it made it difficult to make a build that included both mbed targets and host targets (or anything else non-mbed). rules_mbed worked around this by including a functioning clang host toolchain within it.

New leg cable management

Now that the quad A1 has been running faster, it has started “running” through its ad-hoc cable management too. After replacing a harness for the nth time, I decided to actually design something rather than just keep re-building over and over again.

My current best effort uses semi-flexible nylon split conduit, captured in 3d printed forms at each joint. Inside that conduit is basically the same harness I had before, with the cables selected to be more robust to repetitive motion. The nylon conduit is only semi-flexible, so it enforces a relatively large minimum bending radius on the wires within, while still sticking to the black quad A1 color motif.