Robot Beacon
Page 1

Robot Beacon uses a PIC12C508A OTP (One Time Programmable) 8-pin microcontroller. There is a lot of controversy over the type of microcontroller that should be promoted in a project such as this. 
There are at least three manufacturers of microcontrollers suitable for this application and it's a nightmare trying to work out the best type to promote. 
The problem is: each type has its own language and its own set of idiosyncrasies. Some chips have good features and others have different features, some chips have lines that are input-only, some have more lines or more memory, etc etc etc.  
To gather up all the facts, prepare a set of instructions, present all the information on the operation of the chip, create sample programs and design a project to teach how to write a program, takes months and months of development time. 
It boils down to this:
The PIC family have the most amount of information and back-up available on the web in the form of projects and examples. Check it yourself. For the other types, it is almost non-existent. 
We have already done a complete exercise for the PIC12C508A and PIC16F84, and to wander off to a different processor requires starting the development process all over again. 
The cost of all processors in the low-end range is almost the same and the features are very similar (when you are not using it to its limit), so why not go with the "swim."
It is most frustrating that each processor has its own language, as this is an enormous barrier to incorporating a second or third range of devices into a development course.
We have already provided all the software and hardware for the development of a number of projects using the PIC12C508A and there is little point jumping to another device, just because it is the "flavour of the month." 
Only when something startling (such as re-programmable) comes along in an 8-pin device, will we change. 
"Nothing is either good nor bad, but thinking makes it so."
 Colin Mitchell - Editor. 


Robot Beacon is available as a kit or ready built
There are at least three ways you can build the Robot Beacon: 
You can buy a ready-built Robot Beacon.
You can buy a kit with a pre-programmed chip,
You can buy a kit with a blank chip, 
You can buy a kit with a blank chip and modify the program using a PIC16F84 and adapter socket.

You will need the Multi Chip Programmer to burn your own chip if you don't get it pre-programmed in a kit.

Files and information:
How to re-burn a '508A.
All Robot Beacon files. This window contain notepad.exe  Click on notepad.exe and it will open. Drag a file to notepad and the contents will display!
Multi Chip Programmer - will burn your chip.
MPASM - assembles your .asm file into a .hex file for burning.
ICPROG.exe  and a help file: - software for burning.
(See Burning A Program for help on setting-up ICProg)
Logic Probe (kit) - a very handy piece of test equipment - again, using a PIC12C508A!

Robot Beacon is a rotating light. We have called it Robot Beacon as it has been designed as an addition for a robot, but it can be used for many applications. 
It can be used as a mast-head beacon on a boat or as an "all-round" warning light on a bike. The author saw a similar device in a "What's New!" store for $99!
This is another project to show the versatility of the PIC12C508A. It's a handy little chip for all sorts of applications. 
Even in a project such as this, it takes the place of at least two chips. But the LEDs are switch-mode at a duty cycle of 50% at 500Hz and it would be difficult to produce this with less than 3 chips. Switch-mode saves nearly 30% in current (from 30mA to 20mA). A full explanation is given in the article. You can modify the effect, make it reverse, invert the effect or randomize it. This would normally take 4 or 5 chips. The display can be turned off in bright light. A photo-darlington transistor has been included to detect surrounding light level. 

Complete Robot Beacon

There is more in this article than a chip and a few LEDs.  
It's a good start to two of the topics we are covering in our electronics course. 
These are:
Programming a PIC12C508A chip
Using a Logic Probe

