It is sometime called game show buzzer lockout system, but I thought many people confuse with the name so I changed it.
If you’ve watched some game shows like Family Feud, you probably know what a game show buzzer is. And yes, it is a set of buzzers that once a button is pressed, the other button is deactivated to indicate the player who takes answer fastest. It usually is 2 or 3 players at a time on TV. That is easy. But what if you need a buzzer set for 10+ players or teams at the same time. Well, not easy anymore.
I had a project like this about 7 years ago, using an 89s52 as the brain of the system. I just ran the infinite loop to check for some digital pins if connect to ground then turn on a specific the light. I thought it worked not really well since 89s52 run at 20Mhz, not fast enough. I mean the little MCU have to check for 10 digital pins, it should take some time to cycle the checking loop. So, if 2-3 players press the button in that very short time, it doesn’t matter which player press first, but the digital pin in first order always get a lock on the buzzer. In other words, theoretically the first player on the list usually get a lock on the buzzer. So, it’s not really fair. Nobody recognized that anyway. And the wiring also was horrible as well, it looked like a big mess.
Recently, I had this project for a group of youth people. They need 12 stations for 12 players at a time.
I chose a different circuit this time. Found a very interesting circuit on the net, it uses 4 wires to connect each station in serial instead of my old method: all stations have to connect to host - which the host must have as many digital pins as how many stations are in used, and so are the wires.
As you can see in the schema, this circuit has the potential to expand to more stations , say, 20, 30 or even more. Haven’t try that much, but the first prototype I built works fine with 12 stations without any glitch.
This is just the basic circuit to show how it works. You have to work out a little from this circuit to make it works in real circuit.
How it works
It is quite simple.
- • At first, all relay in the stations are in OFF state. The current from 12v source will travel in the circuit as the red line which eventually charges up C1
- • When a button Btn2 on station 2 is pressed, for example, the relay of this station is now powered by 12v source to initialize switching the latch.
- • As soon as the latch disconnected from normally close position, N/C, it cuts off 12v source that charging C1. Thus the entire circuit is powered by C1 as the blue line.
- • RL2 is now powered only by C1 until the latch reaches normally open position - N/O. It doesn’t require much energy to finish swinging the latch now as most energy needed to init the swing of the latch was provided by 12v source.
- • The relay finishes switching, COM and N/O are connected thus the coil of RL2 is now powered by 12v source, and it stops using energy from C1, since voltage from C1 is about 11.3v (12v minus 0.7v - forward voltage of diode). Also this 12v source is not charging up C1 thanks to the diode in serial with the button Btn2.
- • If another button on other station is pressed, e.g. Btn3, the coil of that relay RL3 will be powered by C1. Fortunately, there is not much energy left in C1, not enough make the latch of RL3 move.
- • Same thing happens to other stations, as C1 has energy no more to power up RL1, RL3, RL4, RL5… to make change to the circuit. So, all stations are completely locked in OFF state leave only station 2 locked in ON state.
Note on design - mostly on Transition state
The smart design of this circuit is the two Diodes on each station that block 12v DC from charging C1 and also block 12v goes from ON station to OFF station.
Another smart design of this circuit is the value of C1. It is very important to choose the right value of C1. For small value of C1, like 1uF or 10uF, it doesn’t store enough energy for relay to completely turn the switch, like just half way and out of energy then the latch swings by the spring. Hence, it make repeat clicking sound of the moving latch. If a bigger cap like 220uF or 1000uF is used, it won’t be stable in locking state as there is plenty of juice in C1 to power up another relay and make change to the circuit and may change the lock of the station. This is what I don’t want.
C1 also powers a load. It is a simple LED in this circuit, it could be a light bulb or a small circuit to do thing like flashing a LED stripe in specific pattern. Thus the circuit will look like this:
After trials and errors, 47uF is quite OK for my type of relay, 12v Relay with coil resistance about 400 Ohms (~30mA needed) and the load is a small circuit of Tiny13.
Assume 22uF can store enough energy for one relay, I need 44uF for 2 relay, so 47uF is ok for me since in that very short time of transition state, tiny13 is warming up and does nothing to consume much energy. Although after warming up, tiny13 will turn on the transistor to light up led stripe, it happens after relay finish switching anyway.
If you use a heavy load like 12v 10w light bulb. It would be considered to use larger C1. For roughly calculation, C1 will store 12v instead of 11.4v and 12v 10w light bulb will consume 1A. Additionally, 2 Relay will take another 60mA make it totally 1060mA. For each 30mA, 22uF is needed. Thus C1 should be 22*1060/30=777.33uF. So, you could try closest value of C1 680uF and 1000uF to see if it works. It’s just roughly calculation and it is not correct. so you may need to use much bigger cap for C1.
Another note is you can replace that simple load with a relay to make it simpler. Assuming all the relays are the same type and thus it would take the same time to switch from N/C to N/O. By the time your load starts taking current, the circuit is in in locking state already, and your load is powered by 12v source now. Thus, C1 should be 22uF*3 = 66uF or closest value 68uF.
I made upgrade it with tiny brain (tiny13):
- Simple LED on each station is replaced with a circuit of tiny13 which flashing the LED
- Reset button is replaced with a tiny13 circuit in order to auto reset after a specific time (5s)
- Add a sound module to play some sound effect such as applause, boo-hoo, or ding-ding when it is locking state.
- After success with prototype, I upgrade host using an atmega328 to control timer and also play sound.
And some photos
The box of stations are made of white translucent flexiglass which is lazer-cut and glued together thanks to a friend of mine. And LED stripe is put inside the box so that when it is in lock state, LED stripe will light up the box.
- PCB file for sprint layout 6
- schema file splan
- Arduino sketches for Host, Station and wav-player
My original plan is to use a sound module like wt588d-16p. It was easier this way but when I tested the sound module with my arduino uno using a clean power source from 12v adaptor to produce clean sound, something wrong happened and Arduino Uno + the sound module went up in smoke.
Change the plan! I can’t wait for another sound module from ebay so I make a wav-player module using atmega328 loaded with arduino bootloader and TMRpcm to play sound from micro SD card.
I had some PCBs ready but 3 of them just stop working for a mysterious reason. I think it is bad chips since I just desoldered the atmega328 out and soldered a new atmega328 in and it worked again. Maybe it’s because the price is so cheap, 10x atmega328 smd for AU$17, I couldn’t resist .
After success with prototype, I upgrade to version 1.0 using one single mega328 to handle the timer and wav-player. Also I used a professional PCB service.
For this set of buzzers, I put a small speaker and an amplifier inside the host, using an 2×3w rated 5v class D amplifier - PAM8403 for $AU 1 (yes, 1 aud). For power supply for the amp, I connected it to the same 5v supply for the atmega328. It was horrible, heavily noise came out the speaker and the 5v regulator was super hot. So I made another power supply for the amp using the same dirty trick lm7805+heat sink and 1000uF. After that, noise was audible within about half meter away from the small speaker, so it was acceptable.
Maybe it was a mistake using 5v class D amp for the job because I can’t find a decent power supply for the amp. I mean I can’t find a cheap and decent DC-DC step down converter that handle 1amp output nicely. Hence, it would be a lot better if I use 12v class D amp, 2×15w rated PAM8610, so I don’t need to get a proper power supply, instead just a couples of filter caps should do the trick. For the next set of buzzer then
- PCB file for sprint layout 6
- Arduino sketches for Host and Station
Fill out the form below to add your own comments