Plateforme Agir Low-Tech

Commit ff45045c authored by davidmercereau's avatar davidmercereau
Browse files

Documentation

parent 15f91341
# Banc Mesure Temp Surface DS18B20
Utilisation des capteurs de température DS18B20 pour réaliser un banc d'acquisition facile à mettre en œuvre et pas trop cher
@todo : bug constaté, pas de sonde ds si le pi est alimenté en USB par mon PB :-/
Utilisation des capteurs de température DS18B20 pour réaliser un banc d'acquisition facile à mettre en œuvre et pas trop cher. Les DS18B20 sont limités à 125°C (ce qui est ok pour la majorité des points ici) mais il faudra passer par des thermocouples pour les zones plus chaudes (vitres, plancha...)
## Ressources
- [Tableau Kanban](https://gitlab.lowtech.fr/pdm/projets/labo/bancs-acqusition/banc-mesure-temp-surface-DS18B20/-/boards)
- [Dossier partagé NextCloud](https://cloud.lowtech.fr/index.php/f/41709)
## Avertissement ds18b20
## Limite des ds18b20
Attention ce type de sonde fonctionne par BUS, je n'ai pas trouvé de limite théorique mais il est clair que plus il y a de longueur de câble plus il est diffcil d'obtenir un signal fiable (voir d'obtenir un signal)
* Testé avec 6 sondes de 1m,14 de 2m, 4 de 3m, 2 de 5m soit 56m là j'avais aucun signal sur le master
* Testé avec 6 sondes de 1m,14 de 2m, 4 de 3m soit 46m là j'avais un signal mais parfois aléatoire, et dès que la température montait prêt du poêle je n'avais plus de signal
* Testé avec 5 sondes de 1m, 11 de 2m, 4 de 3m soit 39m là ça semble ok, plus table
* Testé avec 5 sondes de 1m, 11 de 2m, 4 de 3m soit 39m là ça semble ok, **plus stable** ! Ce qui fait 19 sondes (on peut monter à plus si on a des câbles plus petits)
C'est donc la somme de toutes les longueurs qui influe la réception du signal ou non...
Note : l'alimentation du raspbery pi doit aussi être bonne, s'il y a une rallonge USB c'est moins stable.
### Multiple BUS 1 WIRE
Non testé mais aparement on peut déclarer maintenant plusieurs BUS 1 WIRE ce qui fait qu'on peut estimer pouvoir faire *3 sur le nombre de sondes décris plus haut au besoin...
C'est donc la somme de toutes les longueurs qui influ la réception du signal ou non...
> https://pinout.xyz/pinout/1_wire#
>
> Newer kernels (4.9.28 and later) allow you to use dynamic overlay loading instead, including creating multiple 1-Wire busses to be used at the same time:
>
> ```bash
> sudo dtoverlay w1-gpio gpiopin=4 pullup=0 # header pin 7
> sudo dtoverlay w1-gpio gpiopin=17 pullup=0 # header pin 11
> sudo dtoverlay w1-gpio gpiopin=27 pullup=0 # header pin 13
> ```
## Pré-requis
* Sondes ds18b20
* Un raspberry pi avec :
* Interface 1 Wire active (raspi-config)
* Un raspberry pi (0 ici mais un 2, 3, 4 fonctionnera) avec :
* [Raspbian](https://raspberry-pi.fr/telechargements/) installé
* Interface 1 Wire active (raspi-config) pour les sondes ds18b20
* Interface SPI active (raspi-config) pour les amplificateurs thermocouples
* Sondes [ds18b20](https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf) (limite 125°)
* [Thermocouple type K](https://www.adafruit.com/product/270) avec amplificateur [max31855](https://datasheets.maximintegrated.com/en/ds/MAX31855.pdf) ([adafruit](https://www.adafruit.com/product/269)) (limite -200°C +1350°C)
## Câblage
Le schéma de câblage ainsi que les sources se trouve dans le répertoire "doc" :
![doc/SchemaBancMessure_v0.1.png](doc/SchemaBancMessure_v0.1.png "Câblage banc test")
Pour faire simple :
* Les DS18B20
* Alimentation (+/-) en 5V
* Data (DQ) sur la [PIN 7 (GPIO 4)](https://pinout.xyz/pinout/pin7_gpio4#) qui correspond au BUS 1 Wire par défaut
* Amplificateur Thermocouple
* Alimentation (+/-) en 5V
* CLK (clock) sur la [PIN 23 SPI 0 SCLK](https://pinout.xyz/pinout/pin23_gpio11#)
* DO sur la [PIN 21 SPI 0 MISO](https://pinout.xyz/pinout/pin21_gpio9#)
* CS sur une GPIO libre (il faudra indiquer sur quel GPIO dans le fichier de configuration)
* GPIO 26 (pin 37), GPIO 16 (pin 36), GPIO 6 (pin 31)....
## Installation
......@@ -47,21 +82,139 @@ pip3 install adafruit-circuitpython-max31855
### Récupération des sources
FIXME
Récupération du code source :
```bash
cd /opt/
git clone https://gitlab.lowtech.fr/pdm/projets/labo/bancs-acqusition/banc-mesure-temp-surface-DS18B20.git
cd banc-mesure-temp-surface-DS18B20
```
## Configuration
Toute la configuration se trouve dans le fichier config.ini
### Lier les sondes
#### DS18B20
### Lier les sondes
Commencer par déterminer les ID des sondes et notez les avec un scotch ou autre sur le câble de la sonde. Pour ça au choix :
Commencer par déterminer les ID des sondes et notez les avec un scotch ou autre sur le câble de la sonde.
* Brancher vos sondes une par une et lancer le script ds18b20-list.sh puis récupérer l'ID de la sonde et notez celui-ci sur un la sonde
* Brancher toutes vos sondes, lancer le script ds18b20-list.sh et immergé les dans un verre d'eau chaude une par une pour déterminé qui est qui...
Brancher vos sondes une par une et lancer le script ds18b20-list.sh puis récupérer l'ID de la sonde et notez celui-ci sur le
Ouvrir le fichier config.ini et indiquer l'ID comme ceci :
```ini
[t0]
type=ds18b20
id=3c01d607b846
```
#### Thermocouples
Ouvrir le fichier config.ini et indiquer la [GPIO/BCM pin](GPIO/BCM pin) sur laquelle est brancher la broche CS de l'amplificateur
```ini
[t23]
type=max31855
gpio=16
```
### Configuration
Configuration général dans le fichier config.ini :
```ini
[general]
# Répertoire de stockage des relevés (en csv)
csv_dir="releves"
# Temps entre 2 mesures (en minute)
delai=5
# Nombre de messure
nb_mesure=500
# Note : la durée du test est donc = delai * nb_mesure
```
## Lancement
Ouvrir le fichier config.ini
Pour lancer l’acquisition :
FIXME
```
python3 aquisition.py
```
On peut stopper l’acquisition par un CTRL + C au besoin
Les résultats (sauf modification) sont à récupérer dans le dossier "releves"
Exemple :
```
#############################################################################
######## Banc de test / Aquisition des mesures
#############################################################################
La configuration (config.ini) détermine :
* que le fichier csv de relevé est : releves/2021-02-15_11-26.csv
* qu'il y aura 500 messures
* que l'interval entre 2 mesures sera de 5 minutes
Le script d'aquisition est donc partie pour tourner 41.666666666666664 heures
Messure N° 0
"tparoi 1" = 20.1
t1 = 31.937
t2 = 29.312
"Vitre" = 33.0
t4 = 30.187
t5 = 27.375
t6 = 30.125
t7 = 32.0
t8 = 29.562
t9 = 30.187
t10 = 31.312
t11 = 29.375
t12 = 28.875
t13 = 30.187
t14 = 27.062
t15 = 30.0
t16 = 31.375
t17 = 30.375
t18 = 31.125
t19 = 28.562
t20 = 29.687
"Plancha" = 33.75
"Foyer" = 45.75
"Evac" = 32.75
"tparoi 2" = 19.9
"tair" = 20.4
Fin de la mesure, on patiente 300 s
-
```
### Lancement
Vous devriez obtenir un fichier CSV de ce type :
> "temps_min",0,5
> "temps_sec",0,319
> "tparoi 1",20.1,20.1
> "t1",31.937,31.812
> "t2",29.312,29.187
> "t3",33.0,33.0
> "t4",30.187,30.062
> "t5",27.375,27.25
> "t6",30.125,30.062
> "t7",32.0,31.937
> "t8",29.562,29.437
> "t9",30.187,30.125
> "t10",31.312,31.187
> "t11",29.375,29.312
> "t12",28.875,28.812
> "t13",30.187,30.062
> ...
## En situation
Voir dossier doc/ExempleMiseEnOeuvre
## Licence
......
......@@ -111,3 +111,7 @@ nice_name="tparoi 2"
type=file
file=/tmp/28-011921191050
nice_name="tair"
[t26]
type=file
file=/tmp/dht-textt
nice_name="text"
"temps_min",0
"temps_sec",0
"tparoi 1",20.1
"t1",31.812
"t2",29.187
"Vitre",33.0
"t4",30.062
"t5",27.25
"t6",30.0
"t7",31.875
"t8",29.437
"t9",30.062
"t10",31.187
"t11",29.25
"t12",28.812
"t13",30.062
"t14",27.0
"t15",29.812
"t16",31.312
"t17",30.25
"t18",30.937
"t19",28.5
"t20",29.562
"Plancha",33.75
"Foyer",45.0
"Evac",32.75
"tparoi 2",19.9
"tair",20.4
"text",11.20
......@@ -10,9 +10,9 @@ import busio
import digitalio
import adafruit_max31855
# indique N° GPIO : GPIO/BCM pin : https://pinout.xyz/
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
# indique N° GPIO : GPIO/BCM pin : https://pinout.xyz/
cs1 = digitalio.DigitalInOut(board.D5)
cs2 = digitalio.DigitalInOut(board.D6)
cs3 = digitalio.DigitalInOut(board.D13)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment