From bad3e0a9e650e932c39d53a076a453ad78270590 Mon Sep 17 00:00:00 2001 From: TuckerWiltse Date: Wed, 20 Mar 2024 19:48:45 -0600 Subject: [PATCH 1/4] md-ify it --- .../images}/3018_Fixture.png | Bin .../images}/Candle_GCode_Drl_Output.png | Bin .../images}/Candle_GCode_Output.png | Bin .../images}/Candle_Heightmapping.png | Bin .../images}/Filter_DualOp-F_Cu.png | Bin .../images}/FlatCAM_preproc.png | Bin {Example => Documentation/images}/JSCut.png | Bin .../images}/KiCAD_PCB.png | Bin .../images}/KiCAD_Render.png | Bin .../images}/KiCAD_Schematic.png | Bin .../images}/flatcam_excellon_editor.png | Bin .../images}/flatcam_gcode_objs.png | Bin .../images}/flatcam_open.png | Bin .../images}/flatcam_opened.png | Bin .../images}/flatcam_project_sidepanel.png | Bin .../images}/flatcam_select_excellon.png | Bin Documentation/using_Inkscape_JSCut.md | 1 + README.md | 202 +++++++++--------- 18 files changed, 98 insertions(+), 105 deletions(-) rename {Example => Documentation/images}/3018_Fixture.png (100%) rename {Example => Documentation/images}/Candle_GCode_Drl_Output.png (100%) rename {Example => Documentation/images}/Candle_GCode_Output.png (100%) rename {Example => Documentation/images}/Candle_Heightmapping.png (100%) rename {Example => Documentation/images}/Filter_DualOp-F_Cu.png (100%) rename {Example => Documentation/images}/FlatCAM_preproc.png (100%) rename {Example => Documentation/images}/JSCut.png (100%) rename {Example => Documentation/images}/KiCAD_PCB.png (100%) rename {Example => Documentation/images}/KiCAD_Render.png (100%) rename {Example => Documentation/images}/KiCAD_Schematic.png (100%) rename {Example => Documentation/images}/flatcam_excellon_editor.png (100%) rename {Example => Documentation/images}/flatcam_gcode_objs.png (100%) rename {Example => Documentation/images}/flatcam_open.png (100%) rename {Example => Documentation/images}/flatcam_opened.png (100%) rename {Example => Documentation/images}/flatcam_project_sidepanel.png (100%) rename {Example => Documentation/images}/flatcam_select_excellon.png (100%) create mode 100644 Documentation/using_Inkscape_JSCut.md diff --git a/Example/3018_Fixture.png b/Documentation/images/3018_Fixture.png similarity index 100% rename from Example/3018_Fixture.png rename to Documentation/images/3018_Fixture.png diff --git a/Example/Candle_GCode_Drl_Output.png b/Documentation/images/Candle_GCode_Drl_Output.png similarity index 100% rename from Example/Candle_GCode_Drl_Output.png rename to Documentation/images/Candle_GCode_Drl_Output.png diff --git a/Example/Candle_GCode_Output.png b/Documentation/images/Candle_GCode_Output.png similarity index 100% rename from Example/Candle_GCode_Output.png rename to Documentation/images/Candle_GCode_Output.png diff --git a/Example/Candle_Heightmapping.png b/Documentation/images/Candle_Heightmapping.png similarity index 100% rename from Example/Candle_Heightmapping.png rename to Documentation/images/Candle_Heightmapping.png diff --git a/Example/Filter_DualOp-F_Cu.png b/Documentation/images/Filter_DualOp-F_Cu.png similarity index 100% rename from Example/Filter_DualOp-F_Cu.png rename to Documentation/images/Filter_DualOp-F_Cu.png diff --git a/Example/FlatCAM_preproc.png b/Documentation/images/FlatCAM_preproc.png similarity index 100% rename from Example/FlatCAM_preproc.png rename to Documentation/images/FlatCAM_preproc.png diff --git a/Example/JSCut.png b/Documentation/images/JSCut.png similarity index 100% rename from Example/JSCut.png rename to Documentation/images/JSCut.png diff --git a/Example/KiCAD_PCB.png b/Documentation/images/KiCAD_PCB.png similarity index 100% rename from Example/KiCAD_PCB.png rename to Documentation/images/KiCAD_PCB.png diff --git a/Example/KiCAD_Render.png b/Documentation/images/KiCAD_Render.png similarity index 100% rename from Example/KiCAD_Render.png rename to Documentation/images/KiCAD_Render.png diff --git a/Example/KiCAD_Schematic.png b/Documentation/images/KiCAD_Schematic.png similarity index 100% rename from Example/KiCAD_Schematic.png rename to Documentation/images/KiCAD_Schematic.png diff --git a/Example/flatcam_excellon_editor.png b/Documentation/images/flatcam_excellon_editor.png similarity index 100% rename from Example/flatcam_excellon_editor.png rename to Documentation/images/flatcam_excellon_editor.png diff --git a/Example/flatcam_gcode_objs.png b/Documentation/images/flatcam_gcode_objs.png similarity index 100% rename from Example/flatcam_gcode_objs.png rename to Documentation/images/flatcam_gcode_objs.png diff --git a/Example/flatcam_open.png b/Documentation/images/flatcam_open.png similarity index 100% rename from Example/flatcam_open.png rename to Documentation/images/flatcam_open.png diff --git a/Example/flatcam_opened.png b/Documentation/images/flatcam_opened.png similarity index 100% rename from Example/flatcam_opened.png rename to Documentation/images/flatcam_opened.png diff --git a/Example/flatcam_project_sidepanel.png b/Documentation/images/flatcam_project_sidepanel.png similarity index 100% rename from Example/flatcam_project_sidepanel.png rename to Documentation/images/flatcam_project_sidepanel.png diff --git a/Example/flatcam_select_excellon.png b/Documentation/images/flatcam_select_excellon.png similarity index 100% rename from Example/flatcam_select_excellon.png rename to Documentation/images/flatcam_select_excellon.png diff --git a/Documentation/using_Inkscape_JSCut.md b/Documentation/using_Inkscape_JSCut.md new file mode 100644 index 0000000..2fd9f95 --- /dev/null +++ b/Documentation/using_Inkscape_JSCut.md @@ -0,0 +1 @@ +TBD \ No newline at end of file diff --git a/README.md b/README.md index 3be59af..c62988b 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,51 @@ [![Check Spelling](https://github.com/Jbsco/PCB_MFG/actions/workflows/spelling.yml/badge.svg)](https://github.com/Jbsco/PCB_MFG/actions/workflows/spelling.yml) + # PCB_MFG + This repository was created for working with and improving the on-campus PCB design and production process using open-source software resources as well as physical resources and space provided by the University of Colorado Boulder and Colorado Mesa University Partnership Program on the Colorado Mesa University campus. These resources are made available to students and faculty alike. ## Introduction + PCB production is in the process of being made more accessible to students and faculty. Desktop CNC machines are available in labs at Confluence Hall which have the capacity to produce good quality single-sided designs, as well as double-sided designs (with some additional effort), with low/no cost for students and faculty. Efforts have been made to reduce complexity and improve ease-of-use by developing a consistent and repeatable process that produces usable results in a shorter time-frame than ordering from third-party prototyping services. ## Participation -Student and faculty participation in this repository is encouraged! Please check the Discussions and Issues pages to learn about proposed changes and additions. Your engagement in development of this process is welcome. Feedback is also appreciated! -A great way to get started with new commits is to fork this repository, make your changes, and create a pull request to merge changes back into the main branch (pending approval). Workflow actions are enabled to help enforce spell checking, this uses the Check-Spelling action. + +Student and faculty participation in this repository is encouraged! Please check the and Issues pages to learn about proposed changes and additions. Your engagement in development of this process is welcome. Feedback is also appreciated! +A great way to get started with new commits is to fork this repository, make your changes, and create a pull request to merge changes back into the main branch (pending approval). [Workflow actions](https://github.com/Jbsco/PCB_MFG/actions) are enabled to help enforce spell checking, this uses the [Check-Spelling](https://github.com/marketplace/actions/check-spelling) action. ## Hardware Used + The CNC machines located in Confluence Hall labs are being made available for specific projects by faculty permission, and may be made more widely available in the future. Discuss access with faculty and ensure thorough understanding of the equipment, materials, and lab policies before use - you will gain valuable assistance and knowledge to improve your results and ensure that these resources remain effective and safe for use. ### Genmitsu 3018 Pro Desktop CNC Machines A 3D-printable fixture which fits 100x70mm copper-clad boards is provided as an STL file in this repository. This was designed specifically for this CNC machine and this process. It provides an easy clamping method with consistent repeatability. -

- -

+![100x70mm Fixture Design](Documentation/images/3018_Fixture.png) ## Software Used + The following software is available on GitHub or their respective web sites, and each were found to be effective for each part of the process detailed within this repository. System compatibility and ease-of-use were priorities, as was open-source status. -### https://github.com/Denvi/Candle CNC control and heightmapping software (Windows or Linux) +* [**Candle**: CNC control and heightmapping software (Windows or Linux)](https://github.com/Denvi/Candle) -### https://bitbucket.org/jpcgt/flatcam/src/master (http://flatcam.org) Gerber & Excellon intake, toolpathing, and Gcode output (Windows, Linux, MacOSX) **_comprehensive alternative to Inkscape & JScut_** +* **FlatCAM**: Gerber & Excellon intake, toolpathing, and Gcode output (Windows, Linux, MacOSX) ***comprehensive alternative to Inkscape & jscut*** + * [FlatCAM BitBucket](https://bitbucket.org/jpcgt/flatcam/src/master) + * [FlatCAM Docs](http://flatcam.org) -### https://github.com/KiCad (https://gitlab.com/kicad) Schematic & PCB design software, simulation, Gerber & SVG output (Docker, Windows, Linux, MacOSX) +* **KiCAD**: Schematic & PCB design software, simulation, Gerber & SVG output (Docker, Windows, Linux, MacOSX) + * [KiCAD GitHub](https://github.com/KiCad) + * [KiCAD GitLab](https://gitlab.com/kicad) -Originally, Inkscape and JScut were used to create Gcode files using SVGs, rather than Gerber files. This tested poorly among students, so FlatCAM is preferred, but this process is retained below the current process for posterity. -##### https://github.com/tbfleming/jscut (https://jscut.org) SVG intake, toolpathing, and GCode output (in-browser) +Originally, Inkscape and jscut were used to create Gcode files using SVGs, rather than Gerber files. This tested poorly among students, so FlatCAM is preferred, but this process is retained below the current process for posterity. -##### https://github.com/inkscape/inkscape SVG preparation for JSCut (Windows, Linux, MacOSX) +* **jscut**: SVG intake, toolpathing, and GCode output (in-browser)[ + * [jscut GitHub](https://github.com/tbfleming/jscut) + * [jscut](https://jscut.org) +* [**InkScape**: SVG preparation for jscut (Windows, Linux, MacOSX) ](https://github.com/inkscape/inkscape) ## Process + It is recommended to have access to the above software. As they have their own release channels please refer to their documentation. Generally, Candle, Flatcam, and KiCAD are installed software, and releases are available from their respective sites. Linux installs for common distributions are often available. Arch Linux users are recommended to install `candle-bin` from the AUR using `yay`, while FlatCAM runs from source using `python FlatCAM.py` after installing dependencies (`python-vispy` 0.7 or lower is needed. FlatCAM can also be installed as `flatcam-git` from the AUR using `yay`, but the dependency `python-svg.path` may need to be installed with the `--mflags "--nocheck"` flags in order to bypass failed tests), and KiCAD is available using `pacman -Syu kicad` and KiCAD libraries using `pacman -Syu --asdeps kicad-library kicad-library-3d`. @@ -49,144 +60,126 @@ Designs start in a KiCAD project. It is possible to start immediately within the The schematic editor looks and functions similarly to SPICE software, with usability improvements as well as functionality beneficial to full-stack design work. Components may be added to the KiCAD library, but the existing library is sufficient for intermediate designs. Components can be assigned a footprint, which also often includes a 3D model for rendering visuals and checking 3D space conflicts. Python script support extends functionality and allows for some automation, but is not necessary to produce competent results. -

- -

+![Example Schematic Design in KiCAD](Documentation/images/KiCAD_Schematic.png) The PCB board editor can be entered from the schematic editor. The two documents are linked, and components in the schematic will be inserted into the board editor as footprints. Use the hotkey "F8" or select "Tools → Update PCB from Schematic", this will place missing footprints. Circuit nets are also shared between the documents. It is possible to auto-place footprints, but it is recommended to manually adjust and rotate components accordingly to make routing easier. The board editor has many layers to manipulate. Most important for prototyping purposes are the top copper layer and the edge cuts layer. The bottom layer and multiple layers beyond this are also accessible (board stackup settings may be edited at any time). Additional vias and PCB specific components that are not typically present on a circuit schematic can be placed in the same manner as in the schematic editor, with a large default library to explore. Pin headers, I/O vias and pads, connectors, and even active trace elements such as Bluetooth or tuned antennae are present and waiting for application in student projects! -

- -

+![Circuit Board Design in KiCAD](Documentation/images/KiCAD_PCB.png) -Once a board design is ready to export, _the process will diverge depending on whether you are ingesting **gerber fabrication files with Flatcam**, or **SVG files with Inkscape and JScut**_. Both are effective for prototyping, though the SVG method tested poorly among students. If you opt to go this route, export your copper layer in color, select only the board area, and include edge cuts if you need those outlined in the milling operation. Otherwise, select "File → Fabrication Outputs → Gerbers" and select the layer you are working with. Default settings were found to work well. Select "Plot to create the Gerber file, and then select "Generate Drill Files" (being sure "Drill Units" is set to millimeters) to create the drill Excellon file. Default settings here were also found to work well. Several files are created, however we will only use two in FlatCAM. +Once a board design is ready to export, _the process will diverge depending on whether you are ingesting **gerber fabrication files with Flatcam**, or **SVG files with Inkscape and jscut**. Both are effective for prototyping, though the SVG method tested poorly among students. If you opt to go this route, export your copper layer in color, select only the board area, and include edge cuts if you need those outlined in the milling operation. Otherwise, select "File → Fabrication Outputs → Gerbers" and select the layer you are working with. Default settings were found to work well. Select "Plot to create the Gerber file, and then select "Generate Drill Files" (being sure "Drill Units" is set to millimeters) to create the drill Excellon file. Default settings here were also found to work well. Several files are created, however we will only use two in FlatCAM. -Using KiCAD
-
+ +[Using KiCAD](Documentation/using_KiCAD.md) +
FlatCAM -• In FlatCAM, open the Gerber and the Excellon files to add them to the FlatCAM project. -

- -

+* In FlatCAM, open the Gerber and the Excellon files to add them to the FlatCAM project. + +![FlatCAM Open Dialogue](Documentation/images/flatcam_open.png) -• These objects may be placed far from the origin, so select all using the "Ctrl + A" shortcut, and Move to Origin using the "Shift + O" shortcut. It is important to select all objects to move them as a group, otherwise the drill objects will not be aligned to the contour objects. +* These objects may be placed far from the origin, so select all using the "Ctrl + A" shortcut, and Move to Origin using the "Shift + O" shortcut. It is important to select all objects to move them as a group, otherwise the drill objects will not be aligned to the contour objects. -

- -

+![FlatCAM Opened Objects](Documentation/images/flatcam_opened.png) -• Double-click the Gerber in the project tree side panel, then select "Isolation Routing". +* Double-click the Gerber in the project tree side panel, then select "Isolation Routing". -

- -

+![FlatCAM Side Panel](Documentation/images/flatcam_project_sidepanel.png) -• Right click the #1 tool in the Tools Table and delete it. We must set up a new tool to mill at the 0.1mm depth of cut using the lab's V-cutter bits. +* Right click the #1 tool in the Tools Table and delete it. We must set up a new tool to mill at the 0.1mm depth of cut using the lab's V-cutter bits. -• Use the "Ctrl + D" shortcut to open the Tools Database. You may create a new tool here, but it is recommended to import the database provided in this repository. Select "Import DB" and select the "Tools_Data_Base.TXT" file to import the V-cutter tool. +* Use the "Ctrl + D" shortcut to open the Tools Database. You may create a new tool here, but it is recommended to import the database provided in this repository. Select "Import DB" and select the [Tools_Data_Base.TXT](FlatCam_Tools_Database/Tools_Data_Base) file to import the V-cutter tool. -• Select "Pick from DB" in the sidebar, select the "V-Cutter" tool, and select "Transfer the Tool" to apply to the Isolation Tool operation. +* Select "Pick from DB" in the sidebar, select the "V-Cutter" tool, and select "Transfer the Tool" to apply to the Isolation Tool operation. -• Change "Tool Dia." to match the 0.0354 diameter, and select "Generate Geometry". +* Change "Tool Dia." to match the 0.0354 diameter, and select "Generate Geometry". -• Change the Preprocessor to 'grbl_11', followed by "Generate CNCJob Object". +* Change the Preprocessor to 'grbl_11', followed by "Generate CNCJob Object". -

- -

+![FlatCAM Preprocessor](Documentation/images/FlatCAM_preproc.png) -• The contour job is complete, select "Save CNC Code" or right click the CNC Job in the project tree side panel to save the Gcode for access with Candle later. +* The contour job is complete, select "Save CNC Code" or right click the CNC Job in the project tree side panel to save the Gcode for access with Candle later. -• The drill job can now be created. This operation may vary depending on your requirements. For example, the provided design uses two different size vias, and these can either be combined to one size or retained as two different drill operations. Depending on drill bit availability and prototyping requirements, you may opt to simplify this operation to use the smallest size drill, otherwise it is recommended to use the Tool Change option to provide for drill changing. +* The drill job can now be created. This operation may vary depending on your requirements. For example, the provided design uses two different size vias, and these can either be combined to one size or retained as two different drill operations. Depending on drill bit availability and prototyping requirements, you may opt to simplify this operation to use the smallest size drill, otherwise it is recommended to use the Tool Change option to provide for drill changing. -• Double click the Excellon drill file in the project tree side panel, and select "Excellon Editor" to make changes to the drills this operation will apply to. For example, edit all sizes to the same value to combine drills. +* Double click the Excellon drill file in the project tree side panel, and select "Excellon Editor" to make changes to the drills this operation will apply to. For example, edit all sizes to the same value to combine drills. -

- -

+![FlatCAM Excellon in Side Panel](Documentation/images/flatcam_select_excellon.png) -

- -

+![FlatCAM Excellon Editor](Documentation/images/flatcam_excellon_editor.png) -• Exit the editor and save changes. Select "Drilling Tool" and edit parameters accordingly. Since this is a separate operation from the contour, it will be critical that the CNC machine retains its positioning to ensure alignment. Keep this in mind when setting parameters for tool changes, if this option is selected. +* Exit the editor and save changes. Select "Drilling Tool" and edit parameters accordingly. Since this is a separate operation from the contour, it will be critical that the CNC machine retains its positioning to ensure alignment. Keep this in mind when setting parameters for tool changes, if this option is selected. -• It is recommended to reduce Feedrate Z to 60 (300 may be too high and could cause damage to the board). Adjust Cut Z to a value that will completely drill through the board. If using the provided fixture, there will be ample clearance under the board. +* It is recommended to reduce Feedrate Z to 60 (300 may be too high and could cause damage to the board). Adjust Cut Z to a value that will completely drill through the board. If using the provided fixture, there will be ample clearance under the board. -• Select "Generate CNCJob Object" and save in the same manner as the contour operation. +* Select "Generate CNCJob Object" and save in the same manner as the contour operation. -

- -

+![FlatCAM CNC Jobs](Documentation/images/flatcam_gcode_objs.png) These Gcode files may be opened directly in Candle for heightmap generation and running the machine.
-Using FlatCAM
-
+ +[Using FlatCAM](Documentation/using_FlatCAM.md) +
Candle + Candle controls the CNC machine directly over USB or by generating a Gcode file for running on a USB stick inserted in the CNC machine. -• Ensure Candle is connected to the CNC machine over USB by selecting "Service → Settings" and "Connection" in the pop-up window. The "Connection" drop-down should show a numbered COM option corresponding to the CNC machine - if not, verify the correct drivers have been installed. +* Ensure Candle is connected to the CNC machine over USB by selecting "Service → Settings" and "Connection" in the pop-up window. The "Connection" drop-down should show a numbered COM option corresponding to the CNC machine - if not, verify the correct drivers have been installed. -• Close this window and observe the control panel, which may be configured by adjusting settings. +* Close this window and observe the control panel, which may be configured by adjusting settings. The 3018 Pro CNC machine is capable of making use of the probe and heightmap functions in Candle, which are critical to producing good quality PCB designs. -• In order to use the continuity probe, where the cutting tool making contact with the PCB surface triggers the probe stop, GRBL commands must be sent to the machine via the command terminal, and the tool head spindle must be connected to a "GND" pin on the control board, and the PCB must be connected to the "A5" pin on the control board. Some 3018 Pro machines shipped with different labelling on the control board - the pins may also be labeled "probe". Both types of control boards are present in the campus labs, so please be aware of this if you use different machines. These connections are easily made using alligator clips and pin headers. These connections must be removed when turning the spindle on - **be sure to always check and check again that these clips are removed from the spindle before turning the spindle on**. +* In order to use the continuity probe, where the cutting tool making contact with the PCB surface triggers the probe stop, GRBL commands must be sent to the machine via the command terminal, and the tool head spindle must be connected to a "GND" pin on the control board, and the PCB must be connected to the "A5" pin on the control board. Some 3018 Pro machines shipped with different labelling on the control board - the pins may also be labeled "probe". Both types of control boards are present in the campus labs, so please be aware of this if you use different machines. These connections are easily made using alligator clips and pin headers. These connections must be removed when turning the spindle on - **be sure to always check and check again that these clips are removed from the spindle before turning the spindle on**. -• The GRBL commands that must be sent to properly set the homing cycle for continuity probing are `$22=1` (homing cycle enable) and `$23=0` (homing cycle direction). Additional GRBL commands are provided in the "GRBL_Settings_Pocket_Guide_Rev_B" document or at www.DIYMachining.com/GRBL. +* The GRBL commands that must be sent to properly set the homing cycle for continuity probing are `$22=1` (homing cycle enable) and `$23=0` (homing cycle direction). Additional GRBL commands are provided in the "GRBL_Settings_Pocket_Guide_Rev_B" document or at www.DIYMachining.com/GRBL. -• With the homing cycle configured, spindle off, and clips attached, use the control panel to raise the tool head and position the cutting tool over a corner of the PCB. Note the directionality of all controls, and observe the Candle graphical display of the tool head. +* With the homing cycle configured, spindle off, and clips attached, use the control panel to raise the tool head and position the cutting tool over a corner of the PCB. Note the directionality of all controls, and observe the Candle graphical display of the tool head. -• The Z-probe button may be used to slowly lower the tool head until continuity is made and the tool head stops. Zero the machine in Candle by selecting the Zero X, Y, and Z buttons in the control panel. +* The Z-probe button may be used to slowly lower the tool head until continuity is made and the tool head stops. Zero the machine in Candle by selecting the Zero X, Y, and Z buttons in the control panel. -• Load the Gcode file generated by FlatCAM by selecting "File → Open". Select the contour CNC job. +* Load the Gcode file generated by FlatCAM by selecting "File → Open". Select the contour CNC job. -

- -

+![Example Gcode File Loaded in Candle](Documentation/images/Candle_GCode_Output.png) -• Once a Gcode file is opened, Candle enables the Heightmap function. Select "Create" (or optionally apply the modeled heightmap that was developed for rapid prototyping using the fixture design included in this repository). +* Once a Gcode file is opened, Candle enables the Heightmap function. Select "Create" (or optionally apply the modeled heightmap that was developed for rapid prototyping using the fixture design included in this repository). -• Adjust the Heightmap settings to enclose the design shown in the graphical window, or select the "Auto" button to automatically set parameters. +* Adjust the Heightmap settings to enclose the design shown in the graphical window, or select the "Auto" button to automatically set parameters. -• Select reasonable values for the Heightmap Probe Grid. Some parameters may be unfamiliar - "F" is the probe feedrate, "Zt" is the distance to raise the tool head when moving to the next point, and "Zb" is the distance to lower the tool head when probing. If the machine was zeroed previously, then a value of 1.50 for Zt with other values left as default is likely sufficient. +* Select reasonable values for the Heightmap Probe Grid. Some parameters may be unfamiliar - "F" is the probe feedrate, "Zt" is the distance to raise the tool head when moving to the next point, and "Zb" is the distance to lower the tool head when probing. If the machine was zeroed previously, then a value of 1.50 for Zt with other values left as default is likely sufficient. -• Observe the arrangement of the graphical representation of the operation and visually verify that the machine will not crash before selecting "Probe". The routine will run until complete or stop if continuity was made at an unexpected point. If the Heightmap was not able to be completed, try adjusting the "Zt" or "Zb" parameters accordingly, or inspect for other issues, before trying again. +* Observe the arrangement of the graphical representation of the operation and visually verify that the machine will not crash before selecting "Probe". The routine will run until complete or stop if continuity was made at an unexpected point. If the Heightmap was not able to be completed, try adjusting the "Zt" or "Zb" parameters accordingly, or inspect for other issues, before trying again. -

- -

+![Example Candle Heightmap Routine Being Performed](Documentation/images/Candle_Heightmapping.png) -• With the Heightmap complete, close the Heightmap mode by selecting "Edit", and select the checkbox "Use Heightmap". +* With the Heightmap complete, close the Heightmap mode by selecting "Edit", and select the checkbox "Use Heightmap". -• Raise the tool head slightly and reset alarms if necessary. +* Raise the tool head slightly and reset alarms if necessary. -• Perform additional visual checks to verify the machine will be able to proceed with the milling operation unobstructed, and **remove clips attached to the spindle and PCB before turning the spindle on**. -### Note that the spindle rotates near 10,000 RPM, and the cutting bit could break and create a dangerous situation. Follow lab policies regarding safety and have faculty or senior students familiar with this process verify that everything is in order before turning on the spindle and running milling Gcode. +* Perform additional visual checks to verify the machine will be able to proceed with the milling operation unobstructed, and **remove clips attached to the spindle and PCB before turning the spindle on**. -• Turn the spindle on and select "Send" to run the operation. Observe the machine safely and while wearing safety glasses. +***Note that the spindle rotates near 10,000 RPM, and the cutting bit could break and create a dangerous situation. Follow lab policies regarding safety and have faculty or senior students familiar with this process verify that everything is in order before turning on the spindle and running milling Gcode.*** -• The routine should complete and the PCB will be ready for hole drilling operations. Hole drilling operations should be completed without changing the machine zero positioning, or else alignment will be difficult to achieve accurately. The hole drilling operation should be straightforward so long as the tool bit is changed without losing the machine positioning. +* Turn the spindle on and select "Send" to run the operation. Observe the machine safely and while wearing safety glasses. -

- -

+* The routine should complete and the PCB will be ready for hole drilling operations. Hole drilling operations should be completed without changing the machine zero positioning, or else alignment will be difficult to achieve accurately. The hole drilling operation should be straightforward so long as the tool bit is changed without losing the machine positioning. + +![Example Drill Gcode File Loaded in Candle](Documentation/images/Candle_GCode_Drl_Output.png) The routine should complete and the PCB will be ready for final processing or cutting operations. -

- -

+![Example Populated PCB Rendered in KiCAD](Documentation/images/KiCAD_Render.png) +
-Using Candle
-
-Originally, Inkscape and JScut were used to create Gcode files using SVGs, rather than Gerber files. This tested poorly among students, so FlatCAM is preferred, but this process is retained here for posterity. + +[Using Candle](Documentation/using_Candle.md) + +Originally, Inkscape and jscut were used to create Gcode files using SVGs, rather than Gerber files. This tested poorly among students, so FlatCAM is preferred, but this process is retained here for posterity. +
- Inkscape & JScut -Each SVG file can be opened in Inkscape to make these files compatible with JScut. This process is brief, and consists of converting all objects present in the SVG into path objects. Select all objects in the graphic area and select the "Path → Object to Path" menu option, followed by the "Path → Stroke to Path" menu option. Exporting this as an SVG with a transparent background is sufficient to progress to JScut. It is helpful to reduce the page size as well. Keybindings make the Inkscape process easy and fast: + Inkscape & jscut +Each SVG file can be opened in Inkscape to make these files compatible with jscut. This process is brief, and consists of converting all objects present in the SVG into path objects. Select all objects in the graphic area and select the "Path → Object to Path" menu option, followed by the "Path → Stroke to Path" menu option. Exporting this as an SVG with a transparent background is sufficient to progress to jscut. It is helpful to reduce the page size as well. Keybindings make the Inkscape process easy and fast: "Ctrl + A" - Select all @@ -198,30 +191,29 @@ Each SVG file can be opened in Inkscape to make these files compatible with JScu "Ctrl + S" - Save SVG -

- -

+![Example SVG Output from Inkscape](Documentation/images/Filter_DualOp-F_Cu.png) -JScut ingests an SVG file and allows configuring various types of toolpaths followed by export to Gcode. Since the PCB milling operation is a single pass at 0.1mm depth-of-cut (and potentially a second operation for pad and via holes), many settings are unused. +jscut ingests an SVG file and allows configuring various types of toolpaths followed by export to Gcode. Since the PCB milling operation is a single pass at 0.1mm depth-of-cut (and potentially a second operation for pad and via holes), many settings are unused. -• It is recommended to select "Make all mm", set Tool Diameter to 0.1mm, set Pass Depth to 0.1mm, set Rapid to 1000mm/min, and set Plunge and Cut to 100mm/min, before moving on to Operations. +* It is recommended to select "Make all mm", set Tool Diameter to 0.1mm, set Pass Depth to 0.1mm, set Rapid to 1000mm/min, and set Plunge and Cut to 100mm/min, before moving on to Operations. -• Select "Open SVG → Local" to open the SVG file exported from Inkscape. If the copper layer graphic does not appear as expected, or appears incomplete or cut off, adjust Inkscape export settings accordingly. +* Select "Open SVG → Local" to open the SVG file exported from Inkscape. If the copper layer graphic does not appear as expected, or appears incomplete or cut off, adjust Inkscape export settings accordingly. -• If all appears as expected, begin selecting path objects in the graphic to create Operations. Multiple Operations can be created per group of objects selected, for example, select all pad and via holes and select "Create Operation", followed by the "Pocket" drop-down option, and a value of "0.1" for the Deep field. The Operation can be expanded to access additional options, such as boolean operations, margin setting, and milling direction. +* If all appears as expected, begin selecting path objects in the graphic to create Operations. Multiple Operations can be created per group of objects selected, for example, select all pad and via holes and select "Create Operation", followed by the "Pocket" drop-down option, and a value of "0.1" for the Deep field. The Operation can be expanded to access additional options, such as boolean operations, margin setting, and milling direction. -• After the Pocket Operation, select all copper objects such as pours, pads, vias, and traces (this may take some time with complex designs), then select "Create Operation", followed by the "Outside" drop-down option, and again a value of "0.1" for the Deep field. The Pocket and Outside Operations are sufficient for most designs using through-hole or even surface mount components, but there is potential for more advanced toolpathing as well. +* After the Pocket Operation, select all copper objects such as pours, pads, vias, and traces (this may take some time with complex designs), then select "Create Operation", followed by the "Outside" drop-down option, and again a value of "0.1" for the Deep field. The Pocket and Outside Operations are sufficient for most designs using through-hole or even surface mount components, but there is potential for more advanced toolpathing as well. -• Select "Simulate GCODE" to verify toolpathing and observe Operation behavior and order. +* Select "Simulate GCODE" to verify toolpathing and observe Operation behavior and order. -• Select "Save GCODE" to save the Gcode file. +* Select "Save GCODE" to save the Gcode file. + +![Example Toolpath Output from jscut](Documentation/images/JSCut.png) -

- -

-## Heightmap Modelling +[Using InkScape and jscut](Documentation/using_Inkscape_JSCut.md) + +## Heightmap Modeling As a Fall 2023 Intro to Probability Theory final project, a dataset was built from Candle heightmaps and various conclusions were drawn from observations and analysis of this data. Data was interpreted using the MATLAB scripts included in this repository. The resultant report and supporting materials are included in [Reports](/Reports/). The resultant model heightmap, which is based on the mean data, is available at [/Reports/Code/bootModel.map](/Reports/Code/bootModel.map). This heightmap may prove more useful as the dataset grows. From e7160ff045da57204b776933e0d1794525610b84 Mon Sep 17 00:00:00 2001 From: TuckerWiltse Date: Wed, 20 Mar 2024 20:03:10 -0600 Subject: [PATCH 2/4] consistent capatilization --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c62988b..c325ea0 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,11 @@ Originally, Inkscape and jscut were used to create Gcode files using SVGs, rathe * **jscut**: SVG intake, toolpathing, and GCode output (in-browser)[ * [jscut GitHub](https://github.com/tbfleming/jscut) * [jscut](https://jscut.org) -* [**InkScape**: SVG preparation for jscut (Windows, Linux, MacOSX) ](https://github.com/inkscape/inkscape) +* [**Inkscape**: SVG preparation for jscut (Windows, Linux, MacOSX) ](https://github.com/inkscape/inkscape) ## Process -It is recommended to have access to the above software. As they have their own release channels please refer to their documentation. Generally, Candle, Flatcam, and KiCAD are installed software, and releases are available from their respective sites. Linux installs for common distributions are often available. +It is recommended to have access to the above software. As they have their own release channels please refer to their documentation. Generally, Candle, FlatCAM, and KiCAD are installed software, and releases are available from their respective sites. Linux installs for common distributions are often available. Arch Linux users are recommended to install `candle-bin` from the AUR using `yay`, while FlatCAM runs from source using `python FlatCAM.py` after installing dependencies (`python-vispy` 0.7 or lower is needed. FlatCAM can also be installed as `flatcam-git` from the AUR using `yay`, but the dependency `python-svg.path` may need to be installed with the `--mflags "--nocheck"` flags in order to bypass failed tests), and KiCAD is available using `pacman -Syu kicad` and KiCAD libraries using `pacman -Syu --asdeps kicad-library kicad-library-3d`. From 04c39c3a3d8c9c51ce7a5ea5e521262ee49770b8 Mon Sep 17 00:00:00 2001 From: TuckerWiltse Date: Wed, 20 Mar 2024 20:04:20 -0600 Subject: [PATCH 3/4] move docs over --- Documentation/using_Candle.md | 49 +++++++- Documentation/using_FlatCAM.md | 52 ++++++++- Documentation/using_Inkscape_JSCut.md | 31 ++++- Documentation/using_KiCAD.md | 15 ++- README.md | 159 +------------------------- 5 files changed, 148 insertions(+), 158 deletions(-) diff --git a/Documentation/using_Candle.md b/Documentation/using_Candle.md index 2fd9f95..22cc9f5 100644 --- a/Documentation/using_Candle.md +++ b/Documentation/using_Candle.md @@ -1 +1,48 @@ -TBD \ No newline at end of file +# Using Candle + +Candle controls the CNC machine directly over USB or by generating a Gcode file for running on a USB stick inserted in the CNC machine. + +* Ensure Candle is connected to the CNC machine over USB by selecting "Service → Settings" and "Connection" in the pop-up window. The "Connection" drop-down should show a numbered COM option corresponding to the CNC machine - if not, verify the correct drivers have been installed. + +* Close this window and observe the control panel, which may be configured by adjusting settings. +The 3018 Pro CNC machine is capable of making use of the probe and heightmap functions in Candle, which are critical to producing good quality PCB designs. + +* In order to use the continuity probe, where the cutting tool making contact with the PCB surface triggers the probe stop, GRBL commands must be sent to the machine via the command terminal, and the tool head spindle must be connected to a "GND" pin on the control board, and the PCB must be connected to the "A5" pin on the control board. Some 3018 Pro machines shipped with different labelling on the control board - the pins may also be labeled "probe". Both types of control boards are present in the campus labs, so please be aware of this if you use different machines. These connections are easily made using alligator clips and pin headers. These connections must be removed when turning the spindle on - **be sure to always check and check again that these clips are removed from the spindle before turning the spindle on**. + +* The GRBL commands that must be sent to properly set the homing cycle for continuity probing are `$22=1` (homing cycle enable) and `$23=0` (homing cycle direction). Additional GRBL commands are provided in the "GRBL_Settings_Pocket_Guide_Rev_B" document or at www.DIYMachining.com/GRBL. + +* With the homing cycle configured, spindle off, and clips attached, use the control panel to raise the tool head and position the cutting tool over a corner of the PCB. Note the directionality of all controls, and observe the Candle graphical display of the tool head. + +* The Z-probe button may be used to slowly lower the tool head until continuity is made and the tool head stops. Zero the machine in Candle by selecting the Zero X, Y, and Z buttons in the control panel. + +* Load the Gcode file generated by FlatCAM by selecting "File → Open". Select the contour CNC job. + +![Example Gcode File Loaded in Candle](./images/Candle_GCode_Output.png) + +* Once a Gcode file is opened, Candle enables the Heightmap function. Select "Create" (or optionally apply the modeled heightmap that was developed for rapid prototyping using the fixture design included in this repository). + +* Adjust the Heightmap settings to enclose the design shown in the graphical window, or select the "Auto" button to automatically set parameters. + +* Select reasonable values for the Heightmap Probe Grid. Some parameters may be unfamiliar - "F" is the probe feedrate, "Zt" is the distance to raise the tool head when moving to the next point, and "Zb" is the distance to lower the tool head when probing. If the machine was zeroed previously, then a value of 1.50 for Zt with other values left as default is likely sufficient. + +* Observe the arrangement of the graphical representation of the operation and visually verify that the machine will not crash before selecting "Probe". The routine will run until complete or stop if continuity was made at an unexpected point. If the Heightmap was not able to be completed, try adjusting the "Zt" or "Zb" parameters accordingly, or inspect for other issues, before trying again. + +![Example Candle Heightmap Routine Being Performed](./images/Candle_Heightmapping.png) + +* With the Heightmap complete, close the Heightmap mode by selecting "Edit", and select the checkbox "Use Heightmap". + +* Raise the tool head slightly and reset alarms if necessary. + +* Perform additional visual checks to verify the machine will be able to proceed with the milling operation unobstructed, and **remove clips attached to the spindle and PCB before turning the spindle on**. + +***Note that the spindle rotates near 10,000 RPM, and the cutting bit could break and create a dangerous situation. Follow lab policies regarding safety and have faculty or senior students familiar with this process verify that everything is in order before turning on the spindle and running milling Gcode.*** + +* Turn the spindle on and select "Send" to run the operation. Observe the machine safely and while wearing safety glasses. + +* The routine should complete and the PCB will be ready for hole drilling operations. Hole drilling operations should be completed without changing the machine zero positioning, or else alignment will be difficult to achieve accurately. The hole drilling operation should be straightforward so long as the tool bit is changed without losing the machine positioning. + +![Example Drill Gcode File Loaded in Candle](./images/Candle_GCode_Drl_Output.png) + +The routine should complete and the PCB will be ready for final processing or cutting operations. + +![Example Populated PCB Rendered in KiCAD](./images/KiCAD_Render.png) \ No newline at end of file diff --git a/Documentation/using_FlatCAM.md b/Documentation/using_FlatCAM.md index 2fd9f95..90f56de 100644 --- a/Documentation/using_FlatCAM.md +++ b/Documentation/using_FlatCAM.md @@ -1 +1,51 @@ -TBD \ No newline at end of file +# FlatCAM + +* In FlatCAM, open the Gerber and the Excellon files to add them to the FlatCAM project. + +![FlatCAM Open Dialogue](./images/flatcam_open.png) + +* These objects may be placed far from the origin, so select all using the "Ctrl + A" shortcut, and Move to Origin using the "Shift + O" shortcut. It is important to select all objects to move them as a group, otherwise the drill objects will not be aligned to the contour objects. + +![FlatCAM Opened Objects](./images/flatcam_opened.png) + +## Generaing Trace GCode + +* Double-click the Gerber in the project tree side panel, then select "Isolation Routing". + +![FlatCAM Side Panel](./images/flatcam_project_sidepanel.png) + +* Right click the #1 tool in the Tools Table and delete it. We must set up a new tool to mill at the 0.1mm depth of cut using the lab's V-cutter bits. + +* Use the "Ctrl + D" shortcut to open the Tools Database. You may create a new tool here, but it is recommended to import the database provided in this repository. Select "Import DB" and select the [Tools_Data_Base.TXT](../FlatCam_Tools_Database/Tools_Data_Base.TXT) file to import the V-cutter tool. + +* Select "Pick from DB" in the sidebar, select the "V-Cutter" tool, and select "Transfer the Tool" to apply to the Isolation Tool operation. + +* Change "Tool Dia." to match the 0.0354 diameter, and select "Generate Geometry". + +* Change the Preprocessor to 'grbl_11', followed by "Generate CNCJob Object". + +![FlatCAM Preprocessor](./images/FlatCAM_preproc.png) + +* The contour job is complete, select "Save CNC Code" or right click the CNC Job in the project tree side panel to save the Gcode for access with Candle later. + +## Generaing Drill GCode + +* The drill job can now be created. This operation may vary depending on your requirements. For example, the provided design uses two different size vias, and these can either be combined to one size or retained as two different drill operations. Depending on drill bit availability and prototyping requirements, you may opt to simplify this operation to use the smallest size drill, otherwise it is recommended to use the Tool Change option to provide for drill changing. + +* Double click the Excellon drill file in the project tree side panel, and select "Excellon Editor" to make changes to the drills this operation will apply to. For example, edit all sizes to the same value to combine drills. + +![FlatCAM Excellon in Side Panel](./images/flatcam_select_excellon.png) + +![FlatCAM Excellon Editor](./images/flatcam_excellon_editor.png) + +* Exit the editor and save changes. Select "Drilling Tool" and edit parameters accordingly. Since this is a separate operation from the contour, it will be critical that the CNC machine retains its positioning to ensure alignment. Keep this in mind when setting parameters for tool changes, if this option is selected. + +* It is recommended to reduce Feedrate Z to 60 (300 may be too high and could cause damage to the board). Adjust Cut Z to a value that will completely drill through the board. If using the provided fixture, there will be ample clearance under the board. + +* Select "Generate CNCJob Object" and save in the same manner as the contour operation. + +![FlatCAM CNC Jobs](./images/flatcam_gcode_objs.png) + +These Gcode files may be opened directly in Candle for heightmap generation and running the machine. + +Next Tutorial: [Using Candle](./using_Candle.md) \ No newline at end of file diff --git a/Documentation/using_Inkscape_JSCut.md b/Documentation/using_Inkscape_JSCut.md index 2fd9f95..7c70dc2 100644 --- a/Documentation/using_Inkscape_JSCut.md +++ b/Documentation/using_Inkscape_JSCut.md @@ -1 +1,30 @@ -TBD \ No newline at end of file +# Inkscape & jscut +Each SVG file can be opened in Inkscape to make these files compatible with jscut. This process is brief, and consists of converting all objects present in the SVG into path objects. Select all objects in the graphic area and select the "Path → Object to Path" menu option, followed by the "Path → Stroke to Path" menu option. Exporting this as an SVG with a transparent background is sufficient to progress to jscut. It is helpful to reduce the page size as well. Keybindings make the Inkscape process easy and fast: + +"Ctrl + A" - Select all + +"Shift + Ctrl + R" - Resize page to selection + +"Shift + Ctrl + C" - Object to path conversion + +"Ctrl + Alt + C" - Stroke to path conversion + +"Ctrl + S" - Save SVG + +![Example SVG Output from Inkscape](./images/Filter_DualOp-F_Cu.png) + +jscut ingests an SVG file and allows configuring various types of toolpaths followed by export to Gcode. Since the PCB milling operation is a single pass at 0.1mm depth-of-cut (and potentially a second operation for pad and via holes), many settings are unused. + +* It is recommended to select "Make all mm", set Tool Diameter to 0.1mm, set Pass Depth to 0.1mm, set Rapid to 1000mm/min, and set Plunge and Cut to 100mm/min, before moving on to Operations. + +* Select "Open SVG → Local" to open the SVG file exported from Inkscape. If the copper layer graphic does not appear as expected, or appears incomplete or cut off, adjust Inkscape export settings accordingly. + +* If all appears as expected, begin selecting path objects in the graphic to create Operations. Multiple Operations can be created per group of objects selected, for example, select all pad and via holes and select "Create Operation", followed by the "Pocket" drop-down option, and a value of "0.1" for the Deep field. The Operation can be expanded to access additional options, such as boolean operations, margin setting, and milling direction. + +* After the Pocket Operation, select all copper objects such as pours, pads, vias, and traces (this may take some time with complex designs), then select "Create Operation", followed by the "Outside" drop-down option, and again a value of "0.1" for the Deep field. The Pocket and Outside Operations are sufficient for most designs using through-hole or even surface mount components, but there is potential for more advanced toolpathing as well. + +* Select "Simulate GCODE" to verify toolpathing and observe Operation behavior and order. + +* Select "Save GCODE" to save the Gcode file. + +![Example Toolpath Output from jscut](./images/JSCut.png) \ No newline at end of file diff --git a/Documentation/using_KiCAD.md b/Documentation/using_KiCAD.md index 2fd9f95..ffc244b 100644 --- a/Documentation/using_KiCAD.md +++ b/Documentation/using_KiCAD.md @@ -1 +1,14 @@ -TBD \ No newline at end of file +# Using KiCAD +Designs start in a KiCAD project. It is possible to start immediately within the PCB editor, however there are advantages to working within a project file and creating a schematic first. + +The schematic editor looks and functions similarly to SPICE software, with usability improvements as well as functionality beneficial to full-stack design work. Components may be added to the KiCAD library, but the existing library is sufficient for intermediate designs. Components can be assigned a footprint, which also often includes a 3D model for rendering visuals and checking 3D space conflicts. Python script support extends functionality and allows for some automation, but is not necessary to produce competent results. + +![Example Schematic Design in KiCAD](./images/KiCAD_Schematic.png) + +The PCB board editor can be entered from the schematic editor. The two documents are linked, and components in the schematic will be inserted into the board editor as footprints. Use the hotkey "F8" or select "Tools → Update PCB from Schematic", this will place missing footprints. Circuit nets are also shared between the documents. It is possible to auto-place footprints, but it is recommended to manually adjust and rotate components accordingly to make routing easier. The board editor has many layers to manipulate. Most important for prototyping purposes are the top copper layer and the edge cuts layer. The bottom layer and multiple layers beyond this are also accessible (board stackup settings may be edited at any time). Additional vias and PCB specific components that are not typically present on a circuit schematic can be placed in the same manner as in the schematic editor, with a large default library to explore. Pin headers, I/O vias and pads, connectors, and even active trace elements such as Bluetooth or tuned antennae are present and waiting for application in student projects! + +![Circuit Board Design in KiCAD](./images/KiCAD_PCB.png) + +Once a board design is ready to export, _the process will diverge depending on whether you are ingesting **gerber fabrication files with FlatCAM**, or **SVG files with Inkscape and jscut**. Both are effective for prototyping, though the SVG method tested poorly among students. If you opt to go this route, export your copper layer in color, select only the board area, and include edge cuts if you need those outlined in the milling operation. Otherwise, select "File → Fabrication Outputs → Gerbers" and select the layer you are working with. Default settings were found to work well. Select "Plot to create the Gerber file, and then select "Generate Drill Files" (being sure "Drill Units" is set to millimeters) to create the drill Excellon file. Default settings here were also found to work well. Several files are created, however we will only use two in FlatCAM. + +Next Tutorial: [Using FlatCAM](./using_FlatCAM.md) diff --git a/README.md b/README.md index c325ea0..70fa136 100644 --- a/README.md +++ b/README.md @@ -54,164 +54,15 @@ Drivers for the 3018 CNC machine may need to be installed for communication thro Additional documentation (including general usage guides, tips, and tricks) for each application used in this process will be linked within this repo. -
- KiCAD -Designs start in a KiCAD project. It is possible to start immediately within the PCB editor, however there are advantages to working within a project file and creating a schematic first. +## Tutorials -The schematic editor looks and functions similarly to SPICE software, with usability improvements as well as functionality beneficial to full-stack design work. Components may be added to the KiCAD library, but the existing library is sufficient for intermediate designs. Components can be assigned a footprint, which also often includes a 3D model for rendering visuals and checking 3D space conflicts. Python script support extends functionality and allows for some automation, but is not necessary to produce competent results. - -![Example Schematic Design in KiCAD](Documentation/images/KiCAD_Schematic.png) - -The PCB board editor can be entered from the schematic editor. The two documents are linked, and components in the schematic will be inserted into the board editor as footprints. Use the hotkey "F8" or select "Tools → Update PCB from Schematic", this will place missing footprints. Circuit nets are also shared between the documents. It is possible to auto-place footprints, but it is recommended to manually adjust and rotate components accordingly to make routing easier. The board editor has many layers to manipulate. Most important for prototyping purposes are the top copper layer and the edge cuts layer. The bottom layer and multiple layers beyond this are also accessible (board stackup settings may be edited at any time). Additional vias and PCB specific components that are not typically present on a circuit schematic can be placed in the same manner as in the schematic editor, with a large default library to explore. Pin headers, I/O vias and pads, connectors, and even active trace elements such as Bluetooth or tuned antennae are present and waiting for application in student projects! - -![Circuit Board Design in KiCAD](Documentation/images/KiCAD_PCB.png) - -Once a board design is ready to export, _the process will diverge depending on whether you are ingesting **gerber fabrication files with Flatcam**, or **SVG files with Inkscape and jscut**. Both are effective for prototyping, though the SVG method tested poorly among students. If you opt to go this route, export your copper layer in color, select only the board area, and include edge cuts if you need those outlined in the milling operation. Otherwise, select "File → Fabrication Outputs → Gerbers" and select the layer you are working with. Default settings were found to work well. Select "Plot to create the Gerber file, and then select "Generate Drill Files" (being sure "Drill Units" is set to millimeters) to create the drill Excellon file. Default settings here were also found to work well. Several files are created, however we will only use two in FlatCAM. -
- -[Using KiCAD](Documentation/using_KiCAD.md) - -
- FlatCAM - -* In FlatCAM, open the Gerber and the Excellon files to add them to the FlatCAM project. - -![FlatCAM Open Dialogue](Documentation/images/flatcam_open.png) - -* These objects may be placed far from the origin, so select all using the "Ctrl + A" shortcut, and Move to Origin using the "Shift + O" shortcut. It is important to select all objects to move them as a group, otherwise the drill objects will not be aligned to the contour objects. - -![FlatCAM Opened Objects](Documentation/images/flatcam_opened.png) - -* Double-click the Gerber in the project tree side panel, then select "Isolation Routing". - -![FlatCAM Side Panel](Documentation/images/flatcam_project_sidepanel.png) - -* Right click the #1 tool in the Tools Table and delete it. We must set up a new tool to mill at the 0.1mm depth of cut using the lab's V-cutter bits. - -* Use the "Ctrl + D" shortcut to open the Tools Database. You may create a new tool here, but it is recommended to import the database provided in this repository. Select "Import DB" and select the [Tools_Data_Base.TXT](FlatCam_Tools_Database/Tools_Data_Base) file to import the V-cutter tool. - -* Select "Pick from DB" in the sidebar, select the "V-Cutter" tool, and select "Transfer the Tool" to apply to the Isolation Tool operation. - -* Change "Tool Dia." to match the 0.0354 diameter, and select "Generate Geometry". - -* Change the Preprocessor to 'grbl_11', followed by "Generate CNCJob Object". - -![FlatCAM Preprocessor](Documentation/images/FlatCAM_preproc.png) - -* The contour job is complete, select "Save CNC Code" or right click the CNC Job in the project tree side panel to save the Gcode for access with Candle later. - -* The drill job can now be created. This operation may vary depending on your requirements. For example, the provided design uses two different size vias, and these can either be combined to one size or retained as two different drill operations. Depending on drill bit availability and prototyping requirements, you may opt to simplify this operation to use the smallest size drill, otherwise it is recommended to use the Tool Change option to provide for drill changing. - -* Double click the Excellon drill file in the project tree side panel, and select "Excellon Editor" to make changes to the drills this operation will apply to. For example, edit all sizes to the same value to combine drills. - -![FlatCAM Excellon in Side Panel](Documentation/images/flatcam_select_excellon.png) - -![FlatCAM Excellon Editor](Documentation/images/flatcam_excellon_editor.png) - -* Exit the editor and save changes. Select "Drilling Tool" and edit parameters accordingly. Since this is a separate operation from the contour, it will be critical that the CNC machine retains its positioning to ensure alignment. Keep this in mind when setting parameters for tool changes, if this option is selected. - -* It is recommended to reduce Feedrate Z to 60 (300 may be too high and could cause damage to the board). Adjust Cut Z to a value that will completely drill through the board. If using the provided fixture, there will be ample clearance under the board. - -* Select "Generate CNCJob Object" and save in the same manner as the contour operation. - -![FlatCAM CNC Jobs](Documentation/images/flatcam_gcode_objs.png) - -These Gcode files may be opened directly in Candle for heightmap generation and running the machine. -
- -[Using FlatCAM](Documentation/using_FlatCAM.md) - -
- Candle - -Candle controls the CNC machine directly over USB or by generating a Gcode file for running on a USB stick inserted in the CNC machine. - -* Ensure Candle is connected to the CNC machine over USB by selecting "Service → Settings" and "Connection" in the pop-up window. The "Connection" drop-down should show a numbered COM option corresponding to the CNC machine - if not, verify the correct drivers have been installed. - -* Close this window and observe the control panel, which may be configured by adjusting settings. -The 3018 Pro CNC machine is capable of making use of the probe and heightmap functions in Candle, which are critical to producing good quality PCB designs. - -* In order to use the continuity probe, where the cutting tool making contact with the PCB surface triggers the probe stop, GRBL commands must be sent to the machine via the command terminal, and the tool head spindle must be connected to a "GND" pin on the control board, and the PCB must be connected to the "A5" pin on the control board. Some 3018 Pro machines shipped with different labelling on the control board - the pins may also be labeled "probe". Both types of control boards are present in the campus labs, so please be aware of this if you use different machines. These connections are easily made using alligator clips and pin headers. These connections must be removed when turning the spindle on - **be sure to always check and check again that these clips are removed from the spindle before turning the spindle on**. - -* The GRBL commands that must be sent to properly set the homing cycle for continuity probing are `$22=1` (homing cycle enable) and `$23=0` (homing cycle direction). Additional GRBL commands are provided in the "GRBL_Settings_Pocket_Guide_Rev_B" document or at www.DIYMachining.com/GRBL. - -* With the homing cycle configured, spindle off, and clips attached, use the control panel to raise the tool head and position the cutting tool over a corner of the PCB. Note the directionality of all controls, and observe the Candle graphical display of the tool head. - -* The Z-probe button may be used to slowly lower the tool head until continuity is made and the tool head stops. Zero the machine in Candle by selecting the Zero X, Y, and Z buttons in the control panel. - -* Load the Gcode file generated by FlatCAM by selecting "File → Open". Select the contour CNC job. - -![Example Gcode File Loaded in Candle](Documentation/images/Candle_GCode_Output.png) - -* Once a Gcode file is opened, Candle enables the Heightmap function. Select "Create" (or optionally apply the modeled heightmap that was developed for rapid prototyping using the fixture design included in this repository). - -* Adjust the Heightmap settings to enclose the design shown in the graphical window, or select the "Auto" button to automatically set parameters. - -* Select reasonable values for the Heightmap Probe Grid. Some parameters may be unfamiliar - "F" is the probe feedrate, "Zt" is the distance to raise the tool head when moving to the next point, and "Zb" is the distance to lower the tool head when probing. If the machine was zeroed previously, then a value of 1.50 for Zt with other values left as default is likely sufficient. - -* Observe the arrangement of the graphical representation of the operation and visually verify that the machine will not crash before selecting "Probe". The routine will run until complete or stop if continuity was made at an unexpected point. If the Heightmap was not able to be completed, try adjusting the "Zt" or "Zb" parameters accordingly, or inspect for other issues, before trying again. - -![Example Candle Heightmap Routine Being Performed](Documentation/images/Candle_Heightmapping.png) - -* With the Heightmap complete, close the Heightmap mode by selecting "Edit", and select the checkbox "Use Heightmap". - -* Raise the tool head slightly and reset alarms if necessary. - -* Perform additional visual checks to verify the machine will be able to proceed with the milling operation unobstructed, and **remove clips attached to the spindle and PCB before turning the spindle on**. - -***Note that the spindle rotates near 10,000 RPM, and the cutting bit could break and create a dangerous situation. Follow lab policies regarding safety and have faculty or senior students familiar with this process verify that everything is in order before turning on the spindle and running milling Gcode.*** - -* Turn the spindle on and select "Send" to run the operation. Observe the machine safely and while wearing safety glasses. - -* The routine should complete and the PCB will be ready for hole drilling operations. Hole drilling operations should be completed without changing the machine zero positioning, or else alignment will be difficult to achieve accurately. The hole drilling operation should be straightforward so long as the tool bit is changed without losing the machine positioning. - -![Example Drill Gcode File Loaded in Candle](Documentation/images/Candle_GCode_Drl_Output.png) - -The routine should complete and the PCB will be ready for final processing or cutting operations. - -![Example Populated PCB Rendered in KiCAD](Documentation/images/KiCAD_Render.png) - -
- -[Using Candle](Documentation/using_Candle.md) +* [Using KiCAD](Documentation/using_KiCAD.md) +* [Using FlatCAM](Documentation/using_FlatCAM.md) +* [Using Candle](Documentation/using_Candle.md) Originally, Inkscape and jscut were used to create Gcode files using SVGs, rather than Gerber files. This tested poorly among students, so FlatCAM is preferred, but this process is retained here for posterity. -
- Inkscape & jscut -Each SVG file can be opened in Inkscape to make these files compatible with jscut. This process is brief, and consists of converting all objects present in the SVG into path objects. Select all objects in the graphic area and select the "Path → Object to Path" menu option, followed by the "Path → Stroke to Path" menu option. Exporting this as an SVG with a transparent background is sufficient to progress to jscut. It is helpful to reduce the page size as well. Keybindings make the Inkscape process easy and fast: - -"Ctrl + A" - Select all - -"Shift + Ctrl + R" - Resize page to selection - -"Shift + Ctrl + C" - Object to path conversion - -"Ctrl + Alt + C" - Stroke to path conversion - -"Ctrl + S" - Save SVG - -![Example SVG Output from Inkscape](Documentation/images/Filter_DualOp-F_Cu.png) - -jscut ingests an SVG file and allows configuring various types of toolpaths followed by export to Gcode. Since the PCB milling operation is a single pass at 0.1mm depth-of-cut (and potentially a second operation for pad and via holes), many settings are unused. - -* It is recommended to select "Make all mm", set Tool Diameter to 0.1mm, set Pass Depth to 0.1mm, set Rapid to 1000mm/min, and set Plunge and Cut to 100mm/min, before moving on to Operations. - -* Select "Open SVG → Local" to open the SVG file exported from Inkscape. If the copper layer graphic does not appear as expected, or appears incomplete or cut off, adjust Inkscape export settings accordingly. - -* If all appears as expected, begin selecting path objects in the graphic to create Operations. Multiple Operations can be created per group of objects selected, for example, select all pad and via holes and select "Create Operation", followed by the "Pocket" drop-down option, and a value of "0.1" for the Deep field. The Operation can be expanded to access additional options, such as boolean operations, margin setting, and milling direction. - -* After the Pocket Operation, select all copper objects such as pours, pads, vias, and traces (this may take some time with complex designs), then select "Create Operation", followed by the "Outside" drop-down option, and again a value of "0.1" for the Deep field. The Pocket and Outside Operations are sufficient for most designs using through-hole or even surface mount components, but there is potential for more advanced toolpathing as well. - -* Select "Simulate GCODE" to verify toolpathing and observe Operation behavior and order. - -* Select "Save GCODE" to save the Gcode file. - -![Example Toolpath Output from jscut](Documentation/images/JSCut.png) - -
- -[Using InkScape and jscut](Documentation/using_Inkscape_JSCut.md) +* [Using Inkscape and jscut](Documentation/using_Inkscape_JSCut.md) ## Heightmap Modeling As a Fall 2023 Intro to Probability Theory final project, a dataset was built from Candle heightmaps and various conclusions were drawn from observations and analysis of this data. Data was interpreted using the MATLAB scripts included in this repository. The resultant report and supporting materials are included in [Reports](/Reports/). From cf9bf8615c7e4ea01d3592569b81d91606294459 Mon Sep 17 00:00:00 2001 From: TuckerWiltse Date: Wed, 20 Mar 2024 20:14:18 -0600 Subject: [PATCH 4/4] i am dumb --- Documentation/using_FlatCAM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/using_FlatCAM.md b/Documentation/using_FlatCAM.md index 90f56de..2229acf 100644 --- a/Documentation/using_FlatCAM.md +++ b/Documentation/using_FlatCAM.md @@ -8,7 +8,7 @@ ![FlatCAM Opened Objects](./images/flatcam_opened.png) -## Generaing Trace GCode +## Generating Trace GCode * Double-click the Gerber in the project tree side panel, then select "Isolation Routing". @@ -28,7 +28,7 @@ * The contour job is complete, select "Save CNC Code" or right click the CNC Job in the project tree side panel to save the Gcode for access with Candle later. -## Generaing Drill GCode +## Generating Drill GCode * The drill job can now be created. This operation may vary depending on your requirements. For example, the provided design uses two different size vias, and these can either be combined to one size or retained as two different drill operations. Depending on drill bit availability and prototyping requirements, you may opt to simplify this operation to use the smallest size drill, otherwise it is recommended to use the Tool Change option to provide for drill changing.