This has been taking up the vast majority of my time lately, which is why I've been a bit quiet!
It all started out last year when the yearly MOT test (road worthiness) failed, with some small rust holes to the body. This isn't uncommon in Mini's, and, afterall, it is 37 years old! I thought there was a few hours work, to cut out the rust and weld in some new metal ... oh how wrong I was.... The hole grew and grew and grew as I cleaned it up... there was only one thing for it, a full body repair job .....
Hiding in the garage having failed it's MOT
Bonnet (that's the hood, if you're across the pond) off, engine out
Floor doesn't look too bad ...
But the boot floor is rotten. You can't really tell from this photo, but the back edge is shot away. It's been badly repaired in the past.
The wife saying goodbye, as it goes off to my friend's larger garage for surgery.
Front sub-frame removed....
Followed by the rear...
Support added between from sub-frame mounting points. This will support the body and stop it distorting as it's repaired.
Bar inserted through the support...
Through the centre of the car....
... and to a similar support mounted to the rear suspension mounting points...
.. and the whole body supported on the bar in between two stands.
As this is a later car, I had to cut a hole in the rear of the car so the bar could pass through. Earlier cars have a cut-out here.
Rear support retails...
And the exposing of the poor repairs and corrosion starts to occur. This is the left hand side sill being cut off, to reveal another sill rusting away beneath. This is very bad practise. The replacement sill was also a "wide". They are designed to hid a lot of the corrosion. Always be wary of a car fitted with "wides"! They block the drain holes, and cause further rusting :(
This hole is the end of the centre cross-member. It should have the inner sill covering the end, but it has long since rusted away. The jacking point bracket is largely missing.
This is the right hand side. Things are worse here. There are three sill sections in places and two pieces of floor, one over the other! I can't see the purpose for this, though, as both bits appear to be sound...
Cutting out the rot...
Parts are ordered ....
.. from the very helpful people at Bull Motif Spares. They do mail-order, but they're only in the next town, so I popped over.
Cleaning back to good metal...
The jig allows the car to be put in any position.
I decide to lose the air vent holes. These are a known rust-trap. The left hand side isn't too bad.
Line up the floor...
And weld in place...
Sizing up the sill and quarter panel repair ....
... and that's where I'm up to. There's a lot more to come ....
About 2 years ago, I replaced the 35 watt halogen spotlights in my lounge with some nice warm-white LED equivalents. They weren't a lot of money, and represent a saving of 31 watts per lamp. There are 21 in my lounge, so a total saving of 651 watts! The light output is pleasant too, warmer than the halogen. They are also fairly good on the RFI front. There's a little on the medium wave and long wave bands, but HF and VHF seem immune.
I've had a couple fail, but I'd got some spares, so I simply replaced them. I kept the bad ones, as I had to disassemble them to see if they were repairable! I hate landfill!
The failure mode is either no light, dim light or flickering (usually before going off completely)
In each lamp there are 3 LEDs in series, and a nice constant current switching converter.
In all of the failures so far, the failure has been down to one of the LEDs going open circuit.
Repair is easy, using a current limited power supply, check each LED. The duff one reveals itself easily.
Removing the surface mount LED is easy enough, and it has a heatsink area on it's base. I removed a known good LED from on of the earlier faulty lamps, and replaced it, noting to check polarity, and adding a small dab of heatsink compound to the back of the LED.
The PCB on which the LED mounts to has a small copper area, which, in turn, forms a heatsink area with the aluminium body of the lamp. Ensure the LED is mounted so it's heatsink area is in good contact with the board, and, in turn , ensure the board has enough heatsink compound, and is seated tightly against the aluminium heatsink. On my lamps, the contact pressure is achieved by the lens clamping the board and LEDs together.
Note when soldering (or desoldering) a good LED, speed is of the essence. These devices are easily destroyed by heat. This is most likely the cause of the original failure.
Lamp showing two LEDs missing, the board and the aluminium heat sink.
This is the start of an on-going time standard project.
The idea is to have three clocks, one MSF clock being received from the NPL on 60KHz, one DCF77 clock on 77.5 KHz and one GPS clock.
This is the first part of the clock, the GPS clock.
I'll be using the Ublox NEO receiver I've used before in the fast GPS-logger project here. The receiver is configured in exactly the same manner as described in that article, so pop along there and learn how to use u-center to configure your receiver.
I purchased some great MAX7219 display boards from eBay. There was a bit of a wait, as they came from China, but they were much less expensive than others, and the build quality is OK.
Note on some board the CS pin is marked up LOAD.
I'm not going to draw a schematic, as it really is simple. (Leave me a comment if you get stuck!)
The wiring is commented in the code below.
The code is also simple, we're not doing anything particularly clever. There's a bit in the code which writes "no GPS" on the display, and this is defined as a bitmap. The bitmap refers to the segments as follows:
Bit 1(LSB) is G
Bit 2 is F
Bit 3 is E
Bit 4 is D
Bit 5 is C
Bit 6 is B
Bit 7 is A
and finally, bit 8 is the decimal point.
Here's a quick video of the clock in action:
... and here's the code:-
/* 7-segment GPS clock Version 0.9 Written by Andy Doswell 2015 License: The MIT License (See full license at the bottom of this file) Schematic can be found at www.andydoz.blogspot.com/ You will need the LedControl library from http://playground.arduino.cc/Main/LedControl and the very excellent TinyGPS++ library from http://playground.arduino.cc/Main/LedControl pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to CS pin 0 (RX) is connected to the GPS TX pin */
#include "LedControl.h"
#include <TinyGPS++.h>
LedControl lc=LedControl(12,11,10,1); //Tells LedControl where our hardware is connected.TinyGPSPlus gps; //TinyGPS++ classstaticconst uint32_t GPSBaud = 57600; //Our GPS baudrate. int hourTen; //tens of hoursint hourUnit; //units of hoursint minTen; // you get the idea..int minUnit;
int secTen;
int secUnit;
int centTen; //centiseconds.int centUnit;
unsignedlong timer =0;
voidsetup() {
lc.shutdown(0,false); // Wake up the MAX 72xx controller
lc.setIntensity(0,8); // Set the display brightness
lc.clearDisplay(0); //Clear the displaySerial.begin(GPSBaud); // start the comms with the GPS Rx
}
// This contains the bit patterns for the "no GPS" display.void displayNoGPS() { // displays "noGPS" if the GPS lock isn't valid
lc.setRow(0,0,B00000000);
lc.setRow(0,1,B00000000);
lc.setRow(0,2,B01011011);
lc.setRow(0,3,B01100111);
lc.setRow(0,4,B01011110);
lc.setRow(0,5,B00000000);
lc.setRow(0,6,B00011101);
lc.setRow(0,7,B00010101);
}
void displayNoSerial() { // Displays "noSeriAL" in the event of serial comms fail.
lc.setRow(0,7,B00010101);
lc.setRow(0,6,B00011101);
lc.setRow(0,5,B01011011);
lc.setRow(0,4,B01001111);
lc.setRow(0,3,B00000101);
lc.setRow(0,2,B00010000);
lc.setChar(0,1,'a',false);
lc.setRow(0,0,B00001110);
}
// Displays the time on our LEDsvoid displayTime() {
if (gps.time.isValid()) {
timer = millis(); // reset the serial comms timer
hourUnit = (gps.time.hour()%10);
hourTen = ((gps.time.hour()/10)%10);
minUnit = (gps.time.minute()%10);
minTen = ((gps.time.minute()/10)%10);
secUnit = (gps.time.second()%10);
secTen = ((gps.time.second()/10)%10);
secUnit = (gps.time.second()%10);
secTen = ((gps.time.second()/10)%10);
centUnit = (gps.time.centisecond()%10);
centTen = ((gps.time.centisecond()/10)%10);
lc.setDigit (0,7,hourTen,false);
lc.setDigit (0,6,hourUnit,false);
lc.setDigit (0,5,minTen,false);
lc.setDigit (0,4,minUnit,false);
lc.setDigit (0,3,secTen,false);
lc.setDigit (0,2,secUnit,false);
lc.setDigit (0,1,centTen,false);
lc.setDigit (0,0,centUnit,false);
}
else
{
displayNoGPS();
delay (2000);
}
}
voidloop()
{
// If the GPS data is OK, then display it. If not display "no GPS"while (Serial.available() > 0)
if (gps.encode(Serial.read())){
displayTime();
}
if (millis() > timer+1000 ) // detects if the serial comms has failed.
{
displayNoSerial();
}
}
/* * Copyright (c) 2015 Andrew Doswell * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHOR(S) OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */
Wow. 1 year into this website.. 5,354 visitors.. more than half of you from the UK.... more than half of you on Windows devices, most of you using Chrome browser.
Aren't statistics amazing? I never thought I'd have more than a couple of hundred hits at most, let alone have people comment and email and enjoy the youtube videos.
Some of my projects have been built into other projects by people, and their results shared on, and so it goes on... and on ...
Most popular project is the Astronomical clock (or pond pump controller), rapidly followed by the DG7-32 'scope tube (which surprises me!), and the Dehumidifier project.
... anyway, when you sit down tonight, raise a glass with me.