Print This Post Print This Post

Microchip’s MRF24J40MA SDO Buffer Hell

I am annoyed. So much so, that I’ve downed tools to scribble this.

I recently spent some considerable time attempting to get a non-documented SGN6210 radio module to work. In the end I decided there were too many unknowns, and it was better to go for a more ‘mainline’ product, so I bought two MRF24J40MA modules from Farnell, downloaded all the bumf on both the module and chip itself, and decided to avail myself of the ‘ready-made’ Radio Device Driver Kit code, as a ‘quick’ start to getting up and running.

Such is the inevitable fate of the optimist. The ‘example’ code supplied by Microchip is by far the worst-written piece of rubbish I have seen in a very long time. I’ll say no more than that. Eventually I ended up where, it seems everyone else who has had problems with this module has – in trying to write, then read the short-address registers, and getting absoutely nowhere. The rubbish code was getting in the way, so I wrote a simple program which included a serial terminal to ascertain the problem.

It’s simple – the Mickey-mouse buffer interposed between the chip’s SDO line and the module’s SDO output pin will not drive TTL – even 3v3 TTL, which is what I’m using.

Here are a couple of screen shots.

The 1st shows SCLK and SDO after reading the contents of register 0×02, in which I previously wrote the value of 0xC3.
You will see on the oscilloscope trace, the outputted data, and in the Tinybld terminal, the correct value has been read. This is with the module’s SDO being buffered through a single non-inverting buffer of a CD4010B.

Correctly Buffered SDOClick for bigger picture

Correctly Buffered SDO

The 2nd shows another read of register 0×02, but this time, the SDO output from the module has been wired direct to the PIC SDI pin. This time the value read back is incorrect. Spot any difference?

SDO Not bufferedClick for bigger picture

SDO Not buffered

In both cases above, the Tinybld terminal shows I wrote 0XC3 to address 0X2, then simply read it back.

There’s a myriad of posts on this subject on various forums, none of which give any useful help to the putative user whatsoever. This includes Microchip forums also.
Far too many of the would-be wise, trot out rubbish they have read elsewhere, confirming my long-held belief that the forums are a complete waste of time.

Microchip should ditch the rubbish they are supplying as test-code, and supply an exemplar of driving this module, starting with read/write of SPI instead of showing it connected to their demo PIC kits, which no-one will be using in a finished product. Oh yes, and let’s have the drive spec of the output buffer and chip pins in the documentation please?

A scanned annotated datasheet for CD4010B is here: http://joebrown.org.uk/images/MRF24J40MA/scan0003_orig.png

A pic of my hookup is here: http://joebrown.org.uk/images/MRF24J40MA/Small_Pequeno_MRF24J40MA.JPG
For the curious, the above photo shows one of my Pequeno boards stuffed with a PIC18F26K20, and 16MHz crystal, although the PLL is turned off so the PIC is running at only quarter-speed. (16MHz instead of 64MHz)
On the left of the Pequeno is an FTDI RS232TTL-3v3 cable going to the PC, SPI is on PORTC, whilst other control/inputs are on PORTB.
On the breadboard, the CD4010B is sitting amidships, with the RF module to the right, and a couple of LEDS to the left. The 3v3 supply comes off the Pequeno board at two points. The RF module supply (and that to the CD4010B) are kept separate, so that LED currents don’t affect the transceiver.

  • Share/Bookmark
Print This Post Print This Post

Guitar Chord Diagrams in SVG? – Part 2

Updated 21st October. Chord engine now includes scaling.

This will be the concluding article on drawing Guitar Chord Diagrams using SVG. Any further material (yes, there will be more!) I generate will be added to this, or the previous post on the same subject. If you’ve come across this post, without first reading part 1, a better understanding of what I’m trying to achieve here will be gained by reading the 1st post first.

Writing in full, or by copy/paste whole shedloads of xml to define chords is a task, just the thought of which would make anyone reach for the paracetamol. So I’ve written a small automation tool. Yes, there is some typing, but a lot less than you might think, so perhaps I should introduce that first, and if you find even that tedious to contemplate, then I’m happy for you to move on.

I’ve defined a PHP class which takes a parameter list as a constructor string, and this includes everything I believe we need to generate an SVG Guitar Chord Diagram file, saved onto local disk.

First I’ll show the PHP statement needed, the diagram it produces, then I’ll dissect each part for you.


