Monday 31 October 2011

Pick and place update

We've been a bit busy with all kinds of projects lately, but this popped up in Google+ today and looks like a really good idea - it's a homebrew pick and place machine, based on a CNC frame.

http://hackedgadgets.com/2011/10/24/diy-pick-and-place-machine-called-the-redfrog/

But the thing that caught our imagination was the tape advance method.
The head simply drops into one of the tractor tracks on the side of the tape and pulls it along! No need for complicated electronic feeds or multiple steppers - just use the positioning head to pull the tape along to the correct place. A neat idea.

Hopefully it won't be too long before we get to try it on our own machine!

Friday 28 October 2011

New guitar models added to the microband range

After spending a few days soldering up some of the new PCBs from www.pcbcart.com we fired up the laser cutter to make some enclosures for the new miniature guitars. We're working on a complete range of micro instruments at http://www.microband.co.uk and hope to have at least eight different guitar models.

We've already got
And we're hoping to complete the range with
  • Les Paul
  • Warlock
  • Telecaster
  • Gibson SG (AC/DC)
  • F-hole blues (like BB King's Lucille)

Tonight we managed to design and cut out two of these new guitars:


This is going to be an SG style guitar, for Andy at BandJammer.
While Angus Young from AC/DC usually plays a maroon-coloured SG, Andy's  favoured guitar is a mustard yellow one (at least that's the one he uses in most of his videos and promotional material!). The closest match we could make was a yellow acrylic, but here it is partially assembled. It's a surprise gift, so let's hope he's not reading this blog!


We've some 1.5mm HIPs on order for the scratchplate. We tried making it from thick card, but it didn't look nice (and stank the workshop out with a nasty tarry smell as the laser just burned the paper and filled the cutter with smoke!). Here's the guitar we're basing this one on....



For our Les Paul style guitar, we wanted to try something a bit different to the previous styles. We've got a red Stratocaster, a yellow Explorer, a green Flying V and now another yellow guitar. A blue Les Paul just didn't look right and we don't have any gold coloured acrylic to re-create Slash's famous goldtop.
So who else plays a Les Paul and isn't Slash...?
Zakk Wylde not only plays a Les Paul, but also plays a white one, with a striking bulls-eye black-and-white pattern. Perfect! We've plenty of white acrylic in both 3mm and 5mm!


Unlike previous miniature guitars, we've moved away from the 5mm black acrylic, and decided to make the entire body from the same colour, yet stick with a black fretboard. The end result is actually quite nice.


A few stickers and a bit of finishing off and we shouldn't be too far away from the real thing -



Monday 24 October 2011

PCBs arrived from PCBCart

More exciting news about the miniature instruments as our second set of PCBs from PCBCart.com arrived this afternoon. Woo-hoo! We had 200 boards made up for just under £100 - making them less than 50p each.



Here they are, ready for inserting into our first commissioned miniature guitars. The soldermask and HASL (hot-air-solder-level) finish certainly makes soldering the boards up much easier than the homebrew boards we've been struggling with so far!


The cable on the right was soldered first. As we got familiar with the method for attaching the ribbon cable, the last cable (right) has a much better finish. These cables were hand-soldered using solder paste rather than the solder pot but only because that was what was to hand!

Even soldering by hand with a cone-tipped iron (rather than our preferred hot-air-soldering method) was quick and easy. Ok, the first transistor we put down went a bit wonky, but that's only because we were rushing to see how quickly we could assemble a full board!

Here's the first of our new boards ready to go into the latest (commissioned) micro guitar


Back in 1991, Metallica released their eponymous "Black Album".
It is still considered by many to be their best album to date. Everything about it was black. Including the guitars. This guitar is for a 90's Metallica fan who wants to remember James Hetfield before he shaved off his handlebar moustache and cut his hair!


Wednesday 19 October 2011

Here's a grid of 54 blocks of colour - each with a unique combination of RGB values, one for each playing card in a regular deck (52 cards + two jokers). We're hoping to use these with a colour sensor to build a device which can "read" playing cards placed in a special holder.


Creating unique colour combinations for playing card reader

Ok. With the numerous problems and repetitions in our previous attempt, we've turned to Excel to help us solve this conundrum. We need to be sure that every playing card has a unique combination of red, green and blue in the colour block (whether we settle for a single colour in the block, or stick with the 2x2 grid approach, we'll have to wait and see, once we know how sensitive our LDR is going to be).

Each colour will have an intensity of zero-to-three.
By writing out all possible permutations, we get 64 combinations (three colours, four intensities, 4^3=64)

RedGreenBlue
000
001
002
003
010
011
012
013
020
021
022
023
030
031
032
033
100
101
102
103
110
111
112
113
120
121
122
123
130
131
132
133
200
201
202
203
210
211
212
213
220
221
222
223
230
231
232
233
300
301
302
303
310
311
312
313
320
321
322
323
330
331
332
333

We only need up to 52 colours, so we've decided to do away with the "darker" colours
(e.g. a block with the colour combination 0 1 0 would have one single green square and three black ones in a 2x2 grid). The easiest way to do this was to sum the totals of RGB and any block with a total of two or less was discarded (0-1-0 gets binned, 0-1-1 gets binned, but 0-0-3 can stay, as can 0-1-2 and so on)

This leaves us with 54 colour combinations:

RedGreenBlue
003
012
013
021
022
023
030
031
032
033
102
103
111
112
113
120
121
122
123
130
131
132
133
201
202
203
210
211
212
213
220
221
222
223
230
231
232
233
300
301
302
303
310
311
312
313
320
321
322
323
330
331
332
333

Where the total sum of colours in a block exceeds three (1-2-3 for example represents 1R-2G-3B) we'll have to mix the colours to make secondary colours (magenta, cyan, yellow) and maybe even black and/or white. But hopefully, using these colour intensity charts as a guide, we'll come up with colour blocks that enable us to uniquely identify a card based on the RGB values received by the LDR/light sensor.

Seeing playing cards with an LDR and RGB LED

It didn't take long after posting about our intelligent poker table for the emails to come in pointing out a few mistakes on our colour-block image.


We'd tried to come up with at least 52 unique combinations of colour blocks, using only primary (red, green, blue) and secondary (magenta, cyan, yellow) colours. We thought we'd done a pretty good job until Matt from BuildBrighton pointed out -

Looking at the top-left block of colours, it's easy to see that we've two red, one green and one blue block. Let's write this as 2R-1G-1B.

Now on the top row, look at blocks three and five.
Block three has two red, one magenta and one green.
Magenta is made up of equal parts (1:1) red and blue.
So block three is 3R-1G-1B

Block five is made up of two red, one yellow and one blue.
Yellow (as most people who paid attention in physics class will tell you) is made up of red and green light (yes, when mixing paint, yellow+blue = green, but when mixing light, red+green = yellow. Just accept it!)
This makes block five also 2R + 1R+1G + 1B = 3R-1G-1B

So although we'd used unique combinations of colour pigments for our blocks, we've actually repeated intensities of light for a lot of the colour combinations. In fact, looking through the image, we can see we've actually repeated ourselves quite a few times!

Back to the drawing board....

Intelligent poker table without RFID

As a member of HackLlan (Llangollen's Hackspace) we're trying to get some ideas together for a show-and-tell session in November and to organise a robot kit for a weekend-workshop.
This means a few of our other projects have been sidelined, while we try to find projects that are both simple enough to explain in a few hours, but complex enough to keep people's interest for the whole day.

One project we're looking at is an intelligent poker table. You know the sort - players put their cards face down on the table and a graphic appears on-screen showing their "hole" cards. This was first seen in the UK on Channel 4's Late Night Poker, where the rather lo-tech solution was to put a camera behind a sheet of glass at every player's position.



This approach is still used in a lot of televised poker tournaments, and they are available on the 'net to buy, but you'd have to be a dedicated poker player to house a full-sized 10 seater table in your house!
A variation on this theme is to have cameras mounted in the "rail" of the poker table, which sneak a peak at each player's hand, as they bend their cards upwards to have a look at them.

For home-games, an alternative approach is becoming popular, but it still quite expensive - RFID playing cards. Each card in the deck has a tiny RFID tag, and each player has an RFID reader in front of them. As the cards as placed on the reader, the unique ID is read from each tag and the system knows which cards the player holds.
This is infinitely simpler than having up to ten webcams under a table, but RFID tags are expensive. Each tag costs 50p-£1 and a professionally made deck of cards costs £100 or more. You can make your own cards, by simply applying an RFID label to each playing card, but this increases the thickness of the deck significantly and the labels are still susceptible to breaking if players bend the cards too much.

We're after a much more low-tech (i.e. cheaper solution) that should be accessible to almost anyone.
One of the ideas we're investigating is a colour sensing circuit and a 2x2 grid of colour, unique to each card.


The idea is to have an RGB LED and a light sensor (either an LDR or something like a light-to-voltage sensor) under an opening onto which the card is placed. By flashing the LED red, then measuring the amount of reflected light, then green, then blue, should allow us to work out which combination of colours is showing.

At the minute it's all just a fancy idea - but hopefully this week we'll find time to put together a proof-of-concept prototype to see if it's feasible to continue.


Monday 17 October 2011

Interesting servo hack

After reading a few other articles about hacking servos to make them rotate continuously, I noted quite a few people suggested disconnecting the rotary pot and replacing with a voltage divider made up of 2 x 2k resistors (in a sort-of Y shape)



Our servo is much too small to fit extra components inside it, but without these, it doesn't seem to work. It spins in one direction, by sending a repeating 1ms pulse every 20ms, but increase the pulse length to 2ms and instead of running in reverse, the servo just judders and makes a nasty noise.
(if the servo is "centred" at 1.5ms, a pulse of 1ms tells it to move 90 degrees in one direction, and a pulse of 2ms tells it to move 90 degrees from centre in the other direction. By removing the pot input, the servo never knows where the head is so should continue to move).

Removing the pot seems to have caused the problem.
To simulate the pot, we soldered a piece of wire from the board where it was connected to the potentiometer (we should have snipped the end nearest the pot, not nearest the board and we could have re-used the bit of wire without extra soldering!) and connected to a voltage divider on the breadboard, made up of two 2K pots



This sort-of solved the problem, but not quite.
The servo no longer judders, but it's not not right. With a pulse width of 1ms, the servo runs at full speed in one direction. A pulse width of 2ms makes it run in the same direction, only much slower.
Maybe this is because we're using power and ground on either side of our voltage divider, rather than taking them off the internal pot (but then to get at those wires would require completely dismantling the servo!)

Now we could play about with the resistor values, or maybe even replace them with an exterior potentiometer (with the wire from the servo connected to the wiper and each end connected to power and ground) but here's a thought....

Pulling the signal on the wire to ground causes the servo to run at full speed in one direction.
Pulling it to power (5v in our case) causes the servo to run at full speed in the other direction.
So now we have a binary method of moving the servos either forwards or backwards - simply connect this new wire to an output pin and pull it high to drive the servo in one direction, and pull it low to drive it the other way.




Edit...
interestingly, we did have to make some changes to the servo control values to get the servo to work consistently without juddering. When pulling the signal pin high, we set the servo signal length to zero. When pulling the signal pin low, we set the servo signal length to 2ms. This resulted in the servo running at full speed in opposite directions. (using a signal length of 1ms and pulling low occasionally caused juddering so we ditched it!)

The downside to this approach, of course, is that we don't have a way of programmatically stopping the servos from turning. For our little robots project, we'll live with this restriction.
It's a fine balance between coming up with a project that can be completed inside a couple of hours but still demonstrates "hardware hacking" and spending all day perfecting servo controls which probably wouldn't get used!

Anyway, this is to document how we hacked our micro servos to allow us to create little tiny robots, instead of the big monstrosities normally associated with continuous rotation servos ;-)

For anyone interested, here's the Oshonsoft BASIC PIC code for our servo test board:


Define CONF_WORD = 0x3f18
Define CLOCK_FREQUENCY = 4

declarations:
       Dim servolen As Word
       AllDigital

init:
       Config PORTB = Input
       Config PORTA = Output
       OPTION_REG.7 = 0 'pull-ups on PORT inputs
     
startup:
       While PORTB.0 <> 0
              'do nothing: we have to press the button to start
       Wend
     
loop:

       'button controls direction
       'connect the extra wire from the servo
       'to pin PORTA.1
       If PORTB.0 = 0 Then
              High PORTA.1
              servolen = 0
       Else
              Low PORTA.1
              servolen = 2000
       Endif
            
       'servo control signal
       'for our hacked servo, signal length doesn't matter
       High PORTA.0
       WaitUs servolen
       Low PORTA.0

       WaitMs 15

Goto loop
End

Hacking to make a continuous rotation servo

As part of the up-and-coming HackLlan show-and-tell session, and for the follow-up workshop, we're making robot kits in preparation for the Robot Week Wales.

As with most robotic projects, this begins with hacking some servos to make them rotate continuously. We could just buy factory-set rotational servos from our pals at Oomlout but as the workshop is to include "hardware hacking" we figured we'd have a got at modifying some micro servos.

We're after making some small, compact robots so these micro servos are the perfect size (plus of course, a ready-made continuous rotation servo is £11, a micro servo less than half this at £5 each). We already had a couple of these from an earlier project but if all goes well with this experiment, we'll be buying more!

At this stage, we're not sure if the modifications will work, but we've looked into how a servo works. It's basically a small motor with a control board. The output from the motor is geared right down, giving the servo plenty of torque (twisting power). The control board has a microcontroller and a rotary potentiometer, which is turned as the motor moves the servo "horn", which is connected to the shaft of the motor.

These easiest way to explain this is to have a look at what goes into a servo.
Whenever you take anything apart, the most important tool you can have is a digital camera - and a hammer. Hammers open anything ;-)


We put the hammer to one side and open up the servo with a tiny jeweller's screwdriver.
We actually found that the smallest flat-headed screwdriver worked better than even our smallest cross-headed 'driver (despite the servo having cross-headed screws holding it all together).

You can see that the motor shaft has plenty of cogs, gearing the output down many, many times. This is what gives the servo motor it's power.


Underneath the control board, you can just make out the rotary potentiometer. As the motor turns, the gears and cogs also turn, and the shaft on the second "pile" of cogs causes the wiper on the potentiometer to turn. This signal is fed back onto the control board, so that when the servo head has reached the required position, it knows to stop turning the motor.


We traced the wire from the pot to where it meets the control board. Taking photos (so it can be replaced later if necessary) we snipped the wire from the pot and taped it up. Now, when the motor turns, the control board won't know where the servo head is, and so will keep turning the motor.

The last thing to amend is the physical lock on the servo head.
A small "lug" on one of the cogs stops the head from turning too far during normal operation.


We snipped this lug off the cog and reassembled the servo, using the earlier photographs as reference. We then put the head back on the servo and turned it by hand, to check that it does, indeed, turn through 360 degrees. The last thing to do now is to check that the servo direction can be controlled by our microcontroller.....

Wednesday 12 October 2011

PCBs ordered from PCBCart.com

After receiving such great service from PCBCart.com for our earlier guitar neck part of the project, and struggling to find a quick and easy way to attach cables to our home-etched boards, we decided to put another order in for more PCBs. Soldering multi-core cable to professionally produced boards (with only the pads exposed and solder mask covering the traces) is quite easy when using a solder pot.

Soldering quarter-pitch cable to home-etched boards with exposed traces can get a little messy with bridges and shorts and traces lifting when you try to correct them and so on. Simliarly, using home-brew reflow techniques are a little difficult with tiny components on home-etched boards because when the solder paste melts, instead of it pulling the component into line over the pads, the solder sometimes runs along the traces, dragging the component with it!

 Hopefully all these problems will be solved by using properly masked, professionally produced circuit boards for our little guitars. Now we can simply populate a board and either hot-air gun or bake the board to fix everything in place. We already know that soldering cable to a professionally produced board is much easier and less likely to cause faults, so while we're waiting for these new boards to arrive, we're going to buy/build a stop watch to time how long it takes to build a miniature guitar from start to finish!

 For anyone interested, here's the schematic and PCB layout for the miniature guitars.

Tuesday 11 October 2011

Working guitars - Flying V and Explorer

After what seems to have been months of development (and re-development) we're finally ready to ship our first two miniature guitars. The software is still in "beta" phase, so these are going to our good friends Aaron from Oomlout and Chris at HPC Laser

Here's a video showing the basic guitar functions, and the software in it's current state (including lots of "coder art" - we're techies here are Nerd Club, not artists!)

Each instrument uses an Activex exe (sorry true geeky types, Windows only until someone can write a Linux port) but the benefit of this approach is
  • using a different thread to actually play sounds means more responsive play
  • anyone with a bit of macro-building experience can write their own software to integrate with the instruments.

The software shows how multiple users can share music by recording to a different track for each instrument. This demo shows an existing drum track with a guitar track being played over the top.

[video goes here]

Saturday 8 October 2011

Robot Week Wales Wrexham

It's been a busy couple of weeks and while we've not managed to get much further on the multitude of projects we seem to be working on, we have been involved in some exciting developments.

The first thing is being involved with setting up HackLlan, a new hackspace for Llangollen and North Wales. At the minute it's a small community with a small space, but after less than a week, numbers are already increasing, and just as importantly, so is the interest in the group.

We're also looking to get involved with Robot Week Wales which is a week-long celebration of robotics, based at Techniquest in Wrexham's Glyndwr University


And as part of the build-up to the Robot Week, we're looking to put on a show-and-tell session with other members of HackLlan, to show new potential members the kinds of things they can make at their local hackspace. This will be followed up with a more formal robot-building workshop, where attendees can make their own line-following robot.


So while all this is going on, our recent x-y plotter/cnc pick-n-place machine looks like it's going on hold. But we're determined to soldier on with our miniature instruments developement. The software is almost finished now (we've been working on it over recent weeks, while the internet connection here has been a bit intermittent) so we just need to get our guitars finished and tested and we're ready to launch a new website (details to be posted here nearer the time)