Milling 0.2mm (7.9mil) Traces with a Desktop CNC

I recently needed a breakout board for a 2 x 2 mm STDFN chip, but wasn’t able to find one online. I decided to see if my 3020 desktop CNC mill was up to the task. The trace widths going into the chip are 0.2mm. The spacing between the pads are also about 0.2mm.

The smallest bit I have is a 0.1mm engraving bit so there isn’t much room for error.

I generated my G-code using Flatcam. I used 4 passes with a 45% overlap to provide good isolation between tracks. Here is a good tutorial on the entire process.

The next step is to generate a height map in my CAM software Candle. The goal here is to correct for unevenness of the copper surface. This is a critical step to get tight tolerances. I’m using a 5×5 grid with 10×10 interpolation grid. Here are a few more tips:

  • Secure your copper board as flat as possible to the CNC bed using tap and super glue.
  • Don’t put pressure on the board with the Z probe when doing height mapping if you are holding it with your hand. Depressing the board will change the height of the offsets.

That’s it. The traces are very delicate so I wouldn’t want to do a large board like this, but it’s good for small prototypes.

DIY Reflow Oven w/ Exhaust Build – Part 2

The design for version 2 of this project required the PCB to double as a panel replacement for the toaster oven, so board quality was an important consideration. Luckily, the folks at PCBWay kindly offered to sponsor the manufacturing. The end result was a perfect white silkscreen and accurate cut-out dimensions, which is why they have been my PCB vendor of choice even before this partnership. They have also streamlined the process by providing a KiCad plugin that automatically packages your board design, opens a browser, and adds it to your shopping cart. Combine this with their responsive support engineers and real-time production status on their website, and you are basically guaranteed a fast turnaround with no errors.

The previous build used a Raspberry Pi, because that’s what I had at the time. Unfortunately, I needed it during the great Raspberry Pi chip shortage and that left my oven unusable. This time I decided to rebuilt it with an ESP32S3 to try out the graphics library LVGL. It’s open source and has a free (with limitations) tool called Square Line Studio to build GUIs with. I decided to give NXPs GUI Guider a try instead, which has no limitations. It work like most GUI editors and generates code for all of your UI screens, events, animations, etc. It even converts your asset files into C structs. This greatly reduced the boilerplate code you need to write.

Currently, only the Reflow and Heat screens are functional. Reflow runs a temperature controlled heat profile to reflow solder boards. Heat allows manual control of the oven. Dehydrate will bake parts, 3D printer filament or anything else at low temperatures to remove moisture. Settings will let you set the WiFi credentials.

The board has the following specs:

  • 2.8 inch capacitive LCD from Adafruit
  • ESP32S3
  • Micro SD slot
  • ULN2003A stepper motor driver
  • Piezo buzzer
  • LM35 temperature over heat sensor
  • RGB LED
  • Rotary encoder
  • Low side Mosfet switch x2

Finally, I switched from a stepper to a servo to control the exhaust door. This makes it easier to know the exact position of the door after power on. Next up will be finishing the dehydrate functionality.

DIY Reflow Oven w/ Exhaust Build – Part 1

Yet another toaster oven build. I know…

There is a lot of debate if a DIY reflow oven even needs a PID controller. The argument goes, either spend the money and buy a professional machine for a few thousand or build your own and just eyeball the temperature with a manual on/off switch. Anything in between isn’t worth it because of the large temperature variations due to the nature of the heating elements, etc, etc. There is probably some truth to this, but who doesn’t love over engineering workshop tools?

Side note: This post isn’t meant to be a guide (read: I am not responsible if you burn your house down). I suggest purchasing a kit from whizoo or someone similar because this probably isn’t worth the time investment.

There are two problems I was hoping the addition of an exhaust fan would solve.

  1. PID tuning difficulties: The internal temperature of an oven is difficult to control if there is no way to remove heat due to thermal inertia. It takes a few seconds for the temperature to increase after the heating elements turn on and many seconds to stop increasing after they turn off. This makes tuning difficult and usually requires hard coding difficult parts of the reflow process.
  2. Rapid cooling: Most reflow profiles required rapid cooling after reaching maximum temperature (see below), which isn’t possible without some way of removing heat. Opening the oven door is one workaround that is probably good enough for most people, but an automated solution would be nice.

Hardware

I bought a broken Breville BOV450XL because it has 4 heats quartz heaters.

After disassembling the oven, I cut out the bulge in the back to make room for the exhaust.

Added some JB weld to attach some sheet metal. I should have cut a hole in the back before I did this.

Attached a 4 inch duct with a stepper motor to control the air damper. The air isn’t that hot when it reaches the PC fan so I’m hoping it holds up. I’ve also attach some insulation to the air damper to keep in as much heat when it’s closed.

I used DEI Floor & Tunnel Shield to insulate the inside as whizoo has suggested in their build guide. I opted for the non-adhesive version because I didn’t like the idea of glue inside of the oven even if it’s temperature rated. The outside of the oven was painted with some left over high temperature paint I had and insulated with a ceramic fiber blanket.

I cut a section in the control panel to make room for an Adafruit 2.8 inch LCD. The bottom two holes were filled in with old automotive fiberglass filler I had. The controller is a Raspberry Pi Zero W. A motor driver and solid state relay control the fan and heating elements. They are monitored by a temperature sensor to make sure they don’t get too hot.

The mostly finished product can bee seen in the video linked in the post.

Software

The software is very basic so far. It allows manual control of the oven for testing purposes and displays the temperature on a graph with the current reflow profile. It was more difficult to cross compile Qt than it was to build the application.

Surprisingly, I was able to get away with only using proportional control with the addition of the exhaust fan!

First test

The first test was a success. I was able to solder a couple of fine pitch components like the BMP280 and the SGP40 for another home automation project I’m working on. This board will track home water usage, water leaks and air quality. More details on that soon.

Future Improvements

  1. The oven is so air tight, I still need to open the door a bit to move enough air through through the exhaust during the final cooling phase. Maybe I should add some kind of air intake valve.
  2. The PID controller needs to be tuned a bit more to reduce overshoot so the fan doesn’t come on so much.

Cross Platform Crypto Currency Tracker

coinagecap

I built a crypto currency tracker for the desktop to experiment building and deploying a Qt5 application. Getting the initial prototype ready was easy, but I quickly ran into a few problems integrating QML, Javascript and C++. Initially the entire application was written in QML, but I could not find an elegant way to sort and filter the list simultaneously so I turned to the C++ class QSortFilterProxyModel. However, there are examples on sorting without filtering.

After exposing the QSortFilterProxyModel class to QML I was able to define custom filters based on each items name and “star” while also sorting based on multiple criteria. While this solution worked well it broke data change animations because QSortFilterProxyModel does not emit the correct beginmoverows() signal. This is something I don’t have a solution for yet.

I am continually impressed how much Qt has expanded their product. You can now build for embedded devices, Android, iOS, and all major desktop platforms. However, the trade off for a standardized toolkit is inflexibility. Developing a plugin or adapter to the outside world, which could be calling a Java API on Android or calling Qt’s C++ APIs from QML, will probably be required for moderately complex applications.

Source: https://github.com/nabilt/coinagecap

DIY Electronic Derailleur on Instructable

60a38-elec_final
I’ve posted an Instructable showing how to build and install an electronic derailleur. If you like this project please vote on the Instructables page. A more complete and finished product including my bike computer is in the works.
For now the Arduino sketch, schematics, Fritzing diagram, bill of materials and CAD diagrams can be found on the github.

 

Open source Bluetooth 4 breakout board means no more Mi-Fi

