Homework assignment
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:
- Milling machines, understands g-code .
- 0.1-0.4mm end mill - cutter diameter determines the minimum-possible distance between the tracks.
- Foil PCB.
- 0.5-3mm end mill to cut the edges of the board (the length of the cutting edge of end mill must be more than the thickness of the PCB).
- end mill for drilling holes in the board - it's determined by the minimum diameter of the desired hole.
- Double-sided tape - for bonding the PCB.
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. Подходящие инструменты
Для начала нужно подготовить инструменты и станок.
Что нужно:
- Фрезерный станок, понимающий g-code.
- Фреза 0.1-0.4мм для фрезеровки дорожек - диаметр фрезы определяет минимально-возможное расстояние между дорожками.
- Фольгированный текстолит.
- Фреза 0.5-3мм для обрезки платы по краям (длина режущей кромки должна превышать толщину текстолита).
- Фреза для сверления отверстий в плате - диаметр фрезы определяется минимальным диаметром желаемых отверстий.
- Двусторонний скотч - для приклеивания текстолита.
Ближайшие к нам микрофрезы мы нашли на данном сайте - серия 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. Поздравляю!
Были использованы следующие материалы
- PCBGcode - генератор g-кода для Eagle
- FabISP для ATTiny44 - на основе этих Eagle-файлов был сгенерирован G-код с помощью PCBGcode
- Инструкция по изготовлению печатной платы на фрезерном станке (рус.)