Print This Post Print This Post

A Newcastle Quayside Walk

A few posts ago, I displayed a few photos of a depressing walk around Gateshead Town Centre, and appended a link to a zip file containing the complete set of photos I took on the walk.

As a (stark) contrast, this post shows one or two photos of the Newcastle and Gateshead Quayside development, and again I’ve appended the full set of photos as a zip archive should anyone wish to look at these.

As with the walk last month, I’ve included an annotated map, showing my stroll, and also provided a text description for each photo.

I leave you to make your own mind up regarding comparisons that can be drawn from the two walk’s photos.

Route of Walk.

Route of Walk.

View (south) of Hilton Hotel Gateshead

View (south) of Hilton Hotel Gateshead

I call this one Arcs - I hope you can see why.

I call this one 'Arcs' - I hope you can see why.

Blinking Bridge

Blinking Bridge

Downloads.
My description of each photo in the zip archive is here: http://joebrown.org.uk/images/walkMay12th.txt
and the zip archive is here: http://joebrown.org.uk/images/agfaMay12th2012.zip

  • Share/Bookmark
Print This Post Print This Post

Patch Tuesday – Microsoft’s Latest Bag Of Shite

I’ve just spent most of the morning recovering one of my machines that I had foolishly allowed Microsoft to automatically update.

It’s an XP machine, and after the ‘upgrade’ yesterday was almost unusable this morning, with huge delays in accessing Explorer, and much, much worse, hanging when any attempt was made to shut down.

This successfully prevented me from doing a system restore, as this useless piece of crap will not run unless a clean automatic shutdown is achieved.

Eventually, I persuaded the machine into safe-mode – the only way of doing this successfully was from msconfig! Then restored the machine to the 28th April (last week).
I now have a fully-functional machine again. Oh yes, and one in which I’ve now turned off Automatic Updates – forever.

The only reason I’ve stuck with Windows, is that most of the development tools I used, had no Linux equivalent, and that is no longer true. Very soon, I will ditch Microsoft completely – nothing they have to offer tempts me to upgrade from XP, it’s just more of the same with expensive wrapping.

For the record, I’m running a dual-core AMD Athlon 64, 5000+ at 2.61Ghz, with 3.25GB of RAM.

  • Share/Bookmark
Print This Post Print This Post

PCB Milling Diary – April 12th 2012

Updated @ 16:28 13th April 2012
(see supplemental)

I’m playing catch-up here. The contents of this post refer to work over two days old, delay in writing it up is due to other, more pressing matters.
The good news is that after using LineGrinder to generate the G-Code from my little PCB, the two mysteriously-missing areas on the PCB are correctly rendered. I halted cutting of the traces due to the fact that a) there was insufficient depth-of-cut, and b) because of (a) the convex shape of the board made undercut inevitable.

RH Side: HV_OPAmp top foil - cut 2 using gcodes from LineGrinder.

RH Side: HV_OPAmp top foil - cut 2 using gcodes from LineGrinder.

Just about everything is better in this attempt. !st, the ‘JB’ and ‘1′ completely missing from the previous try are clearly visible. The pad outlines are a better shape, and not chewed to ribbons by repetitive tracing as in pcb-gcode. All that remains is to ensure correct depth-of-cut and present as flat a surface as is possible to the tool. This means a better clamping method than I used to-date.

Clamping used to-date

Clamping used to-date

Above you can see my test board, sitting atop a sacrificial fibre-board. The aggregate thickness of these is around 4.5mm. I cut and milled one side of some 20mm gauge-angle so that the inside width of the cut side is 6mm – sufficient to generate a small angle when tightened to the mill table. I drilled 6mm holes to correspond to the mill table slots, and opened these slightly with a 6mm slot drill. The result is as you see above.
Probing the surface shows up a distinct, but slight convex hull, highest in the centre – furthest from the clamps. I will be investigating two methods of overcoming this, the first and most obvious of clamping the sides of the board as well, the second using pre-probing of the tool-route, outputting a compensating Z-axis dimension, and re-combining this with the original gcode. ( a little ‘z’ if you like)
This is not a new idea, and as I’m currently ‘logging’ the g-codes in the file-system as they are sent to the controller, it is a simple matter to send adjustments as the probe run is done, so to this end I’ve implemented the code, but have yet to try it out in anger.

As for pcb-gcode? Well I won’t bother investigating further, as the results from LineGrinder are just far superior. You may be interested to know that proper arcs (in gcode) are output for the pad ends, using LineGrinder, whereas rough polygons are output in pcb-gcode. Also, the drill holes are ’spotted’. I’m convinced which is the winner.
Below is the VEGA DATA simulator output.

