Bonjour,
Je suis en train de découvrir un nouveau monde qu'est le votre. Bravo pour cela.
Un de mes projet est de créer un capteur de niveau d'eau pour plusieurs puits/cuves.
L'idée étant de réaliser cela avec un capteur de différentiel de pression (XGZP6897D) pour avoir une adaptation a la pression atmosphérique.
Un tube parfaitement étanche et rigide descend au fond du contenant, quand le niveau du liquide monte, la pression dans le tube augmente.
en comparaison avec la pression atmosphérique, nous avons le niveau d'eau.
Merci pour la bibliothèque. je ne l'avais pas trouvé.
Pas encore de question, mais je risque d'en avoir plusieurs plus tard. Pour valider et optimiser mon code notamment.
Tu as écrit l'équation du système ? A 1ère vue, la pression dans le tube va dépendre du niveau d'eau, certes, mais aussi de la température : pour un gaz parfait, PV = kT (pression*volume est proportionnel à la température absolue)
Je ne sais pas si la dissolution de l'air est négligeable ou pas pour mon utilisation, la surface en contact avec l'eau n'est que de quelques mm2, mais la question se pose.
Mon besoin de précision n'est pas énorme, et j'expérimenterai pour s'avoir a quel niveau de précision je peut m'attendre avant de "déployer" sur tout les cuves.
Un solution serai de faire descendre le niveau du liquide sous l’extrémité du tube, à chaque "vidange" (passage au niveau zéro) pour faire un pseudo-reset.
Pour se qui est de la température, les variations devraient être minimes, soit dans des cuves isolées, soit dans des puits (géothermie, merci)
Dans la finalité, une gestion i2c semble effectivement approprié, j'ai un peut plus de 25m pour le capteur le plus éloigné. Le projet comprend 5 capteurs(niveaux)
Ah oui !
Tu sais que l'I2C a été conçue pour des distances de quelques dizaines de cm sur une même carte ?
Oui bien sûr ,depuis l'ouverture de cette norme I2C, des gros progrès ont été faits mais la prudence et l'expérimentation s'imposent.
Il y a les 25 m, ce n'est pas rien, et il y a aussi les cinq capteurs en parallèle sur SDA et SCL.
On dit que l'I2C utilise des collecteurs ou drains ouverts, la principale caractérisque d'un drain ouvert est d'être un montage en émetteur/source commun.
La conséquence est que la capacité d'entrée des différents circuits raccordés est
chargée souvent au travers de 5 ou 10k,
déchargée par le rdson du transistor émetteur qui fait moins de 50 ohms.
Il y a un rapport 100 entre le temps de charge et celui de décharge.
Ce qui déforme le signal reçu par les autres circuits.
C'est pour cela que, si 25 m ne passent pas, il faudra "probablement" diminuer la fréquence de l'I2C .
Il est possible de baisser la résistance de 10k mais attention au courant qui augmente.
Toutes les sondes sont connectées en parallèle, ce qui fait que si elles ont 10 k chacune, la résistance à prendre pour le calcul du courant dans les transistor SDA et SDH sera 10k/5 = 2k
Par contre en SPI le bus n'est pas bidectionnel et les sorties des composants sont en classique étage complémentaire. En SPI avec un avr on peut atteindre 8 MHz d'horloge.
Complément :
En I2C comme en SPI on transmet horloge et data.
Le signal Data est déformé par le transport.
Pour que le micro récepteur puisse traiter les informations le signal Data est :
remis en forme sur son horloge (celle qui provient de l'émetteur).
puis ensuite il est synchronisé avec l'horloge du micro récepteur et le traitement peut commencer.
En pj deux feuilles manuscriptes pour illustrer mes propos.
soyez indulgent c'est fait à la main
-> le pdf ne passe pas.
Attention, attention, attention.
Ne vous meprenez pas, je ne dis pas ce qu'il faut faire. Je n'ai pas de solution clé en main.
J'explique, ou du moins j'essaye d'expliquer, ce qui se passe afin que vous puissiez analyser votre situation.
Solution possibles :
Il n'y a pas d'ordre préférentiel dans les propositions.
baisser la valeur des résistances pour diminuer le facteur RC
diminuer la fréquence I2C pour augmenter la période et donner du temps au signal afin qu'il puisse s'établir.
utiliser des circuits intégrés spécifiques I2C pour régénérer les signaux ou pour ne pas mettre brutalement les esclaves en parallèle ce qui revient à aditionner les capacités des circuit d'entrée.
Je sais que des CI existent, je ne connais pas de référence et je ne connais pas les prix.
Au hasard de mes lectures j'ai découvert qu'il existe des circuits intégrés qui convertissent (dans les deux sens) de l'I2C et du RS485.
Merci beaucoup pour ta réponse.
Effectivement d'autres interrogations supplémentaires a prendre en compte.Il y a suffisamment d'entrées pour éviter le multiplexage et ses limitations.
Merci encore pour les ressources