Designing a project involves three separate areas of work. The author has one area where he builds the prototypes. It has a soldering iron, test equipment and all the parts needed for prototyping. 
Another area is where the hand-writing takes place, including circuit designing and where the pages of books are laid out, plus the library of reference books. The last area has the computer, multi-chip programmer and is where the pages are typed on the computer for the web (and future books).  
I think yours will be the same. Most often the workshop is separate from your computer and you will have another section called "library," holding books and where things can be written and laid out. 
This project involves all these areas, and more. It introduces the use of a Logic Probe to help with the design and testing of a project and how to produce program for the 8-pin PIC12C508A.
Even a project as simple as this can require trouble-shooting and the Logic Probe we have designed is one of the best. 
It is both a logic probe and a pulser as well as producing a number of tones and tunes to test audio amplifiers. 
We cover its assistance with this project, in the text. 
We also show how to produce a program for the PIC12C508A. This chip is normally very difficult to use as it is not "user friendly." It is a One Time Programmable device and if the program does not work perfectly, the chip has to be thrown away. 
For developing a program, you need a number of EPROM versions (also called "window" versions) as well as an ultra-violet lamp. This adds considerably to the cost of development and makes it impractical for the hobbyist. We have "cut around" the costs and developed a brilliant new approach. 
It is also discussed in the article. 
There's a lot to be covered, so let's start . . .

This project has 4 different levels of involvement. 
1. You can buy it ready-made.
2. You can buy a kit with a ready-programmed 8-pin chip. This only requires soldering and does not involve any programming. 
3. You can buy the kit with a blank PIC12C508A and burn your own program. (You will need the Multi Chip Programmer.) 
4. You can modify the circuit, use the Logic Probe to check it, write a program in a PIC16F84, use an adapter socket, burn a program in a PIC12C508A and be involved in the project to its fullest. 


In most of our projects, we specify BC 547 and BC 557 to indicate an NPN or PNP transistor that has no special requirements. It represents a simple, basic, general-purpose transistor. 
The specifications for this type of transistor is generally accepted as:

Voltage handling capability collector-emitter: 
about 25v
Current handling capability:
about 100mA
DC gain:
about 100

Some magazines use the term TUN and TUP for Transistor Universal NPN and Transistor Universal PNP. 
BC 547 and BC 557 are the "lowest" or "simplest" transistors you can get. They have a minimum current handling capability and a fairly low voltage capability and this means almost any other transistor can be used as a substitute. Using transistor types such as BC 547 and BC 557  is common in many magazine all over the world. They were one of the first transistor types to be readily accepted in the design of equipment and all technicians understand their characteristics. 
If we specified types such as BC182L or  BC214L many readers would immediately say "Why has this transistor been used?"
We want to keep the circuit easy-to-understand and that's why we specify the simplest type. Most of our circuits will take any of the general-purpose types and when we indicate a type other than BC547 or BC557, you will need to look at the specifications, to find the reason. 
Generally there are two reasons for selecting a type other than BC547 or BC557. It is usually HIGH VOLTAGE and/or HIGH CURRENT. 
These requirement increase the cost of a transistor enormously and that's why we don't specify them unless it is absolutely necessary.

The circuit uses five outputs of the chip to drive 16 LEDs. Two LEDs are placed in parallel on each output (something you should not really do) so that they are illuminated at the same time. Four lines are used to produce a "run-of-four" or "4-chase" and one line is used to select between two banks. When the select-line (GP4) is HIGH, the BC 547 transistor is turned ON and the first four LEDs in the sequence are activated by the outputs mentioned above. When the select line is taken LOW, the next four LEDs in the sequence are activated. This gets the action to 180.   LEDs on the other half of the display are also activated during this time and thus the sequence is complete. Two LEDs run around the display at the same time. 
You will notice each output drives a pair of LEDs in parallel. In our case, they cannot be placed in series as the voltage drop across each LED is 2.2v (they are high-bright LEDs). The voltage across two LEDs would be 4.4v plus .35v across each transistor and this does not give any meaningful voltage for the current-limiting resistor. If the supply drops 1v, the LEDs would not illuminate. 
The only problem with this type of design is the need to match the LEDs. In other words, the LEDs should come from the same batch or manufacturer. 
If two LEDs with different characteristics are used, one LED will be robbed of turn-on voltage and will produce a very dull output.
The LEDs in the kit are all high-bright and can be seen at 100meters (yards).
Now we come to some of the other components. 
The three components across the power rail are important. 
The 100n across the chip is to provide good start-up for the oscillator inside the chip. 
The 100u electrolytic helps maintain brightness of the LEDs when the battery is low and the 10k resistor bleeds the 100u when the circuit is turned off. Without the resistor, a very small voltage will remain in the electrolytic and this will maintain memory in many of the cells inside the chip. 
When the chip is powering down, the content of some cells gets jumbled and if the micro is turned on in this state, it will fail to start-up (the chip does not have "brown-out" detection).
The MEL-12 Photo-Darlington transistor puts a low on the input line of the micro when it detects light and the program is held in a loop, looking for a high on this line. 
The operation of a photo transistor has been covered in our Basic Electronics Course, on page 47.
By using a low value resistor on the collector, it requires a high level of brightness to turn the circuit off. If a high value is used for the load, the slightest amount of illumination will turn the circuit off.  
The program executes one cycle before closing-down in bright light, to prove the program is working. 
A small black hood can be placed over the photo transistor to keep the circuit operating at all times. 

