« Ordinateur de bord » : différence entre les versions

De Les ballons de Jausiers
Aller à la navigation Aller à la recherche
→‎Batteries et tensions : AA datasheet
power saving
Ligne 49 : Ligne 49 :


Voir la page du [http://www.adafruit.com/products/1875 breakout AdaFruit] pour plus d'informations sur les résistances de pull-up et la détection de direction du signal.
Voir la page du [http://www.adafruit.com/products/1875 breakout AdaFruit] pour plus d'informations sur les résistances de pull-up et la détection de direction du signal.
==Gestion de l'énergie à bord==
Un challenge du fonctionnement sur piles est de pouvoir avoir un fonctionnement assez long pour permettre de retrouver la nacelle si elle est perdue. Un arduino de base n'est pas vraiment fait pour ne pas consommer beaucoup, mais déjà en utilisant un régulateur de tension un peu meilleur comme décrit ci-dessus, on peut gagner une partie non-négligeable de la consommation.
L'autre partie importante est le logiciel. L'idéal est de pouvoir mettre en veille tous les composants qui ne servent pas, et de les sortir de veille quand on fait une lecture de capteur par exemple, y compris le micro-contrôleur lui-même. Depuis le code de l'Arduino, on peut désactiver toutes les entrées-sorties, et le mettre en veille jusqu'à ce qu'une interruption arrive par exemple. Pour les états les plus profonds en sauvegarde d'énergie, les interruptions peuvent être un changement d'état d'un port d'entrée sortie ou un tick particulier de timer.
[http://ava.upuaut.net/?p=437 Ce lien d'Upu] (UKHAS) décrit comment et quand mettre en veille le GPS uBlox.

Version du 20 juillet 2014 à 20:11

L'Arduino et le Raspberry PI sont des cibles de choix, principalement à cause de leur bas prix. D'autres sont un peu moins répandus, comme le BeagleBoard.

Arduino

L'Arduino est basé sur un micro-contrôleur, sa capacité de traitement est donc assez faible. Elle est cependant suffisante pour traiter les données de plusieurs capteurs et les envoyer sur un lien RF ou les sauvegarder sur une mémoire interne pour les exploiter après récupération (utile si la liaison RF est perdue pendant une partie du vol).

Plusieurs modèles existent, l'Uno est celui de base. Il en existe des modèles avec des contrôleurs différents, des modèles plus petits, avec des tensions différentes, etc. Voir l'arduino buying guide. Probablement que la meilleure option pour nous sera d'avoir un modèle basse tension, 3.3V au lieu de 5V, fournie par les modèles Pro, faits par SparkFun. Cela nécessite de ne pas avoir de capteur en 5V. Le dernier modèle Pro sorti est le Pro Micro. Le Pro Mini utilise l'ancien contrôleur et n'a pas de connecteur USB ni de quartz directement sur la carte.

Un shield, nom donné aux cartes d'extension, sera probablement nécessaire pour connecter nos différents capteurs, par exemple le Mémoire 2.0 de Snootlab (18,60 EUR, 3.3V). Il fournit un connecteur pour carte SD et embarque en plus une horloge RTC. Elle n'est pas forcément nécessaire vu que le GPS fournit aussi l'heure précise, mais ça peut permettre de programmer des opérations périodiques facilement et ça fournit un backup. Pour le stockage des données sur carte SD, un module dédié existe, l'OpenLog (3.3V - 12V). Il lit le port série et sauvegarde tout sur la carte. OpenLog est disponible en France à 19.20 ou 23.03 EUR. Conrad revend aussi le module micro SD SparkFun à 18 EUR. Les cartes SD fonctionnent en 3.3V ou en 1.8V une fois initialisées avec du 3.3V, ce qui va nécessiter un régulateur de tension dans tous les cas [1]. L'alternative la moins chère et qui contient la zone de prototypage et la RTC, c'est le shield de DX, XD-05, qui a été acheté.

Liste de projets utilisant l'Arduino pour des ballons haute altitude, original avec shield spécial ou carte sur mesure :

  • Habduino propose un shield pour les ballons contenant : Ublox MAX7Q GPS, Radiometrix LMT2 433MHz 10mW (RTTY), et en option un lien APRS 300mW (nécessitant une license radio amateur).
  • Le pAVA est un ordinateur de bord sur mesure, basé sur le même micro-contrôleur que l'Arduino Uno, avec un GPS uBlox et un émetteur RFM22 (433 ou 915MHz, 100mW, mais qui a de gros problèmes de stabilité avec la température).

Raspberry PI

Le Raspberry PI utilise un micro-processeur ARM, bien plus puissant, mais qui consomme plus. Il existe une caméra officielle.

Dave Akerman est le principal utilisateur du Raspberry PI pour les ballons, et il a bien documenté son approche. Le problème principal du Raspberry PI est sa consommation élevée, et donc il faut plus de batteries. La raison de son passage au Raspberry PI est l'intégration assez récente de la caméra, ce qui évite d'avoir un système dédié qu'il faut aussi alimenter, du genre APN ou GoPro, et ce qui permet de récupérer facilement les images sur le CPU et ainsi les envoyer par le lien RF.

Batteries et tensions

Les anglais utilisent généralement une ou plusieurs piles Energizer Ultimate Lithium AAA. Elles existent aussi en AA. La datasheet est disponible ici, les AA pèsent 14.5g pour 3000mAh. Dans les applications les moins gourmandes, certains utilisent une pile bouton CR2032.

Les micro-contrôleurs des Arduinos peuvent être alimentés entre 2.7 et 5.5V pour les modèles ATmega32U4 et entre 1.8 et 5.5V pour les modèles ATmega328. Le problème avec une tension aussi libre, est de pouvoir alimenter les capteurs, qui pour certains ont besoin de 3.3V ou de 5V. Les Arduino classiques ont un régulateur en 5V, et les Pro en ont un en 3.3V. Ils peuvent être alimentés par 2 piles (3.0V) ou par une batterie LiPo (3.7V), sans passer par la régulation de tension, mais dans ce cas les capteurs n'ont pas accès à un Vcc régulé. Si on veut une tension régulée, il faut passer par l'entrée du régulateur, et fournir au moins 1V de plus que la tension Vcc qu'il va réguler, donc 6V et plus pour les Arduino classiques, et 4.3V pour les Pro. Ces régulateurs augmentent de beaucoup la consommation électrique du système (parfois de 100% ou plus si la tension d'entrée est élevée). Si la tension chute en dessous de la valeur minimale acceptée par le régulateur, le système s'éteindra alors que le micro-contrôleur pourrait encore fonctionner avec une tension plus basse, c'est dommage. Au final la question est : quelle est la tension nécessaire aux Capteurs et par conséquence, a-t-on besoin d'un régulateur de tension ? Réponse sur la page en question, et bien sûr l'idéal serait de ne pas en avoir et d'alimenter tout le système avec 2 piles pour une durée de vie de plusieurs jours (selon la puissance radio choisie).

Voir cet exemple qui intègre une LiPo et un chargeur sur une carte Pro. Une batterie LiPo de 400mAh coute $8 et est utilisable sans problème jusqu'à -25°C. Son poids : 9g ! De même, on trouve 2000mAh pour $13 et 36g.

Régulation efficace de la tension

Si on a des composants en 5V, nous n'aurons pas le choix et devront avoir un régulateur de tension, et tant qu'à y être un régulateur-réhausseur, ce qui permettra de n'avoir que deux ou trois piles, ou une batterie LiPo.

pAVA utilise le TPS61200 comme régulateur et booster de tension. Il fournit une configurable entre 1.8V et 5.5V à partir d'une à 3 batteries. Ce circuit intégré existe aussi en version tension fixe de sortie à 3.3 ou 5V. Sparkfun a créé cette petite carte d'alimentation basée sur le TPS61200 pour les batteries LiPo, qui peut être modifiée pour d'autres types de batteries. 600mA max

Une alternative est le LTC3525, recommandé ici. Existe-t-il une breakout board pour ce régulateur ? 175mA max (peak 500mA avec baisse de tension importante) à Vi = 3V et Vo = 5V.

Plus facile à souder (mais nécessite aussi d'autres composants) : le MAX576. Existe-t-il une breakout board pour ce régulateur ? 400mA max à Vi = 3V et Vo = 5V.

La solution la plus simple pour avoir du 3.3V ou 5V à partir de 2 batteries est probablement le régulateur de pololu, basé sur un NCP1402. Cependant, sa limite d'intensité est 200mA, pour une tension d'entrée proche de 5V, donc il ne permettra pas d'alimenter un module RF 500mW.

Ces régulateurs réhausseurs de tension nous permettront de plus de surveiller la tension de la pile tout au long du vol.

Niveau des signaux des différents composants

Alimenter les composants est un problème, communiquer avec eux en est un autre. Le choix de la tension du micro-contrôleur est basé sur la tension la plus élevée qu'on trouve parmi les capteurs, dans notre cas le capteur P1, qui a une sortie analogique entre 0.5 et 4.5V. Le module RF, s'il est choisi en 869MHz à forte puissance sera probablement lui aussi alimenté et commandé par du 5V.

Les autres capteurs, généralement conçus pour fonctionner aux alentours de 3.3V ou moins, devront être connectés au micro-contrôleur. La différence de tension entre les signaux des deux cotés peut poser des problèmes de destruction des capteurs, ou de non-détection de composants sur le bus I²C, comme expliqué dans la documentation de l'Arduino, pour un Arduino 5V et des capteurs 3.3V.

Un adaptateur de niveau est une solution de sécurité dans ces cas en dehors des limites de fonctionnement normales. Le module GPS MAX-7 intègre par exemple un régulateur de tension 3.3V et l'adaptateur de niveau qui convient. Mais on pourrait plus simplement fournir un adaptateur de niveau pour tous les capteurs, et avoir ainsi deux réseaux de composants I²C, un en 5V et un alimenté directement par les piles par exemple. Quatre montages d'adaptateurs de niveau sont décrits sur la page de la documentation Arduino: utilisation de deux MOSFETs, d'un module, de circuits intégrés ou de 4 transistors.

Voir la page du breakout AdaFruit pour plus d'informations sur les résistances de pull-up et la détection de direction du signal.

Gestion de l'énergie à bord

Un challenge du fonctionnement sur piles est de pouvoir avoir un fonctionnement assez long pour permettre de retrouver la nacelle si elle est perdue. Un arduino de base n'est pas vraiment fait pour ne pas consommer beaucoup, mais déjà en utilisant un régulateur de tension un peu meilleur comme décrit ci-dessus, on peut gagner une partie non-négligeable de la consommation.

L'autre partie importante est le logiciel. L'idéal est de pouvoir mettre en veille tous les composants qui ne servent pas, et de les sortir de veille quand on fait une lecture de capteur par exemple, y compris le micro-contrôleur lui-même. Depuis le code de l'Arduino, on peut désactiver toutes les entrées-sorties, et le mettre en veille jusqu'à ce qu'une interruption arrive par exemple. Pour les états les plus profonds en sauvegarde d'énergie, les interruptions peuvent être un changement d'état d'un port d'entrée sortie ou un tick particulier de timer.

Ce lien d'Upu (UKHAS) décrit comment et quand mettre en veille le GPS uBlox.