VEGA DATA simulation from LineGrinder gcodes

VEGA DATA simulation from LineGrinder gcodes

I’ll report on my pre-probed cut in the next post of this diary.

JWB 12th April 2012

Supplemental – added April 13th 2012
No, I haven’t done the probing yet, but did try out re-arranging my setup.
First of all, I used a longer piece of circuit board.
Secondly, I didn’t tighten the clamps so enthusiastically as previously.
I then ran a clock gauge across the surface. No discernable distortion was evident in the centre two-thirds of the board.

Setup for flatness test of circuit board

Setup for flatness test of circuit board

Next, I increased the depth of cut in the gcode file to 4 thou.
The result is as below:

Third attempt at cutting traces

Third attempt at cutting traces


This is useable!
A few comments:
1st, the space there should exist between the pad with ‘1′ to it’s right and the SMD pad immediately below didn’t make it – it was always very fine, and adjustment of the Eagle project will sort this out.
Secondly, the apparent S/C between bottom-row pad 3 and isolated scrap is simply swarf – it dusted away.
Third. Although I like the DIL socket and SIL pin-holes ’spotted’, some of these ’spots’ are deeper than I would have preferred. (Edit: This is entirely my fault, due to my over-enthusiastic global-replace of the Z-axis dimension!)
These are simply niggles, and the machine can now be considered fully-operational.

Downloads
The Eagle project I based these tests on is linked elsewhere, but the gcode file I used to generate these cuts is here: http://joebrown.org.uk/images/MillTable/Diary/t2.nct
Links
The 1mm cone cutter I used is available from ESR: Order Code 275-140, Description 1.0mm Miller Cutter – Conical, priced GBP £0.84.

  • Share/Bookmark
Print This Post Print This Post

A Gateshead Walk

I took a walk in Gateshead this morning. I had business at the Civic Centre, so thought I would check on progress (if any) that Gateshead Council had made in tidying up the disgraceful state of the once-proud Gateshead High Street. I documented my walk with pictures, all 250Mb of which are too much to load individually up to my album site. I give a taster here, but if any former Gateshead dweller would like to see this ’snapshot’, a zip archive is available.
First below I show my short walk:

Gateshead Walk 11th April 2012

Gateshead Walk 11th April 2012

I suppose the lowest point in the walk is the site of the Odeon Cinema – wasteland now for many years. Trouble is, things don’t actually get much better.

Odeon Wasteland - We come along, on Saturday Morning. Greeting everybody with a smile

Odeon Wasteland - 'We come along, on Saturday Morning. Greeting everybody with a smile'

The once-proud Co-op has now been completely superceded by the Mamon Behemoth. The building below used to contain the Co-op ‘Food Hall’, where I was sent for the Saturday shop. You stood in a queue, until someone took your list, then he did all of the running around. Nowadays, you do all of the running around, and then you stand in a queue. Progress?

Site of the former Gateshead Co-op

Site of the former Gateshead Co-op

The photo below shows new development on what became cynically described as the “set for the film ‘Get Carter’”. In other words, the infamous multi-storey car-park and it’s cafe that never sold even one cup of tea. I worked in Barkers (Radio store), which was just on the left down here, and we watched the film being made.
I wonder if this new development will fare any better than the late-60’s monstrosity?

New set for re-make of Get Carter

New set for re-make of 'Get Carter'

I would show you more, but it doesn’t get any better I’m afraid. Maybe you think differently.
My zip archive of the walk is here: http://joebrown.org.uk/images/agfa April 11th 2012.zip
and commented photo list here: http://joebrown.org.uk/images/catalog.txt

  • Share/Bookmark
Print This Post Print This Post

PCB Milling Diary – April 8th 2012

A great deal of what we see on the Web, project-wise, is the ‘finished’ product. Every questionable decision has been ‘revisioned’, and what warts remain are carefully hidden, or presented as ‘features’. Yeah, I know this is a pretty cynical view, but unfortunately, nearer the truth, than even I would like to admit.
One of the great lessons I found, in a long career of software engineering, was to document every ‘failure’, every ‘good’ idea that turned out to be just plain bad, and attempt to make this collective wisdom available to the whole software group, so that when new ‘brooms’ came along, the same tedious business of making the same mistakes again was avoided. Well, it didn’t always work, but most of the time it proved very useful.

I could have documented my experiences alongside the Project Development posts, but I feel that would be the wrong place to do so, hence this separate diary.

