Je partage votre réticence à mettre tout un processeur par capteur, cependant ...
RS-485 pour les communications capteur / sortie sensibles aux coûts
Je peux recommander ce qui suit, c'est ainsi que je fais maintenant ces types de capteurs / périphériques de sortie:
- Très petit processeur local de type Arduino par position de capteur
- Pilote RS-485
- Très petit bloc d'alimentation local à mode commuté
- Puissance centralisée
- Connexion via CAT-5 ou câble d'alimentation + paire de données
Cela signifie que vous pouvez garder toute votre électronique par capteur très petite, ce qui simplifie tout (moins de bruit, moins de problèmes). Le logiciel pour parler au capteur est dédié - pas de multitraitement ni d'entrelacement de fonctions, il dispose d'un processeur complet. S'il n'y a qu'un seul capteur, je mets un adaptateur RS-485 sur l'ordinateur récepteur; plus généralement, j'ai un appareil Atmega avec RS-485 et Ethernet et je convertis vers et à partir de paquets UDP. Ensuite, le serveur - ou les serveurs, si faciles à rendre redondants - peuvent faire le travail partout où cela leur convient.
RS-485 est bon marché et simple et facile à déboguer si vous suivez quelques règles simples. Cela fonctionne sur de courtes ou longues distances. Vous choisissez votre vitesse et configurez un protocole simple (facile pour les ingénieurs en logiciel) et cela fonctionnera pour toujours. Je l'exécute souvent à 9600 ou même plus lentement. Si vous avez des LED adaptées, vous pouvez comprendre les casses sans aucun outil. C'est suffisamment simple que j'ai suivi un cours «d'informatique physique» dans une école d'art de New York pour faire démarrer un réseau en un seul après-midi, basé sur un format très similaire à syslog (RFC 3164) plus un CRC-32.
Dne pas utiliser radio Je me suis tenu à l'écart de tout ce qui est basé sur la radio, sauf là où il est absolument impossible de faire passer des câbles. On ne sait tout simplement pas quand une machine à interférences arrivera: trop souvent, c'est quelque chose comme des talkies-walkies de presse ou de police lors de l'inauguration de mon événement.
Dn'utilise pas ethernet J'utilisais auparavant ethernet avec POE, mais j'ai changé après avoir dû faire beaucoup d'environnements difficiles (extérieur, sous-marin, près de grosses machines industrielles). Il n'y a pas d'interrupteur à maintenir, pas de tensions POE. Et pas de course aux armements de 10BaseT, 100BaseT, 1000BaseT.
Dn'utilisez pas de bus de type carte Une fois, j'avais un système (construit par d'autres) qui était SPI à 2 mètres: cela fonctionnait à peu près mais quand nous devions le déplacer à 3 mètres ... cela n'a jamais fonctionné. À la fin, je l'ai remplacé par RS-485 comme décrit ici.
CAN est génial mais il résout un problème difficile et il y a donc beaucoup de complexité. La série et le RS-485 sont absolument omniprésents et cela vous fera gagner du temps encore et encore.
Les règles simples
- Semi-duplex à deux fils (jamais à quatre fils)
- Soit a) Un maître (PC) plusieurs esclaves (capteurs) ou b) Un haut-parleur et éventuellement plusieurs auditeurs
- S'il y a plus d'une douzaine d'esclaves, pensez a) aux collisions et b) au chargement du bus
- Alimentation depuis le centre
- Pas de connexion locale côté capteur
- Si vous en avez besoin, utilisez des opto-isolateurs ou des relais
- Quel que soit votre protocole, il doit avoir une somme de contrôle
- Utilisez-le comme UDP et non TCP
- Exécutez-le aussi lentement que possible
- À 9600, vous n'aurez probablement jamais de problèmes
- Plus de 20 mètres, faites attention à la résiliation
- Si vous êtes à l'extérieur ou sous l'eau ou si vous êtes à proximité, c'est toujours bon mais faites plus de devoirs
- Si vous avez besoin de rapidité (disons 1 Mbit / s), toujours bon mais faites plus de devoirs
- Si vous avez besoin d'isolement, toujours bien mais faites plus de devoirs
- Si vous avez besoin de centaines de nœuds, c'est toujours bien, mais faites plus de devoirs
Coûts
Les coûts sont faibles, inférieurs à 10,00 $ / unité - la plupart dépendent du logement et des connecteurs. Voici les prix 10-off de Digikey ou Ebay.
Pour une carte unique ou expérimentale, j'utilise des cartes de Chine:
- Convertisseurs TTL vers RS-485 d'Ebay (0,90 £)
- Arduino "Pro Micro" ou similaire (avec bouton de réinitialisation!) (1,80 £)
Pour les cartes dédiées, je préfère les puces individuelles:
- Puce 75176 broches 0,70 £ + socket si espace
- ATTiny22 ou similaire 0,50-1,50 £
Le brochage 75176 est une norme pour les pilotes RS-485, ce qui signifie que vous pouvez utiliser des pilotes exotiques si vous en avez besoin (par exemple avec une protection ESD plus élevée).
Dans les deux cas, j'alimente 12VDC ou 24VDC pour l'alimentation avec une paire torsadée pour le signal. Plus de CAT-5 fonctionne bien, ou un câble d'alimentation + de données. Sur chaque unité, une alimentation Recom R-78E5.0-0.5 (1,99 £ / unité). Ces appareils sont super. Mettre un petit bloc d'alimentation à côté de chaque unité a fait disparaître tous les problèmes d'alimentation et de bruit.
À l'épreuve du temps
Un autre avantage de cette approche est qu'elle place tous les problèmes de compatibilité importants dans le protocole sur la ligne RS-485. Si, à l'avenir, vous ne pouvez pas obtenir le même capteur ou processeur, obtenez-en un différent et recréez-le. Si vous utilisez des puces de pilote à 75176 broches, vous pourrez toujours obtenir des remplacements.
Et si vous avez besoin de vous connecter à quelque chose que vous souhaitez isoler, il est facile d'obtenir un pilote isolé tel que celui de Digilent (bien que beaucoup plus cher, environ 17,00 £). Mais sans aucune refonte du système de base, ni recodage.
Références
Pour une lecture correcte du RS-485, commencez par ceux-ci et suivez les références.
- Texas Instruments Guide de conception RS-485 PDF
- Texas Instruments AN 1057 Dix façons de protéger les interfaces RS-485
PDF
- Bob Perrin, "The Art and Science of RS-485", Circuit Cellar, juillet 1999. PDF
Spécificités
- "Semi-duplex à deux fils" signifie en fait trois fils: une paire torsadée pour le signal et une masse, qui est souvent la masse de l'alimentation CC si les systèmes sont alimentés par la même puissance.
- Vous verrez une énorme controverse sur la question de savoir si vous avez besoin d'un bouclier, mais Perrin dit que vous ne le faites pas à moins que vous ayez des circonstances exotiques.
- En semi-duplex, la sortie du pilote est activée pendant la transmission.
- Sur un PC, vous activez généralement le pilote avec RTS de votre sortie RS-232. Le noyau Linux a un appel ioctl (8) pour l'activer sur les lignes série
TIOCSRS485
doc
- Sur un microcontrôleur, vous utilisez une ligne IO pour Driver-Enable
DE
. Vous pouvez toujours écouter (connecter Receive-Enable / RE
à la masse) ou, plus généralement, rejoindre DE
et / RE
et conduire à partir de la même broche IO . Vous pourriez éventuellement utiliser une broche IO et conduire / RE
mais je ne l'ai jamais vu.
- Il existe de nombreuses variantes de puces de pilote, mais choisissez-en une dans un package 75176 car c'est la plus courante
- C'est une excellente idée d'utiliser des packages DIL à 8 broches et une prise pour le pilote afin que, lorsque quelqu'un le connecte mal, vous puissiez remplacer le pilote grillé; vous pouvez également utiliser des puces de pilote plus robustes si vous le souhaitez, ou des versions à faible EMI avec des taux de rotation inférieurs.