A LED is capable of being turned on and off very quickly. It produces light by the passage of current though a crystal and not via the heating of a filament, such as in a globe. This means the LED will turn on and off very quickly as there is no filament to take time to warm up and cool down. 
There are two ways of activating a LED. One is to deliver a fixed current and the other is to deliver pulses of current. 
One of the amazing things about a LED is the delivery of pulses of current. If you deliver a slightly higher current in short pulses, the illumination produced is the same as a constant current at the lower mA value. 
Providing the pulses are delivered at a repetition rate above 100Hz, you will not be able to detect any flickering and the overall energy taken by the LED will be lower. 
That's what we have done in this project. The LEDs are not turned on with a constant current but pulsed at about 500Hz.

 Kits for this project are available from Talking Electronics. 


au$29.50 plus $2.20 post

Order kit

2 - 100R     all  1/4 watt    5% resistors
4 - 470R
1 - 4k7
1 - 47k 
1 - 100n monolithic capacitor "monoblock" 
1 - 100u 16vw electrolytic 
16 - 5mm red LEDs 
1 - 1N 4004 power diode 
1 - BC 547 transistor or similar 
5 - BC 557 transistors or similar 
1 - MEL-12 photo Darlington transistor
1 - black sleeve for MEL-12
1 - 8pin IC socket
1 - PIC12C508A chip (with routine)
1 - Battery Snap
1 - 4-AA cell battery holder
4 - AA cells
1m - very fine solder 
1 - Robot Beacon PC board

Kits for Robot Beacon can be obtained from Talking Electronics:

Adaptor Socket 
au$5.40 plus $2.20 post
us$3.40 plus $5.50 MAX post

The kit comes with very fine solder to introduce you to the "best aid ever devised for soldering."
Fine solder makes soldering so much easier. The quality of your soldering improves enormously and you will not want to go back to thick solder again. 
Make sure you apply a small amount of solder to the actual joint as the only real item you want in the solder is the flux. It's the flux that makes the joint small and shiny, It makes everything "stick" better. You can see the edges of the joint have a better adhesion to the track-work when fresh solder is used. 
All our boards are pre-tinned and have a solder mask around the lands to the solder will only adhere to the required places. 
It's not until you work with one of our boards that you will never go back to a board without the same features. 
Here's an unusual question: "What's the life of solder?"  
"About 5 seconds!"
Solder is absolutely useless without rosin (or resin) and the rosin must be melted to provide its cleaning properties. 
So, the life of solder is only during the time when the rosin is melting and evaporating.  That's why you have to apply the solder at the joint. Trying to carry hot solder on the tip of a soldering iron is impossible. It is absolutely DEAD by the time it reaches the joint. Sometimes you can "tack" a component by using dead solder on one lead. You can then solder the other lead with fresh solder and re-do the first connection by adding fresh solder. 

