Missed some holes and didn’t realize until I already reflowed.. back on the CNC with the same registration pins
This is the second time I've seen codex showing thinking text that is completely unrelated to any conversation I've had with it. Previously it was showing a message about a $5000 estimate being too high, and now that "preparations for years 11 versus 22 could become important".
What's going on here @thsottiaux @embirico @ajambrosino
I'm increasingly convinced high purity quartz (HPQ) may be part of the strategic interest in Greenland and Canada.
HPQ is critical to semiconductor manufacturing, particularly the crucibles used to grow silicon crystals. Global supply is overwhelmingly concentrated in Spruce Pine, North Carolina, where detailed reserve figures are closely guarded. How much is left? Good luck finding out.
What do Greenland and Canada have in common? Quartz.
Semiconductor crucibles require exceptional purity, typically 4N–5N (99.99–99.999% SiO2), with strict impurity limits.
Greenland has ~6 million tonnes of estimated quartz at Ivittuut, with samples reaching ~3N purity. But with 80% of the island buried under ice and much of its geology underexplored, that may be just the tip of the iceberg. Its true HPQ potential remains largely unknown.
In Canada it gets interesting.
BC: Deposits at Mt. Rose and Armstrong have reportedly been successfully refined to 4N8 purity.
Manitoba: An estimated 15 BILLION tonnes of silica in situ. Sio Silica reports approximately 540 million tonnes potentially recoverable, describes it as the world's largest deposit, and claims laboratory processing has achieved 5N purity.
If even a small fraction of Canada's enormous silica resources can economically produce crucible grade HPQ, it's of extreme strategic value, especially given the unknown remaining reserves at Spruce Pine.
Reflowing some Infineon AS5047U magnetic position sensors to try out. I’ve used the D variant before which work very well, but high res needed SPI readout.
These have SPI for config and angle readout plus PWM, UVW, and ABI outputs but this U variant has full 14 bit, 16384 count resolution on ABI.
ABI is much more deterministic, lower latency with less overhead on an MCU with timers that support quadrature encoders in hardware, since you just need a single cycle read or a DMA trigger to get the angle.
They also have angular velocity estimators, averaging filters, and dynamic angle correction DSPs that compensate for internal delays vs angular velocity
Next going to try this RC Novak 540 10.5T motor. It has hall sensors which I’ll hookup to the JST hall input of the board later, trying senseless BEMF first
The firmware is built around deterministic runtime graphs. Can switch between sensor feedback, sensorless control and different observers over CAN. Shared STM32 drivers support HRTIM and advanced timers; BSPs provide board mappings. Reconfigure, tune and save without reflashing.
Finished bringup of the STM32 G474 LMG5200 half bridge GaN 3 phase BLDC controller board.
Testing using a small gimbal motor in FOC with sensorless BEMF observer feedback
"Compiling rust is slow"
Running cargo clean, then a release build and linking of a workspace with 14 member crates that depend on the heavy Bevy game engine with custom shaders using kache and dynamic linking. 17.8 seconds on a M3 MacBook Pro.
This builds the CNC CAM software I've been working on for milling PCBs from Gerber/Excellon or KiCad board design files.
Building without cleaning the workspace is even faster when iterating on the design.
Matt Thompson retweeted
Programmers were never necessarily engineers.
I judge software by its outcomes, not how its syntax was produced. I care about architecture, performance, efficiency, stability, and usability.
In my experience, those qualities are surprisingly rare. Developers often prioritize syntactic elegance while introducing unnecessary complexity.
Codebases have also grown beyond what any individual can reasonably hold in their head, leading to duplication, fragmentation, and endless layers of abstraction.
The paradox is that we keep introducing abstractions to reduce cognitive load, while collectively making the system more complex.
I don’t particularly care whether a human or AI writes the code. I care whether the resulting system is well engineered.
Engineering is about designing systems to meet a defined set of constraints, not pecking at keys on a keyboard.
My custom PCB CAM is running its first live job on the CNC..
Workflow is directly load a kicad PCB, panelize N boards, click generate, and run.
It automatically selects the best tools from persistent ATC magazine loadout and generates toolpaths using available tools. It picks tools appropriate for isolation and will do rest machining only using the smallest tool where necessary. Picks endmills for routing, does inside contours for holes, outside contours for edge cuts. Ensures climb milling direction on material engagement.
It is net aware and verifies the nets are isolated, generates an NC, uploads it to the machine, runs Z zero and 9x9 mesh compensation over the NC bounds, and runs the program.
This brings 5-10 minutes of manual CAM setup and visual inspection of manufacturability (ensuring tools actually fit to isolate copper) down to seconds.
Finished up on the CNC.. time for paste and reflow on the @voltera_io
I still have a handful of the TI LMG5200 GaN half bridges on hand. They’ve been working great on my other boards so I decided to layout a 3 phase BLDC controller for my custom rust FOC stack.
This will use a STM32 G474CET, with complementary HRTIM channels to three LMG5200s, a small buck for 5V, two bidirectional INA254’s inline with two of the motor phases for current feedback, and some JST connectors for either hall sensors or SPI/ABI magnetic encoders.
Molex microfit 3.0 for power, and surface mount M4 screw terminals for the motor.
And of course a CAN FD transceiver for C2
I just got some updated AS5047U magnetic sensors that have 4096 pulse/rev quadrature output that I’ll be trying out.. I’m excited for this since you used to have to get 12 bit angle over SPI, and ABI output was decimated to 10 bit on the previous revisions.
ABI is connected to a hardware timer in encoder mode, so getting shaft angle is just a register read rather than having to schedule SPI transactions aligned with PWM.
I still have a handful of the TI LMG5200 GaN half bridges on hand. They’ve been working great on my other boards so I decided to layout a 3 phase BLDC controller for my custom rust FOC stack.
This will use a STM32 G474CET, with complementary HRTIM channels to three LMG5200s, a small buck for 5V, two bidirectional INA254’s inline with two of the motor phases for current feedback, and some JST connectors for either hall sensors or SPI/ABI magnetic encoders.
Molex microfit 3.0 for power, and surface mount M4 screw terminals for the motor.
And of course a CAN FD transceiver for C2
I just got some updated AS5047U magnetic sensors that have 4096 pulse/rev quadrature output that I’ll be trying out.. I’m excited for this since you used to have to get 12 bit angle over SPI, and ABI output was decimated to 10 bit on the previous revisions.
ABI is connected to a hardware timer in encoder mode, so getting shaft angle is just a register read rather than having to schedule SPI transactions aligned with PWM.
Added multiple PCB support in the CNC CAM app I've been working on. Loads native kicad_brd or gerber job manifests, auto arranges them onto defined stock and can export excellon and paste gerber for the whole panel so I can run multiple small boards at once on the Voltera
Here's an edge at the SW node when it transitions from the low side turning off to high side turning on. Blue trace is the PWM HI input of the GaNFET. Green trace is the SW node at the inductor.
The STM32 HRTIM hardware is configured to about 5ns of deadtime on the complementary outputs, which has some propagation delay. The roughly 10 ns negative interval occurs while both GaNs are off. The inductor current must continue flowing, so it pulls the SW node negative through third quadrant conduction until the high-side FET turns on. GaNs do not have a body diode like a MOSFET, and reverse voltage is higher.. in this case nearly -5V.
On the spectrum analyzer with a near field probe sitting over top of the hot loop, you can see the energy of the ringing at around 180MHz.
Going to see if I can pull off a CNC machined digital SMPS using an STM32G474 and LMG5200 GaN half bridge as a power distribution board for my hobby robot.
The GaN stage will be driven by the G474's HRTIM, with ~184 ps (~5.44 GHz equivalent) timing resolution.
Inductor current is measured with a 4 terminal kelvin shunt (much more reliable on CNC boards, as kelvin is internal to the resistor) and high side INA sense amp, feeding both an ADC and an on chip comparator.
Planning to run peak current-mode control.. an internal DAC set by the outer voltage loop defines the cycle by cycle current threshold on the comparator, which asynchronously terminates the PWM pulse through HRTIM hardware.
The outer voltage loop will use the G474's FMAC accelerator for 3P3Z IIR compensation from a voltage divider buffered using an internal opamp follower routed to another ADC channel. Also connected to a comparator for HRTIM fault events for fast hardware based over voltage lockout.
Includes a INA254 bidirectional sense amp with integrated 400uOhm shunt for monitoring battery current.
Added CAN bus to broadcast voltage, current and status telemetry across the platform.























