Differenstrykmåler SDP810
Denne sider viser hvordan man tilslutter en differenstryksensor til en Raspberry Pi. for at kunne forstå denne gennemgang kræves der grundlæggende viden omkring brug af Linux CLI, download af libraries, det vil også være en fordel at have lidt kendskab til Python programmering. Her er et link til fabrikantens dokumentation: Sensirion SDP810 datablad i vejledningen er der taget udklip fra dokumentationen, for at give en forståelse for hvordan forbindelsen til sensoren virker. Sensoren er en digital I2C sensor som er en meget anvendt protokol.
Her ses et diagram over hele opsætningen, der skal bruges:
- breadboard
- 2x 10k ohm modstande
- En Sensirion SDP810 sensor
- En Raspberry Pi
- jumper wires



- Der skal bruges tre libraries for at kunne måle tryk.
- smbus skal importeres for at kunne transmittere data mellem SDP810 tryksensoren og Raspberry Pi.
- math skal importeres for at man kan omregne signalerne fra sensoren, til den enhed man ønsker at få signalet omregnet til.
- time skal bruges for at kunne få en pause mellem hver måling, så hukommelsen ikke bliver opbrugt med det samme.
|
 |
- Der laves en variable som hedder bus, denne laves ud af smbus.SMbus(1). Sensoren har adressen 0x25 denne laves der også en variabel til.
- Det første signal som skrives til sensoren er: bus.write_i2c_block_data(address, 0x3F, [0xF9]), dette sætter sensoren i tomgang. Signalet der bliver sendt består af adressen til sensoren og et register i sensoren som der interageres med.
- time.sleep(1) er en pause på et sekund som er nødvendig for at sensoren kan blive klar til at modtage et nyt signal.
|
 |
 |
Før man kan modtage målinger fra fra SDP810 tryksensoren skal den indstilles til at måle differenstryk. Dette gøres ved at man skriver: bus.write_i2c_block_data(address, 0x36, [0x1E]). Dette er det sidste step inden man kan begynde at læse målinger fra sensoren. |
 |
 |
- For at kunne få uendelig mange målinger oprettes der et while loop.
- Der læses nu måledata fra SDP810 sensoren, ved at lave en variabel ud fra bus.read_i2c_block_data(address, 0, 9) denne kaldes datalist i dette tilfælde. 9 er antallet af bytes som sensoren sender ud.
- De to første bytes er differenstrykket, disse tages ud af listen og lægges sammen. læs mere om bits og bytes her.
- For at få måling omregnet til Pa skal min dividere med 240.
- Når sensoren ikke måler sender den målinger ud som viser max tryk(270+Pa), disse fejllæsninger fjernes ved skrive: if reading_dp>270 :continue.
- print (reading_dp) viser måleresultaterne.
|
 |
 |
 |
Her ses hele programmet og nederst i tabellen ses programmet når det kører. |
 |
 |
Instaler smbus library og indsæt koden i nano på din Raspberry Pi |
$ sudo apt-get install python-smbus python3-smbus python-dev python3-dev i2c-tools |
kode til SDP810 |