$c = new chord(array(0, 0, 0, 14, 0, 14, 2,   12,  'R',   'E_joni',   "For 'Chelsea Morning' by Joni Mitchell", "E2_14_C.svg"));
$c->draw();
Now look at the first 6 numbers after the ‘array(’ part of the statement. These read respectively: 0, 0, 0, 14, 0, 14 and represent the sort of notation often found in songsheets for guitars, inasmuch as they indicate, from left to right the fretted positions on the strings 6,5,4,3,2,1. (6 being the FAT ‘E’ string)
The next number represents the fret behind which a capo will be put, if the number is non-zero. In our case above this is 2, so a capo is needed to play this chord. The next number is in an indication of where I would like the ‘interesting’ part of the fretboard to start, and in this case there’s nothing until we get to fret 14, so I’ve set this value to 12, effectively ‘tearing out’ a section of the fretboard, so as to minimalise the footprint of the diagram.

The next parameter is an ‘R’, indicating that I wanted the chord drawn for a right-handed player. A left-handed player would indicate and ‘L’ here. and the diagram would be drawn the way he would play it, so let’s try that.


$c = new chord(array(0, 0, 0, 14, 0, 14, 2,   12,  'L',   'E_joni',   "For 'Chelsea Morning' by Joni Mitchell", "E2_14_C_L.svg"));
$c->draw();
Note that I also changed the last name in the parameter array, this being the filename I wanted to use for the SVG file produced. Note also, that there is no need to reverse the sequence of strings – the code does that automatically. Moving back to the parameter list, the text ‘E_joni’ will appear in red as the ‘name’ of the chord., the string ‘For Chelsea morning…’ is simply a comment. This should probably mention that this Joni-chord uses an open ‘D’ tuning DADF#AD, but I haven’t bothered on this occaision. Well that’s the parameter list, so I’ll now give you a taster of a selection of chord shapes and how these are made.

$c = new chord(array(0, 0, 0, 14, 0, 14, 2,   0,  'L',   'E_joni',   "For 'Chelsea Morning' by Joni Mitchell", "E2_14.svg"));
$c->draw();
Our Joni-chord without cutting a chunk out of the fretboard, but with a capo at fret 2. I call these totem-pole chords, I don’t/won’t use them, but the engine will manufacture them if you wish.

$c = new chord(array(0, 2, 2, 'x', 'x', 'x', 0,   0,  'R',   'E5',   "First posn E5 power chord", "E5pow_1.svg"));
$c->draw();
An E5 power chord.

$c = new chord(array(0, 2, 2, 'x', 'x', 'x', 0,   0,  'L',   'E5',   "First posn E5 power chord", "E5pow_1_L.svg"));
$c->draw();
And the E5 power chord for would-be Jimis.

$c = new chord(array(1, 3, 3, 2, 1, 1,  0,   0,  'R',   'F',   "F first position (usually barre chord)", "F_1.svg"));
$c->draw();
A 1st position F, the barre symbol is produced automatically at present.

$c = new chord(array(5, 7, 7, 6, 5, 5,  2,   0,  'R',   'A',   "A barre chord", "A_1_C2.svg"));
$c->draw();
A barred ‘A’, with capo on 2nd fret.

$c = new chord(array(7, 9, 9, 8, 7, 7,  0,   6,  'R',   'B',   "B barre chord", "B_1_cut6.svg"));
$c->draw();
A barred ‘B’, with fretboard cut at 6th fret.


Left-handed guitar chords.

Pick up the square steel peg, and offer it to the round hole in the thick steel girder, then with a good 5lb hammer, mercilessly beat the peg into the hole. Hear the peg squeal in protest with each stroke, watch in fascination the four tapering shards curling away from it’s once-pristine corners..

Have you been left out? Do all you get are left-overs?

In these enlightened times, at the dinner-table, we don’t hit our children’s knuckles with our knife, when they pick up their knife in their left hand – do we?
We don’t chant out the same boring f***ing mantra ‘they never made anything for left-handed folk Joe’, every time they use a screwdriver in their left hand – do we?

Well.. I hope not. Because in many respects, lefties have had a bad press almost as long as gay people.
The word sinister meaning threatening, or portending evil, comes from the Latin – in modern Italian sinistro means left.
Also gauche meaning lacking social grace, comes from the French gauche meaning left.

Have I nothing left to say about this subject? Plenty, but suffice to say this. The chord generation system caters equally well for left-handed players, and can be used in one of two ways. Re-use the plethora of existing published chord formats such as X-0-2–2-0-0 ( reading left to right strings 6 to 1) and add an ‘L’ (or ‘l’) in the hand-indication place in the chord parameter list. (see the 2nd E_joni chord near the top of the tables above)
Or add your own (reading from the left) sequence, and use ‘R’ in the hand indicator.

Finally, would Hendrix have been that good if he hadn’t been a leftie obliged to go through the same indignity as my steel peg? Well probably – just a tiny bit different, and certainly not the inspiration to thousands of left-handed kids who decide to learn the guitar in what is still an ‘Alice’ world, where everything is literally the mirror-image of what they would prefer.

A Sample auto-generated SVG Guitar Diagram file.
It’s probably worth showing an SVG file produced by the automation tool, and comparing it with my handmade versions posted in part 1. Everything you see below in blue, has been produced by the engine from the short statement above for the barred B chord cut at fret 6.


<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='80' height='75' >
<!-- This file was auto-produced using SVG Chord generator V1.00 (C) 2011 joebrown.org.uk -->
<!-- On UTC: Wednesday 12th of October 2011 03:49:18 PM -->
<!-- All rights of the author are reserved -->

<!-- B barre chord -->

<!-- Chord name -->
<text x='10' y='8' font-size='10' fill='red'>B</text>

<!-- fret start position -->
<text x='60' y='24' font-size='12' fill='black' font-style='italic'></text>

<!-- open/unplayed strings as follows (may be empty) : -->

<!-- finger positions -->
<circle cx='5' cy='47' r='2' stroke='black' stroke-width='1' fill='black'/>
<circle cx='15' cy='67' r='2' stroke='black' stroke-width='1' fill='black'/>
<circle cx='25' cy='67' r='2' stroke='black' stroke-width='1' fill='black'/>
<circle cx='35' cy='57' r='2' stroke='black' stroke-width='1' fill='black'/>
<circle cx='45' cy='47' r='2' stroke='black' stroke-width='1' fill='black'/>
<circle cx='55' cy='47' r='2' stroke='black' stroke-width='1' fill='black'/>

<!-- Barre chord path statement -->
<path d='M 5 47 a 15 5 0 1,1 50 0' style='fill:none; stroke:black; stroke-width:1'/>

<!-- nut or capo position (slightly thicker line) -->
<line x1='5' y1='22' x2='55' y2='22' style='stroke:rgb(0,0,0);stroke-width:0.5' />

<!-- define cut -->
<polyline points='5,32 15,27 25,32 35,27 45,32 55,27 ' style='fill:none; stroke:rgb(0,0,0);stroke-width:0.2' />
<polyline points='5,37 15,32 25,37 35,32 45,37 55,32 ' style='fill:none; stroke:rgb(0,0,0);stroke-width:0.2' />

<!-- fret position up cut neck -->
<text x='60' y='54' fill='black' font-size='12' font-style='italic'>7fr</text>

<!-- frets -->
<line x1='5' y1='42' x2='55' y2='42' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='5' y1='52' x2='55' y2='52' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='5' y1='62' x2='55' y2='62' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='5' y1='72' x2='55' y2='72' style='stroke:rgb(0,0,0);stroke-width:0.2' />

<!-- strings (to cut) -->
<line x1='5'  y1='22' x2='5'  y2='32' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='15'  y1='22' x2='15'  y2='27' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='25'  y1='22' x2='25'  y2='32' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='35'  y1='22' x2='35'  y2='27' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='45'  y1='22' x2='45'  y2='32' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='55'  y1='22' x2='55'  y2='27' style='stroke:rgb(0,0,0);stroke-width:0.2' />

<!-- strings (from cut) -->
<line x1='5'  y1='37' x2='5'  y2='72' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='15'  y1='32' x2='15'  y2='72' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='25'  y1='37' x2='25'  y2='72' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='35'  y1='32' x2='35'  y2='72' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='45'  y1='37' x2='45'  y2='72' style='stroke:rgb(0,0,0);stroke-width:0.2' />
<line x1='55'  y1='32' x2='55'  y2='72' style='stroke:rgb(0,0,0);stroke-width:0.2' />

</svg>


Tools
I’ve written two PHP files, the first of which is the chord-generator engine, the second of which invokes this engine to produce sets of chords. The second tool produces zipped copies of the SVG files produced together with a demonstration HTML file, to display the results of your efforts – an example is linked below:
http://joebrown.org.uk/Applications/TransChord/DisplaySVGChords.html

I should mention in passing here, that I have no early intentions of hosting a chord-generation page, using this engine. Not to say that this might not happen in the future – just not yet.
Currently, I’m running a local Apache server on my home PC, together with PHP installed, and all of the code was developed on this. If you wish to take this route, then information is supplied elsewhere on the Web on how to set this up – it is relatively simple.

I’m not going to discuss the PHP source here, such a discussion would probably bore the pants off most people. But would-be users can ignore the engine and simply use it in the manner I have exemplified in the second tool.
The tools are as follows: SVGChordV2.php – the chord-generator engine. This is generally called from another file in this case: SVGChordTest.php, which also produces a web page (linked above) and 3 zip files of the chords produced.

Converting and/or editing the SVG Chord Diagrams.
I confess to still having two unfinished tasks, before I consider this mini-odyssey complete. The first is as mentioned in the 1st part of this article, that of simply being able to embed SVG straight into a SFBV word processor template, and the latter to take automation of the chords to it’s logical conclusion by simply throwing names at it.

At this point I could rave and rant about Microsoft’s stubborn stance on not supporting SVG – but they are already paying the price, with a massive drop in the popularity of their browser, which once dominated, this is in no small way because of their resolute stubbornness to support the open standard. However, I feel this had rubbed off on me-too-alike products such as OpenOffice, who don’t yet support an SVG renderer either.

There is one way of producing PDF which supports SVG – obvious really, it’s Acrobat, but it costs money! Alternatives can be found and there are several products on the market the most noteworthy of which is Inkscape. Although this is primarily an SVG drawing package, it will allow the import of PDF containing text, and allow the insertion of the SVG diagrams. The drawback is that space must be left in the original document (produced for example in OpenOffice Word) for the chords to be inserted. It’s fiddly, and I don’t like fiddly.
On the bright side, Inkscape lets you import SVG and will export PNG files of very good quality. There is also a batch machine ‘InkscapeBatch’ which will take multiple files and do the conversion to PNG unattended.

Further, and finally. Editing one of the SVG Chord Diagrams can be done very easily in Inkscape. and an example of one I reduced in size just with the sizing tool, then exported a PNG file as well is given below.
1st the ’shrunk SVG image file: ( which I would have shown you but Inkscape insisted on changing the svg dimensions, so it occupies a side of A4 in space, so I’ve provided a link: http://joebrown.org.uk/Applications/TransChord/E2_14_C_shrunk.svg
And now it’s PNG cousin:

This is nice, still quite readable at about half-size, even though it’s been converted.
Inkscape also saw fit to remove all my header information etc., so that the file now looks as if it’s been produced by them. Further, I noticed the batch conversion tool accesses their servers repeatedly, so no privacy there then.


Scaling in version V2.1
The latest version of the chord diagram engine contains a simple-to-use scale facility – observe the following:

The diagrams were produced using something similar to that given below:


<?php
/*
*
* Demonstrate scaled SVG chord diagrams using SVGChord V2.1
* JWB 14th Oct 2011
*
*/
include('SVGChordV2_1.php');  // the chord engine
$scpc = 60;
for ($i = 0; $i < 5; $i++)
{
	$c = new chord(array(7, 9, 9, 8, 7, 7,  0,   6,  'R',   'B',   "B barre chord", "B_1_cut6_{$scpc}.svg"));
	$scpc += ($i * 10);
	$c->setscalepercent($scpc);
	$c->draw();
}
?>

Downloads

Update 21st October 2011: The new SVGChordGen PHP zip now includes V2.1 of the chord generator, which provides simple scaling. This is here: http://joebrown.org.uk/Applications/TransChord/SVGChordGenV2_1.zip

The (original) zipped PHP files are here: http://joebrown.org.uk/Applications/TransChord/SVGChordGen.zip
The 3 zipped chord files I generated with the test program are here:
http://joebrown.org.uk/Applications/TransChord/SVGChordsinA.zip
http://joebrown.org.uk/Applications/TransChord/SVGChordsinE.zip
http://joebrown.org.uk/Applications/TransChord/SVGChordsMisc.zip

I batch-converted (to PNG format) both the chords in A and those in E using Inkscape, and these are provided for examination in the following zip files:
http://joebrown.org.uk/Applications/TransChord/ChordsinA_PNG.zip
http://joebrown.org.uk/Applications/TransChord/ChordsinE_PNG.zip

Acknowledgements.
Thanks must go to Tony Pottier for inspiring me to write an SVG variant of his PNG Chord generator, and also to David Walsh, for his zip-creation routines in PHP.

  • Share/Bookmark
Print This Post Print This Post

Guitar Chord Diagrams in SVG? – Part 1

Caveat: The chord shapes defined in SVG on this post may not show in certain browsers.
The browsers which correctly render SVG I have tried are: Google Chrome 14.0.835.202 m, and Mozilla Firefox 7.0.1. Internet Explorer 8 does not display SVG correctly.

Chords used in: ‘The Sea’, by Sandy Denny. Tune guitar DADF#AD and capo on 2nd fret, effectively playing in the key of E. the Time Signature is 6/8.
Emaj E/D# A9 D6/E B7sus4
F#m7 F#7 G6 Fmaj7 Emaj

Yeah. Doesn’t look too bad eh? In fact producing the above was relatively trivial, and could be made even more so with a little automation thrown in – but I’ll come to that later. (see paragraph at foot of post)

In my Songs For Broken Voices series, I’ve tended to use (steal) chord shapes from other sources, and since these have been generally of the GIFF, PNG, BMP variety, have had no problem incorporating these into my OpenOffice word-processor documents, prior to generating the PDF files.

This is great if the chord shapes I want are available, but inevitably there are those cases when they are not. I decided to bite the bullet and define a format of my own, onto which I could project any shapes required. I wanted these to be scalable, so some form of metafile would be appropriate, and being addicted to bleeding-edge, decided to use Scalable Vector Graphics, or SVG. Before going on to implement a test case, I assured myself that a filter to import these files was available for Openoffice, and information on the Web assured me there was.

Now mistake one – actually believing this lie, instead of checking it. Yes, what I should have done, was downloaded the plug-in, applied it and attempted to import an existing SVG file – but I didn’t. I went on and defined a chord shape format, and an example (for E/D# in a capoed open ‘D’ tuning) is given below:


<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="80" height="75" >
   <!-- For 'The Sea' by Sandy Denny -->
  <!-- Chord name -->
   <text x="10" y="8" font-size="10" fill="red">E/D#</text>

  <!-- fret start position drawn as nut -->
  <text x="60" y="24" fill="black" font-size="12" font-style="italic">2fr</text>

  <!-- open strings as follows: -->
  <text x="3" y="20" fill="black" font-size="12" >o</text>
    <text x="22" y="20" fill="black" font-size="12" >o</text>
   <text x="42" y="20" fill="black" font-size="12" >o</text>
  <text x="51" y="20" fill="black" font-size="12" >o</text>

   <!-- finger positions -->
  <circle cx="15" cy="57" r="2" stroke="black" stroke-width="1" fill="black"/>
  <circle cx="35" cy="47" r="2" stroke="black" stroke-width="1" fill="black"/>

  <!-- nut (slightly thicker line) -->
  <line x1="5" y1="22" x2="55" y2="22" style="stroke:rgb(0,0,0);stroke-width:0.5" />

  <!-- frets -->
  <line x1="5" y1="32" x2="55" y2="32" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="5" y1="42" x2="55" y2="42" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="5" y1="52" x2="55" y2="52" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="5" y1="62" x2="55" y2="62" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="5" y1="72" x2="55" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />

  <!-- strings -->
  <line x1="5"  y1="22" x2="5"  y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="15" y1="22" x2="15" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="25" y1="22" x2="25" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="35" y1="22" x2="35" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="45" y1="22" x2="45" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="55" y1="22" x2="55" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />

</svg>


If you right-click your mouse on one of the chord shapes in the table above, and select ‘Save As’, you will see that the image is actually a file, and in the above example this would be: ‘EovDsharp.svg’. So the code for each chord resides in a simple text file, with an .svg extension, and is embedded in the web page table with ‘img src’ tag as follows:


<td><img src="http://joebrown.org.uk/Applications/TransChord/EovDsharp.svg" alt="E/D#" /></td>

So far so good. And WordPress is quite happy to accept and reproduce the diagram correctly, although your browser may not – hence my caveat at the top of this post.
Having defined a chord in SVG format, I then set about attempting to import it and use it in OpenOffice – and failed miserably. Even after installation of the ‘extension’, the SVG file extension doesn’t show up in the File filter choices. In fact, the only way to get my chord diagram into Openoffice was to convert it to a bitmap, either by first importing the SVG file into OpenOffice Draw, then re-exporting it, or by using a tool based on Batik

Considering that the OpenOffice ODT file is just mostly xml anyway, this is a great disappointment. The final result (check out SFBV – The Sea) are bitmaps which fail miserably in respect to clarity, compared with the true-rendered SVG ones above.

Well of course I could simply abandon the presentation of the finished songsheet in PDF, but I am loathe to do this. PDF readers are ubiquitous, and a standard form for SFBV, makes it easy for downloaders of these songsheets, of which there are many, to create paper copies which don’t vary in presentation in the way a browser-dependent format would. In fact the original concept of SFBV, was based on a personal desire to rid myself of the grotesquely disparate collection of raggy, dog-chewed scraps of paper originally holding copies of these songs in a myriad of formats.

As an example of providing a song and chords using just the web page, please see below. Formatting the song/chords combination is tedious and boring, because HTML’s default response is to squash as much ‘unwanted’ space out of content as possible – a legacy of limited bandwidth we still live with. Take a look at the source for the stuff below, and you will see I’ve had to format the verse snippet as a table, adding in copious numbers of nsbp directives etc.

Conclusions? I think SVG is the future, and at some point OpenOffice will handle SVG natively and correctly. So for the moment, I’ll take the hit of the lack of quality after conversion. Any posts using my SVG-defined chords will in future include some way of downloading these, such as a reference table above.

One final point is with chord names. For a short discussion on tensions regarding naming chords, please see the SFBV – The Sea post.

Emaj E/D# A9 EmajA9Emaj
Do    I ev-er won-der? You don’t know;
D6/E F#m7 EA9 E E/D#
You’ll ne-ver fol-low,           and I’ll______     ne-ver show.                                       D’you see__ the wa-ter
A9 EmajA9 F#m7 G6 F#7
And watch it flow and float an______ emp-ty shell?_ ____                 And you think that I am hi-ding from the

The ‘Joni’ Chord
All well and good, but so far I’ve neatly side-stepped the problem of the totem-pole chord diagram that would result from what I call a Joni-chord – after the outrageously-talented Miss Joni Michell. Taking the classic example of the high ‘E’ chord Joni plays at fret 14, whilst using open ‘D’ tuning and capo on 2nd fret, our chord diagram would look ridiculous, and difficult to format around. The solution I propose is the ‘torn’ fretboard format which might look something like this:
E_14

and adding on as many frets as necessary to complete the chord. The SVG source for this is a little longer, but would still be easy to automate:


<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="80" height="75" >
   <!-- For 'Chelsea Morning' by Joni Mitchell -->
  <!-- Chord name -->
   <text x="10" y="8" font-size="10" fill="red">E_Joni</text>

  <!-- fret start position drawn as nut -->
  <text x="60" y="24" fill="black" font-size="12" font-style="italic">2fr</text>

  <!-- fret position up cut neck -->
 <text x="60" y="44" fill="black" font-size="12" font-style="italic">12fr</text>

  <!-- open strings as follows: -->
  <text x="3" y="20" fill="black" font-size="12" >o</text>
    <text x="22" y="20" fill="black" font-size="12" >o</text>
   <text x="42" y="20" fill="black" font-size="12" >o</text>
  <text x="51" y="20" fill="black" font-size="12" >o</text>

   <!-- finger positions -->
  <circle cx="35" cy="57" r="2" stroke="black" stroke-width="1" fill="black"/>
  <circle cx="55" cy="57" r="2" stroke="black" stroke-width="1" fill="black"/>

  <!-- nut (slightly thicker line) -->
  <line x1="5" y1="22" x2="55" y2="22" style="stroke:rgb(0,0,0);stroke-width:0.5" />

  <!-- define cut -->
  <polyline points="5,32 15,27 25,32 35,27 45,32 55,27" style="fill:none; stroke:rgb(0,0,0);stroke-width:0.2" />
  <polyline points="5,37 15,32 25,37 35,32 45,37 55,32" style="fill:none; stroke:rgb(0,0,0);stroke-width:0.2" />

  <!-- frets -->
   <line x1="5" y1="42" x2="55" y2="42" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="5" y1="52" x2="55" y2="52" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="5" y1="62" x2="55" y2="62" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="5" y1="72" x2="55" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />

  <!-- strings (to cut) -->
  <line x1="5"  y1="22" x2="5"  y2="32" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="15" y1="22" x2="15" y2="27" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="25" y1="22" x2="25" y2="32" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="35" y1="22" x2="35" y2="27" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="45" y1="22" x2="45" y2="32" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="55" y1="22" x2="55" y2="27" style="stroke:rgb(0,0,0);stroke-width:0.2" />

 <!-- strings (from cut) -->
  <line x1="5"  y1="37" x2="5"  y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="15" y1="32" x2="15" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="25" y1="37" x2="25" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="35" y1="32" x2="35" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="45" y1="37" x2="45" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  <line x1="55" y1="32" x2="55" y2="72" style="stroke:rgb(0,0,0);stroke-width:0.2" />

</svg>


Last, but certainly not least, I would like to draw your attention to the excellent work of Tony Pottier, in his paper on: Draw Guitar Chords using PHP. Trivial substitution of PHP GDI calls could be made, so that his code outputs an SVG file instead, similarly formatted to that I have shown above. I’ve already done this, and this is discussed and demonstrated in part 2 of this topic.

Update: 13th October 2011
There is now a 2nd part to this topic. The following links can be accessed for easy browsing across both posts.

  • Share/Bookmark
Print This Post Print This Post

SFBV – The Sea

Songs for Broken Voices ™ © 2009/2010/2011 J.W.Brown

Last updated 9th August 2011 by JWB

Page 1 Page 2 Page 3
Page 4 This Page Separately Posted

34. The Sea – Sandy Denny

After drafting both the song-sheet and manuscript, I thought it would be a good idea to mention one or two issues, both with providing the SFBV material in general, and this song in particular.

Firstly the issue of chord designation. In this song (and many like it using ‘open’ tunings) the naming of chords, and providing only these names, is really of no help to the person who simply wants to play guitar to accompany themselves, the resulting chord names reading more like hieroglyphics. Using chord diagrams can, in many cases be the only reasonable choice. Moreover, for ease-of-play, these diagrams should probably be drawn in full, above every verse in the song – instead of having to keep referring to the 1st verse for guidance. There is a tension here, because each diagram should be allocated a title – if only for reference purposes.

The 2nd issue I have will no doubt be contentious. Some publishers display chord diagrams/names of an un-capoed tuning – irrespective of the fact that the key has been changed by application of the capo. This infuriates me, as it is not just incorrect and misleading, but also insulting to players, and makes playing along with someone else on an un-capoed guitar well nigh impossible. (I did warn you about contentious!)

So in this song I have provided both a chord diagram, together with my interpretation of a suitable chord name – the latter about which some will probably take exception, and if they have better suggestions than the names I have allocated, then please email me. I may even change these, if your suggestions are legal, and won’t hurt unduly.

In the manuscript provided, the chords are given in the format: f f f f f f, where each f represents the fretting point for each note in the chord. (counting left->right 6th, 5th, 4th, 3rd, 2nd, 1st, or if you prefer it: fattest-string -> thinnest-string)
This is because the manuscripting tool I used (museScore) does not at present support chord diagrams.

This song, although deceptively simple in construction, is not easy to sing well, and self-accompany on the guitar, and that is why in the manuscript and song-sheet, I have kept things deliberately simple. By all means add in the mixed-timings and plethora of grace notes which Sandy actually sings, when you are confident.

As a final note, there is an alternative to the ‘open D’ tuning and capo combination suggested for this song. I call it the ‘brave E’ tuning. Instead of cranking down to open D and capoing, crank up strings 5th, 4th and 3rd, so that the guitar tuning is now EBEG#BE. You may want to consider a lighter set of strings before doing so, so as not to strain the neck of the guitar. I have an old Squire SD-3NAT, which tunes up nicely to open E, although the subsequent action is a little on the high side. Some advice – always re-tune when not in use, so saving putting constant over-stress on the neck. (Goggle-up the first time you attempt this!)

The song is available as a PDF download here: The Sea
The music is available as a MuseScore PDF manuscript here: The Sea – Manuscript
The music is available as a MuseScore music file here: The Sea – MuseScore music file

If you haven’t got at least an Acrobat reader on your machine, then you won’t be able to see what is embedded below.

To TOP of Page

  • Share/Bookmark
Print This Post Print This Post

Two projects – one conclusion.

A couple of things didn’t happen this week – yes, I know, many trillions of things did happen, but most of them were insignificant in the grand scheme of ‘even-bigger’ things.

First, scientists working with the Large Hadron Collider are starting to admit that the Higgs Boson is an even smaller needle in an even larger haystack, than they could possibly ever have imagined. This is downright disappointing for some, but almost all put a brave face (some say brazen face) on it and brushed the devasting news to one side by announcing that the search for the mechanism linking Mass, Gravitation, Spacetime Curvature, and General Relativity, has become even more ‘exciting’. The fact that even if they had found the ‘God Particle’, would mean a further search for the Higgs field, has not been lost on the public, who would have be asked once again to dip into their pockets and cough up more cash for more (very1000000000000000…) expensive toys for these theorists to play about with.

Secondly, more non-action in Europe. For the first time this morning ever, I heard a British Politician try to talk his way out of the suggestion that the proposed solution for Greece et al, is closer fiscal union in the Euro-zone, which means the European parliament voting on matters which directly affect the British people, whilst we are not represented in the discussions nor decisions.

I’ve waited a long time for this to happen, but along with others, predicted long ago that it would. The German people were fine with the idea of German Banks lending more and more money to Greece, because they, like so many others, thought growth had become a constant on this speck of cosmic dust we live on. Now they have discovered that they as taxpayers, will be asked once again to bail out the banking system, should Greece (and other peripheral economies) default, they are not so keen. I don’t blame them.

Not only is the Euro project a half-baked, stove-pipe anti-pattern, but it’s implementation is putting The European Union itself in dire jeopardy – a project that was always better off without monetary union.

The Greeks have a choice – flog off all the family silver, privatising everything in their society, and handing it to (mostly) German Banks, or say ‘όχι’.
They then have the chance to revert their currency, de-value it and actually start living within their means, paying everyone else in the world with cash rather than promises.

Cameron and Osborne both know that this is the only way that Britain can stay in the European Union, but they dare not say so in as many words, at least not just yet, though their message to Europe is very loud and clear.

However, it is the English way to shout if those pesky foreigners don’t understand you, isn’t it? Trouble is, all the shouting in the world won’t make a corpse get up and walk, and that is precisely what the Euro project is – why not just bury it and move on?

  • Share/Bookmark
Print This Post Print This Post

My picture-postcard photo of Cullercoats Harbour

A while ago, I decided to take a photo looking south across the harbour, to make two copies and present framed to the two lovely ladies, Pam & Lily, who were about to lose their favourite seat in the Bay Hotel when it closed. Well, it’s long gone now, and sadly so has lovely Lily.

Cullercoats Harbour looking south towards Tynemouth

Cullercoats Harbour looking south towards Tynemouth

(You can click on the image for the larger copy on my photo gallery)

I came across this recently and thought I’d show everyone where I live. I moan a lot about the weather here in the NE of England, but cannot deny how stunningly beautiful the coastline is here, and the passage of history in this part of England.

Centre distant is the remains of the old Priory at Tynemouth. Cullercoats itself gets it’s name from ‘Culver Cotes’ – where the monks from the Priory kept their doves – until fat enough to make into pies, that is!

The harbour at Cullercoats was built for the export of coal, but has long since silted up, and now only a few fishermen work from it. On the right is the spire of St. George’s Church, and in the darkness on the extreme right of the photo, can be just made out part of the building containing the Dove Marine Laboratory – part of Newcastle University.

  • Share/Bookmark
Print This Post Print This Post

MySQL Workbench v5.2.34 – 2nd meeting

Early experiences with the MySQL Workbench IDE version 5.2.34, revision 7780 – part 2.

I refined the data model a little.

Export of ER diagram V2  from Story Schema

Export of ER diagram V2 from Story Schema

I edited in a minimal set of data for test purposes, this included entry of two characters from Book, and a (limited) selection of page references taken from the Book index generated with OpenOffice.org Writer.

Finally, I set about cobbling together a couple of queries. At this point, I was experiencing no difficulties in remembering how the various facilities on Workbench functioned, so if an old fart like me can achieve familiarity and productivity in a short time, then I believe anyone can.
Below I’ve given screenshots of both the SQL and resultsets for/from the queries. One comment here – the resultset can be exported as HTML, CSV, TAB etc., but not as a printable graphic, which is a shame.

First a report on the pages featuring Joe and Zena. (NOTE minimal population of tables!)

SQL querying pages in book featuring Joe and Zena

SQL querying pages in book featuring Joe and Zena


Note in the above, I deliberately tested variation of the syntax for table names and fields. MySQL seems happy with both forms I used.

and the resultset:

Resultset of querying pages in book featuring Joe and Zena

Resultset of querying pages in book featuring Joe and Zena

Now a report on the complex (and rather confused) relationship Joe has with Zee. (Only Joe->Zeena relationship, and only these two characters in database)

SQL querying relationship in book between Joe and Zena

SQL querying relationship in book between Joe and Zena

and the resultset:

Resultset of querying relationships in book

Resultset of querying relationships in book

After doing the query, and completing the screendumps etc., I noted that Joe had been having ‘streesful times’ ! Just shows how conflicted he really is!
I also need to clean up the spelling differentiation for Zena/Zeena/Zee in my data.

Downloads

The Story MySQL Workbench file (V2) is here: http://joebrown.org.uk/images/MySQL Workbench/StoryV2.mwb
The above SQL queries are here: http://joebrown.org.uk/images/MySQL Workbench/StoryQueryPages.sql
and here: http://joebrown.org.uk/images/MySQL Workbench/StoryQueryRelationships.sql

  • Share/Bookmark
Print This Post Print This Post

MySQL Workbench v5.2.34 – First Contact

Early experiences with the MySQL Workbench IDE version 5.2.34, revision 7780

Export of ER diagram from Story Schema

Export of ER diagram from Story Schema

First impressions:

It’s easy to install.

The download and install on my XP machine went without a hitch, including the necessary pre-requisites – in this case a Visual C++ re-distributable run-time and .NET component.

It’s pretty.

Neatly laid out and with exceptional quality export of diagrams – very important in my case – I love pictures!

It works – mostly!

I found the non-object-oriented interface arcane, with little indication of context, and use was accompanied with choruses of alerts that were as oblique as they were unhelpful. Invitations to load the VC++ debugger were several, and where exceptions were handled, the messages were distinctly unhelpful.
It simply isn’t good enough to report that ‘an external component has caused an exception’.

Despite this clunkiness, I succeeded (eventually) in completing the very limited tutorial, although this was also flawed, not warning me about closing connections open for a table edit, before I attempted to query the table for data. (which causes the above exception message)

Attempting to report bugs is a nightmare in itself, and if the developers want meaningful feedback, this facility should be made far easier, with facility to cut/paste the silly alerts and submit these.

Well, that was yesterday. This morning I did a little bit of modelling, managing to avoid most of the problems, and the picture at the head of this post is a PNG export of what I did, so you can see how pretty the output is.

Conclusions.

Will I use it? Yes, I will, and encourage anyone else to give it a try also. For a zero-priced design tool, it is excellent, but some remedial work needs to be done.
I will continue with my model, and attempt to use it to create a database of references for one of my novels, so that the second in the series doesn’t involve me in hours of page turning to check what I have already written in the first.
I will report on my results in a later post.

Downloads

The Story MySQL Workbench file is here: http://joebrown.org.uk/images/MySQL Workbench/Story.mwb

  • Share/Bookmark
Print This Post Print This Post

Pimping an Op-Amp for wide voltage swings

A wide-voltage swing op-amp for less than £1.00?

As promised in an earlier post, I describe here my experience in turning a common-or-garden TL081 PDIP op-amp into a wide-voltage swinging monster, with a minimal sprinkling of SMD and a small circuit board made from scraps.

Prototype 72 volt op-amp

Prototype 72 volt op-amp

I wanted to augment my current heavy-duty power-supply to use electronic control of the output voltage(s), rather (but as well as) than the 500watt VARIAC I use at present. The full output voltage from this unit is around 45 volts, but I anticipate the maximum I need to supply using electronic control is around 35 volts. This fits in well with the use of the standard positive and negative regulator ICs LM317 and LM337, with suitable current boost. In a previous post I demonstrated the use of a simple op-amp to supply the negative side voltage drive, enabling the use of a single pot for full dual-tracking. (Simple Dual-voltage Tracking Power Supply for 3 to 15 volts) Unfortunately, the TL071/81 op-amp I used is limited, amongst many others, to an absolute maximum supply voltage of +/- 18volts. Clearly, one solution is to substitute a high-voltage op-amp in place of the TL071/81, but two factors mitigate against this, the first being cost, and the second availability. A browse through suppliers catalogues suggest suitable units are priced above £7.00, (GBP) but the units are not available using local suppliers, (here in the NE of England) so postage & package costs must also be factored in.

Not happy with the somewhat expensive unit cost, I looked for alternatives, and came across an article published in May 1999 in EDN magazine, describing a solution using a standard op-amp and a few discrete components. The paper is worth reading, and I have linked a copy here on my site: http://joebrown.org.uk/images/DualPSU/BootstrappingOpAmps.pdf in case you can’t find the article elsewhere.

The article describes and discusses the method used, and I’ve included the schematic below.

Original bootstrap schematic from EDN, May 1999.

Original bootstrap schematic from EDN, May 1999.

If you intend duplicating my experience, I strongly urge you to read the article in full, or at least take particular notice of the paragraph ‘DC Conditions
as this has implications on which configuration you can employ the op-amp in.

I drew a generalised form of the above schematic in Eagle, and produced small circuit boards for both SMD and DIL-packaged TL071/81 op-amps. With single-sided configurations, no real saving in space is achieved by using the SMD version of the op-amp, so I present only the DIL-packaged version. The Eagle project is provided, for those wishing to experiment further. This is a practical circuit, and intended to run with power supply lines of no more than +/- 36volts. Note my comments on the schematic WRT to the transistors used, and the values of R3 and R4, if higher voltage swings are required.

Wide voltage swing op-amp prototype schematic

Wide voltage swing op-amp prototype schematic

Component Choice.

I opted for SMD for all of the discrete components, and although the original article suggests using the base-emitter diode of another two transistors for D1 and D2, I used a couple of MINIMELF-packaged 1N4148s. R3 and R4 were reduced in value to 10K, so as to place the op-amp supply near it’s maximum. Suitable resistors should be substituted if you intend using an op-amp with a different maximum supply voltage.
I fitted a 330pF capacitor across the bases of the transistors. This effectively killed a high-frequency parasitic oscillation evident as the supply voltages were increased during testing.

Construction.
I opted to mount all components, including the DIL-socketed Op-Amp, on the foil side of the board, this keeps the side profile as narrow as possible, as there is plenty of space underneath the turned-pin socket I used for the SMD transistors etc. If you wish to mount the Op-Amp on the ‘top’ of the board, then by all means mirror what I have produced in Eagle.

Testing.
The sub-assembly was plugged into a bread-board and set up as an inverting amplifier with a feedback resistor Rfb of 100K, and an input resistor Rin of 15K. The + (non-inverting) terminal of the unit was taken to ground. Note that drive current is limited, so low load resistances will limit the peak swings. The oscillograms below were captured with the op-amp driving only the oscilloscope probe. Practical load resistances below around 15K will start limiting the output before clipping occurs.

Oscillogram of input/output with supply voltages +/- 35.5volts

Oscillogram of input/output with supply voltages +/- 35.5volts

Oscillogram of Output and VCO with supply voltages of +/- 35.5 volts

Oscillogram of Output and VCO with supply voltages of +/- 35.5 volts

Oscillogram of output and VEO using supply voltages of +/- 35.5 volts

Oscillogram of output and VEO using supply voltages of +/- 35.5 volts

I’ve embedded a Shockwave viewer to my photo collection for this post below, or you can go direct to the site here: http://cullercoats.joebrown.org.uk/#42

http://cullercoats.joebrown.org.uk/#42

Downloads

The Eagle schematic is here: http://joebrown.org.uk/images/DualPSU/HV_OpAmp_Discr.sch
and the board here: http://joebrown.org.uk/images/DualPSU/HV_OpAmp_Discr.brd
High definition exports of the above are available in the photo collection: http://cullercoats.joebrown.org.uk/#42

  • Share/Bookmark
Print This Post Print This Post

Simple Dual-voltage Tracking Power Supply for 3 to 15 volts

Updated 17th August 2011

Completed prototype

Completed prototype

In a previous post: Versatile Dual Power Supply Printed Circuit Board I described a dual power supply design that I hoped would fulfil 90% of my needs. To this end, it was very successful, and several have been built and installed in various pieces of equipment. These have been mostly of the ‘fixed’ type of supply, and for types using the LM317/LM337 adjustment of the two presets has not usually been a problem, simply set and forget. When, however, a dual supply is require that is continuously variable – say, for example a bench supply, the individual adjustment of the presets is a pain. Of course the problem can be partially solved by the use of a dual-ganged pot, and judicious use of trimmer resistors, but it is unlikely that such a system will offer precise voltage tracking between + and -. A better solution would be the use of a single pot to set both voltages simultaneously, and for precision setting this could be of the 10-turn variety.

There are several dual-tracking regulators around, but these are generally expensive, and may necessitate special ordering. I present here a reasonably simple solution that substitutes an op-amp and a few resistors for the -ve control pot, that is suitable for supplies delivering between 3.3v to 15v +/- at around 1.5amp. In a separate post I will discuss simple bootstrapping of the op-amp so that the voltage range can be extended upward, and also a power- booster for high current use.

Now referring to the two schematics below, it will be seen that they are essentially mirror-images of each other. If we remove resistor R2 in the second schematic, and connect the mirror-image of the voltage found at the junction of R1 and R2 in the first schematic, full tracking between the +ve and -ve outputs will be achieved.

Now refer to the third schematic, drawn by me, in which I’ve combined the two circuits below, and added in the mirror-image voltage generator.

LM317-base PSU unashamedly stolen from Texas Datasheet

LM317-base PSU unashamedly stolen from Texas Datasheet

LM337-based PSU design also stolen - this time from National Semiconductor Datasheet

LM337-based PSU design also stolen - this time from National Semiconductor Datasheet

Dual Voltage Tracking PSU

Dual Voltage Tracking PSU

In the above, IC1, R2 and R7 comprise an amplifier with a gain of -1. Put simply, any positive voltage appearing at the ‘ADJ’ terminal of the (upper) LM317, will be inverted (made negative), and the result applied to the ‘ADJ’ terminal of the (lower) LM337. The net result is control over both outputs achieved with the single adjustment pot R1. (5Kohms)

As always, the Devil is in the details, and the following should be noted.

Firstly the +ve and -ve supply for the op-amp IC1 are derived from the +ve and -ve outputs themselves – this may seem strange, but has been done for the following reason. Using the monolithic op-amp TL071, the supply voltages are limited to absolute maximums of +/- 18 volts. This would mean that if the op-amp supplies were derived from the raw DC inputs, (the ‘IN’ terminal of each regulator) some way of ensuring this never exceeded 18 volts would be required. Far simpler is to set the absolute maximum output voltage to around +/- 15 volts and use that instead. This is achieved by placing a 6.8K ohm (R10) resistor across the adjustment pot (R1), so that the largest value of the combined (paralleled) resistors is around 2.8K. Since there is always a voltage drop of around 1.2 volts across R3, this allows the op-amp to control a full range from around 3 volts to 15. (ohms per volt is approx 200)

Although not essential, without the offset adjustment trimmer R8, the voltages will track to within a tenth of a volt or so. Inclusion and set-up of R8 and R9 will allow tracking accuracy to within a few hundredths of a volt.

High stability 1% tolerance metal film resistors should be used for R2, R3, R4, R7, and R10. Other resistors are 5%.

Testing.

Setting up is simple. Set R8 to it’s mid-position, then set the voltage adjustment pot so that +15.00 volts is obtained at the output of IC2. With a voltmeter on the output of IC3, adjust R8 so that the obtained voltage is the exact mirror of that obtained at the output of IC2, i.e. -15.00 volts. Tracking should be maintained within a few hundredths of a volts throughout the range 3.3 – 15 volts.

During testing, the following was observed.

I discovered a very low-level parasitic oscillation at the output of IC1 on the 1st version of the PCB. Adding a 47pF capacitor (C12) across R7 cured this, and the Schematic and Board reflect this small addition.

With an ambient air temperature TAMB of around 19oC, the op-amp IC1 warms up slightly. With the circuit supplying +/- 15 volts I affixed a temperature probe and left things to stabilize for around 10 minutes, when the plastic case temperature of the op-amp measured a little over 28oC. As is usual with observations, the method of measurement has a quantum-like effect, and I attribute some of this temperature rise to the fact I had to tape the probe onto the op-amp case, affording it some insulation from free air.

I checked drop-out voltages by supplying the unit from a VARIAC. The results were as follows, and were what I expected:

Construction

Images of the PCB foil and component layouts are given below. The Downloads section has links to the Eagle project files.

Dual Tracking PSU PCB - Foil side

Dual Tracking PSU PCB - Foil side

Dual Tracking PSU PCB - Component layout

Dual Tracking PSU PCB - Component layout

The prototype PSU during testing

The prototype PSU during testing

Top view of completed prototype

Top view of completed prototype

Verifying calibrated voltages

Verifying calibrated voltages


A front panel

I used FrontDesigner to put together a front panel for the PSU. Sod’s Law states that if something can go wrong – it will, and because of the design, the voltage control is roughly anti-logarithmic. FrontDesigner only caters for linear and logarithmic scales, so I plumped for a linear scale (total rotation 300o) and annotated this with the resulting voltages for each major division.
A high-definition export of the panel design is available in the downloads section.

The Dual PSU front panel

The Dual PSU front panel


Downloads

The Eagle schematic for the Dual Tracking PSU is here: http://joebrown.org.uk/images/DualPSU/SplitSupply_Tracking.sch
and the printed circuit board layout here: http://.joebrown.org.uk/images/DualPSU/SplitSupply_Tracking.brd

The FrontDesigner project file is here: http://joebrown.org.uk/images/DualPSU/DualTrackingVariablePSU.FPL
and a high definition exported image file is here: http://joebrown.org.uk/images/DualPSU/DualTrackingVariablePSU_FPL.JPG

  • Share/Bookmark