I have another issue. I changed the bareboard. Now it does not work anymore?!
...
IRF654B -> TIP 120
Do you see a wrong part?
Quite strange, because it did already work!!
TIP120 is a different type of a transistor. It's a Darlington whereas the IRF needed for the circuit is a MOSFET (N-channel MOSFET). It can still work but will run much hotter and perhaps will need a heatsink for long operation. Voltage drop across MOSFET is less and so less energy is wasted to heat by the transistor itself. If you don't have power MOSFETs, I would definitely advise getting yourself some. They are not very expensive (less than $1 on eBay from China that is) and they are very often used in various high power circuits because they are able to commutate insane amount of current. The one I'm using is rated for 50V and
110A(!)
I worked on the project some more last night. Nothing good to report yet. I've tried different approaches to the timing of the laser flashes and I think I've exhausted software options by now. Have to take a hard look at the laser driver. It just does not seem to come up to full power in the 10-20µs that we have for individual flashes representing one pixel. So, the end result is that I can see
some output and it does look like the pixels are in order but they are not in the order I wanted them to be. The picture that it projects appears
somewhat stable but it looks nothing like the word "TEST" that I've programmed. I can only see anything if I shut all the lights and the picture is very faint, very hard to make sense of it. So, I need to make sure the brightness is much higher before I can successfully troubleshoot the problems with the pixel ordering.
By the way, I think I never fully outlined the specs I'm going for:
I'm trying for 1 line, 24 symbols, 8x8 matrix for each symbol. So, this display should eventually become something like a
192x8 matrix.
I'm making my calculations based on
1,200RPM - 50ms per rotation.
That leaves us with 50ms/8 =
6250µs per one mirror. That is the full time if the mirror is scanning its full 360°/8 = 45°. However, that's a very wide scan. I think all we have is about
10° max. Otherwise the characters will be way too wide to be recognizable.
So, we now have 6250µs/4.5 =
1388.9µs to illuminate one mirror
Since each mirror represents one line, each pixel then is 1389µs/192 =
7.23µs7.23µs is way too fast for several reasons. For one, the laser has to be insanely bright for the eye to register such short burst of light. My only hope is that when the picture is more of less static, several of these 7.23µs flashes will overlap to create a longer lasting impression in the eye, long enough to actually see it. Anyway, since my test word is only 4 characters, not 24, I have 6 times more time for the pixels but at ~40µs they are still very very faint. Perhaps 24 characters is way more ambitious than the physics/biology would allow.
Another important reason 7.23µs is too fast is that Arduino itself is just not
that fast. I believe microsecond functions (
delayMicroseconds,
micros) are only accurate to 4µs and we need to do way more than a couple operations between individual flashes.
So, there's quite a bit of work left yet. I'll keep you posted!