Before starting, decide on where you will be using the project so the positioning of the LEDs can be worked out.  They can be facing radially outwards or towards the front, to produce a miniature sign such as for a train layout. 
The type of LED can also be altered. The kit contains 5mm high bright LEDs but these can be changed for diffused LEDs of any colour and size. 
There is only one point to note. Each output drives two LEDs in parallel and they must be of the same type as the voltage drop across each must match very closely. For example, one LED in the parallel pair cannot be a different colour as each colour has its own characteristic voltage drop and the LED with the lowest drop will rob the other of voltage. If a LED does not see its characteristic voltage, it will not turn on AT ALL. This is one of the major differences between a LED and a globe. Alternate LEDs in the sequence can be a different colour.   
Fit the IC socket first. Use our resistor identifier to identify the 470R from the 4k7. Fit a maximum of three or four components at a time and cut the leads after soldering. If the LEDs are to face outwards, fit the leads down the holes and bend them over so the body just touches the edge of the board. 
Make sure the short lead is identified as the cathode and matches the line on the overlay. 
The short lead of the MEL-12 is the collector. Keep the Photo Darlington transistor off the board to prevent it getting too hot when soldering. 
The last item to solder is the leads of the battery snap. These can solder to the underside of the board to keep the appearance neat.
Fit the chip to the project and connect the 6v supply. The LEDs will rotate approximately two revolutions per second. If the speed is increased (by altering the value of the delay in the program), the effect is lost. Your eye sees too many LEDs ON at the same time.

Note the placement of Mel-12 photo transistor

Hopefully, Robot Beacon will not work when it is switched on. This might be an amazing thing to say, but the only time when you will start to learn how anything works is when something goes wrong. 
The author has serviced more than 35,000 TV sets and thousands of other appliances and NOT ONCE, through the whole of his University course, did the concept come up, that a circuit may not work!
The whole approach of an instructor was: design this or that and it will work FIRST GO!  But that's not reality. 
Talking Electronics produced the first magazine in the world to include a section: "If it doesn't work." 
And when something doesn't work, that's when you really start to learn.
Even a simple project such as Robot Beacon can be used as a learning experience. 
You can use a multimeter to check the voltages on the outputs and a Logic Probe to check the lines to see what is happening. 
The Logic Probe designed by Talking Electronics has a number of features. It even produces a beep every 5 minutes to tell you to turn it off!

Logic Probe

It's ideal for trouble-shooting or testing a circuit before adding the chip(s) and switching on.. 
The author needed the Logic Probe for the prototype, to check the LED sequence, before the program was written. The wonderful part of a microcontroller is its versatility. Any of the outputs can be used in any sequence and if an output did not correspond to the sequence around the display, the program could be written to suit the layout. Similarly, if the track-work for the board could not be designed around the circuit diagram, any output pin could be changed to suit the track-work. That's why the final circuit diagram had to wait for the board to be produced.
The Logic Probe has an additional feature. It includes a PULSER. One end of the board is a Logic Probe and the other end is a Pulser. 
The pulser will inject a signal of approx 20mA into a circuit, with an amplitude of approx 5v and a frequency of 2Hz.  This will flash a LED without damaging it or put a tone into a speaker to see if it is working. The 2Hz signal has a 300Hz waveform within each HIGH.  
The low output current of the pulser is ideal for working on a finished project as you can probe around the various pins of the chip without damaging any of the outputs. 
A multimeter set to "current range" is very dangerous when used on a working project as it will put a  heavy load on an output pin and possibly damage the chip (a multimeter set to current is similar to a low-value resistor).
You cannot measure the output current of a drive-line without taking special precautions. This is a topic for further discussion. For now, use either a Logic Probe or a multimeter (set to volts) to detect the HIGHs and LOWs.

If you have assembled a kit, there should be very little reason why the project does not work. 
The chip is pre-programmed and the PC board shows exactly where each component is placed. 
The only possibility is a component around the wrong way. This could be a LED, IC or a cell in the battery box. There is one BC557 transistor. Make sure it goes in the right location.  Check all solder connections as a joint may be missed or a small amount of solder may be bridging two connections.
It's hard to imagine a resistor in the wrong location, but the 470R has only one colour different to a 4k7 and they may be in the wrong places. Get someone else to check your work as it is very difficult to locate your own mistakes. 
Use the Pulser end of the Logic Probe to turn on the LEDs. Pins 3, 5, 6 and 7 will each turn on 4 LEDs when the chip is removed from the board as the two sinking transistors must see a definite HIGH or LOW for only two LEDs to turn on. The pulser will pick up a reversed or damaged LED, a fault in the track-work or a missed solder joint. 
If the program in a PIC16F84 does not work, you have to get the project to a point where you can determine if the fault is hardware or software. 
Fit a pre-programmed chip to the project and make sure the circuit is working correctly before working on your program. 
Everything you do must be in small steps. This is the only way you can guarantee you are going to solve the problem.
Make sure the program in the PIC16F84 has been assembled for a PIC16F84 in MPASM and correctly burnt for a PIC16F84 in IC_Prog. 
Once the program for PIC16F84 in Beacon Files is working, you can start to modify the code to your own requirements. 

