Prototype Design Revisions


I’m running a bit behind on my self-imposed schedule, but you’re all Glowforge owners - you should be accustomed to such things.

I’ve decided to take the time to do a few things while making the revisions.

First: I’m converting all my design files to the latest beta of KiCad. I did the design work for the original prototype in an earlier beta for version 5. However, they changed the way they organized the library since then, and it screwed me all up.

Not a big deal, but it does mean that I am starting the whole schematic capture from scratch.

Second: I’ve learned quite a bit about the design and functioning of the Glowforge while bringing up the first prototype. There were many areas where I just followed what Glowforge did on their control board simply because I wasn’t sure why they did it. With my newfound understanding, I’m making some significant changes (detailed a bit more below).

Below are a couple shots of the new draft of the design. Please note, these are not fully vetted and shouldn’t be relied upon as accurate.



Notable Changes:

  • Fans: Glowforge uses the iMX6’s PWM outputs to drive the fans, and input pins on iMX6 to read the fan tachometers. The problem with this is that the fan tachometers generate a processor interrupt twice per fan revolution per fan. That’s over 41,000 interrupts per second during normal operation, just to read the RPM of the fans. Insane! I am using a dedicated hardware fan controller instead. It costs less than $1.50, and communicates over the I2C bus. It also has some nifty features (including automatic speed control), giving users some more things they can tweak.

  • Analog to Digital Conversion: Glowforge used a PIC microcontroller to convert the analog voltages coming from the various temperature, infrared, and high-voltage sensors to digital values. The PIC is cheap, also around a $1.50, but has the disadvantage that it needs to be programmed. In a production product, that’s not a big deal. In a small batch hobby device like the OpenGlow, it adds complexity that most users will probably not like. Plus, you need to have a programmer (an extra couple hundred dollars). Instead, I’ve replaced this with a dedicated ADC with an I2C interface. It costs about a $1 more than the PIC.

  • Button LED Driver: The downfall to removing the PIC is that it was also used to drive the LED’s in the button. I’ve replaced that with the same driver used for the fans, as it has 3 PWM outputs that are easily programmable via I2C.

To those with a background in electronics, take a look and tell me what I’m doing wrong.

Feel free to ask what anything in there does. If I know ( :wink: ), I’ll pass on the knowledge.

I’ll post more design details on this thread as I complete them.


As always Scott, thank you for your efforts.

The fan interrupt factoid was… Interesting. (There’s no emoji that captures my feelings.)


I’ll be reducing unnecessary interrupts a bit further when I eliminate their software PWM driver that is running the heater in the coolant flow sensor.


Hot off the presses…


Obviously, this is very different than the Glowforge factory board as it uses much more advanced drivers.

The differences between my first prototype and this version are mostly minor.

First, I removed the analog current input. There really isn’t a need as you can fine tune the stepper current via I2C registers. I do need to tweak the values of the current sense resistors, though. By experimentation, I was able to get very reliable operation with much less than the rated current on the stepper motors. There is still a little exploration left to do there.

Second, I am connecting the diagnostic outputs of the drivers to inputs on the iMX6. This will allow them to be programmed to trigger interrupts when certain conditions are met (think missed steps, among other things).

Third, while it increased the part count, I am now powering the internal logic from the 5V source instead of the 40V source. The difference is about 3 watts less of continuous power dissipation. Small, I know… But with all of the other things that add to the overall internal temps, I figured it might be worth it. I’m going to tweak it to allow this to be optional (you can delete the parts, and add alternate parts instead to skip this capability).


Yes the normal max current rating for stepper motors gives a temperature rise of 80C, so it is normal to run them well below that. Half the current gives one quarter of the temperature rise, which is a lot more reasonable.


Rough board layout is done.

I’m giving the whole works a full triple check this weekend, and then finishing up the final layout tweaking.

Since I essentially redid the whole thing from scratch, I need to go over all the KiCad library footprints with a critical eye. I’ve already found some problems with a few of the beta footprints.


Some renderings from KiCad (missing a few component models, but you get the idea):


UPDATE: Board was sent off to Seeed on July 19th. As of this post, it still shows as processing (stencil is done).


Prototype v2 PCB’s have shipped, and I expect them to hit my doorstep today.


They’re here!

Time to populate.