kcuzner / onewire-leds

An RGB LED driver on a modified one-wire bus
MIT License
2 stars 0 forks source link

One-wire LED

Purpose

This project is part of a larger team design project. This particular portion is an RGB LED controlled by its own power wire using a variant of the 1-wire protocol.

Protocol

The standard 1-wire protocol uses only two lines: power and ground. Data is transmitted to and from slave devices by a master device by toggling the power line low for short periods of time. The slave devices maintain their power during these short losses using a diode-capacitor rectifier circuit. However, this protocol is not suitable for devices requiring more than a few hundred microamps due to the fact that a large pullup resistor is used on the power line and drawing too much current causes an unacceptable voltage drop.

This device uses a modified version of the protocol that sacrifices the bi-directionality of the protocol for the ability to supply comparatively large amounts of current to attached devices. This is accomplished by using a P-channel MOSFET to switch the power off on the master side in short intervals. No pull-up resistor is used and there is no corresponding open collector transistor on the slave devices (thus removing the bi-directional capability). So long as the capacitor on the slave side of the bus is large enough to sustain their individual current draw, the bus can provide both data and power to devices requiring several several 10s of milliamps of current to operate property (such as an RGB led controller).

This protcol has been modified from the actual 1-wire specification to be simpler to use with a 100KHz tick rate on the master in addition to necessary modifications due to the loss of bidirectionality.

The protocol is as follows: