#357 TheMonarch
The Monarch is the third in a series of beautiful electronic “bug” boards from the Boldport Club, Project #18 October 2017.
Notes
Parts
Ref | Item | Qty |
---|---|---|
IC1 | 555 IC timer, TI TLC555CP | 1x |
IC2 | Quad 2-input XOR, TI SN74HC86N | 1x |
IC3 | Octal D-type flip-flop, TI SN74HC273N | 1x |
- | IC DIP 8 contact socket, TruConnect DS1009-08 | 1x |
- | IC DIP 14 contact socket, TruConnect DS1009-14 | 1x |
- | IC DIP 20 contact socket, TruConnect DS1009-20 | 1x |
LED1-8 | 5mm clear lens red LEDs, TruOpto OSR5PA5C31C | 8x |
SW1 | Switch, C&K JS202011SCQN | 1x |
- | CR2032 batter clip, Multicomp BC-2001 | 1x |
C1,2 | 1µF capacitors, Suntan TS170R1H105MSBFA0R | 2x |
R1,2,3 | 10KΩ resistors, Multicomp MCF 0.25W 10K | 3x |
R4-22 | 560Ω resistors, Multicomp MCF 0.25W 560 | 18x |
- | 20AWG wire | 16cm |
Circuit
My Take on “How it Works”
The core components:
- a 555 astable timer that is enabled when the “feelers” are touched together, running at around 48 Hz
- 74HC273 D flip-flop, that latches the input (D) to the output (Q) on the rising edge of the clock input
- a 74HC86 quad 2-input XOR
Considering an initial condition of all registers (Q) high:
- XOR Y2 = 1 xor 1 = 0
- XOR Y1 = 1 xor 0 = 1
- XOR Y4 = 1 xor 1 = 0
So on the next 3 clock cycles:
- input D1=0 cascades to Q1,2,3
On the 4th clock cycle, Q4 goes low, XOR Y4 becomes 1, … and so on.
I wrote a little script to simulate this.
$ ./lfsr.py
Which outputs (for the first 32 steps)..
CLK | Q1 | Q2 | Q3 | Q4 | Q5 | Q6 | Q7 | Q8 |
---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
3 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
4 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
5 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
6 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
7 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
8 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
9 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
10 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
11 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
12 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
13 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
14 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
15 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
16 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
17 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
18 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
19 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
20 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
21 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
22 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
23 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
24 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
25 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
26 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
27 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
28 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
29 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
30 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
31 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
The repeating pattern is obvious. This is actually an instance of a
linear-feedback shift register (LFSR).
Since The Monarch has XOR taps at registers 8, 6, 5, 4, the feedback function can be expressed as x^8 + x^6 + x^5 + x^4 + 1
With that function, it should repeat every 255 cycles. Which it does..
$ ./lfsr.py -1
CLK | Q1 | Q2 | Q3 | Q4 | Q5 | Q6 | Q7 | Q8 |
---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
… | ||||||||
254 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
255 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Recently Julian Ilett delved deep into LFSRs in his inimitable style with “The 10,000 Year Shift Register”:
Construction
Here is a quick video of the LED sequencing in action:
All Bugs Together
The Monarch joins The Lady and The Gent in the Boldport Bug series. They are all beautiful boards, so I think mounted together would be nice.
I had an Ikea RIBBA picture frame, discarded the front glass and mounted reflective film at the rear. The bugs are all wired into a 2xAA battery pack with switch on the rear.
Here’s a video of the frame:
Credits and References
- Monarch - Boldport product information
- Monarch - in the Boldport shop
- Monarch - OSH files on GitHub
- Monarch - club community site, packed with resources for the project
- 74HC273 datasheet
- LM555 datasheet
- 74HC86 datasheet
- Ikea RIBBA Frame
- LFSR - wikipedia
- ..as mentioned on my blog