Offline
Newbie
Karma: 0
Posts: 14
|
 |
« on: September 18, 2012, 06:40:25 am » |
Bonjour, debutant dans l'arduino je me pose plusieurs questions. Je souhaiterais installer une sonde de temperature assez loin d'ou sera ma carte arduino (ethernet sans POE), je me demande donc s'il est possible de mettre la longeur de cable que l'on veut entre la carte et la sonde de temperature. Merci d'avance
|
|
|
|
|
Logged
|
|
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2438
|
 |
« Reply #2 on: September 18, 2012, 07:06:57 am » |
Je souhaiterais installer une sonde de temperature assez loin d'ou sera ma carte arduino (ethernet sans POE), je me demande donc s'il est possible de mettre la longeur de cable que l'on veut entre la carte et la sonde de temperature.
bonjour La longueur de "cable" possible est surtout fonction de la sonde de température utilisée. c'est une sonde T° de quel type/technologie ?
|
|
|
|
|
Logged
|
|
|
|
|
Moselle (FR)
Offline
Full Member
Karma: 0
Posts: 144
|
 |
« Reply #3 on: September 18, 2012, 11:26:29 pm » |
Bonjour, Je souhaiterais installer une sonde de temperature assez loin d'ou sera ma carte arduino (ethernet sans POE), je me demande donc s'il est possible de mettre la longeur de cable que l'on veut entre la carte et la sonde de temperature.
La longueur du bus I2C est limitée en fonction de la capacité parasite de la ligne, mais il est possible d'atteindre quelques centaines de mètres avec des drivers spécialisés pour les lignes I2C longues (P82B715, P82B96 ou autres). icare
|
|
|
|
|
Logged
|
2B OR NOT(2B) = FF Arduino 1.0.1 + Notepad++
|
|
|
|
France S-O ou exil en IDF
Offline
Edison Member
Karma: 12
Posts: 1074
|
 |
« Reply #4 on: September 19, 2012, 02:39:44 am » |
Bus I2C........limitée en fonction de la capacité parasite de la ligne Plus précisément la limitation est provoquée par l'effet filtre passe-bas de la capacité conjuguée avec la résistance de charge de la ligne. Exemple si la résistance de charge Rc des lignes SDA et SCL est de 10kohms, du point de vue analogique le schéma équivalent sera un générateur de 0/5V associé à une résistance série Rs = Rc = 10 kohms. C'est ce couple (Rs,C) qui forme un filtre passe bas qui écroule les fronts de montée et de descente. La limite de fonctionnement est atteinte quand le front est écroulé à un point tel que la reconnaissance des "0" et des "1" n'est plus possible. Si la ligne est trop capacitive la première chose à faire est de diminuer la valeur des résistances de rappel au +5V. Comme les modules esclaves sont alternativement "écouteur" et "causeur" le mieux, quand la liaison est longue, est de répartir les résistances de rappel de chaque coté de la ligne afin d'équilibrer les deux sens de transmission. Si cela ne suffit pas, où qu'on arrive a des courants trop importants dans les transistors de sortie, il est possible de diminuer la fréquence horloge du bus en dessous des 100kHz habituels (autant éviter de base l'horloge à 400kHz). Et si cela ne suffit toujours pas effectivement il y a les ampli de bus comme indiqué par Icare.
|
|
|
|
|
Logged
|
Aides toi et la communauté t'aidera
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 14
|
 |
« Reply #5 on: September 19, 2012, 07:52:46 am » |
Bonjour, Je pensais à une sonde de temperature de ce type: http://ww1.microchip.com/downloads/en/DeviceDoc/21942e.pdfJe pense qu'il me faudrait une bonne centaine de mettre de fil. Autre question, comme je l'ai dit precedement, je souhaite debuter en arduino, voulant surtout utiliser l'ethernet je me demande s'il il est preferable de prendre directement une carte arduino ethernet ou une carte uno avec un shield ethernet? De plus il me semble que l'arduino ethernet a un nombre limité d'entrée\sortie par rapport à une carte uno avec shield ethernet? Merci d'avance
|
|
|
|
|
Logged
|
|
|
|
|
Rennes
Offline
Full Member
Karma: 0
Posts: 207
|
 |
« Reply #6 on: September 19, 2012, 10:21:21 am » |
C'est un capteur analogique tu as là. Si tu tiens à être en ethernet, il te faut un capteur qui cause ce protocole (je ne sais pas si ça existe). Pour Arduino tu peux opter pour un capteur numérique avec un protocole 1-wire: https://www.sparkfun.com/products/245Apparemment avec du câble cat5 y'en a qui ont pu atteindre 100m de longueur sans trop de soucis.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 14
|
 |
