Goal: Mill, solder, and test custom PCB design
Software: Mods (computes machine routes)
Hardware: Roland SRM20 (milling)
Materials: PCB blanks (copper)
Prior Experience: Some soldering
New Methods:
PCB milling
Details:
- Printed circuit boards (PCBs) can be made at home
- Requires a copper-coated board that can be etched or milled
- We will mill ours, cutting away unwanted copper
- To start, convert design into milling routes
- The milling machine must be told not just where to cut, but what route to take during cutting
- Many options for calculating the route
- I use Mods, which has a program specifically for Roland SRM20 routes
- The routing calculator takes a monochrome PNG (or SVG) as an input
- Export PCB design as PNG in EAGLE:
- Open the PCB trace file
- Select "Display Layers" tab
- Hide all layers except the layer you want to calculate a route for
- Type "export" in the command line and hit enter
- Export as a monochrome .png with at least 300dpi
- Note that routes for PCB trace and outline must be calculated separately
- So, two separate .png exports!
- For me, the PCB features are in layer "Top" and outline is in layer "Dimension"
- Convert monochrome PNG to mill route using Mods:
- Again, *trace* and *outline* must be done in 2 separate steps!
- Always cut traces first to ensure board is immobile
- Open Mods and select program: machines > Roland > SRM20 mill > PCB
- Import your trace (or outline) .png file
- Set PCB default parameters: "mill traces (1/64)" (or "mill outline (1/32)")
- Calculate the route in the "Mill Raster 2D" module and review result
- Calibrate position of the mill bit:
- Use the "WebUSB" module (far right) to connect to the SRM20 via USB
- Using "Roland SRM20 Absolute coordinates" module...
- Click "move to origin", noting the new location of the bit
- Adjust x and y until satisfied
- Adjust z until bit is near copper plate surface
- Physically lower the bit until touching surface
- Re-calculate and send file to machine to cut
- Repeat steps for outline after doing trace
- Dust and clean PCB of all debris
- Check for issues, manually correcting if possible (or fully re-do)
- Now, time to solder components
- Due to time constraints, I won't be detailing assembly and testing
- See embedded programming for parts and embedded programming for basics
- This week, I tested an I2C connection with an IMU: BNO-085 dev board from Adafruit
- I2C requires four pin connections: SLA, SDA, 3.3V, and ground
- As mentioned in electronics design, I matched my 4-pin header to Adafruit's BNO-0xx dev boards
- This enables modular plug-and-play testing
- Will use same modular approach for testing different buttons/switchs for final project
- To test the I2C connection, I used examples from Adafruit's BNO-08x library in Arduino IDE
- Initially, it worked! And then, it didn't...
- After some troubleshooting, I found that the BNO-085 worked fine with my RP2040 from embedded programming
- It's unclear why the BNO-085 stopped working with ESP32-C3 on my custom PCB
- Meter readings show that the pins are connected properly
- Assuming something mechanical. Will re-build for next time
Files:
[next week]