Link

My Term Plans / Desires (2021-02-18)

I have a lot on my wishlist, and were I to do only a few of them I would be stoked. Here, I’ll try to sketch them into small projects.

Close the Stepper Loop

This is first at hand, and closest as well. I have most of the subsystems for my closed loop stepper driver together, and now I need to write the code that will make it integrate-able into machine systems. This involves doing some good positioning control, maybe involves auto-tuning control parameters, and reporting some ‘effort’ metric to higher levels of the system.

Close the Motion Control Loop

My current motion controller subsystems work alright but could be made wonderful with automatic tuning / rate configuration given data from the closed loop stepper project above. I would like to have easily configured / setup motion control systems alive and well by the end of this term. They’re close.

Make my Machines my Workhorses

I am close to having machine systems that I would prefer against COTS machines. I want this to be true by the end of the semester, starting with clank-the-printer. This will involve robust-ening many subsystems, building some better UIs, and potentially shifting architectures around such that i.e. machine-specific controller builds live on the raspberry pi attached to machines, rather than on my mercurial laptop.

Bring the Tool Changer to ‘Completion’

The current tool changer is up and running, I want to keep adding end effectors and potentially add a pogo-pin electrical connector to it, for hot-swapping network links as I hot-swap hardware.

Control BLDC Drives

Give me the three-phase servo drivers. Likely approach: pull another OSH design, stick my systems-assembly code include in it, wrap their firmware with my network API, and play ball.

Test the SPI-PHY

My UCBus, UART-Based PHY is capped at 3MHz and this ends up limiting return bandwidth on large busses. I want to udpate it with a ~ 25mHz physical layer that uses SPI peripherals (that are typically ~ 16x faster).

This should be optionally isolated, maybe with pulse transformers (that would require also manchester encoding) or maybe with the more benign RS-485 COTS isolation ICs.

A likely limit here is how-fast any given micro can handle the required interrupts. At 25MHz this becomes demanding… time between data words is small.

On a related note, I won’t want to re-design circuits that use the UCBus, so this will be a great test of how well my embedded networks handle port forwarding along links of various performances. Grow at the edges!

Finish / Continue my Actuator Projects

I have two baby meche projects, both of which I should file provisionals on before publicly disclosing them. I want to at least get to that stage on both. They are both transmissions / drives.

Teach / Record / Share

The MTM site would benefit from continued improvement: I want this to be a place that anyone who is curious about machine building can go to be inspired and also learn from very high-level down to real dungeon diving. Some particular topics:

  • microcontroller de-mystification: what’s a hex file? what’s a build toolchain? how do I get my code on my micro? what’s a programming header? what’s a special function register? how do I read a datasheet?
  • what are kinematics, and why should I care?
  • how do I manufacture circuits, or reflow them?
  • how to search for ICs / components
  • what are tradeoffs for various transmissions: belt drives, leadscrews, rack and pinion? various guides: linear rail, linear rod, roller bearing, air bearing, etc?

Make Python my Friend

Scientific computing loves Python, and bringing Py into my systems at the same level of ease as I currently integrate JS with Embedded would unlock very many things:

  • computer vision
  • nice matrix maths (for kinematics, etc)
  • potentially better timers in a high level language
  • most of scientific computing

Integrate CV into Machine Workflow

I want to hello-world this, as it opens the door to so many other experiments. This means making my system assembly… systems robust with larger datagrams (images) and streams (video). I don’t know what application-form this will take yet.

Assemble all of the Systems

I am eternally working on networked control subsystems. My going build of these are working well, I would like to formalize them well enough that they span Python, JS and C, and explain to others how it all works internally. Ideally, this is elegant / fast / beautiful / robust. Broadly, I hope the output of this meta-topic is a series of small code-includes that serve as the ‘glue’ between heterogeneous system elements: machines are made of hardware, and of code, of all levels. We need better ways to put eachother’s specialized labour to work in our specific applications.