-
Notifications
You must be signed in to change notification settings - Fork 3
Actual Hardware Design
Ok, I have an idea, but... what's it supposed to look like.
If "imitation is the sincerest form of flattery", then I'm totally fine. --Slash/Byte
What does a chess computer look like? Well it could look like anything, that's the problem! So I searched the web and found an old (out of copyright) chess computer from yesteryears. The super sexy Fidelity Chess Challenger 7 Electronic Chess Computer, Fidelity did an amazing job with the aesthetics, its warm, yet industrial, like a hipsters loft.
(Too bad it wasn't open source).
- At-least 16 buttons
- on/off switch
- 4, 14 segment displays
- 2 LED's
- LIPO charger
- Boost converter
- USB port for charging
That's pretty much it, not too bad right? it gets complicated don't worry.
Ok, how do we drive a 4 digit, 14 segment displays? A bunch of shift registers? Wrong! Too many chips and resistors! I like simple things. How about a dedicated AVR to multiplex the segments. Wrong! But your getting warmer. How about some obscure chip, that can't be found, that does up to 128 PWMed LED's and key scanning. BAM! Thats it! I'm talking about the HT16K33. This is actually a great solution, if somebody other than the manufacturer sold the chip. Adafruit does, but you have to buy it on a board.
So there we have it, a chip to do both key scanning and display management, over i2c. I think that's the best part, two pins for 58 LED's and 16 tactile switches. My hats off to Holtek, its a very fine chip, and the dev board its paired with is open source (thanks adafruit).
Now I had a heck of a time with this. Adafruit to the rescue again, they sell a dev board featuring the MCP73871. With a few minor adjustments the MCP73871 fits the bill for Chess Challenger. 500mA charge current over USB and 10mA charge termination, perfect! I clocked the PI pulling a max of 300mA, so this will work for our application. Plus it features load sharing, so I can run the PI and charge the battery, seamless.
For This I used Digikey's awesome search filters and I found a chip with the specs I needed, MCP1642B. Then like any good engineer I "flattered" the application notes (you know you do it too). This has a switched current output of up-to 800mA, 98% efficient, not bad.
So, as I stated earlier, the PI is going to be running in read only mode for the rest of its life. So the introduction of the power switch to the boost converters enable pin, I feel, is perfectly fine.
I feel obligated to mention that the HT16K33 is designed to be run at 5v, I have tested it at 3.3v and it operates fine. However, for this project I am operating the HT16K33 at its recommended 5v. Now if you have some background on the Raspberry PI, you know all the IO is 3.3v, this is a problem if we are going to be talking to the HT16K33. A simple solution is to use logic level shifting on the i2c bus to allow the two devices to play nice. This is accomplished with two N-channel MOSFET's, BSS138.
The layout of the power management circuit I'm particularly proud of. The traces are large to accommodate the high current and lower the overall resistance to ensure the best possible results. That being said, the main power trace could have been a little wider.
I have noticed a little bit of cross talk on the LED traces, in the future I'll make an effort to isolate them more to increase performance.
This was added for convenience and is not electrically necessary. The aim was to add a switch so I can kick the PI into write mode for testing and updates after changing the filesystem.
Much like Adafruit's board, I included the ability to change the i2c address of the HT16K33 if needed. This is done by populating the corresponding resistors, R2,R3,R4, and the diode D3, to set the desired address. The default is 0x70.
The battery indicator lights are brighter than Edison, I need to change the resistor values. I was literally blinded by science.
The silkscreen for the power switch is labeled wrong, "On" is "Off", respectively.
(Your allowed to poke fun at me for that one, I earned it)