Moving a program from one processor to another can create a number of problems.  You have to know the differences and limitations of each processor. A transfer is really only possible within the same family. Fortunately, the PIC12C508A is a smaller version of the PIC16F84 and nearly all the instructions can be used. There are however, a number of instructions that cannot be used and a number of things that you must be aware of. 
A full list of differences is provided in the PIC Programming Course, page 24.
The table below is a summary of these differences and provided they are remembered, you can write a program for a PIC16F84 (using ONLY instructions that are common to both chips) and your program will not have to be altered when the code is assembled for a PIC12C508A:

(when migrating to a PIC12C508A)
Files: 0Ch to 4Fh 
Only use files: 0C to 1F
Files: 07 to 1Fh
Only use files: 0C to 1F
Memory: 000 to 2FFh (1024 bytes)
Only use memory to 1FEh
Memory 000 to 1FFh (511 bytes)
Only use memory to 1FEh
Program is written in EEPROM - can be erased and re-written 1,000 times Program can be written only once in each location.    See re-burning a '508A 
CALL operates to full memory CALL operates to 0FFh
RETURN is not available - use RETLW 00 to 0FFh
RB0 - in/out line
RB1 - in/out line
RB2 - in/out line
RB3 - in/out line
RB4 - in/out line
RB5 - in/out line
GP0 - in/out line
GP1 - in/out line
GP2 - in/out line
GP3 - input ONLY
GP4 - in/out line
GP5 - in/out line
Stack is 8-high Stack is 2-high
  ADDLW - not available
  SUBLW - not available
  OPTION 0DFh - Make GP2 an input and disable weak pull-ups
EEPROM - 64 bytes EEPROM - 0 bytes

The following diagram shows the input/output lines for the PIC12C508A matching the PIC16F84:

The Robot Beacon program can be completely re-written or only partially modified to suit any requirement. 
It's very easy to see how the program works as it has been presented in a "flow-through style" called "linear programming" where the micro advances down the program and does not divert to sub-routines. This makes the program appear large because of the repetition of instructions. 
This has been done for a purpose. This type of program can be placed ANYWHERE in a PIC12C508A as no CALL instructions are required. If a CALL instruction is used, the program can only reside in the first 0FFh locations of a '508A.  
Normally a Delay routine would be CALLed after each output is turned on or off (and only one delay sub-routine would be needed) but in our case the delay includes a 50% duty cycle in which each output is turned on and off to pulse the LED with current and each delay routine is different. 
The select-line (GP4) cannot be pulsed as it selects between two different banks of LEDs and so each output (GP0, GP1, GP2 and GP4) must be pulsed. 
The diagonally-opposite LEDs are illuminated at the same time on the display and this feature cannot be changed. You can have one pair, two pairs or three pairs on at the same time, to achieve different effects. 
You can also alternate the effects if you intend to use the project as a miniature display on a train layout. The display can rotate forwards, then back, or stop, or flash. 
The chip will not be overloaded with any choice of illumination as the LEDs are driven via buffer transistors and the chip is delivering less than 10mA from each output. 
The chip, load resistor for MEL-12 and bleed resistor across the supply, take approx 2mA, leaving about 20mA for two LEDs in parallel. Since the on-time is 50%, the peak current through each LED is 20mA, making the average current 10mA. This produces a brightness equal to a constant current of approx 20mA. 

continued on Page 2 . . .                

To Top