Tags:
tag this topic
create new tag
view all tags
---+ The Shinyei !PPD42NS sensor This sensor emits a low occupancy time signal where the relative time the signal is in low state is measured. The connections as are follows: | Shinyei pin | !WeMos Pin | GPIO | Comments | | 1: Common (GND) | GND | | | | 2: OUTPUT(P2) | D6 | 19 | through voltage divider 5V - 3.3V | | 3: INPUT(5V DC 90mA) | 5V | | | | 4: OUTPUT (P1) | D7 | 23 | through voltage divider 5V - 3.3V | | 5: INPUT T1 | D0 | 26 | DAC | ---++ Reading the signal To get a feeling about the signals emitted by the Shinyei !PPD42NS we first write a very simple program (pulses.py) that reads the P1 data line every 1 ms and saves the result in an array. It does so during 10 s. After data taking, the results are printed on the serial line. We can run the program with <verbatim>ampy run pulses.py > data.txt</verbatim> and thus redirect the results into a file that can be plotted with gnuplot. <img alt="smoke.png" height="598" src="%ATTACHURL%/smoke.png" title="smoke.png" width="662" /> The plot shows a measurement where a match has been lighted and the smoke blown into the sensor. The particle concentration can be measured by calculating the relative time the signal is low with respect to the measurement period (low occupancy time). Shinyei publishes a calibration curve in the data sheet showing the relation between the low occupancy time and the number of particles in 283 ml. <img alt="shinyei_calib.png" height="430" src="%ATTACHURL%/shinyei_calib.png" title="shinyei_calib.png" width="564" /> ---++ The driver The shinyei.py driver is implemented as a !MicroPython module. It has the following methods: * __init__(self,P1=23,P2=19,debug=False) : creates a Shinyei object. <br />P1 is the GPIO pin to which the P1 output is connected<br />P2 is the GPIO pin to which the P2 output is connected<br />debug allows to switch on debugging messages * set_debug and get_debug: writes and reads the debugging flag * measure: starts a measurement. Interrupts are enabled on both P1 and P2 and connected to the interrupt handlers edges_P1 and edges_P2<br />The interrupt handlers save the moment in time when the signal falls (starts_P1/P2) and when it rises again (stops_P1/P2). * start_stop_times: allows reading the start and stop times * lot: calculates the difference between stop and start times and sums them (low occupancy time) * lot_per_cent: calculates the percentage of time the signal was low during the measurement period * concentration: uses the calibration function to calculate the dust particle concentration Please compare the above with the driver code: https://github.com/uraich/dust-sensors/blob/main/shinyei/shinyei.py The screen dump below shows a run of a shinyei demo program when very little dust is around. First, the number of events is printed (length of the start or stop times table. Then I print the times when the signal went low and when it went high again. These times are given in ms. Then the low occupancy time is calculated in ms and in % with respect to the measurement duration. Finally, the dust concentration is deduced from the calibration function. The other print lines are debugging messages, which you can easily get rid of by setting debugging to false. <img alt="shinyei_run.png" height="380" src="%ATTACHURL%/shinyei_run.png" title="shinyei_run.png" width="664" /> -- %USERSIG{UliRaich - 2022-06-01}% ---++ Comments %COMMENT%
Attachments
Attachments
Topic attachments
I
Attachment
History
Action
Size
Date
Who
Comment
png
shinyei_calib.png
r1
manage
36.1 K
2022-06-04 - 11:43
UliRaich
png
shinyei_run.png
r1
manage
59.9 K
2022-06-04 - 12:10
UliRaich
png
smoke.png
r1
manage
26.4 K
2022-06-03 - 19:17
UliRaich
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r4
<
r3
<
r2
<
r1
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r4 - 2022-06-04
-
UliRaich
Home
Site map
AFNOG web
Embedded_Systems web
IoT_Course_English web
IoT_Course_French web
Main web
Sandbox web
TWiki web
IoT_Course_English Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
P
P
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
E
dit
A
ttach
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback