Homework assignment

Electronics production

Make the FabISP in-circuit programmer.

How to make a circuit with milling

0. Suitable tools

            First you need to prepare the tools and the machine. What will you need:                          We found end mills on this site - series EM. The shank diameter of 4mm, so the MDX-20 couldn't use them.             

1. Prepare machine

            To make ideal horizontal surface of the workarea we used MDF lining and mill it to flat.             

2. Prepare g-code for milling

            To design circuit I used Eagle Light Edition and a custom script PCB-GCode for Eagle. You can download the latest version of the script here . Installation of PCB-Gcode involves unpacking the archive to a folder path which is then added to the library ULP Eagle (Control Panel Eagle -> Options -> Directories ...).             

            Than you need to configure PCB-Gcode: menu bar of Eagle File -> Run ULP -> Select "pcb-gcode-setup.ulp".             

            In the settings choose the diameter of your end mill and other parameters (cutting depth should not exceed half the diameter of the mill - otherwise it is likely to break it, feed rate - 200-300 mm / min.)             

            Then click "Accept and make my board" - preview the result (color can be changed by clicking on the keyboard letter "C") - it is necessary to verify that all paths are separated from each other. Files with the g-codes will be automatically created in the project folder with the extension "tap".             

            Gcode for the cutting out of the plate I prefered to write by myself, based on the size of the board and selected mills. For 3mm mill and board sizes 25x45x1.7mm (XxYxZ) (XxYxZ) g-code would look like this:             
            The initialization code for the machine
            Code spindle speed (15,000 rpm. / Min.)
            M03
            G00 Z40.
            G00 X-1.5 Y-1.5
            G01 Z-0.6 F150
            G01 Y46.5 F300
            G01 X26.5
            G01 Y-1.5
            G01 X-1.5
            G01 Z-1.2 F150
            G01 Y46.5 F300
            G01 X26.5
            G01 Y-1.5
            G01 X-1.5
            G01 Z-1.8 F150
            G01 Y46.5 F300
            G01 X26.5
            G01 Y-1.5
            G01 X-1.5
            G01 Z20.0
            M30
            

            Step by Z should not exceed half the diameter of the mill. The shifts for the external cut is equal to half the diameter of the mill. Minima Z should be a little deeper than the thickness of the PCB, to cut it through. Very large cutters should not be used because you can damage the board (it can move suddenly if the double-sided tape will not hold). M03 - Spindle start code, M30 - Spindle stop code (in different models of milling machines, these two codes may vary).             

3. Mill the plate and solder it

            The main thing - be careful with the end mill since they are very easy to break. When you're setting the Z zero level enable the spindle rotation of the mill and only than approache it to PCB. Load generated by a PCB-Gcode G-code to the computer, edit it and add / fix the beginning and end of the code. Install end mill and run g-code. After this change end mill to the cut mill and run a second file corresponding to the contour cutting.

                         

4. Congratulations!

            
            

Following materials were used

            

Programming of FabISP

To program FabISP I used Fab Academy Tutorial page and Ubuntu. Firstly I installed all software and downloaded a firmware:
sudo apt-get install flex byacc bison gcc libusb-dev avrdude gcc-avr avr-libc libc6-dev
cd ~
wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip && unzip firmware.zip

Then I programmed FabISP using AVRISP2 programmer:
cd firmware
make clean && make hex && make fuse && sudo make program

After it I removed solder bridge and 0 Ohm resistor:


Following materials were very helpful: text, video.
Russian version

Как сделать печатную плату фрезеровкой

0. Подходящие инструменты

Для начала нужно подготовить инструменты и станок. Что нужно: Ближайшие к нам микрофрезы мы нашли на данном сайте - серия EM. Хвостовик в диаметре 4мм, поэтому на MDX-20 эти фрезы использовать не получится. Также был найден сайт энтузиаста из Евпатории, у которого тоже можно найти микрофрезы.

1. Подготовка станка к работе

На рабочем поле станка нужно закрепить что-то плоское и надежное ("жертвенник"), чтобы при выпиливании платы фрезеровать не рабочее поле станка, а жертвенник. Мы в качестве жертвенника использовали МДФ. Если есть сомнения в параллельности координат и поверхности жертвенника - нужно отфрезеровать плоскость не меньшую по размерам размеру текстолита с помощью большой фрезы (более 3мм в диаметре). На плоскую поверхность жертвенника с помощью двойного скотча закрепить текстолит.

2. Подготовка g-code для фрезеровки

Для проектирования была использована программа Eagle Light Edition. Для нее есть пользовательский скрипт PCB-GCode. Скачать последнюю версию этого скрипта можно тут. Установка PCB-Gcode включает в себя распаковку архива в папку, путь в которую затем добавляется в библиотеки ULP Eagle (Контрольная панель Eagle -> Опции -> Директории...).

Далее надо запустить настройки PCB-Gcode: при открытом проекте с помощью панели меню Eagle Файл -> Запустить ULP -> Выбрать "pcb-gcode-setup.ulp".

В настройках неоходимо выбрать размер вашей фрезы и другие параметры (глубина фрезерования не должна превышать половины диаметра фрезы - иначе велика вероятность ее сломать; скорость подачи - 200-300 мм/мин.)

После чего нажать "Accept and make my board" - появится предпросмотр (цвет можно сменить нажав на клавиатуре букву "C") - надо проверить, что все дорожки отделены друг от друга. Файлы с g-кодами автоматически будут созданы в папке с проектом с расширением "tap".

Код фрезеровки по контуру лушче писать самостоятельно, исходя из размеров платы и выбранной фрезы. Для фрезы 3мм и платы размерами 25х45х1.7мм (XxYxZ) g-код будет выглядеть так:
Код инициализации станка
Код задания скорости вращения шпинделя (15000 об./мин.)
M03
G00 Z40.
G00 X-1.5 Y-1.5
G01 Z-0.6 F150
G01 Y46.5 F300
G01 X26.5
G01 Y-1.5
G01 X-1.5
G01 Z-1.2 F150
G01 Y46.5 F300
G01 X26.5
G01 Y-1.5
G01 X-1.5
G01 Z-1.8 F150
G01 Y46.5 F300
G01 X26.5
G01 Y-1.5
G01 X-1.5
G01 Z20.0
M30
Шаг по Z не должен превышать половины диаметра фрезы. Сдвиги во внешнем контуре равны половине диаметра фрезы. Плату нужно проходить немного глубже, чем толщина текстолита, чтобы прорезать ее насквозь. Очень большие фрезы не стоит использовать, т.к. можно повредить плату (в т.ч. она может случайно сдвинуться, если двойной скотч не удержит). M03 - код раскрутки шпинделя, M30 - код остановки шпинделя (у разных моделей фрезерных станков эти два кода могут отличаться).

3. Отфрезеруйте плату

Главное - будьте аккуратны с микрофрезами, т.к. они ОЧЕНЬ легко ломаются. При выставлении нуля включите шпиндель, чтобы фреза приближалась к текстолиту в раскрученном состоянии. Выставите ноль. Загрузите сгенерированный с помощью PCB-Gcode G-код на компьютер со станком и отредактируйте его, добавив/исправив начало и конец кода. Установите микрофрезу и запустите код, соответствующий фрезеровке дорожек. После этого смените мифрофрезу на отрезную фрезу и запустите второй файл, соответствующий отрезанию по контуру.

4. Поздравляю!

Были использованы следующие материалы