« Reply #7 on: September 19, 2012, 11:20:10 am » |
C'est un capteur analogique tu as là. Si tu tiens à être en ethernet, il te faut un capteur qui cause ce protocole (je ne sais pas si ça existe). Pour Arduino tu peux opter pour un capteur numérique avec un protocole 1-wire: https://www.sparkfun.com/products/245Apparemment avec du câble cat5 y'en a qui ont pu atteindre 100m de longueur sans trop de soucis. quelle difference entre un capteur analogique et un capteur numerique? je ne vois pas en quoi un capteur ne fonctionnerait pas avec l'ethernet ?
|
|
|
|
|
Logged
|
|
|
|
|
France S-O ou exil en IDF
Offline
Edison Member
Karma: 12
Posts: 1074
|
 |
« Reply #8 on: September 19, 2012, 12:06:08 pm » |
quelle difference entre un capteur analogique et un capteur numerique? Avant d'acheter les centaines de mètre de câble je pense qu'il serait préférable de lire les datasheets des : LM35 -> capteur analogique DS7505 -> capteur numérique bus I2C DS18B20 -> capteur numérique bus OneWire afin de voir comment on les utilise.
|
|
|
|
|
Logged
|
Aides toi et la communauté t'aidera
|
|
|
|
Ile-de-France (92 sud), France
Offline
Edison Member
Karma: 22
Posts: 1817
|
 |
« Reply #9 on: September 19, 2012, 01:31:49 pm » |
Ne mélangeons pas tout. je suppose que tu considère la liaison Ethernet pour connecter ton Arduino à un réseau de façon a par exemple héberger une page Web qui donnera la température. Tu ne compte pas utiliser Ethernet pour relier le capteur de température à l'Arduino ?
Différence entre analogiquet et numérique : - En analogique, le capteur va fournir une grandeur électrique (généralement tension mais cela pourrait être courant) qui dépend de la température. C'est par exemple le cas du composant Microchip que tu donne en référence. On lit sur la 1ère page que suivant les versions, il fournit une tension proportionnelle à la température de 10mv par °C (ou 19,5mv par °C). Avec un tel capteur si tu le met au bout de 100m de câble la conversion température->tension est faite dans le capteur mais la mesure de la tension est faite sur l'Arduino (par une entrée Analogique). Le problème c'est qu'au bout de 100m de câble, la tension que mesure l'Arduino n'est plus tout à fait la même que celle fournit par le capteur. En effet il faut prendre en compte les parasites (les 100m de câble vont faire antenne et ramasser tout les rayonnements du coin). Déjà que le composant n'est pas très précis (précision de +/-2°C). Bref pas terrible. Un capteur analogique est plutot limité à des usages "locaux" c'est à dire très proche avec cables très courts.
- en numérique, le capteur fait la mesure de température et transmet directement la valeur en numérique sous la forme généralement d'une liaison série. Il y a plusieurs standards de liaison série pour capteur tels que 1-Wire (1 fil), I2C (2 fils), SPI (3 ou 4 fils). Il n'y a plus de problème de traduction de la mesure car elle se fait directement dans le composant. Il ne reste plus qu'un problème de transmission numérique qui somme toute est généralement plus simple tant que (comme indiqué plus haut) tu ne cherches pas à aller trop vite.
Donc pour ton problème de capteur situé à 100m de l'Arduino, le numérique s'impose. De mon point de vue l'I2C sera le plus fiable car plus facile de contrôler la transmission (vitesse, ...). tu peux ainsi relier ton capteur à l'Arduino avec un câble téléphonique à 4 brins (VCC, GND, SCL et SDA). Comme dit plus haut, il va falloir "tuner" un peu les résistances pour que çà fonctionne bien. Un oscilloscope serait bien pour cela mais je suppose que tu n'as pas ce genre d'instrument. Le 1-Wire présente l'inconvénient d'avoir des timings fixés. Il n'est pas possible de "tuner" la vitesse pour limiter les problèmes de transmission. Donc je l'écarterais dans un premier temps.
|
|
|
|
|
Logged
|
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC# RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2438
|
 |
