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 where required.

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

Solar Power Monitoring

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:

  1. a continuously running program ( 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.
  2. 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.
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.

The web browser's Javascript file reads the OBdata.txt to produce the charts. 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. Also the browser must support CSS3 and JavaScript (ECMAScript 5). 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 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.
download package

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.

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

download executable

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.

This application REQUIRES Javascript; it will not work without Javascript being enabled. GPS function 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 )

OpenBiblio - Lookup.php

OpenBiblio 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.

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.

The best location to download from is SourceForge

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)

Most recent version of OpenBiblio 1.0

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 WeatherDisplay, (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

download executable