I have a Shinyei PPD42 that's connected to my Raspberry Pi B+
The PPD42 outputs could be close to 5V (original spec was minimum 4.5V, newer spec is minimum 4V), but Raspberry Pi inputs should not exceed the RPi supply voltage of 3.3V, so some form of level translation is needed for higher-voltages. See this related discussion about connecting that sensor to an ESP8266. (Update: You've kindly explained that you did use a voltage divider between the PPD42 output and the RPi input. However I'll leave this info here for future readers who might not realise this is required.)
All my test suggestions below are with the PPD42 outputs disconnected from the Raspberry Pi.
as seen in this deconstruction of the PPD42 [...] I can't seem to pick up the PPD42's infrared LED on my camera but I can pickup infrared LED from my TV's remote.
This is a very bad sign. You have a confirmed working IR detector (because your camera can "see" the TV IR remote's LED) but which does not show IR emitted from the PPD42 LED. :-( The IR LED in the PPD42 should be lit continuously.
My guess on this is that the expected pulse duration of 10-90ms is probably too short for the multimeter to measure?
Even for a working PPD42 (see below) that's true. According to its datasheet, at its maximum specified detection rate, the PPD42 outputs low pulses for only (typically) 13% of the time, and so its output would still be high for most of the time.
Your only indication of low pulses on a digital multimeter, might be an apparent slight instability in the reading; on an analog multimeter, you might see brief "flicks" of the needle, certainly on 90ms low pulses. This is one area where analog multimeters can allow us to infer more information than basic digital meters, and is why some digital multimeters have a faster-updating (but less accurate) "bar graph" display, as well as the slower-updating (but more accurate) main display.
Or, is this further indication that I'm never getting pulses from the PPD42?
In your specific case, due to the apparent lack of IR from its LED, I suspect this could be true for your sensors. Using an oscilloscope, a logic analyser, or an old style logic probe would confirm for sure.
Could both of my units be defective?
It's impossible to rule out that possibility, with the information so far.
Is there anything else I should be doing to debug this sensor and see how I can get LOW pulses?
An oscilloscope or logic analyser (even a cheap one) would quickly allow you to know one way or the other, whether you are getting any pulses on either PPD42 output.
Since 10ms - 90ms light pulses should be visible to the human eye, you could also try building a low-current voltage probe using a high efficiency (e.g. red) LED and a fairly large resistor (to minimise loading of the PPD42's output) which still allows you to see the LED lit clearly. I'd start with around 3k and wouldn't use less than a 1k resistor.
Connect the LED + resistor between the P1 output and 5V (LED anode towards 5V, of course) and look for brief light pulses. No brief light pulses = no low pulses from the PPD42 (at least, none of the correct length - very, very short flashes wouldn't be visible to the human eye).
Also, as you saw in the PPD42 deconstruction document which you linked, there is a closeup of the PCB and a reverse-engineered schematic (†). You could therefore measure the voltage across the IR LED (LED1).
We don't know the LED's specification, but that document says the LED Vf should be around 1.4V. A multimeter measurement of around 5V (with a 5V supply) would indicate that the LED has failed "open", whereas a measurement of around 0V would indicate it has failed "short".
You have some evidence from your "hand-waving" test, that the photodiode and following circuitry may be working. Therefore another test would be to try using your IR remote control's LED, pointed at the photodiode in the sensor (with the sensor's housing opened, of course) and keeping one of the remote control's buttons depressed. If that does cause pulses on the PPD42 P1 and/or P2 outputs, that would increase our concern about the sensor's own IR LED.
However if there are still no output pulses, we cannot infer anything from that result. That's because there could be a valid reason (even though I don't know it) why the (typically 38kHz) IR remote control's flashes might be filtered or otherwise ignored, even in a working sensor.
If you are able to do any of those tests, then we can try to interpret the results.
(†) I believe there are some errors in that schematic e.g. R14 and R15 (both 10k) are shown as pull-downs, whereas my interpretation of the PCB image is that they are pull-ups to 5V, and the PPD42 specification also says the outputs are op-amp outputs with 10k pull-up.
Of course I could be wrong, as I no longer have a PPD42 sensor to make my own measurements. I just recommend caution in believing the (very helpful, but perhaps slightly incorrect) schematic, until you have confirmed its accuracy yourself.
Replies to test results added to main question:
- I don't have an oscilloscope or logic analyzer handy.
Understood. A cheap USB logic analyser (e.g. a Saleae clone) costs < $10 and can be used with open-source Sigrok / PulseView PC software. Depending on how important this issue is to you, it may be worthwhile getting one. Oscilloscopes obviously cost more, but can show signal quality in a way that logic analysers cannot. Both might help in this situation.
- I followed the instructions to connect a red LED + 3 K resistor (anode on 5 V end). The LED is OFF by default.
With the LED + resistor was connected between P1 and 5V:
LED On = Low output on P1
LED Off = High output on P1
Wouldn't this indicate a constant LOW pulse from P1 or perhaps it's the opposite?
It's the opposite. I thought it was easier for you to look for short flashes of the LED lighting (each flash of light meaning P1 output was going low), rather than looking for short gaps in a normally lit LED.
The LED blinks on/off when I move the box around and wave my hand around the sensor opening (I removed my tape).
That's effectively the same result as your previous "hand-waving" test where, with the sensor open, you were getting different values in your RPi pulse-counting software.
On its own, I get a small LED blink on/off every minute or so.
(I'm assuming that this is with the sensor closed and so in a normal test setup.)
This is new information.
Before, it seemed there was no output from the sensor, as you said:
what I'm finding is that regardless of the project I use, P1 and P2 almost never provide a LOW pulse. So, I end up getting a lot of zeros. For example, I ran the previously mentioned project overnight and didn't see a single calculation above 0 for the whole night.
Now it seems that there are low pulses from the PPD42 - just not very many of them! I believe that this is only possible, if the sensor's IR LED is producing some output. However the lack of IR output visible on your camera contradicts this hypothesis. Perhaps the sensor's IR LED has a very focused beam, and your camera was not at the right angle to see it? Or perhaps the IR LED is just very weak (faulty? wrong type fitted?).
Whatever the reason, this apparent contradiction between two data points (IR LED seems to be working, as you get some sensor output pulses; yet IR LED seems not to work, as not visible using IR-sensitive camera) is something I would focus on understanding.
- I used my multimeter to measured the voltage across the IR LED (back of the board) and got ~1.4 V.
That's a sensible value.
- Pointing in my remote control at the photodiode and holding a button does turn on the LED. However, I noticed that it blinks at a fast rate. I confirmed with my camera that my remote control's LED blinks on its own very quickly.
That gives more and more confidence that the sensor's photodiode and amplification, filter & output circuitry are basically working.
I'll have to find another IR source to test with constant IR light.
I'm not sure how that would help - perhaps if you can fit that constant IR source (another IR LED?) in place of the existing sensor's IR LED, you can see if the number of output pulses increases? I can't think how else to use a constant IR source which isn't physically in the correct place, relative to the photodiode and its lens. Of course that will end up with an uncalibrated sensor.
- When I measure the voltage on P1, I get 4.5 V and 4.7 V (I measured ~15 minutes apart so that's why I got 2 different values). This seems to be higher than the HIGH/LOW pulse range according to the spec sheet. If I recall correctly, I previously measured this to ~4 V, so I'm not sure what could have happened to cause a different measurement.
Different DC voltages measured with a multimeter are difficult to interpret in this situation, for the reasons explained before. They probably mean that there were different proportions of low pulses, resulting in different average DC values displayed on the meter. However I don't see how it's possible to rule out that the normal, static "logic high" voltage has changed.
Based on the new information that there are occasional low pulses in the sensor's output, here's another test:
- The sensor relies on convection to draw air into the optical path between IR LED and photodiode lens. That convection process is driven by the resistor at the bottom of the board getting hot. One possible reason for a very insensitive sensor, would be if that resistor wasn't getting hot. Is the "heater resistor" (RH1) getting hot?