Read -110V signal with Arduino

arduinotransistors

I need an Arduino to recognize a falling edge of the pulse from +10 to -110 V. What is the best way of doing that?

My best idea for now is to use an NPN transistor and make something like this:

schematic

simulate this circuit – Schematic created using CircuitLab

This way when I have a +10V on the input, the arduino pin is HIGH. Then the -110V pulse comes, the transistor closes and the pin is pulled to the ground. The resistors values are arbitrary
for now. My questions to you electronics gurus are:
1) will this work?
2) is there a better way to accomplish what I need?

Thanks!

Best Answer

I'm afraid your transistor will not particularly like -110V on its base. Nor is your transistor still a switching device, it's better not to have an emitter resistance if you want a sharp and fast response, since it'll want to be an emitter follower rather than a switcher.

You should make a few small adaptations, though your initial thought is a reasonable one.

First you will want to protect the transistor from noticing much, if anything, from the negative voltage by adding a diode to the input path:

schematic

simulate this circuit – Schematic created using CircuitLab

If it's +10V, the resistor R2 and D1 will conduct current into R1 and Q1's base, this will be the case until the signal falls below an approximate +2V. Around 0V input the diode D1 will start blocking, and all the way down to -110V it'll keep blocking, as long as its breakdown is more than the most negative. The schematic shows 150V+ to indicate that 150V would be a good minimum to set for a safety margin.

The reverse leak of the diode will be mostly handled by R1, so the base can be assumed to be at or very close to ground, 0V.

Now, you might put the resistor back in the emitter path to keep the signal positive, but the emitter follower will make your resistor choices on the input much more sensitive, so it's much easier to just use it as a switcher:

schematic

simulate this circuit

In this way it will make a very nice and sharp flank at or around an input of 2V, so you'll also have a little margin for noise on the input, in case you need it.

Of course your output is now inverted, when the input is high, the output will be low, but in the uC you can also look for a flank upwards, in stead of downwards. On Atmels any pin you can use to look for a flank down, can also look for a flank up with a slightly different configuration, for how to do that with Arduino you'll have to look at those interfaces, I don't know Arduino specifically. But all Arduinos use an Atmel chip.

If you do it in software yourself by comparing values, you can just turn your reaction around.

If you still want a 1:1 response, you can add another transistor:

schematic

simulate this circuit

When Q1 turns on, it pulls the base of the PNP, Q2, low and that transistor will turn on, conducting into the R5, making the output go to the supply voltage. If Q1 is off, Q2's base will be pulled high by R4, and it'll turn off, allowing R5 to pull the output low again.