|
1 | | -# Two projects inside one github repository: |
| 1 | +# Three projects inside one github repository: |
2 | 2 | * Coherent Sapphire 488mW Laser GUI written in LabView |
3 | | - * Thorlabs LDC Arduino controller and a GUI written in LabView |
| 3 | + * Thorlabs LDC205C Arduino controller code and a LabView GUI _(ldc205c)_ |
| 4 | + * Thorlabs LDC500 Arduino controller code #2 and a LabView GUI _(ldc500sh)_ |
4 | 5 |
|
5 | | -## Coherent Sapphire 488mW GUI: |
6 | | - |
7 | | -[Our team](http://titan.physx.u-szeged.hu/~adoptim/) got a Coherent Sapphire 488nm laser with the LP USB CDRH Driver Unit. This means, it can be only controlled via RS-232. So I wrote a similar GUI as the Arduino LDC205 one, but with advanced internals (STATES). It can be used with any Coherent Lasers as far as I know, because during startup it will check for minimum and maximum laser power values. |
8 | | - |
9 | | -### Changelog: |
| 6 | +## Changelog: |
10 | 7 | * Initial release with states. |
11 | 8 | * It searches for a config file: _Documents\LabVIEW Data\LaserControlSettings.ini_ |
12 | 9 | * There is also a build. |
| 10 | + * Create the second arduino driver: ldc500sh |
| 11 | + |
| 12 | +# Graphical User Interface in LabView 14. |
| 13 | + |
| 14 | + |
| 15 | +# Coherent Sapphire 488mW GUI: |
| 16 | +[Our team](http://titan.physx.u-szeged.hu/~adoptim/) got a Coherent Sapphire 488nm laser with the LP USB CDRH Driver Unit. This means, it can be only controlled via RS-232. So I wrote a similar GUI as the Arduino LDC205 one, but with advanced internals (STATES). It can be used with any Coherent Lasers as far as I know, because during startup it will check for minimum and maximum laser power values. |
13 | 17 |
|
14 | | -## thorlabs-ldc-arduino the arduino code for a laser driver. |
15 | | - * Arduino UNO R3 controller for Thorlabs LDC205, and LDC500. |
| 18 | +# LDC205C: For laser 405nm, for the PWM to LowPass filter edition board. |
| 19 | +We have a Thorlabs LDC205C which controls a Nichia 405nm laser diode. To control the diode current, an Arduino's PWM output is driven at 31kHz and RC LowPass filtered. This Arduino UNO R3 and board can be used to create diode currents below 200mA, read back the diode current, and enable/disable laser. |
| 20 | + * Arduino UNO R3 controller for [Thorlabs LDC205](http://www.thorlabs.de/newgrouppage9.cfm?objectgroup_id=10&pn=LDC205C), and LDC500. |
16 | 21 | * You can split the MOD IN output to control both lasers with the same modulation. (We don't use both lasers at the same time.) |
17 | | - * http://www.thorlabs.de/newgrouppage9.cfm?objectgroup_id=10&pn=LDC205C |
18 | 22 | * Serial communication examples are used |
19 | | - * The String->float conversion: http://forum.arduino.cc/index.php?topic=179666.msg1331654#msg1331654 |
20 | | - * LP Filter: http://sim.okawa-denshi.jp/en/PWMtool.php |
21 | | - * PWM speedup from here: http://playground.arduino.cc/Code/PwmFrequency |
22 | | - * DHTlib, get it from here: http://playground.arduino.cc//Main/DHTLib |
| 23 | + * [The String->float conversion](http://forum.arduino.cc/index.php?topic=179666.msg1331654#msg1331654) |
| 24 | + * [LowPass Filter Calculator](http://sim.okawa-denshi.jp/en/PWMtool.php) |
| 25 | + * [Arduino Timer PWM speedup from here](http://playground.arduino.cc/Code/PwmFrequency) |
| 26 | + * [DHTlib, get it from here](http://playground.arduino.cc//Main/DHTLib) |
23 | 27 |
|
24 | 28 | ### Sort of documentation: |
25 | 29 | * LabView GUI for LDC205 ver 1.0: https://gajdicookbook.wordpress.com/2016/02/07/189/ |
26 | 30 | * Rewritten to a Cobolt subVI free version. Updated to ver 2.0. |
27 | 31 | * The Project and a build is also included. |
28 | | - * Controller: https://gajdicookbook.wordpress.com/2015/02/16/arduino-controller-for-thorlabs-ldc200c-series/ |
| 32 | + * [Controller](https://gajdicookbook.wordpress.com/2015/02/16/arduino-controller-for-thorlabs-ldc200c-series/) |
| 33 | + |
| 34 | +### Start Here for the Arduino Controller LDC205C edition: |
| 35 | + 1. Clone the repository to your sketchbook folder. |
| 36 | + 2. Connect the BNC connectors: |
| 37 | + * LD REM to pin 13. (Same as the L Led on the board) |
| 38 | + * MOD IN to pin 11. (You can split the output.) |
| 39 | + * CTLOUT1 to pin A0. (first laser) |
| 40 | + * CTLOUT2 to pin A1. (second laser, read only mode) |
| 41 | + 3. Calculate the Low-pass filter R&C values from here: http://sim.okawa-denshi.jp/en/PWMtool.php |
| 42 | + 4. Burn it to your Arduino UNO. |
| 43 | + 5. Optionally connect a DHT22 sensor. |
| 44 | + |
| 45 | + ### Currently used R&C values: |
| 46 | + * R=5k3 Ohm |
| 47 | + * C=105 |
29 | 48 |
|
30 | 49 | ### Changelog for the thorlabs-ldc-arduino & GUI: |
31 | 50 | * Merged the DHT22 temperature code, from the branch. |
|
34 | 53 | * De-blobbed the previous LabView GUI, and included in this repository. |
35 | 54 | * It searches for a config file: _Documents\LabVIEW Data\LaserControlSettings.ini_ |
36 | 55 | * There is also a build. |
| 56 | + |
| 57 | +## LDC500SH: For laser 637nm, for the PWM to NPN-NPN-LowPass filter edition board. |
| 58 | +Recently we installed a 637nm laser into a second laser head which is controlled by a LDC500. To control the diode current an Arduino's PWM output is driven at 31kHZ and converted to 0-10V region. This is then LowPass filtered. This Arduino UNO R3 and board can be used to create diode currents from 0mA to 400mA, read back the diode current, and control a solenoid shutter. |
| 59 | + * Arduino UNO R3 controller for [Thorlabs LDC500](https://www.thorlabs.de/thorproduct.cfm?partnumber=LDC500). |
| 60 | + * [Simulation](http://www.falstad.com/circuit/circuitjs.html?cct=$+1+0.000005+10.20027730826997+29+5+43%0Ar+0+128+48+128+0+10000%0Ar+0+32+0+128+0+10000%0Ar+-160+144+-32+144+0+10000%0Ar+80+112+144+112+0+1000%0Ar+192+112+192+208+0+10000%0Ad+-144+32+-144+80+2+default%0Ad+-128+80+-128+32+2+default%0Ad+-112+32+-112+80+2+default%0Ad+-96+80+-96+32+2+default%0Aw+-144+80+-128+80+0%0Aw+-128+32+-112+32+0%0Aw+-112+80+-96+80+0%0Aw+-96+32+0+32+0%0At+-32+144+0+144+0+1+0.5735729797720364+0.6114101312853065+160%0Ag+0+208+0+272+0%0Aw+0+160+0+192+0%0AR+-144+32+-192+32+0+0+40+12+0+0+0.5%0AR+-160+144+-192+144+4+5+1000+5+0+0+0.7822%0At+48+128+80+128+0+1+-8.636823909212664+0.037837152566076566+100%0Aw+0+32+32+32+0%0Ac+144+112+144+208+0+0.000009999999999999999+6.134599156316293%0Aw+144+112+192+112+0%0Aw+144+208+192+208+0%0Aw+80+208+0+208+0%0Aw+0+192+0+208+0%0A368+32+32+32+-32+0+0%0Aw+80+144+80+208+0%0A368+192+112+224+112+0+0%0A174+32+32+128+48+0+1000+0.5+Resistance%0Aw+80+112+80+48+0%0Aw+80+208+144+208+0%0Ao+27+64+0+4099+10+12.8+0+2+27+3%0Ao+25+64+0+4099+20+12.8+1+2+25+3%0A38+17+3+1+1000+Frequency%0A38+17+5+1+100+Duty%5CsCycle%0A) |
| 61 | + * |
37 | 62 |
|
38 | | -# Start Here for the Arduino Controller: |
| 63 | +### Start Here for the Arduino Controller LDC500 edition: |
39 | 64 | 1. Clone the repository to your sketchbook folder. |
40 | 65 | 2. Connect the BNC connectors: |
41 | | - * LD REM to pin 13. (Same as the L Led on the board) |
42 | | - * MOD IN to pin 11. (You can split the output.) |
43 | | - * CTLOUT1 to pin A0. (first laser) |
44 | | - * CTLOUT2 to pin A1. (second laser, read only mode) |
45 | | - 3. Calculate the Low-pass filter R&C values from here: http://sim.okawa-denshi.jp/en/PWMtool.php |
46 | | - 4. Burn it to your Arduino UNO. |
47 | | - 5. Optionally connect a DHT22 sensor. |
| 66 | + * OptoRelay for solenoid to pin 13. (Same as the L Led on the board) |
| 67 | + * MOD IN to pin 9. (You can split the output.) |
| 68 | + * CTLOUT1 to pin A5. (first laser) |
| 69 | + 3. Burn it to your Arduino UNO. |
48 | 70 |
|
49 | 71 | # Communication with the Controller: 115200 8N1 |
50 | 72 | ## Send Command: Carridge Return (\r) |
51 | 73 | * l? -> GET laser status (0: disabled, 1: enabled) |
52 | | - * l[0,1] -> DISABLE/ENABLE laser |
| 74 | + * l[0,1] -> DISABLE/ENABLE laser or shutter |
53 | 75 | * i? -> GET laser current (float [mA]) |
54 | 76 | * p?, pa? -> GET laser power (float [W]) |
55 | 77 | * slc[0..100] -> SET laser current |
56 | | - * p[0.0001..0.1] -> SET laser power |
| 78 | + * p[0.0001..0.1] -> SET laser power (only LDC205C) |
57 | 79 | * hrs? -> GET uptime in minutes (float) |
58 | 80 | * sn? -> GET serial (int) |
59 | | - * ilk? -> GET interlock state (always 0) |
60 | | - * f? -> GET operation fault state (always 0) |
61 | | - * leds? -> GET led status (1: Power on, 7: Laser on) |
| 81 | + * ilk? -> GET interlock state (always 0) (only LDC205C) |
| 82 | + * f? -> GET operation fault state (always 0) (only LDC205C) |
| 83 | + * leds? -> GET led status (1: Power on, 7: Laser on) |
62 | 84 |
|
63 | | - ## Second laser, just readout |
| 85 | + ## Second laser, just readout (only LDC205C) |
64 | 86 | * j? -> GET laser current (float [mA]) |
65 | 87 | * q?, qa? -> GET laser power (float [W]) |
66 | 88 |
|
67 | | - ## DHT22 Communication: |
| 89 | + ## DHT22 Communication: (only LDC205C) |
68 | 90 | * d? -> GET sensor status (0: error, 1: ok) |
69 | 91 | * dt? -> GET temperature (float) |
70 | 92 | * dh? -> GET humidity (float) |
|
76 | 98 | * Thorlabs: https://www.thorlabs.com/thorproduct.cfm?partnumber=LDC500 |
77 | 99 | * Coherent: I have the Operator's Manual on paper. |
78 | 100 |
|
79 | | -# Currently used R&C values: |
80 | | - * R=5k3 Ohm |
81 | | - * C=105 |
82 | | - |
83 | 101 | # Issues with Arduino Leonardo: |
84 | 102 | * The board does not handle SerialEvents. [FIX](http://forum.arduino.cc/index.php?topic=150558.msg1131262#msg1131262) |
85 | 103 | * [The board does not have Timer2](http://provideyourown.com/2012/arduino-leonardo-versus-uno-whats-new/): |
86 | 104 | * Timer4 can be used, but a different board design and pins are needed. |
87 | 105 |
|
88 | | -# Graphical User Interface in LabView 14. |
89 | | - |
90 | | - |
| 106 | +# If you need help with the electronics, contact me. |
0 commit comments