Difference between revisions of "Pulse Position Modulation"
Line 26: | Line 26: | ||
4. Add some form of automatic error detection ([checksums http://computer.howstuffworks.com/encryption7.htm]) and try to get your receive microcontroller to quantify the percent of successful transmissions. | 4. Add some form of automatic error detection ([checksums http://computer.howstuffworks.com/encryption7.htm]) and try to get your receive microcontroller to quantify the percent of successful transmissions. | ||
− | == | + | == Notes on the board == |
* The transimpedance amplifier doesn't get the signal up to logic level, so we're using an analog input to read the signal. That's not as fast as amplifying the signal in hardware (which is what the new amplifier board does) and then reading it with a digital input. This will likely be your limiting factor. | * The transimpedance amplifier doesn't get the signal up to logic level, so we're using an analog input to read the signal. That's not as fast as amplifying the signal in hardware (which is what the new amplifier board does) and then reading it with a digital input. This will likely be your limiting factor. |
Latest revision as of 09:05, 8 November 2015
This article is currently just a list of resources. It will be (eventually) expanded to explain more concepts.
Understanding PPM
This is a good resource for understanding how PPM works:
http://www.pcbheaven.com/wikipages/Pulse_Position_Modulation/
The part we're most interested in is actually Differential Pulse Position Modulation (DPPM) because it is both more efficient and easier to implement.
Digging a little deeper
Stanford happens to have one of the world's experts on optical encoding on the faculty. One of Professor Kahn's more accessible papers is available here:
http://ee.stanford.edu/~jmk/pubs/dppm.pdf
This is a good introduction to why DPPM is one of the most efficient optical encoding techniques.
What to play with
For those of you working on transmitting data across your 3 CM board, I'd suggest the following development process:
1. Get 4-DPPM working. In other words, output a constant length pulse followed by four possible delay times representing binary values 00, 01, 10, and 11. Write corresponding code to decode this and output the result over serial. 2. Experiment with what the minimum pulse timings you can use are. There will be some point at which you reach the limit of how fast you can detect the pulses. 3. Try to generalize your code to work for 4-DPPM, 8-DPPM, 16-DPPM, etc. 4. Add some form of automatic error detection ([checksums http://computer.howstuffworks.com/encryption7.htm]) and try to get your receive microcontroller to quantify the percent of successful transmissions.
Notes on the board
- The transimpedance amplifier doesn't get the signal up to logic level, so we're using an analog input to read the signal. That's not as fast as amplifying the signal in hardware (which is what the new amplifier board does) and then reading it with a digital input. This will likely be your limiting factor.
- There's a potentiometer near the big chip next to the LED. Turning that to the right increases the brightness of the LED. If you turn it too far to the right, the LED will give you a bright flash and permanently die. Keep it to a half turn or less.
PPM Code Repositories
https://developer.mbed.org/users/tteisberg/code/Optical3cmRX/ https://developer.mbed.org/users/tteisberg/code/Optical3cmTXnucleo/
Ask Thomas for access.