Skip to content

4. Electronic production

1. test machine and parameters

The first tests didn’t go as planned. We did follow every step in the instructions and tutorials.
Got the conversion and parameters in MODS like it should be.
Carefully loaded pdb blank and the 0.3mm endmill in the machine. Set XY and Z origin. And…

Each time we start the milling the endmill tip breaks off. Twice!

After that set the feedrate at 50% in Vpanel. Same result! Vpanel It seems that the moment the endmill touches the board it breaks.

Maybe we should use 0.4mm endmills? But we don’t have them and they have to be ordered.
Maybe we should use V-shaped engraving bit with tip of 0.2mm?

pff, 5 broken endmills later… Broken endmills

We looked to see if we can maybe slower the plunge rate, but that has no seperate control in Vpanel.
We got some extra information from Edu to look at the RML code and search for the code to adjust the plunge rate or Z velocity in there to maybe have better result. We got this cheatsheet: RML codes

and found some more info on the RML code and the different commands it uses.

the command we need to change is :

!VZ (Velocity select Z axis -- Z-axis feed rate setting command)  
such as !VZ 0.5

We should still test that with our .3mm endmill.
But afraid to break the last ones and we already lost valuable time.

So we first did a test with 0.2mm at 1mm/sec speed. Vmill_Zsetting

This was succesful!.
So we moved on and are going to use these to mill traces.

Cutting out the boards we did with an .8mm endmill


So we finally did the milling test board and that came out perfect.
- design file: linetest png
- design file: linetest outline png

2. MODS converting png to toolpath

The use of the mods software worked really well for converting png to .RML toolpath for the SRM-20 machine. Although you need to be alert while making your own png to invert the lines from black to white. mods mods traces

And make sure that the traces.png and the outline.png are of the same dimensions and scaling. As you can not always see clearly how big your board is in the MODS. And as we experienced with the monster adaptation of the hello serial board. They did not match. :)
Also the first monster was way to big also. scaled_monster

3. prep the SRM-20

Before starting the milling we make a spare bed for the milling machine and mounted 40mm of mdf on top to place the milling bed a bit higher in the machine. So the milling bit could be place deeper in the collet. srm_prep We first surfaced a pocket in the mdf with a 6mm endmill to be sure that the surface was flat and perpendicular to the milling head. With all the prep done we used double sided tape to fasten the blank pcb onto the bed. fixed_pcb Now we can start the actual production of the boards.
- design file: USB-FT230XS-UPDI.traces png
- design file: USB-FT230XS-UPDI.interior png
- design file: fts_mini_traces png
- design file: fts_mini_cut png

4. After the milling

Inspecting and cleaning the pcb, we had to redo some of them because some of the traces were broken during the milling. broken_traces Some boards needed a little sanding to get rid of the burrs. We used scotch-brite pad for that, which works really well. Just a gentle rub over it was enough. scotchbrite Light sanding and cleaning with isopropanol. Finally we also needed to scratch away extra copper that was left by not milling enough offsets around the traces. Between most traces you can leave that as it is. But for the USB connector it’s best to remove all the not used copper with al scalpel. cleanup_traces

One final test for continuity on the traces and we are ready to heat up the soldering iron.

testing traces

6. soldering

the tiny parts are difficult to see, let alone solder them. We installed a magnifying lens to try if we could solder using that. It seems we could use some more enlarging so we used a small usb microscope. This was amazing, it had such clear image and you could see all traces and part very well with it!

On to the soldering. The tiny legs of the FTDI chip gave me some troubles. I got bridges between them and while desoldering and cleaning it up I broke of a pad and a trace on the pcb. That I did not immediately know how to fix. bad_solder bad_solder I also had a busy week here with work and lots of machines breaking down. So I put this board aside and I tried with the FabtinyISP. The ATtiny has less legs and feels like they are a little bigger or more spaced.
I followed instructions on this page

good_pcb soldering Prepping the pads with a little solder and carefully and gently i got the chip soldered in. On to the other parts, which were a little easier to add to the board. Finally I got a finished board. soldering

and the heroshot 🙂. heroshot

7. programming and using it

I sadly did not get to this part this week. Work got in the way 😉.
It took me some time of reading and researching on how to actually get some firmware code in the chip.
I have an idea how to do it now, but didn’t get around to it for the moment.
I hope to update this with results of the programming.

This week I finally did get to the programming. I found some nice explanations on what steps to take here,

It did give me some headaches. Programming my board was a struggle. First my AVRISP programmer did not work. I have an old serial AVRISP, that used to always work. oldAvrIsp I have to use it with a USB-serial converter, because laptops don’t have a serial port anymore. But my new laptop only has USB-C ports, so i also have to use a Usb-C to A dongle. Lots of connectors and extra cables, so I first thought there was a problem with one of those.

After lots of adjusting in the make file, I didn’t feel like searching what was wrong with this setup and I wanted to try out using an arduino board as ISP, that worked half.



I was able to burn a bootloader on the tiny45. I was then also able to upload a blinking LED script into it. That worked. arduino_test

But I kept getting errors when trying to use de make command and avrdude commandline to burn the actual tinyISP firmware in it. Tried different approaches and again lots of adjusting the make file. But still lots of errors. One of the things i got from the fabisp programming tutorial page:

AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE) # edit this line for your programmer

That actually made some errors, because now avrdude makes this command twice. So i looked to the code in the makefile and saw that i had to adjust this line to

AVRDUDE = avrdude

The rest of the code gets filled in later in the script. So those errors were gone now.

But after this I kept getting out of sync errors.


Lots of searching and web-reading later. I also talked to Edu about my problem. And he suggested it has probably to do with the USB-C ports in my laptop. They might be to fast. So I found an old usb hub and put it in between. This seemed to work!!

So on to the actual programming, which in fact is pretty straightforward and doesn’t take up much time. Once the makefile is properly prepared, you have to compile the code

make clean //cleans up what was already in your folder
make flash //this makes the actual hex file and uploads it to your device. It also erases what was in there
make fuses //set up all of the fuses except the one that disables the reset pin


Now test the USB functionality of the device and see that your computer sees it as a usb device. I had to install drivers for this also first

make rstdisbl //blow the rest fuse, now you can't go back

And last also disconnect VCC from the VPROG pin on the ISP header by removing the bridge on the solder jumper.

Next thing to do is use my programmer to program that of Isabel 🙂

Last update: March 10, 2021