Update: Project is posted on github
One thing I always need for my hardware projects whether I’m working on sensors for the home or a fitness device is a low power, cross platform and affordable wireless module. I’ve used HopeRF modules like the RMF22B for their affordability and low power capabilities, but because they don’t use any standard wireless protocol I’m forced to make adapters for endpoints like smart phones or computers. Wireless standards like ZigBee partially solve this problem, but off the shelf modules are expensive and still don’t help if you want to talk to a smart phone. One might think Bluetooth is the solution then, but in the past power efficiency and range were a problem if you were building a temperature sensor for example. Also, you had to be a certified Apple accessory developer if you wanted to make a Bluetooth accessory for the most popular smart phone in the market. Well, all of this has changed with Bluetooth 4.
Bluetooth 4 Low Energy is the latest incarnation of the Bluetooth standard, which most devices released this year will adopt. Bluetooth.com says,
Key features of Bluetooth low energy wireless technology include:
  • Ultra-low peak, average and idle mode power consumption
  • Ability to run for years on standard, coin-cell batteries
  • Low cost
  • Multi-vendor interoperability
  • Enhanced range
There are two reasons why you should be excited by this. First, this low energy mode means you can use Bluetooth in a range of new applications like home automation, wearable electronics or anything that needs to log data for long periods of time. Second, Apple has opened up their Bluetooth API so anyone can create a Bluetooth accessory for iOS 5 and later. Why did they do this? One reason might be they don’t have to worry about developers draining a users battery with a poorly made accessory with the new standard. I can’t think of any reason to use a different wireless standard for these reasons.
This brings me to my breakout board. This breakout board is the reference schematic for the Nordic nRF8001 done in Eagle originally done in Altium by Nordic. It is a simple wireless transceiver with an SPI interface with few passive components.
Why this IC? A quick search on the major electronic distributor websites shows there are a few manufacturers of Bluetooth 4 chips.
  • Blue Giga   ~$20 – $40
  • Cambridge Silicon Radio   ~$3
  • Nordic Semiconductor   ~$4
  • TI   ~$5
  • Panasonic  ~$15
  • RFM (same one iphone uses)  ~$40
Parts from Panasonic, Blue Giga and RFM provide ready to go modules, which explain their high price. RFM actually includes WiFi! Only TI, CSR and Nordic provide ICs. However, TI is a bit larger and expensive because it provides a complete system-on-a-chip with integrated 8051 processor while CSR makes you sign a NDA to get the datasheet. So I choose Nordic because of the ICs small footprint, open specs, affordability and simplicity. Sourcing the parts from Mouser.com it looks like a populated board should cost ~$12. Take a look at my BOM.
One thing you should keep in mind is none of these chips are backward compatible with older Bluetooth standards, but that should not be a problem by the end of 2012.
I plan to send out the board and order the parts this week. Hopefully I can also start working on firmware and a few demo smartphone apps. Until then checkout the source on Github.

Credit to Dr. Michael Kroll for the information about Bluetooth 4 and Mi-Fi. Check out his Arduino Shield.

nRF8001 Breakout board schematic

Weekend Project: Likelist.ca

Update: Source code on Github
Introducing www.likelist.ca. A way to share all of your likes and favorites from across the web. You can think of it like about.me except with your ‘likes’ from various social networks embedded on a Pinterest style page.
Planned Improvements
Infinite scroll, more services, pop out images for a larger view, user thumbnails, personal pages, visuals for tweets with no links and instructions 🙂
Unfortunately, Facebook doesn’t provide a users likes without authentication, which defeats the purpose of having a public like list and Google Plus doesn’t have an API for retrieving +1’s yet.

 

OBD-2 Testing Update

I finished testing the OBD-II adaptor board this week on a Toyota Camry. As you can see in the picture the board had a few bad connections, but nothing that couldn’t be fixed with a few jumpers.

I was able to get a number of stats from the free Torque Android app like
  • Throttle position
  • Engine PSI
  • Collant temperature
  • Engine Load
  • A number of Diagnostic Trouble Codes
  • O2 sensor voltage
  • Revs
One interesting note I learned was the evaporative system test reported as incomplete, which Toyota supposedly repaired during my last visit!
Next up, test the remaining OBD-II protocols and bluetooth range. Expect a new revision in a few weeks.

OBD-2 Build Update

I finally finished assembling the OBD-2 board yesterday. It has taken a while because I’ve been working on an exciting web app for hardware engineers, which will be launching in a few days. I will continue to update the schematics on github, but I don’t recommend building version 1.0. There are a couple of layout and footprint issues I want to workout first. Next up, testing.