« Reply #10 on: September 19, 2012, 02:12:10 pm » |
Ne mélangeons pas tout. je suppose que tu considère la liaison Ethernet pour connecter ton Arduino à un réseau de façon a par exemple héberger une page Web qui donnera la température. Tu ne compte pas utiliser Ethernet pour relier le capteur de température à l'Arduino ?
Différence entre analogiquet et numérique : - En analogique, le capteur va fournir une grandeur électrique (généralement tension mais cela pourrait être courant) qui dépend de la température. C'est par exemple le cas du composant Microchip que tu donne en référence. On lit sur la 1ère page que suivant les versions, il fournit une tension proportionnelle à la température de 10mv par °C (ou 19,5mv par °C). Avec un tel capteur si tu le met au bout de 100m de câble la conversion température->tension est faite dans le capteur mais la mesure de la tension est faite sur l'Arduino (par une entrée Analogique). Le problème c'est qu'au bout de 100m de câble, la tension que mesure l'Arduino n'est plus tout à fait la même que celle fournit par le capteur. En effet il faut prendre en compte les parasites (les 100m de câble vont faire antenne et ramasser tout les rayonnements du coin). Déjà que le composant n'est pas très précis (précision de +/-2°C). Bref pas terrible. Un capteur analogique est plutot limité à des usages "locaux" c'est à dire très proche avec cables très courts.
- en numérique, le capteur fait la mesure de température et transmet directement la valeur en numérique sous la forme généralement d'une liaison série. Il y a plusieurs standards de liaison série pour capteur tels que 1-Wire (1 fil), I2C (2 fils), SPI (3 ou 4 fils). Il n'y a plus de problème de traduction de la mesure car elle se fait directement dans le composant. Il ne reste plus qu'un problème de transmission numérique qui somme toute est généralement plus simple tant que (comme indiqué plus haut) tu ne cherches pas à aller trop vite.
Donc pour ton problème de capteur situé à 100m de l'Arduino, le numérique s'impose. De mon point de vue l'I2C sera le plus fiable car plus facile de contrôler la transmission (vitesse, ...). tu peux ainsi relier ton capteur à l'Arduino avec un câble téléphonique à 4 brins (VCC, GND, SCL et SDA). Comme dit plus haut, il va falloir "tuner" un peu les résistances pour que çà fonctionne bien. Un oscilloscope serait bien pour cela mais je suppose que tu n'as pas ce genre d'instrument. Le 1-Wire présente l'inconvénient d'avoir des timings fixés. Il n'est pas possible de "tuner" la vitesse pour limiter les problèmes de transmission. Donc je l'écarterais dans un premier temps.
Bonsoir barbudor Je n'ai aucune experience d'I2C sur "grande longueur" en ce qui concerne le 1-W , 100m c'est illusoire si utilisation du mode parasitic power (possible en theorie, mais grosse galere de MaP) en revanche en mode alimenté localement (sur point ou distribué par un 3eme fil) c'est une solution fiable en prenant bien en compte les point suivant : le 1W est un bus serie lent, au louchometre de precision  il faut tabler sur une acq/seconde mais en thermometrie "domestique" le taux d'actualisation et la precision des capteurs est "somme toute" relative 
|
|
|
|
|
Logged
|
|
|
|
|
Moselle (FR)
Offline
Full Member
Karma: 0
Posts: 144
|
 |
« Reply #11 on: September 19, 2012, 02:30:00 pm » |
Bonsoir Artouste,
Personnellement je suis fan du bus I2C distance courte, longue ou radio, et c'est souvent une solution élégante et fiable. Les solutions radio peuvent également remplacer les liaisons filaires. Solutions faciles à mettre en œuvre avec les modems radios existantes sur le marché. icare
|
|
|
|
|
Logged
|
2B OR NOT(2B) = FF Arduino 1.0.1 + Notepad++
|
|
|
|
France S-O ou exil en IDF
Offline
Edison Member
Karma: 12
Posts: 1074
|
 |
« Reply #12 on: September 19, 2012, 02:45:22 pm » |
Une autre différence entre le 1wire et l'I2C c'est qu'en 1wire on ne transmet plus l'horloge, elle est re-créer par le récepteur à partir du flot de données. Il n'y a plus à vérifier que la synchronisation temporelle horloge/data est conservée. Le maintien de la synchro sur quelques mètre est trivial mais ce n'est pas gagné d'avance sur plus de 100m. C'est un plus du 1Wire, surtout quand on n'a pas d'oscillo.
|
|
|
|
|
Logged
|
Aides toi et la communauté t'aidera
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 14
|
 |
« Reply #13 on: September 20, 2012, 09:31:13 am » |
Merci bien pour vos avis et explication. Il est donc preferable de prendre une sonde numerique. Maitnenant il reste à choisir entre 1-wire et I2C. Si j'ai bien compris l'I2C sera de meilleur qualité sur une grande distance.
|
|
|
|
|
Logged
|
|
|
|
|
France S-O ou exil en IDF
Offline
Edison Member
Karma: 12
Posts: 1074
|
 |
« Reply #14 on: September 20, 2012, 10:30:16 am » |
Difficile de répondre pour moi les deux ont des avantages et des inconvénients. Le seul juge sera le terrain. Si j'étais a ta place je fera un essai avec les deux types de sonde sur 10m/50m avant de passer à 100m et plus. Le coût des sondes sera dérisoire devant celui du câble.
|
|
|
|
|
Logged
|
Aides toi et la communauté t'aidera
|
|
|
|
|