Electronics > Beginners

First Tinkering Project

(1/5) > >>

selkathguy:
Hi all,
    Definitely a young player here (at least to this EE stuff).  I have never been in the industry and have never even taken any classes on the subject (yet).  Been watching the blog videos on YouTube and thought I'd finally make my first post.  This is my first real attempt at doing anything remotely interesting, but I've hit a snag and I have a hypothesis as to why I'm running into issues.  I hope this will be a good way to introduce myself to the community and ask my first question!  :)

But first a short description:
It's a little Arduino powered serial over laser setup.  I'm not trying to create the world's fastest fiber transceiver, I just wanted to test a silly idea for open air transmission and thought it would be neat if it worked.  I am using an Arduino Uno to drive the laser diode at the transmitter, and a smaller Nano at the receiver.  I bought a 128x64 OLED display from Adafruit and slapped it onto the Nano over SPI.

The goal:
Trying to see if it is feasible to get a collimated beam of light to carry some kind of serial over it at any reasonable speed that could be useful for occasional burst transmissions from sensors, what have you.

The technique:
Just for testing purposes I am essentially only sending a clock (I use this term very loosely) at some static, predefined frequency that the receiver is pre-configured to receive.  The only thing the receiver does is attempt to perform a sort of clock recovery and error-detection.  The speed is horrible and the recovery errors are worse, but it does work.  Kind of...  Here are some pictures:

 

 

The scope is hooked up to the receiving Nano at two points: The input to the ADC from the photoresistor (for detecting the light) [in yellow on the scope], and just a curious tap I had on the other side of the filter cap [in blue] (which made a big difference, but I still have little bits of occasional noise, as you can see remaining on the input).  Also the "Error %" on the display is incorrect by two orders of magnitude.  I'd be tickled with .1% error.  Forgot to multiply it out in code oops.  At least the receiver has one nice feature I built in that dynamically adjusts to ambient light and kind of does this pseudo-differential comparison, so it works even in a lit room.  I just turned out the lights for additional "wank factor".

The Problem:
The pictures above show the setup working at pretty much maximum rate (200 cycles/sec) which is slow, but I cannot increase it because the signal becomes indistinguishable, looses amplitude, and generally falls apart at the receiver.  I've checked the specs on the Arduinos and I know I'm still far out from approaching the delay of the AnalogRead() sampling, so it's not that.  Also the transmitter voltage transitions look clean too.  I have tried playing with different values of the components on the receiver but I can't seem to get the signal any better.

My naive hypothesis:
I'm using a standard photoresistor from radio shack (yeah I know  :--) and I wouldn't be the least bit surprised if there's some sort of residual resistance characteristic at these higher frequencies.  That the diode maybe doesn't stop conducting very quickly as the light suddenly goes out, I dunno.  But then after thinking, maybe it isn't just the photoresistor.  Perhaps it is the cheapo laser diode failing to shut down entirely in the trough time of the 'clock' and the fading effect of the laser turning off is going to be my limit here.  Are these suspicions valid?  I'm trying to learn how electronics work and what kinds of things could be affecting my setup.  I'm working in my apartment and not a real lab or anything, so yeah yeah I need mats and stuff but in the meantime, any feedback is appreciated!

Psi:
Are you driving the laser diode directly? or pulsing a laser diode module (with its own internal electronics)?

Also, i'd use a phototransistor instead of a photodiode (only because they're easier to play around with the gain)

selkathguy:

--- Quote from: Psi on January 07, 2013, 06:04:43 am ---Are you driving the laser diode directly? or pulsing a "laser diode module" with its own internal electronics?

--- End quote ---
Direct.  The Arduino Uno can drive it directly without a significant voltage drop, and the transitions from 0v to 5v look good on the transmitter.  Though that doesnt guarantee that the laser is not still glowing when the supply is suddenly dropped.  That would explain the behavior I've noticed of the "cooldown" being more an issue than the "warmup" of the laser, which correspond to the rising and falling edges on the ADC input respectively.

SeanB:
If you suspect the laser diode then drive it by shorting out the actual diode itself with a transistor, depending on the drive will determine what transistor type to use.  Photodiodes work better at higher voltage into a constant current sink, preferably with a filter to remove unwanted light. You might want to try using a IR LED as both transmitter and receiver photodiodes. No visible light though, but they do switch fast.

Kremmen:
Allow me to suspect the photoresistor. Without knowing what chemistry exactly applies here, it is hard to be precise. Still, some photoresistors of the CdS type can have time constants as slow as 100 ms and some, such as the PbSe type, as fast as 2 us. The reliably fastest (easy) detector would consist of a phototransistor driving the base of a normal NPN transistor so that the phototransistor is between base and ground and a bias resistor supplies the NPN transistor base current. This way the phototransistor Miller capacitance is only charged to Vbe of the NPN transistor and the circuit is reasonably fast. You can get even faster by biasing the phototransistor to its linear operating point (assuming its base lead is brought out) and then using a comparator circuit to detect the variations caused by changes in illumination ( of the transmitter that is. You also need to account for changes in the ambient illumination level on the interesting wavelengths).

Navigation

[0] Message Index

[#] Next page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod