Here's my latest creation, the world's most overengineered TV-B-Gone.
Compared to the original device or the kit, it really offers no functional advantages other than maybe a smaller size or the charging feature. And it cost a lot more to make and is more complicated than it really needs to be. Had a bunch of fun designing/building it though.
- Hammond 1551 translucent blue enclosure, 5x3.5x1.5cm
- ATTiny84A microcontroller
- 8MHz crystal
- 250mAh LiPo cell stolen from a RC helicopter
- LTC4054L lithium battery charger IC, with a mini-USB connector provided for battery charging.
- Eight VLSB3940 IR LEDs in series. These are 3mm, have a 20 degree viewing angle and have the best radiant intensity I could find in a 3mm LED.
- LT3467 boost DC/DC converter, generating +15V for the anode end of the LED string
- 2-transistor constant current source pulling down the cathode end of the string. Currently set for 100mA. Circuit can handle 200mA operation.
- Two bicolor status LEDs, showing microcontroller and charging status.
Software was written from scratch for it, with a few unnecessary changes:
- I'm using variable length coding to store IR codes, which is slightly more efficient than the current TV-B-Gone method.
- On/off timing is done with timers instead of delay functions. Even when it's outputting codes, the CPU spends most of its time in idle sleep mode.
- CPU typically runs at 4MHz, and briefly switches to 8MHz when decoding an IR code.
- BOD disable sleep is used when idle, standby current is <1uA, well below the battery self discharge. BOD is normally enabled at 2.7V for low battery protection.
- There's a few different modes of operation. Classic TV-B-Gone mode, a "repeat the last several codes sent before you hit stop" mode, and an IR torch mode which just turns the IR LEDs on - put in there for testing, never taken out, and entirely useless.
TV turn off codes were stolen from the TV-B-Gone kit firmware - I turned the AVR code into a command line program that dumps a stream of on/off pairs into a file, and wrote a quick C program that converts these codes to the variable length code.
I'll release the Eagle files and software soon, I have to clean them up and figure out a good online place to poke them for sharing.