Baisse de tension du roboRIO et compréhension de la consommation de courant

Afin d’aider à maintenir la tension de la batterie pour la préserver ainsi que d’autres composants du système de contrôle comme la radio dans des situations d’appel élevé de courant, le roboRIO est pourvu d’un système organisé de protection contre la baisse de tension. Cet article décrit ce système, fournit des informations sur la planification proactive de l’appel de courant du système et décrit comment utiliser la nouvelle fonctionnalité du PDP ainsi que le Visionneur de fichiers journaux DS pour comprendre les manifestations de baisses de tensions si elles se produisent sur votre robot.

Protection contre la baisse de tension du roboRIO

Le roboRIO utilise un système organisé de protection contre la baisse de tension pour tenter de préserver la tension d’entrée, pour lui-même et d’autres composants du système de contrôle afin d’éviter la réinitialisation des dispositifs en cas d’appels de courant élevés tirant la tension de la batterie dangereusement vers le bas.

Étape 1 - baisse de sortie de 6v

Déclencheur à tension - 6.8V

When the voltage drops below 6.8V, the 6V output on the PWM pins will start to drop.

Étape 2 - Désactiver la sortie

Déclencheur à tension - 6.3V

Lorsque la tension descend en dessous de 6,3 V, le contrôleur entrera dans l’état de protection contre la baisse de tension. Les indicateurs suivants montrent que cette condition s’est produite :

  • Le voyant Power LED du roboRIO deviendra ambré

  • L’arrière-plan de l’affichage de tension sur la Driver Station deviendra rouge

  • Le mode d’affichage sur la Driver Station changera à Voltage Brownout

  • L’onglet CAN/Power du DS incrémente le compteur 12V fault 1.

  • La DS enregistrera un événement de baisse de tension dans le journal DS.

Le contrôleur prendra les mesures suivantes pour tenter de préserver la tension de la batterie :

  • Les sorties PWM seront désactivées. Pour les sorties PWM dont la valeur neutre est configurée (tous les contrôleurs de moteurs de WPILib), une impulsion neutre unique sera envoyée avant que la sortie ne soit désactivée.

  • Les rails d’utilisateur 6V, 5V, 3.3V sont désactivés (Cela inclut les sorties 6V sur les broches PWM, les broches 5V dans la reglette de raccordement DIO, les broches 5V dans le module analogique, les broches 3.3V dans le module SPI et I2C et les broches 5V et 3.3V dans le module MXP)

  • Les ports GPIO configurés en sorties passent à un état haute-impédence (High-Z)

  • Les sorties de relais sont désactivées (mises au niveau bas)

  • Les contrôleurs moteurs de type CAN reçoivent une commande explicite de désactivation

  • Les dispositifs pneumatiques tels que le module de contrôle pneumatique CTRE et le concentrateur pneumatique REV sont désactivés

Le contrôleur restera dans cet état jusqu’à ce que la tension monte à plus de 7,5 V ou tombe en dessous du seuil de déclanchement pour l’étape suivante de la chute de tension

Étape 3 - Arrêt de l’appareil

Déclencheur à tension - 4.5V

En dessous de 4.5V l’appareil peut s’éteindre. La tension exacte peut être inférieure à cette valeur et dépend de la charge sur l’appareil.

Le contrôleur restera dans cet état jusqu’à ce que la tension s’élève au-dessus de 4,65 V lorsque l’appareil commencera la séquence de démarrage normale.

Éviter la baisse de tension - Planification proactive de la consommation de courant

