0
\$\begingroup\$

I am trying to trigger a laser using an Arduino. I used a power supply to determine that the laser needs a 3.5V (or higher) signal, at which point it draws around 2.2mA from the power supply. When supplying the laser with 5V, it draws 3.7mA from the power supply. The signal is delivered through a BNC cable. My Arduino can only supply 3.3V on its digital pins. I've tried using a level shifter and also tried using two cascaded inverters to increase the voltage level.

The problem is that while the voltage increases as expected when the laser is disconnected, the moment I connect the laser the voltage drops.

  1. Using the level shifter, the voltage drops from ~5V to 1.2V. The power supply says it provides 0.5mA, but using a multimeter I measure 0.58mA going into the laser.

  2. Using two inverters, the voltage drops from ~4.3V to 3.4V. The power supply says it provides 0.2mA, but using a multimeter I measure 2.02mA going into the laser.

The level shifter is an AN97055, just very standard as far as I can tell. The inverter I'm using is SN74LS14N.

What could be causing this? Can the level shifter and inverter not maintain enough current? The Arduino (GIGA) can supply 8mA on its digital pins, so that should be fine. If I were to use something like BOB-12009, would that help? It seems it allows for higher current.

\$\endgroup\$
6
  • 2
    \$\begingroup\$ Why all the "I tried this, I tried that"? Don't you have a datasheet of the ideal conditions for the laser? You can't design anything without a spec, a laser is a component like any other. \$\endgroup\$
    – Lundin
    Commented Jan 16 at 13:58
  • \$\begingroup\$ The laser supposedly works using TTL signals, however, for some reason it doesn't. Perhaps something is broken, I don't know, but repairing is not an option currently, that's why I'm trying this approach. If you want to know specifically, it's a Superlum BS-840-1-OEM with booster. \$\endgroup\$ Commented Jan 16 at 14:26
  • \$\begingroup\$ The friendly datasheet says it needs +12 VDC/1.5A, for a maximum power consumption of 18W, I take it you supply it separately. \$\endgroup\$
    – Lundin
    Commented Jan 16 at 14:31
  • \$\begingroup\$ Yes, I supply that separately. \$\endgroup\$ Commented Jan 16 at 14:32
  • 1
    \$\begingroup\$ If the laser accepts TTL, then 3.3V from Arduino should be well above TTL requirement of 2.0V. Why does it need 3.5V? Where are the specs for the sync input? \$\endgroup\$
    – Justme
    Commented Jan 16 at 15:06

4 Answers 4

2
\$\begingroup\$

The output stage of an LS14, like almost all bipolar TTL circuits, does not swing all the way up to its Vcc (+5 V) because the pull-up device is an emitter follower. A simple change is to change the part to the CMOS 74ACT14. AC and ACT series gates have a much more robust output stage that can source and sink 24 mA with a relatively small voltage drop. When sourcing 4 mA it will swing much closer to its Vdd (+5 V).

\$\endgroup\$
1
\$\begingroup\$

That kind of level shifter uses the MCU output to sink current, so it is limited by how much current the MCU can sink. That's not your issue here, but it could be relevant later (see below).

The MCU output is not involved in sourcing current, that comes from the pullup resistor, whatever value you have used, when the MOSFET turns off. So if you have a 10kΩ pullup and load the output with 3K it won't be able to get above 1.15V.

If you need to source more current you can use a proper level shifter chip, use a 74HCTxx gate as a level shifter or buffer the output of your present level shifter with a 5V HCMOS gate etc. etc. You could, of course, try to reduce the value of the pullup but whether that will work depends on the details.

\$\endgroup\$
1
\$\begingroup\$

You could probably make this work with only the AN97055, but you'll need to wire it up like this:

schematic

simulate this circuit – Schematic created using CircuitLab

I imagine you've tried to place the laser diode between HV1 and ground, but here I've put it between HV1 and +5V. That's because R4 limits current flow from HV (+5V) out of output HV1. Consequently HV1 is unable to source much current towards ground. However, it is able to sink whatever current you like directly from +5V, via load D1.

As long as the GPIO is able to hold its output at 0V, MOSFET Q1 is fully on, and there will be the full 5V across load D1. This means that all diode current must be sunk by the GPIO output. You say that it can handle 8mA, so it should do just fine.

It also means that a GPIO low output will light the laser.


All 74LS TTL ICs have the same problem; their outputs are able to sink a lot more current than they can source. So again, you'll have better luck connecting the laser diode between +5V and the 74LS14 inverter output:

schematic

simulate this circuit

Alternatively, you can parallel TTL outputs to boost their current sinking/sourcing ability:

schematic

simulate this circuit


The best solution (in my opinion), and the easiest, is to use literally any 74HCT gate to power the laser diode. 74HCT (The "T" is important) devices have 3.3V compatible inputs, so your GPIO will operate their inputs perfectly well. Power comes from the +5V supply, meaning their outputs are either 0V or +5V. The gate could be an inverter from a 74HCT14, or an AND gate from a 74HCT08, a NOR from a 74HCT02 etc.

In addition, they have CMOS outputs, meaning they can source and sink current equally well, and their output potentials will be much closer to the supplies than regular TTL could ever be. Here's how I'd do it, using a 74HCT1G08:

schematic

simulate this circuit


Don't forget you can use a plain old BJT or MOSFET:

schematic

simulate this circuit

\$\endgroup\$
2
  • \$\begingroup\$ The laser diode is not driven by powering it with the TTL signal. It's just for a control signal. \$\endgroup\$
    – Justme
    Commented Jan 16 at 15:04
  • \$\begingroup\$ Putting the laser between HV1 and +5V is actually a perfectly adequate solution for me at this point, thanks for the suggestion! Eventually I'll buy one of the 74HTC gates or something similar like the other commenters recommended. \$\endgroup\$ Commented Jan 16 at 22:24
1
\$\begingroup\$

I am not sure why you are "level shifting". You could just drive the laser diode like this.

schematic

simulate this circuit – Schematic created using CircuitLab

The BSS138 has a threshold voltage of 0.6 to 1.4 V, so it should work fine with 3.3V logic. You could substitute another similar MOSFET for this one. I chose the BSS138 only because it is available on CircuitLab.

R2 is used to ensure the gate current is not too large that it could damage the GPIO. R1 may or may not be necessary, depending upon the laser diode. It should be sized to limit the current to within the diode's specs.

\$\endgroup\$
1
  • \$\begingroup\$ No, you can't drive it like that because signal is not used to drive the laser diode itself. The TTL signal is a control signal for a separately powered 18W laser module. \$\endgroup\$
    – Justme
    Commented Jan 16 at 15:09

Not the answer you're looking for? Browse other questions tagged or ask your own question.