Brian Hoskins is a 35 year old Electronic Engineer from South Wales in the United Kingdom. He is passionate about Electronics Design, Computing, Programming and Science in general. He works as a Test Development Engineer at an automotive electronics company in South Wales and also carries out electronics design work on personal projects in his spare time. Brian has a BSc with honours in electronics engineering and is a member of the Institution of Engineering & Technology.
In the tinkering cave this week we have a Panasonic AE700 HD Projector. These units are pretty old now, but they come highly recommended in many online reviews and the HDMI support means they remain a useful home cinema option.
The unit was first presented to me by a work colleague who complained that the unit would not illuminate. It powers on just fine, but returns to standby after about 30 seconds without displaying any picture. My colleague had already completed some diagnosis of his own and had determined, correctly as it would turn out, that the power supply is not generating a 15V rail – which is required for the lamp circuitry to work.
With the cover removed, it can be seen that this unit is a bit of a beast! It’s packed with a mixture of high-tech electronics, complicated optics, and extensive cooling components. Dismantling is slightly tricky; you have to remove the top sensor board first (the one with the buttons on it) and then you need to very carefully remove the dark grey cowling. The power supply sits underneath; which is why the cowling must be removed for further diagnosis to take place. There is a wiring loom which connects the PSU to the main board, and this will need to be disconnected temporarily (at the main board end) because it feeds through an opening in the cowling. You can connect it back after the cowling has been removed. With the cowling removed, you can now take a look at the PSU. “Let the dog see the rabbit”, as they say.
The first rule of electronics diagnosis is “Thou shall inspect!” In this case there were no signs of explosion, trauma, or electronic stress of any kind to be found on the board. So it’s time to get the schematic out. Fortunately, the service manual for this unit was ‘freely’ available on the interweb. You can download my local copy of the service manual here. You might see a warning about “untrusted connection” – that’s because I can’t justify the expense of an SSL certificate. But I assure you there are no harmful files in my repository!
The schematic for the power supply is a little bit limited; it shows some discrete components but other circuitry is presented in block diagram form. Still, there’s enough information to start a line of diagnosis. The circuit I am interested in is shown to the left; click on it to open up a larger copy.
The second rule of electronics diagnosis is: “Thou shall measure voltages!” The circuit diagram shows P3 as the main connector – this is the wiring loom that had to be disconnected to remove the cowling. With the wiring loom connected back in, I measured the following voltages on P3:
[table id=1 /]
Nothing to be too concerned about there. Here’s the voltage measurements for P2:
[table id=2 /]
As can be seen – no 15V! Looking at the circuit, we have an output from the photoisolator which drives transistor Q107. The transistor is switching a voltage (which I measured to be 18V) to IC102 which is a 15V regulator.
One thing that I found really suspicious about this, is that we have a tiny transistor (only a small signal device, as it turned out) driving a much larger linear regulator. Going by the circuit we are looking at, the small transistor has to pass the same current as the linear regulator. I don’t know what current the linear regulator is supposed to drive, but it definitely has a much larger current carrying capability that the transistor which supplies it!!! It stinks of poor design choices to me. And Q107 has now become prime suspect for this failure.
And, sure enough, a quick measure of transistor Q107 revealed that it had indeed succumbed to its (inevitable?) destruction. 18V in, 0V out.
To remedy this, I replaced the component with one I had in my junk bin. The choice of transistor is not too critical here; it’s just switching a voltage. So I chose a ‘beefier’ device, which will happily support the current carrying requirements of the linear regulator – hopefully for the rest of this projector’s life.
A brief triumph – and a gift!
The projector worked after this, and I handed it back to its owner. Unfortunately it was returned to me a few weeks later with the same complaint. I was told that I could have the projector to play with, and keep if I could get it working! 🙂
I re-visited the power supply expecting a repeat problem, but everything checked out. Since the 15V supplies a H.T. power supply circuit for the lamp, and the symptom was that the lamp doesn’t illuminate, I began to wonder if the H.T. power supply needed some attention. Unfortunately this supply is cocooned inside metal shielding which does not seem to want to come apart very easily. As I was poking around with my screwdriver, I noticed that the projector had suddenly begun to illuminate, but she only fired up for a few seconds before there was an arcing sound and the projector switched back off. At the time I had been poking around a flat-cable signal loom which comes from the H.T. power supply and connects to the main board. I noticed that this loom was routed inside the H.T. leads for the lamp! This is almost certainly where the arcing had occurred!
I re-routed the small signal loom so that it gives the H.T. leads a wide-berth, and tucked it into the scart PCB. I imagine that the cable had become disturbed through repeated dismantling of the unit and had found itself tangled in with the H.T. leads somehow. You know cables, right? They tangle themselves up when you’re not looking!
After this I switched on the projector and voila! We have illumination. I took this opportunity to play Karate Kid: Classic.
Result! One working projector, saved from the scrap-heap.
Are you tired of being locked in to commercial Ebook software such as Apple iTunes (shudder), Google Books or Amazon Kindle? Would you like to take complete control of your Ebook collection and host it yourself, giving you the ability to serve whatever Ebooks you want at any time and at no extra charge? You’re not alone.
This is a short tutorial to show you how to host a Calibre library on a Linux server with the help of Google Drive and a nifty php program called COPS.
The general idea is that you will create a Calibre library on your local computer (or perhaps you already have an existing Calibre library) and then synchronise it using Google Drive (or you can use a cloud storage provider of your choice, the concept is the same). In this way any changes you make to your Calibre library, now or in the future, will be automatically synchronised with cloud storage. At your Linux server end, you will install a command line google drive client which will allow you to pull the synchronised Calibre library down to the server and keep up to date with any changes made on your local machine. This synchronisation, using Google Drive, will help you to keep an up-to-date Calibre Library that has all your latest books, book covers and meta data on your Linux server. The synchronised calibre library will be ‘served’ (made available on the web) using a program called COPS, which is able to serve a calibre library using a web based interface and also standard (ODPS) Ebook library interfaces. This means you will be able to read your ebooks on any device with an internet browser or standard Ebook reader application.
You will be able to access your entire Ebook collection, anywhere and at any time. Nobody will tell you which books you can host and which you cannot. You won’t be locked in to any Ebook provider. Your Ebook library will be free.
Careful about the ‘free’
Okay, so we will need to take a small precaution here. Your Ebook collection is okay to be free to you, both in terms of liberty and cost, but you don’t want every man and his dog getting access to your Ebook collection. This will be easily solved by creating a .htaccess file which you will place on your library’s web space. This will allow you to create a simple username and password which will be required to access your library. It just takes a few minutes and only needs to be set up once. I will show you how.
A demonstration of what we’re trying to achieve
I often feel that it helps to be able to see and use an end product so that I can see where I’m going with something before I delve too far into it. The user interface for our personal online Ebook collection will be provided by a little PHP program called COPS, and the author of this program provides a demonstration of this at his website, here.
A Couple of PreRequisites
In order to be able to synchronise files and host your own content you will of course need access to a few things first. The pre-requisites for this tutorial are:
Some web space, hosted on a Linux platform, which you either have direct access to (your server is at located at home, for example) or you have remote SSH (root) access to – for installation of your own programs and services. Simple web space hosted by someone else is not good enough because those services won’t let you have control of the server itself.
A Google Drive account. You can just register a free one if you want; competition in cloud storage is rife these days, so even free accounts have enough storage to reliably synchronise thousands of Ebooks.
Step 1 – Installing Google Drive on your local machine.
If you’re a Windows or Mac user this is easy. Just visit https://tools.google.com/dlpage/drive and download the client for your computer. Follow the installation instructions and choose a location on your local machine which you want to sync. Create a folder in your local Google Drive called ‘Ebooks’. You will put a Calibre library here later, and use Google Drive to synchronise it. If you’re a Windows or Mac user, this step is now complete and you can skip forwards to step 2. If you’re a Linux desktop user, read on…
If you’re a Linux user it’s not quite so easy. Google have promised us an official Linux client for years, but so far it hasn’t been delivered and there is no indication as to when it will ever be delivered. One google employee has even labelled the entire concept of automatic background synchronisation as fundamentally flawed, and I think she has a point. She is the initial creator of a Google Drive command line client for Linux (called ‘drive’), which provides manual synchronisation capability. This is the program you will install on the server later to pull down your Calibre library from Google Drive. But you can also install it on your Linux desktop machines to push local changes to your Calibre library up to Google Drive.
To install the semi-official drive command line client for a Linux local machine, follow the same steps as in (3) and (4) for your server; the process is identical.
Step 2 – Installation & Setup of Calibre on your local machine
Calibre is a free, open-source, Ebook management tool. Even if you do nothing else in this tutorial, this step alone will empower & transform your local Ebook collection. You can manage the book covers, change the meta-data, sort your books using tagging or virtual libraries, etc. If you just want to manage your Ebooks locally then Calibre is a fantastic tool. It even has its own hosting tool to allow you to host a Calibre library online. The tool we are going to use instead (COPS) is designed with light-weight servers in mind (suitable for a VPS), and that’s why I am not going to be covering the built in Calibre hosting here.
To install Calibre, go here and download the client that is appropriate for your operating system. If you use Linux I still recommend that you fetch the program from the Calibre website as opposed to using apt-get. In my experience the version in the standard repository for Ubuntu is way out of date.
I won’t cover set up of a Calibre library in any detail here. That is a separate topic. But you will find that it is pretty intuitive to set up a library, and there is extensive help documentation available. During the set up of your library you will be asked to set a location for it:
Make certain that you set up your library inside the Ebooks folder you created on your local Google Drive. This is how you will synchronise it to Google and to your server. I called my Calibre library ‘BJH’. Call yours whatever you like.
Once the library is set up you can add books by simply dragging them into the application. There is a tool which can automatically fetch your book cover and meta data from the internet too – this is extremely useful. I have one hint here; it is often better to ‘prepare’ your books for automatic meta-data collection by manually adding the ISBN into the meta-data editor yourself first. This helps Calibre to find your book online in the first place, and it also helps it to get the cover for the correct edition.
Any changes you make to your Calibre library should be automatically synchronised with Google Drive. Or, if you’re on Linux, you should manually run the “drive push” command described later. You don’t have to waste all your day perfecting your Ebook collection right now if you don’t want to; just add some books in there to get started so that you can continue with the server setup. You can perfect it as much as you like another time!
Step 3 – Installing GO on your server
If you want to run Google Drive on a Linux server (or on a local Linux machine), then you will be disappointed to learn that there is no official client for it. There are a few options, both free and commercial, but I am only going to discuss Google’s semi-official command line client here, which is free. I say “semi-official” because it was developed by a Google employee who has worked on a Linux client. The command-line client is written in a programming language developed by Google called ‘GO’. You will need to install a GO programming environment on your system so that you can fetch the source code for the drive client and build it on your system. This is nowhere near as difficult as it sounds, and I’ll take you through all the steps:
You need GIT on your machine first, so that you can clone GIT repositories. Open a command line (if installing on your server, you need to open an SSH connection to it) and type:
sudo apt-get install git
Follow the instructions. Once done, you can check all is well by typing:
You should get back a version number for git.
sudo apt-get install git mercurial
Download GO & Extract
Visit the golang main page and access the downloads area. Select a stable version to download:
Upload the archive to your server, or you can use wget on your server to download it straight to your remote machine. Open a terminal and ‘cd’ to the directory where you downloaded/uploaded the archive. e.g:
Then extract the go archive to /usr/local making certain to substitute “go1.4.linux-amd64” in the example below for the name of the archive you downloaded:
sudo tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz
Create a GO Workspace
Now you need to create a GO workspace. This is a place where you will download 3rd party packages (the semi-official Google Drive program, in this example) and where you would create your own GO programs if you decided to experiment with GO yourself. You can create the workspace anywhere you like. In my example, I will create a workspace in $HOME/Programming/GO/ as follows:
The reason for the [src] directory is that a GO workspace requires somewhere to put sourcecode. The reason for the [github.com] directory underneath [src] is that you will often download the sourcecode for GO programs from github, and finally the reason for the [bh4017] directory is that I wanted a place to store my own GO programs. bh4017 is my github.com id. You should substitute ‘bh4017’ for your own github.com account name, or leave it out completely if you don’t intend to experiment with your own GO programs.
Inform the GO tool about your workspace
You need to tell GO where your workspace(s) are. You can do it inside the terminal using an ‘export’ command, but the problem is that GO will forget about your workspace as soon as your terminal is closed. To make GO ‘remember’ your workspace, you can remind it each time you log in by placing the ‘export’ commands inside your ‘.profile’ file. This file is executed at each log-in and so GO will be automatically reminded of your workspace(s) every time you start Linux. Open .profile in the editor of your choice. In the following example I will use nano:
Once you have opened your .profile, scroll to the bottom and add the following lines. In the second and third ‘export’ lines, substitute my GO workspace path for the path you chose when you created your workspace.
# BEGIN GO
# END GO
In order to make these changes go ‘live’ you need to log off and back on again so that .profile is executed. You should do that now.
A good way to test your GO installation is to write the ubiquitous ‘hello world’ program. There’s a tutorial available for this on the GO website. If you don’t want to bother with that for now, then as a minimum you should open a terminal and type ‘go version’. If successful, GO should return a version number to you.
Step 4 – Installing ‘drive’
Assuming you’re happy with your installation of GO, the following command should fetch the latest ‘drive’ source code and build it on your system:
go get -u github.com/odeke-em/drive/cmd/drive
No news is good news, so if your GO installation is working properly the terminal will return after a short while without any messages. GO should have fetched the source code from github.com and built it for you. To check that it did something, cd to $HOME/Programming/GO/bin (substituting for your own workspace path as created earlier). Type ‘ls’ and if all is well you should see drive listed in there.
If your ‘export’ commands have been entered correctly you should be able to open a terminal at any time and simple type ‘drive’ to execute a google drive command. Entering ‘drive’ on its own will bring up a usage response:
Step 5 – Synchronising your Ebook collection to webspace
First you need some webspace. Instructions for this are outside the scope of this tutorial; presumably if you’re managing a linux server then you already know how to set up some web space. For my own Ebook collection I used a subdomain called ‘library’, so my Ebook collection is now hosted at http://library.brianhoskins.uk.
Once you’ve got some web space, you need to find out where the space is located on your server. For example, it could be located at /var/www/vhosts/yourdomain/sub-domain/ but the actual location will vary depending on your setup. Once you know where your web space is located on your server, ‘cd’ to the location in a terminal and create a Google Drive folder using the ‘mkdir’ command. You can name it whatever you want – I literally named mine “GoogleDrive”.
Once you have created your folder, you need to initialise it. In your terminal, type the following:
drive init your-folder-name
If all goes well your terminal should respond with a url to obtain an authentication code. This is to allow the drive client access to your Google Drive. You need to use a browser to visit the provided link, and then you will be given an authentication code. Paste this authentication code back into the terminal and press ‘enter’.
Once your folder has been initialised as a folder to manage using ‘drive’, ‘cd’ into it and type:
drive should spend a few minutes resolving (comparing cloud to local) and then it should respond with a confirmation showing what it intends to download fresh from the cloud and, if this is not the first time you’ve pulled from Google (you are updating your Ebook collection) the files already downloaded which it intends to modify. You are asked to accept, and then drive will pull down your Calibre library from the cloud to your server. You now have a fully synchronised Calibre library on your Linux server! In future, when you make changes to your library using Calibre on your local machine, you will simply allow Google Drive to synchronise them and then SSH into your server to run the ‘drive pull Ebooks’ command on your server again. In this way, your server’s calibre library will be kept continually up to date with the books you add, delete, and maintain (covers, tags, meta data and all) on your local machine.
Note that if you are also using the linux drive client to synchronise a local calibre library up to the cloud, then you should use the ‘drive push’ command to synchronise local changes made to your Calibre library.
Step 6 – Installing & Configuring COPS on your server
Now that you have a way of maintaining a Calibre library on your local machine(s), synchronising them with Google Drive, and then pulling down synchronised changes to your server, you need a way of ‘serving’ your calibre library online. This is what COPS does for us. Fortunately, it’s extremely easy to install and set up!
First of all, you need PHP 5.3/5.4 on your server and SQLite3. My server is Ubuntu 12.04 and it wasn’t necessary for me to install or change anything on my system. If yours is different, you should check which versions of these applications your server is running and update if necessary.
You can get COPS from github or you can get a zip archive from the author’s website. I won’t link to the actual zip download because it may change depending on future updates to the software. Visit the website I linked to, scroll to the very bottom, and under the heading “Download” you will find the latest zip file.
Once you’ve downloaded the zip, installation is very straightforward. Simply extract the contents of the zip to the root of your chosen webspace. Once this is done, you should be able to browse your website and see a COPS interface. It’ll report a bunch of errors because it can’t find your Calibre library – we’ll set that up in the next step.
This should copy a sample setup into the COPS config file, and then open it for editing.
Find the line $config[‘calibre_directory’] =
Here you must enter the location of your Calibre directory on your server. It is the directory underneath which the metadata.db file is to be found. As an example, if you called your library ‘myBooks’, and placed it inside a folder structure called GoogleDrive/Ebooks/, then the config line would be:
Make CERTAIN that you include the final ‘/’, or COPS will not be able to find your Calibre metadata.db file and it won’t be able to serve your books!
Next, find the line $config[‘cops_title_default’]
This line simply sets the title bar. Call it whatever you want – I changed mine to say library.brianhoskins.uk.
Once you’re happy, save the file and exit.
That’s it, you should be done! Browse to your library webspace and COPS should be serving your Ebooks. You can get to them via any modern browser. You can also use an Ebook reader to view the books. There are some dedicated Ebook readers for mobile platforms too – I use Moon+ reader pro on Android. You can set up access to your library in these applications.
Setting Password Access
Okay, so now your library is working but every body on the planet can access it. We’ll solve this problem in the next steps.
Open up a terminal and ‘cd’ to the root of your library website, where you installed COPS. In there you will find a .htaccess file. Open it up in a text editor. Scroll to the bottom and find the following text:
These are the entries which control password access. At the moment they’re commented out, so password access is disabled. Uncomment them by removing the ‘#‘ characters.
Now you need to point the .htaccess file to a password file called .htpasswd. You haven’t created this file yet, but we’ll create it in a minute. You need to place it somewhere where access is generally restricted (usually the root of webspace is). Here’s a sample setup for you – tailor it you your specific requirements:
Now you need to actually create your .htpasswd file at the location where you told .htaccess it would be. Create it and open it up in a text editor.
All you need to do now is add a user and password. The password, though, should be encrypted. The easiest way to go about this is to use an online tool, like this one. Enter in your desired username and password. The tool will then create the text you need to enter into your .htpasswd file.
Hopefully you’re done! If you now browse to your online library you should be prompted to enter a username and password. Enter the plain text user and pass you set up earlier; the decryption is taken care of for you.
It’s a lot of fun managing your own online ebook repository. Any questions, leave them in the comments and I’ll try my best to help!
I noticed, recently, that KiCAD footprint libraries now carry the .pretty extension, and that these files cannot be read by the latest stable release of KiCAD. In order to make use of these libraries it is necessary to install a recent build of KiCAD, which has undergone a significant overhaul of its footprint library support.
As a new Ubuntu user, it was not clear to me how one would go about installing a daily build of KiCAD. The instructions on the KiCAD website state:
Old stable should be in the official Ubuntu repo. Daily builds are available in js-reynaud’s PPA.
But how can you go about adding this PPA? And, once the PPA has been added, how do you then use it to install a new-build of KiCAD?
Here are the steps you need to take.
Adding the PPA
First you need to add the PPA. You are going to run a command that will add a new PPA for KiCAD to your linux sources list, so that apt-get will use it to install future versions of KiCAD. To add the PPA, open a terminal and type:
sudo add-apt-repository ppa:js-reynaud/ppa-kicad
Follow the on-screen instructions, and your result should look something like:
Install daily build
Once the PPA has been added, you first need to update apt so that it knows about the new versions of KiCAD in your PPA. To do that, type:
sudo apt-get update
You will see a lot of output in the console. Don’t worry; the apt service is just busy hitting all of your sources and updating itself so that it knows about all the latest software. When it gets to the PPA you just added, it’ll update its knowledge of available KiCAD versions.
Once apt has updated, installing the daily build is then as simple as typing the following into your terminal:
sudo apt-get install kicad
Follow the instructions, agreeing where necessary, and then you should be up and running with a new version of KiCAD
Hello, and thanks for taking an interest in my geocache! This one has proven quite difficult to retrieve for many people. It wasn’t my intention to make this a difficult cache, but it has turned out to be quite well hidden. I don’t like for people to have to give up on my cache, but I need to balance this with making the hint too easy for others. So I thought I’d leave the original hint on the geocaching.com website as I originally intended and then provide some extra hints and tips here for those who fall into despair 😉
Firstly, I should point out that the cache is accessible without the need to climb or clamber. Also, bush-whacking is not required so please do your best to look after the environment.
This cache is a small clip-box container with room for a log book and trinkets. So it’s large enough to be seen if you know where to look! In fact, I’m willing to bet that you’ve looked right at it already – perhaps more than once! The cache is well hidden and camouflaged. It is cloaked in darkness and a torch would prove extremely useful, though not absolutely necessary. The cache is guarded by one of the Ents, so be careful not to wake him!
This is a truly horrific and very sad episode that has been told to us. But am I the only one who feels sad for both sides of this terrible story?
Yes, this boy acted horrifically. More horrific than can possibly be written down because there are no words to properly articulate it – it’s true. And yes it was cowardly, and wicked, and evil. All of those things, and more.
When you were young, did you ever think about what you wanted to be when you grew up? We all did that, right? I wanted to be an Astronaut, and a Scientist, and an Engineer. I pretended to be these things on the playground. You maybe wanted to be like that too, or be a famous singer, or a great speaker, or a racing car driver. We all had aspirations even as young children.
What do you think this person’s aspirations were? Do you think he ever said to himself, when he was a young boy:
“When I grow up, I want to be a coward and a murderer”
No, I think it’s fair to say he almost certainly didn’t think like that. So somewhere along the line, between the time when he was just an innocent boy and when he started to develop and became an adolescent, something went wrong for him. And now this is the result; an innocent teacher who died in horrific circumstances and left behind a family that will never recover. And a young boy who will be forever brandished a wicked murderer and spend many decades – the entirety of his youth – and perhaps even the entirety of his life, in jail.
I feel sorry for the victims first, of course. But I keep some sorrow for a young boy who probably had innocent aspirations for life, the same as you and me, and then something went horribly wrong.
I’ve often been told that I pronounce the word “geocache” incorrectly. Everyone else I have come into contact with pronounces it ‘geo-cash’. The same pronunciation is used for the word cache on its own; everyone else seems to pronounce it ‘cash’.
Personally, I pronounce the word “cache” as ‘cay-shh‘. And that’s because I’m right and all of you are plain WRONG. Here’s why:
In english, words that end with an e and and have a letter ‘a’ in them are pronounced with the ‘a’ pronounced like a capital ‘A’. Here is a link to more info. Here are some examples:
There are a few exceptions, but only for words that did not originate in English. A good example of this is:
Here we pronounce it ‘ca-ff-ey‘. That’s because the correct French pronunciation is ‘ca-ff-ey‘. So cafe is an exception only because it’s not an English word.
So what about ‘cache‘ then, is that not a French word too? Yes it is. But the correct French pronunciation is ‘ca-sh-ee‘, not ‘cash’.
If you’re going to use the correct French pronunciation of the word, please change your current pronunciation ‘cash’ to ‘ca-sh-ee’ or stop telling me I pronounce it wrong.
If you’re not going to use the correct French pronunciation, and instead treat it as an English word, then please change your current pronunciation ‘cash’ to the correct English pronunciation ‘cay-shh’ or stop telling me I pronounce it wrong.
If you continue to use ‘cash’ as your pronunciation then you’re just plain wrong whether you consider French or English pronunciation. You’re in no man’s land!
Recently I decided to sell my Xbox 360 console on Ebay. I never use it, so it just sits there gathering dust and taking up precious space. Meanwhile, its resale value is constantly dwindling. In a few years a used Xbox 360 console will probably be equivalent to junk, such is the state of our throw away society. You’d have to pay someone to take it off your hands, so that it can be shipped to China and placed on a landfill site.
So getting rid of it now, while it can still pay me back some cash, makes perfect sense.
This is the problem that Ebay tries to solve for us. Using its extensive community of users, and coupled to its Paypal monopoly, it allows us to convert unwanted used items from door stoppers into hard cash. The reason this makes business sense for them is that they charge sellers a percentage of each sale. And with millions of transactions every single day, Ebay make a handsome profit indeed.
So what does this mean for a simple games console sale? Here’s how my transaction worked out:
I placed my used Xbox console on Ebay as an auction but with a “Buy It Now” price of £50. The item was snapped up quickly using the Buy it Now option, and the buyer immediately paid me £60 using Paypal. £50 to cover the item, and £10 to cover the postage. Ebay sellers are forced to offer Paypal as a payment option, so we have no choice but to use it.
Paypal take 3.4% plus £0.20 of all money received. So even though only £50 applies to my sale of the Xbox (the £10 is going straight back out on postage), the 3.4% + £0.20 cost applies to the full £60 received. The £10 I charged for postage is literally what it costs me to send the package, so the extra charge here has to come out of my sale cost. So, so far I am down from £50 to:
Ebay charge me a listing fee of £0.50, plus 10% of my item’s final value, plus 10% of my item’s postage cost. I don’t really understand the latter; the postage costs are not a profit for me – so the 10% charged here has to come out of my item sale cost! This works out as follows:
The Bottom Line
So all of a sudden, a transaction for which I expected to receive £50 has now turned into £41.26. Percentage wise, Ebay have effectively received 17.5% of my item sale price. It’s like paying VAT, except in this case the seller pays it!
So on the one hand, I’ve generated £41.26 of useful cash from an item which was effectively useless, and becoming more and more worthless with each passing day. On another hand, Ebay have charged me £8.74 for the privilege of using their service to sell my item, and I’m therefore £8.74 down on what my item was actually worth. If I’d tried to sell it on gumtree or something else instead, I’d potentially be a lot better off.
In the past I’ve sold items on Ebay that had final sale values in the thousands of pounds. When you’re dealing with numbers like that, the amount that Ebay takes off you starts to get really big. Sell an item for £1000 and you’re probably looking at giving ~£200 of it straight to Ebay/Paypal. That’s tough to swallow! But at the end of the day, Ebay have engineered a monopoly on the used sales market. For some transactions, especially niche items, they’re effectively the only game in town if you want to shift your gear. So I’ll probably continue to allow them to rip me off, and in so doing I’ll perpetuate the madness.
I’ve owned the JVC TH-S5 home theatre system for many years. It could be as much as 8 or 9 years. In all that time it’s been a reliable machine, although to be fair it’s also had quite an easy life; I don’t watch much TV (what self-respecting Engineer and tinkerer has time for that?) and even when I do I rarely give the system a run for its money.
About 6 months ago the system developed a problem. When started from cold the base unit (i.e. the DVD player and system controller) would fail to power on. I also noticed that if I listened very carefully I could hear a [tick-tick-tick-tick] sound coming from the unit. I recognised this straight away – it’s the switch mode PSU trying (and failing) to start. I was about to take the unit away to my tinkering cave for some diagnosis but I further noticed that the [tick-tick-tick] sound would gather pace, getting faster and faster, until eventually it was possible to bring the unit into life after a power-cycle.
The unit would work perfectly from that point onwards, provided that it was left connected to the mains.
Of course, I always knew this was a temporary solution. This problem was not going to go away. It was going to deteriorate for sure, and eventually I would be faced with a completely dead system. And sure enough, 6 months down the line, that’s what I’m faced with now!
First thing’s first, I needed to get the cover off for an inspection. With an old system like this I already had some preconceptions about what I thought I’d find. Bad electrolytic capacitors were absolute top of my list for this kind of symptom. Dry joints were a close second.
As can be seen here, the power supply is self-contained on the right hand side of the unit. This is where the focus of the attention should be. An initial inspection yielded a disappointing result. With bad electrolytics at the height of my suspicion, I was hoping to spot one or two displaying the classic physical symptoms of bulging or weeping. This would be a sure-sign of trouble, and usually an easy fix. The capacitors all looked physically healthy, though. Time to whip the board out of there for a closer look.
Looking more closely at the PSU board itself, there were no obvious (physical) causes for concern. I didn’t spot any dry joints on the underneath of the board either. The focus of this investigation should be the primary side of the PSU because the symptom is that the PSU completely fails to start. The primary side is marked clearly on the board and consists of everything to the left of the yellow-banded transformer. The transformer bridges the electrical gap between primary and secondary sides of the PSU. It’s an electrical gap because there is actually no direct electrical connection between primary and secondary sides. The two sides are said to be electrically ‘isolated’. This is important because we have dangerous high voltage mains A.C. on one side of the transformer, and then low voltage rectified D.C. on the other side of the transformer. Never the twain shall meet!!!
Anyway, back to the fault diagnosis. Since I am concentrating for now on the primary side of the PSU, and I have electrolytic capacitors as #1 on my suspicion list, it makes sense to have a look for some. There’s only two of these on the primary side of the board; there’s the big fat one, which is a reservoir capacitor (and certainly not the cause of my trouble) and then there’s a small skinny one next to the chopper transistor heatsink. The chopper transistor drives the transformer. It switches high voltage, high frequency A.C. and dissipates significant power. If you look at the surrounding board, it’s darkened brown from the heat that is generated by these components. This is where all the electrical stress is to be found on this circuit.
Since the skinny electrolytic capacitor is mounted close to the chopper transistor heatsink, it will have been subject to the heat that has been pumped out of the high energy part of the circuitry over the last 8 years or so. Electrolytic capacitors do not respond well to heat. Often they bulge and weep, effectively holding their hands up to say “I’m faulty!!!”. Other times they violently explode. And other times still, they just die quietly without any fuss or obvious signs of defect. They’re a bit like vampires in this regard; many different dying behaviours.
So the fact that it’s not showing signs of death doesn’t rule it out of my suspicion. I’m going to whip that little guy out of there and subject it to some electrical tests which will reveal once and or all whether it’s healthy or not.
Capacitor ESR Test
One thing you can measure on an electrolytic capacitor, which generally gives a good indication of its health, is its ‘ESR’. This stands for “equivalent series resistance”. An ideal capacitor would have properties of capacitance only, with no ESR and no inductance. But it’s impossible to manufacture the ideal capacitor. In practice all capacitors have some small amount of ESR and inductance. Electrolytic capacitors have relatively high ESR compared to some other types of capacitor, but when it is healthy the ESR is still pretty low. When it is unhealthy, however, the ESR increases significantly. And then we end up with a very poorly performing capacitor indeed, and that’s when they begin to prevent SMPS power supplies from starting.
The test I am going to perform here is going to tell me approximately what this capacitor’s ESR measurement is. I don’t actually own an ESR instrument, so I’m going to have to measure it in another way, using SCIENCE. 🙂
Here’s the circuit which shows how I will complete the measurement. Click on it for a larger version.
So what I’ve got here is as follows:
A signal generator which I will use to apply a measurement stimuli to the capacitor under test. I will be applying a 100KHz square wave @1V amplitude. At 100KHz most electrolytic capacitors appear as close to a short circuit, provided that their ESR is low. This particular device has a capacitance of 39μF. If you do the math, the impedance that it should prevent to a 100KHz signal is:
The 100Khz signal is injected via a known output impedance of 50Ω. This is the output impedance of the signal generator. I then measure the resulting signal that appears across the capacitor under test with an oscilloscope. The 50Ω signal generator and electrolytic capacitor effectively form a ‘potential divider’. The capacitor becomes ‘R2’ in the equation:
where Vout is the voltage measured across the capacitor with the oscillpscope, Vs is the supply voltage (1V in this case), R2 is the capacitor’s impedance, and R1 is the signal generator output impedance.
If the capacitor’s ESR is low, then at 100KHz it will only present 0.04Ω resistance. If you plug that into the formula above, you’ll see that we should only expect a miniscule voltage at 100KHz.
If, however, the capacitor’s ESR is high, then the resistance it presents will be far far greater than 0.04Ω and in that case we would see a fraction of the 1V square wave voltage being developed across it. From this measurement we can solve the equation for R2, effectively providing us with a measurement of the capacitor’s ESR.
First let me do some measurements without the bad capacitor fitted, so that I can show you what to expect to see in a good scenario
Measurment with no capacitor fitted.
With no capacitor fitted at all, the resistance of the capacitor (R2 in the potential divider equation) is effectively infinite, so the voltage dropped across it will be the open-circuit voltage. Basically the off-load output of the signal generator. We should therefore expect to see the full 1V, 100KHz output as shown below:
Measurement with brand new (good) electrolytic capacitor fitted:
Here’s what happens when you insert a good electrolytic capacitor into the circuit. It presents close to 0Ω resistance at 100KHz, so the fraction of voltage that appears at the oscilloscope is also close to zero:
If you look closely here you can just about see a square wave appearing on the flat-line. If I zoomed into this I could calculate the capacitor’s ESR, which would be small. But it does have some ESR.
There are also some rather large spikes. This is because the step change from 0V to 1V is relatively high speed, and this signal is reflecting back down my cabling as a result. Suffice to say I don’t need to concern myself with the spikes – they are interesting, but they are not related at all to this measurement.
Measurement with capacitor removed from system
Here is what happens if I put the capacitor I removed from the system in the circuit. You can see that a very large square wave is being developed across it! Almost 500mV, in fact. I could do the math here, but I really don’t need to. If you see a square wave of this sort of amplitude being developed at 100KHz, then it’s clear that the capacitor has excessive ESR and is no longer performing very well. As a quick mental approximation, we’re seeing a fraction of the 1V square wave being developed which is almost equal to 0.5. So this means that the impedance of the capacitor must be close to 50Ω, since a potential divider with the same value resistance for R1 and R2 would give us an output of 0.5Vs (or 500mV in this case).
Replace the capacitor!
With this in mind it’s definitely time to replace the capacitor. I didn’t have any 39μF capacitors in my home stash, but I had a 47μF so I decided to try that. It did in fact work fine, and my system is now up and running again.
If you suffer a power supply problem with an aged piece of electronics, electrolytic capacitors are a good place to start. They can fail on the primary or the secondary side, but will show different fault symptoms in the product depending on their function in the circuit. Sometimes it is plainly obvious which ones are faulty; they’ve either exploded or they’re bulging at the top or leaking fluid. Other times, as I’ve just shown here, they look okay physically but are hiding a nasty decline in capacitance performance internally. In that case you can use this method to gauge whether they require replacement or not. You can actually do this test in circuit, but it’s not recommended. It’s always better to remove them first if possible.
In KiCAD, a problem occurs when you try to create a new schematic symbol for a custom library and you happen to give it the same name as another part that exists in a different library.
For example, let’s say you decide to create a part called “MAX3232”, and there happens to be another part in a different library already called “MAX3232”. This can happen for a number of reasons; you may not have noticed that this part already existed in the standard library set, or you may have seen it but decided that you’d rather make your own. This happens to me quite often – for example, I have a bit of a personal standard for the way I like ICs to look on my schematic. I like my ICs to have a thicker border than on normal components, and I like them to be filled in yellow. Additionally, I often have preferences about the pin layouts. It is unlikely that an existing part in a different library will satisfy all of my personal preferences, so usually I’ll cook my own.
When you first set up the custom part, KiCAD will create your part for you and add it to your custom library using the name you chose at the beginning. If this name is the same as an existing part in another library, KiCAD doesn’t complain – it adds it to your custom library as requested and initially there is no obvious conflict.
The trouble starts when you come to add the component to your schematic. You select the “Place a component” button, choose your custom library, and select the part you just created. KiCAD highlights the part and shows a preview of it, which matches the custom symbol that you intend to place. So all looks well. However, when you actually try to place the part you’ve selected something unexpected can occur. It places the part without complaint, but sometimes it will place the existing part from the standard library instead of the custom part you intended!
Clearly there is a conflict here that KiCAD hasn’t warned us about. When you actually try to place the part, you’d think that KiCAD would dive straight into the appropriate library and pick out the part you actually selected. But this is not what happens. Instead, KiCAD searches through its entire set of libraries and picks the first part whose name matches the one you selected. If your custom library is scanned first, it picks the part you intended. If the other library is scanned first, it picks the existing part that you didn’t want!
I haven’t managed to find a completely satisfactory solution to this problem. But it is possible to get close to a satisfactory solution using one of two optional workarounds that I will describe here.
#1 The nomenclature workaround
The first workaround, and the easiest (though neither are difficult), is to simply be careful when you’re choosing names for your custom parts. For example, I could decide to append all of my custom parts with “_BJH” for the rest of eternity. Then, when I want to create a custom MAX3232, I would create it with the name “MAX3232_BJH” instead. It’s unlikely that another part in some different library is going to match this name, so I can feel pretty confident that no conflict will ever occur and the custom part I intend to use will be placed on my schematic every time.
An alternative that I’ve seen suggested on other websites is to append your library name to each of your parts. So if your custom library was called “Devices_BJH”, then you’d call your part “MAX3232_DevicesBJH”.
A problem with the nomenclature workaround
This works fine, but when you place your part it ends up being titled “MAX3232_BJH”. There are two problems with this. One is that it’s just plain messy; who in their right mind would want all their component names appended with workaround text? The second problem is that somebody else, reading your schematic, may be fooled into thinking that the appended text has some other importance – for example, they might think the “BJH” is a specific variant of the part which they need to pay attention to. So clearly we will want to do something about this.
Fortunately it’s quite easy to solve this problem, with one exception which I will talk about in a minute. If the part you’ve created is a regular schematic part (resistor, IC, diode, custom component, etc) then you can select the component on your schematic, select “edit”, (or hover over the component and press e on your keyboard) and then you will be presented with the following dialogue box:
As you can see, all you have to do in order to change the way the title looks for your custom component is change the Value. This allows you to call your part “MAX3232” while KiCAD still refers to it by the conflict-free name that you chose earlier. The annoying thing with this workaround is that you have to repeat this process for each part you add to your schematic, and you leave yourself open to the possibility of accidentally naming multiples of the same part differently. For example you might end up with two MAX3232 parts on your circuit, one with a Value of “MAX3232” and the other with a value of “max3232”. A trivial issue, yes, but one that would annoy the heck out of me!
There is at least one exception to this workaround which I have discovered. The other day I decided that I wanted to create my own power symbols. KiCAD already has a suite of power symbols to choose from, but I find that the supply rail symbols (the ones which are a pin with a circle on top like that shown to the left) are too small for my liking. Power supply rails are quite important connections, and I think they should be displayed more prominently. I also have issues with the legacy “VCC, VDD, VSS” power rail nomenclature, which is a rant for another day.
Having created my new power rails, and taken care to append them all with “_BJH”, I thought I would be able to use the edit dialogue box in the same way as for my other components to change the Value field so it was displayed, for example, as “+3V” instead of “+3V_BJH”. Unfortunately, if you try this for yourself, you will discover that the Value field is greyed out for power pins. You can’t change it! To solve this problem we must move on to workaround #2, which is now my preferred method which I am going to use for all my custom symbols from now on (or until the KiCAD team fix the naming conflict problem).
#2 The Custom Field Workaround
Since we can’t change the Value field on power pins, we need some other way of changing how KiCAD displays the name of our custom parts. Thankfully, we can do it quite easily using custom fields. You have two options here. The first option is to apply a custom field manually to each custom part after placing it on your schematic. The second option is to generate the custom field when you’re actually creating or editing the custom symbol in the library editor. The second option makes the most sense by far, because this way you can set up exactly how you want your symbol’s title to be displayed, position it just-so, and then it will be automatically repeated in exactly the same way for every single part you lay down with no need to go about maintaining it retrospectively. The second option also shields you from the horror of accidentally naming your parts in slightly different ways (capitals here, dashes there, etc). For these reasons I am only going to talk about the second option, but the principle is exactly the same anyway so you can pick your poison for yourself.
Generating custom fields in the library editor
Assuming you know how to edit components in the library editor (if you don’t then I guess your problem starts at how to create symbols, not how to tweak their names), launch the library editor and open up your custom component.
Along the top toolbar you will find a T-shaped button for editing custom fields. Select this button and then you will be presented with the fields dialogue box shown below.
Now, at the moment KiCAD is using the Value field – which on power pins you can’t edit – to display a title for your component on the schematic. So the first thing you want to do is select this field and change its visibility setting so that the “show” checkbox is no longer checked. This will stop it displaying on your schematics.
The next thing you want to do is create your custom field. Select the “Add Field” button, and then set the Field Value to something sensible that denotes your component in some pedantic way of your choosing. Set the text size, its style, and set the position. Once you’re happy, make certain that you set its visibility checkbox to “show” so that it’ll display on your schematic. Then you can exit the dialogue box.
That’s it! You’re done. Save your component back to the library, and update it. You’ll probably also need to close the schematic editor and open it back up again. From now on, you can place your custom component without any nasty surprises and it will display with a sensible name of your choosing.
These silly analogies really bug me. People all jump on the band-wagon and say things like “wow that’s really clever” and “so true”. But is this analogy really all that clever? Is it really all that true?
The moral of this analogy is basically that if you ever do something wrong in life, and hurt somebody in the process, you shouldn’t bother to say sorry because apologies don’t matter. They don’t fix anything.
But I think a genuine apology does matter. And more than that, I think in many cases it can repair a broken relationship. An admission of your own wrong-doing, an acknowledgement of the hurt you caused, and a promise to put it right, is a powerful thing.
Of course, it is easy to imagine some wrong-doing for which an apology (even a genuine one) is not enough. Sometimes, as a result of the wrong-doing, trust is broken in the relationship. Once trust has been broken, the road to recovery is long. And uphill. And riddled with swamp. And sometimes, the road isn’t even open in the first place. Yes, I know; another analogy.
Does this mean you shouldn’t bother with your apology? That ‘sorry’ doesn’t matter? No!
The apology in these cases is just the first step on a long road towards earning back trust. Sometimes, regardless of the apology, the opportunity to earn back trust and fix what you did is simply not open to you, and nor will it ever be. These are the cases where the plate stays broken. It doesn’t stay broken because apologies don’t matter, though. It stays broken because it’s not possible to earn back the trust, or because the victim of your behaviour doesn’t want you to earn back the trust. Even in these cases, an apology is not useless. Surely it can only help to show someone that you take responsibility (or at least a share of the responsibility), and that you admit what you did wrong? Even if the plate is destined to stay broken forever, the apology at least offers some closure.
I can’t help but notice, recently, the number of times I encounter someone who will say to me “it won’t be a second, ok?” or “I won’t be a second, now” or some other slight variation upon the same theme.
I was at KFC the other day ordering a quick takeaway. After finally getting through the operator’s strict fast food script, I finally managed to communicate my order to him. He took my money, gave me change, and then announced “It won’t be a second, now” before disappearing off to work on his orders.
I stood there, change in hand, and considered what I had just been told.
I have just been told that my order won’t take a second. But that’s all I’ve been told. So either my meal will arrive in <1 second, or it’ll arrive in >1 second. But what I know for sure is, it won’t arrive in exactly 1 second. More than 1 second has passed in the time it took me to consider what the statement meant, and my meal hasn’t arrived. With that possibility already spent, I can now say with certainty that my meal will arrive at some time greater than one second.
If the operator delivered my meal to me in 5 billion years time, he will still have kept his promise.
I have had cause, recently, to excogitate what constitutes a true ‘profession’. This cause of mine was instigated by what I consider to be a widespread hijacking of the term within our society. And we’re not just talking semantics here; it’s not only the meaning of the term that is being misused, but also the spirit of it as well. I really would go as far as to call it an insult.
Consider, for example, a snooker player. I pick on snooker for this example only because the 2014 World Championship series happens to be in play at the moment so it is at the forefront of my mind. I do love a good snooker match.
I was watching the Championship earlier this evening, and the commentator remarked that “Trump” (one of the players) was at the very peak of his profession.
I almost spat out my tea.
Does snooker really qualify as a profession? Seriously? I beg to differ! But let’s check out my trusty Oxford English before we go any further with this argument. There are three definitions for the word in my dictionary, but the only one that applies to us is the first – as follows:
“1. A paid occupation, especially one that involves prolonged training and a formal qualification.”
Well, Judd Trump ticks the first box for sure – he earns a healthy living playing snooker, and I’m almost certainly safe to presume that his pay packet (in terms of match win earnings) dwarfs my annual salary as an electronics engineer. I go to work and solve problems for a living, contributing directly to the betterment of our society, and Judd hits some balls around a table. Can you begin to see what I think is wrong with this picture?
Even though Judd ticks the first box, I still don’t think he qualifies. Not by a long shot (sorry, I had to slip that in there). After all, everyone has a paid occupation. But you wouldn’t call every paid occupation a profession, would you?
Let’s imagine we were shipwrecked on a desert island, a thousand miles from civilisation. Nobody knows where we are. A self-proclaimed leader of the pack gathers us together and asks us, one at a time, “What is your profession?”
“I’m an Engineer”, I say. “I solve problems for a living. And see that smashed radio over there? I reckon I might be able to do something with it. Maybe send a call for help.”
Fantastic! Who else?
“I’m a Nurse”, someone else claims proudly. “I save lives for a living. I care for people. I can help that poor girl with a broken leg, and I can stop the wound from becoming infected.”
Brilliant! Our plight is diminished in your presence!
“I’m a builder”, says another volunteer. “I create for a living. I can build us shelter – protect us from the sun, and keep us safe from predators. I will turn this barren land into a temporary home.”
Excellent – please get to work right away and you will have whatever support you need!
“I’m a snooker player”, says a useless contributor. “I hit balls around a table for a living. I’m the best in my field. I’m the World number one.”
Useless job = no profession
In the case of this Snooker Player, he is worse than useless. Worse, in this context, because now the rest of the group are going to have to feed him, home him, and protect him. They are going to share their very limited resources with a member of the group who is incapable of bringing any tangible benefit to their table.
Perhaps he can contribute to someone else’s input – become a labour man for the builder, for example – and in so doing he will at least spare himself the shame of becoming a net-loss to the group’s plight; a negative draw on their micro-society.
So what does constitute a profession?
Quite simply, I think a profession has to be something that contributes directly to society. That includes the builder who makes a career out of creating. It doesn’t include the labourer who carries the bricks, because the labourer is only an indirect contributor to what the builder already brings to the table.
It’s the same with our snooker player, or football player, or formula 1 driver. We are fortunate, within our developed society, that we can afford the resources to create entire occupations around the entertainment business. Thanks to our rich society people who enjoy these activities are afforded the opportunity to choose it as their occupation, and rightly or wrongly some of the luckier ones earn a fortune in the process. Earning a fortune is their right, but calling their job a profession is not.
Go and find something useful to do with your life. Something that contributes positively and directly to our society. Then I will say you have a profession. Until then, all you’re doing is hitting balls around a table for ridiculous amounts of money.