Simple PCB 'Etching' with a CNC machine
For the last few years I have been getting back into DIY electronics projects;
mostly for Amateur Radio. these days that involves a lot of semi-conductor work
which quickly leads to breadboarding techniques and from there to some form of PCB work.
I tried using various alternatives to chemical etching such as 'Manhatten Style', and 'strip-board'
and while they worked to some degree for prototypes, they left me unsatisfied.
Then I heard of CNC machines being used and I was hooked; but my wallet was skeptical.
So I began a trek down the path a DIY machine which along with a Harbor Freight $19 'dremel' tool
let me manually make isolation traces well enough to see that this might amout to something.
But to make a board of any real use, I had to have a way to generate the G-Code used to drice
these CNC things. Certainly there is no shortage of programs out there to take your schematic
and eventually yield a file of gcode, but the learning process is STEEP
especially if you just want to find out if CNC is for you.
I wanted something that would let me construct a PCB for simple modules; a power regualtor,
a simple one stage RF amplifier, a filter, etc. It did have to allow me to use either SMD or
through-hole construction; but I didn't need it to know anything about semi-conductor pin layout.
I thought I could continue as I had so far doing hand layout on grid paper and limiting my 'printed'
wiring to simple strips (but they had to allow bends), isolated cells, and holes for vias and part mounting
Simple PCB Etcher (smplPCB) is the result. Written in Python (ver 3.6) it should run on any PC, MAC,
or Linux machine. The comments at the head of the program reads:
# This program was originally intended to create PCBs for use in 'Manhattan' style construction.
# Thus the board to be etched is assumed to be laid out as a grid of cells
# identified by rows and columns numbered from 1 to N along both the X and Y axis.
# Isolated areas will have a 'moat' ecthed along their edges.
# Vias will be marked with a small pit at the center of the specified cell.
# The user may also specify that the boarder around the board is to be cut all the way
# through except for small 'tabs' at the corners which may later be cut by hand.
It has a drawing area with a grid where you can mimic your grid paper layout. You can also drwa a 'border'
to tell the machine where your PCB is to be cut loose.When you are satisfied with your layout you can
click a menuentry to generate the actual G-CODE into a text editor window.
You can then edit the code if you like or have it saved to disk. As the program lets you
enter your machine and PCB material parameters, the code is ready to run the machine
or be viewed in a CNC simulator.
Most important; if it doesn't work as you like, feel free to change to suit.
In any case, you may use as you wish, no strings attached.
download Python Script Files
Our home obtains its electrical power form both the local power company (the Grid)
and from a Solar Electric Panel system.
The power system, while easy to use, is pretty complex to describe and to manage
(especially if you are an engineer and want to know exactly what's happening).
So I needed a system to let me "see" exactly what is going on
and how much power is being processed where.
Outback Mate 3 - Ethernet connected
This package consists of two major parts:
The continuous program is currently a Python console process built using Python 2.71.
It reads the MATE3 real time CGI process every 60 seconds via the LAN
and appends what it receives to the file OBdata.txt in the local web servers ../outback folder.
In addition the program also reads the Mate3 XML config file each hour
and places that information file OBconfig.txt in the local web servers ../outback folder.
- a continuously running program (obServer.py) that collects real-time data
and saves it to a file once a minute. At midnight the file is cleared
and the process begins again.
- a web browser page (mate3.html)that displays both the most recent real-time data and
a set of charts of the most significant items for the current day.
It also reads OBConfig.txt to have that information available.
The web page produced is a variant of Outbacks internal web page
and provides all of the information it does as well as the daily chart set.
The web page provided here is written using features of HTML5
and a browser supporting the protocol is required.
IE currently does not work; firefox 3.6+ & 4+, Chrome 11+, and Safari 5+ are all fine.
Currently the browser code assumes 2 FX Inverters, a FNDC Battery Monitor
and a single MX Charge Controller.
The user can comment out those devices not being used.
It should be noted that while the Slave Inverter is plotted seperate from the Master,
the tabulated information is for the Master alone
(except for the accumulated kWh which includes both).
The Python program observer.py may be placed anywhere on the LAN you desire
so long as it has access to your web servers page folders mentioned above.
The broswer program mate3html (and its attendant parts) must also be placed
in the above mentioned .../outback folder.
The Original Outback Mate - Serial port connected
OB2SG - Outback to JDS Stargate
OB2SG takes advantage of the communications interface of my "Outback Power Systems"
MATE controller to show in tabular and graphical form how the various components are performing.
It also sends alarm information to my StarGate Home controller
to let me know of events like loss of grid power, low battery, etc.
OB2SG performs these multiple functions:
The program is based on a generic Outback Device object with
descendent objects for the FX inverter and MX controller.
Each object knows how to plot its own performance, and log its activity.
- collect performance data from our Solar Power system.
- maintain logs of the collected data for possible future need.
- provide a real-time display of that data in tabular and graphical modes.
- allow historical data to be viewed in various ways.
- send alarms to the SG system when certain parameters exceed their limits.
This allows the program to deal with as many FX and/or MX devices
as may appear in the communications stream.
As each new device reports, a new display screen unique to it will appear.
At any time a user may view:
tabular list of last 30 days for any device;
average day's graph for any device for any past calendar month;
actual performance graph for any past day for any device;
download Delphi source code
Road Surface Management System
web-based version (2)
An unauthorized upgrade(?)
of the Maine DOT distributed
Road surface Management System (RSMS).
It is designed as a web application
using desktop, laptop, tablet or smartphone browsers.
The central data repository is kept in a formal database
which is locally cached at the browser.
As the web pages themselves are also cached in the browser,
independent offline use is possible.
This implementation has been enhanced
to provide for inventory and status of
road culverts, both driveway and cross-road.
This is considered by the author to be
information related to drainage.
Currently the surface analysis functions do
not make any use of this information.
and Off-Line operation
require browsers with that HTML5 support.
Users are strongly encouraged to use
the latest desktop versions of Internet Explorer
Firefox, Safari, Opera, or Google.
All of these work well
as does the Blackberry Browser version 6.0+
(and presumably other mobile browsers based upon Webkit).
This application currently does not work well with
MicroSoft Internet Explorer IE8 and earlier.
Run the online demo
(note: your first run will require you to refresh after the initial load.
This is due to the need to initialize the browser caches.
If asked to allow local storage, please answer 'yes'.
Culvert surveys are not yet available
is an easy to use,
automated library system written in PHP containing OPAC,
circulation, cataloging, and staff administration functionality.
OpenBiblio library administration offers an intuitive interface
with broad category tabs and sidebar.
The best location to download from is SourceForge
Unfortunately it does not come with provisions to look up publications
in an online catalog such as the U.S. Library of Congress -
So I wrote an add-on for it.
This add-on provides a means to enter a ISBN, ISSN, or LCCN number for a publication
and have the forthcoming data placed into the "new Bibliography" form for you.
You may also search by Title & author,
and you can specify Publisher, Publication location and date if necessary.
In the event of multiple hits, you will be able to select the one to use;
(note: The repository for the publication is noted on the results screen.)
The add-on uses the international standard, Z3950, to obtain MARC records and
places them into the correct entry fields of the OpenBiblio form.
It also now supports the newer SRU protocol
The user may specify one or more Z3950 server Libraries to be searched.
The same protocol (SRU or YAZ) will be used for all of them.
Release notes are included in the .zip file.
OpenBiblio - new Member screen
OpenBiblio in it's original form requires the administrator
to enter a previously manually assigned ID number.
This may be suitable for larger libraries with
library id cards having preprinted numbers on them.
However our community is small enough that all patrons are known on sight
so no library cards are issued.
Still OpenBiblio requires a unique card number for each patron.
I have modified the "mbr_Fields.php" file to determine the last assigned
card number, increment that value, and put a proposed new number into the field.
view readme page
(includes release notes updated 2 Mar 2005)
download new-Member files
(version 2 Mar 2005)
WD2SG - WeatherDisplay to JDS Stargate
WD2SG was written to transfer weather data from a weather monitoring program to a
Stargate Home Automation Controller.
In my case, weather data is collected by a Davis Weather Monitor II
whose sensor package is located on my rooftop.
The weather data is presented on a small LCD display on a hallway wall.
From there it is transmitted to my household server
where it is read by a Windows program called
(usually referred to as "WD")
Among other things, WD provides a log file each minute containing
weather data of my choosing.
WD2SG looks for the file each minute, reads it, manipulates the data as needed,
and then sends it in appropriate format via TELNET over my household LAN
to my Stargate controller.
download Delphi source code