La façon pour éviter une situation de baisse de tension est de planifier de manière proactive l’appel de courant de votre robot. La meilleure façon de le faire est de créer une certaine forme de budget de puissance. Il peut s’agir d’un document complexe qui tente de quantifier à la fois le courant consommé estimé et le temps dans un effort de mieux comprendre l’utilisation de la puissance et donc l’état de la batterie à la fin d’un match, ou il peut être un simple inventaire de l’utilisation du courant. Pour ce faire :

  1. Establish the max « sustained » current draw (with sustained being loosely defined here as not momentary). This is probably the most difficult part of creating the power budget. The exact current draw a battery can sustain while maintaining a voltage of 7+ volts is dependent on a variety of factors such as battery health (see this article for measuring battery health) and state of charge. As shown in the NP18-12 data sheet, the terminal voltage chart gets very steep as state of charge decreases, especially as current draw increases. This datasheet shows that at 3CA continuous load (54A) a brand new battery can be continuously run for over 6 minutes while maintaining a terminal voltage of over 7V. As shown in the image above (used with permission from Team 234s Drive System Testing document), even with a fresh battery, drawing 240A for more than a second or two is likely to cause an issue. This gives us some bounds on setting our sustained current draw. For the purposes of this exercise, we’ll set our limit at 180A.

  2. Énumérez les différentes fonctions de votre robot telles que la transmission, le manipulateur, le mécanisme de jeu principal, etc.

  3. Start assigning your available current to these functions. You will likely find that you run out pretty quickly. Many teams gear their drivetrain to have enough torque to slip their wheels at 40-50A of current draw per motor. If we have 4 motors on the drivetrain, that eats up most, or even exceeds, our power budget! This means that we may need to put together a few scenarios and understand what functions can (and need to be) be used at the same time. In many cases, this will mean that you really need to limit the current draw of the other functions if/while your robot is maxing out the drivetrain (such as trying to push something). Benchmarking the « driving » current requirements of a drivetrain for some of these alternative scenarios is a little more complex, as it depends on many factors such as number of motors, robot weight, gearing, and efficiency. Current numbers for other functions can be done by calculating the power required to complete the function and estimating efficiency (if the mechanism has not been designed) or by determining the torque load on the motor and using the torque-current curve to determine the current draw of the motors.

  4. Si vous avez déterminé des fonctions mutuellement exclusives dans votre analyse, envisagez d’appliquer l’exclusion dans le logiciel. Vous pouvez également utiliser la surveillance du courant du PDP (couvert plus en détail ci-dessous) dans votre programme robot pour obtenir des limites de sortie ou des exclusions dynamiquement (comme ne pas actionner un moteur de mécanisme lorsque le courant de transmission est supérieur à X ou seulement laisser le moteur fonctionner jusqu’à la moitié de sortie maximale lorsque le courant de transmission est au-dessus de Y).

Brownout réglable

Le NI roboRIO 1.0 ne prend pas en charge les tensions de brownout personnalisées. Il est fixé à 6.3 V comme mentionné à l’étape 2 ci-dessus.

Le NI roboRIO 2.0 ajoute l’option pour un niveau de brownout réglable par logiciel. Le niveau de brownout par défaut (étape 2) du roboRIO 2.0 est de 6.75 V.

RobotController.setBrownoutVoltage(7.0);
frc::RobotController::SetBrownoutVoltage(7_V);

Mesure de la consommation de courant à l’aide du PDP/PDH

The FRC® Driver Station works in conjunction with the roboRIO and PDP/PDH to extract logged data from the PDP/PDH and log it on your DS PC which is visible in the Driver Station Log Viewer

Teams can also use their robot code and manual logging, a LabVIEW front panel or the SmartDashboard to visualize current draw on their robot as mechanisms are developed. In LabVIEW, you can read the current on a PDP/PDH channel using the Get PD Currents VI found on the Power pallet. For C++ and Java teams, use the PowerDistribution class as described in the Power Distribution article. Plotting this information over time (easiest with a LV Front Panel or with the SmartDashboard by using a Graph indicator can provide information to compare against and update your power budget or can locate mechanisms which do not seem to be performing as expected (due to incorrect load calculation, incorrect efficiency assumptions, or mechanism issues such as binding).

Note

Only the CTRE PDP and Rev PDH have built-in current logging. The CTRE PDP 2.0 and AndyMark AMPD do not have current measurment capabilities, and teams would need to implement their own method of logging the current draw. Most CAN motor controllers have current sensors that can be used for this.

Identification des baisses de tension

La façon la plus simple d’identifier une baisse de tension est de cliquer sur l’onglet CANPower de la Driver Station et de vérifier le nombre de défauts 12V. Alternativement, vous pouvez consulter le journal de la Driver Station après coup à l’aide du visionneur de journal. Le journal indiquera les baisses de tension avec une ligne orange vif, comme dans l’image ci-dessus (notez que ces baisses de tension ont été induites avec une alimentation sur un banc d’essai et peuvent ne pas refléter la durée et le comportement des baisses de tension sur un robot FRC typique).