Yesterday, I cut my first traces ‘in anger’ on a piece of copper-clad circuit-board. This was two copies of the bottom pads of the small HV_OP_AMP project I’ve been using as a test-set for the Proxxon MF70 CNC Conversion Project.
The results of this were encouraging.
This morning I cut the top trace of the same small board. Again the result is encouraging, but not without issues. So, rather than simply quietly sorting out these issues, I thought it might be a good idea to share these with others, contemplating similar projects.

1st take a look at the photo of the bottom pads, cut yesterday. (on a scrap piece of FR4 board)

HV_OpAmp Circuit Board - bottom foil.

HV_OpAmp Circuit Board - bottom foil.

And now, the bottom foil, together with a blow-up print-out of the foil as it should be.

HV_OpAmp Circuit Board - Top foil and print-out blow-up

HV_OpAmp Circuit Board - Top foil and print-out blow-up

Now, in my opinion, the upper photo shows excessive depth-of-cut, using the ‘default’ values in the pcb-gcode.ulp program. This sets the Z depth to -0.254mm, in Imperial units that’s 10mil. Considering FR4 board with 1oz copper is quoted to be around 2.08mil thick, 10mil seemed excessive. So some juggling required there. Also, as a result of excessive cutter depth, and the cone profile of the 0.5mm cutter I used, some loss of area can be noted around the pads – especially the small link pad. (The Mickey-Mouse ear of the pad 2nd-row, 4th from left) Despite these comments, these are matters which can clearly be cleared up with attention to the set-up.

Now moving to the 2nd photo, this too, has several issues. Ist of all, I reduced tool penetration to 0.102mm – or 4thou in Imperial measure. Removal of copper was still retained, but the setting showed up the sensitivity to a non-flat (slightly-convex) circuit board, in that the area closest to the left-hand clamp has not been completely cleared of copper where required. This led to short-circuits etc. Again, this is a matter of setup, and one I’m not unduly concerned about.
I marked the traces I was happy with on the blown-up print-out with small red ticks. As you will see a large percentage of the board I considered satisfactory.

What was a mystery were the two areas, both left and right, that I’ve surrounded with dotted lines and question marks. These two areas are supposed to contain SMD pads – instead they have been ignored.
Up until this point, I had trusted the output of the pcb-gcode program. I began to suspect that maybe that trust had been misplaced.
I downloaded and installed a trial version of VEGA DATA, and after a lot of fiddling managed to get the simulator to run. Yes, you’ve guessed – with exactly the same results, in that the two areas mentioned above are not machined as they should be.

VEGA DATA View of simulated trace cut of HV_OpAmp Top Foil

VEGA DATA View of simulated trace cut of HV_OpAmp Top Foil


So. My Milling software and CNC conversion works – leastways it follows the instructions given to it, without protest or error.

Before I go further I need to investigate why pcb-gcode is ignoring parts of my PCB layout. When I do know, then I’ll let you know too.

JWB 8th April 2012

Downloads
The Schematic and Board I’m using for test can be found here: http://joebrown.org.uk/images/MillTable/Diary/HV_OpAmp_Discr.sch and here: http://joebrown.org.uk/images/MillTable/Diary/HV_OpAmp_Discr.brd
My top-foil gcode file (this is a txt file, you can read using Notepad): http://joebrown.org.uk/images/MillTable/Diary/t2.nct

  • Share/Bookmark
Print This Post Print This Post

Converting a Proxxon MF70 Milling Machine To CNC – 4

A Simple Thumb Drive G-Code Delivery System

Updated with File System Source-Code & example of logging 15th April 2012

This post in one in a series. Other posts you may be interested in are as follows:

Print This Post Print This Post

Google – Stop f***ing asking for my mobile number when I sign in to GMail

No, you aren’t getting my Mobile number.

If you persist in asking me – I will close my gmail account.

  • Share/Bookmark
Print This Post Print This Post

Converting a Proxxon MF70 Milling Machine To CNC – 3

Controlling the MF70 Spindle Speed

Updated 28th April 2012 with Eagle Schematic and Printed Circuit Board Design.

This post in one in a series. Other posts you may be interested in are as follows:

I’ve already mentioned that I’ve attempted to automate as much as is possible, so as to avoid tedium and the inevitable problems with repeatability when human intervention is involved. It would be useful to define required Tool speed alongside the tool definitions, so that when a tool is selected by gcode, the speed suited to the tool and work is automatically selected and implemented.

Hardware

The MF70 comes equipped with speed control based, to put it bluntly, on a lamp dimmer. As a picture is always worth at least a thousand words, I’ve included my impression of the MF70 speed controller in the schematic below.

Authors impression of Proxxon MF70 Speed Controller

Author's impression of Proxxon MF70 Speed Controller


The circuit is ubiquitous, but I’ll glance over the operation.
Control over the firing angle of the TRIAC is managed by the 500K pot, together with the associated capacitors, assisted by the DIAC, hence altering the effective voltage across the bridge rectifier which supplies power to the DC brushed motor. The circuit is popular because it is cheap, and relatively problem free, the only mechanical component being the 500K pot.
Proxxon have marked the dial on the speed control knob in a range from 5000 to 20000 rpm. I have not checked this, but indications are that though a little rough, the calibration is adequate, given that the control over speed using a pot in this way is not linear, with greater incremental increases in speed as the knob is rotated clockwise.

Given my very healthy respect of mains-level voltages, and un-isolated ones in particular, I originally intended leaving things exactly as they are, and affixing a geared model-control servo motor to the side of the motor casing. I subsequently decided that this would end up as a mechanical monstrosity, which was difficult to keep free of metal swarf, and promising myself to be ultra careful, decided on interfacing directly with the electronics of the motor controller itself.

I haven’t ‘played’ with TRIACS in any serious sense, my experience pre-programming days was solely with Thyristors, so some time has been spent reading Application Notes. Not much has changed though, and the simple requisites for phase control are the determining of the zero-cross point in the AC supply, and the production of a GATE_ON signal after a pre-determined delay, depending on speed required.
Below, the Blue trace shows the zero-crossing pulse, (note that this occurs every 10ms here in the UK, where we have a 50Hz supply) whilst in red the ACTIVE LOW Triac control signal is shown, well delayed until just over 8ms after zero-crossing. The reason why the Triac control signal is ACTIVE LOW will become apparent in the next schematic.

Phase Control of Proxxon Motor @ approx 5000rpm

Phase Control of Proxxon Motor @ approx 5000rpm

Now contrast the above oscillogram with that below taken at a speed of 20,000 rpm.
Here, the ACTIVE LOW Triac control signal is triggered at around 5ms after zero-crossing, thereby turning the triac on much longer, hence delivering more power to the motor.

Phase Control of Proxxon Motor @ approx 20,000 rpm

Phase Control of Proxxon Motor @ approx 20,000 rpm

As well as controlling the speed of the motor, our additions should cater for turning the spindle motor on and off, as well as allowing for original manual control, and probably most important, shutting off spindle motor power when the BIG RED SWITCH is hit by the user, as mentioned in the 1st post on this subject.
Last, but most certainly not least, control signals should be isolated from the mains voltages on the existing speed-control board.

So a shortlist of requirements so far:

Detection of zero-crossing of the AC supply.
Generation and provision of the TRIAC gate signal.
Emergency shut-down.
Provision for manual control.
Complete isolation of mains-connected electronics from controlling electronics.

I came up with the following:

Proxxon MF70 Milling Machine Automated Speed Controller

Proxxon MF70 Milling Machine Automated Speed Controller


Don’t be put off by the apparent complexity of the above – look at each part individually.

First, the ‘original’ speed controller is retained on the right of the diagram, with only 3 small changes:

1. The connection between the DIAC and TRIAC has been severed, and flying connections taken to contacts on RELAY 2.
2. A flying lead has been added to A2 of the TRIAC, which connects to resistor R6.
3. A flying lead has been added to A1 of the TRIAC, which connects to capacitor C7.

A phase-control signal PHASE_CONTROL supplies ACTIVE LOW pulses to the opto-isolated TRIAC MOC3020, whose supply and snubber are connected as mentioned in (2) above, and whose output is taken from pin 4, via RELAY 2, to the TRIAC, whenever RELAY 2 is activated.

A zero-crossing detector circuit comprises R9, BR2, a zener diode, R10, LED2, C7, R11 and a 6N137. This generates a positive-going pulse every 10ms, ZERO_CROSS, which is opto-isolated from the mains supply.

A spindle motor ON/OFF circuit is comprised of Q1, D1 and RELAY 1. An ACTIVE HIGH on MOTOR_ON, will turn on the spindle motor if the Manual/Automatic switch (top-left of schematic) is set to ‘Automatic’.

Most importantly, the ‘Controlled 5V+’ supply comes from the ‘+5V supply to motors’ shown on the BIG RED SWITCH diagram in 1st post of this series. This ensures that when the user hits the ‘PANIC’ switch, not only will the X, Y and Z stepper motor supplies be cut, but the spindle motor will also be deprived of power.

Note I’ve shown the relays in their ‘de-activated’ state, which would be so if the Manual/Automatic switch was set to ‘Manual’, or the user has hit the PANIC button. In this state, the original Speed controller can be used, switching on the supply using the original (and retained) switch.

A suitable printed circuit design in Eagle is now available. Component & foil sides look like this:

MF70 Spindle Control from PIC Microcontroller - Component Side

MF70 Spindle Control from PIC Microcontroller - Component Side


MF70 Spindle Control from PIC Microcontroller - Foil Side

MF70 Spindle Control from PIC Microcontroller - Foil Side


Software

As mentioned above, the relationship in AC control, between time and speed is not linear, and I had no wish to make exact, and complex calculations in software. Instead I decided on allowing the use of the ‘S’ gcode to select spindle RPM to the nearest 1000, in a range 1000 to 20,000 – a little better than the 5000 to 20,000 allowed by the original controller. The plan is to parse the input speed gcode, then divide this by 1000, to give an index into a look-up table containg effective phase-delays (TMR0 counts), the contents of which could later be tweaked with the use of a tachometer.

So the look-up table will look similar to this:


const rom unsigned int phaseval[] = {20000,21000,22000,23000,24100,24450,24750,25000,26000,26750,27500,28000,28500,29000,29500,30000,32000,35000,38000,41000};

G-code speed parsing like this:


		if (gcode.present & GCODE_S)
		{
			int temp;
			// accept 1000 - 20,000
			// convert to 1 - 20
			// and look up tmr0reload in table
			// rough? yes, but later, calibrate with tachometer
			temp = gcode.S / 1000;
			if (temp > 0 && temp < 21)
			{
				temp = phaseval[temp-1];
				// tmr0reload is volatile so disable interrupts
				INTCONbits.GIEL = 0; // low priority/peripheral ints
				INTCONbits.GIEH = 0; // enable high priority ints

				tmr0reload = temp;

				// re-enable interrupts
				INTCONbits.GIEL = 1; // low priority/peripheral ints
				INTCONbits.GIEH = 1; // enable high priority ints
			}
		}

And the interrupt system which processes the zero-cross signal and generates the PHASE_CONTROL signal:


InterruptHandlerHigh ()
{
	if ( INTCONbits.INT0IE == 1 && INTCONbits.INT0IF == 1)		// test for RB0 edge interrupt - ZERO-CROSSING
	{
		// clear INT0 interrupt flag
		INTCONbits.INT0IF = 0;

		PORTBbits.RB1 = 1; // drive phase control HIGH (OFF)

		TMR0H = tmr0reload >> 8;
		TMR0L = tmr0reload & 0xff; // reload TMR0

		INTCONbits.T0IF = 0; // clear TMR0 interrupt flag.
		INTCONbits.T0IE = 1; // enable TMR0 interrupt
	}

        // TMR0 interrupt
        if (INTCONbits.TMR0IE == 1 && INTCONbits.TMR0IF == 1) // test T0 rollover
	{
		INTCONbits.TMR0IF = 0; // clear TMR0 interrupt flag
		INTCONbits.T0IE = 0; // disable TMR0 interrupt

		PORTBbits.RB1 = 0; // turn phase contol ON
	}
.
.
.

A photo album exists showing my experiments in the development of the prototype speed controller. This can be viewed here: http://cullercoats.joebrown.org.uk/#53.22
I’ve also embedded a Shockwave viewer of the album below. The photos are best viewed full-screen.
http://cullercoats.joebrown.org.uk/#53

Datasheet/Application Notes. I have provided copies of the following PDF documents for your convenience:
6N137 – opto-coupled Schottky Transistor
Opto-coupled TRIAC MOC3020

Suppliers: Everything I used here was available at my local friendly Electronics Store ESR. The relays were actually 6volt units – they run quite happily on 5volts.

Update 28th April 2012
The Eagle schematic and board files are here: http://joebrown.org.uk/images/MillTable/SpindleControl.sch and here: http://joebrown.org.uk/images/MillTable/SpindleControl.brd

  • Share/Bookmark
Print This Post Print This Post

Converting a Proxxon MF70 Milling Machine To CNC – 2

The User Interface

This post in one in a series. Other posts you may be interested in are as follows:

Print This Post Print This Post

Converting a Proxxon MF70 Milling Machine To CNC – 1

Overview

This post in one in a series. Other posts you may be interested in are as follows: