Table des matières:

Arduino LTC6804 BMS - Partie 2 : Balance Board : 5 étapes
Arduino LTC6804 BMS - Partie 2 : Balance Board : 5 étapes

Vidéo: Arduino LTC6804 BMS - Partie 2 : Balance Board : 5 étapes

Vidéo: Arduino LTC6804 BMS - Partie 2 : Balance Board : 5 étapes
Vidéo: Lithium-Ion Battery Management System | BMS | LTC6804-2 2024, Juillet
Anonim
Arduino LTC6804 BMS - Partie 2: Balance Board
Arduino LTC6804 BMS - Partie 2: Balance Board

La partie 1 est ici

Un système de gestion de batterie (BMS) comprend des fonctionnalités permettant de détecter les paramètres importants du bloc-batterie, notamment les tensions des éléments, le courant de la batterie, les températures des éléments, etc. Si l'un de ces éléments est en dehors d'une plage prédéfinie, le bloc peut être déconnecté de sa charge ou de son chargeur., ou toute autre mesure appropriée peut être prise. Dans un projet précédent (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/), j'ai discuté de ma conception BMS, qui est basée sur la puce Linear Technology LTC6804 Multicell Battery Monitor et un microcontrôleur Arduino. Ce projet étend le projet BMS en ajoutant l'équilibrage des batteries.

Les packs de batteries sont constitués de cellules individuelles dans des configurations parallèles et/ou en série. Par exemple, un pack 8p12s serait construit en utilisant 12 ensembles connectés en série de 8 cellules connectées en parallèle. Il y aurait un total de 96 cellules dans le pack. Pour de meilleures performances, toutes les 96 cellules doivent avoir des propriétés très proches, cependant, il y aura toujours des variations entre les cellules. Par exemple, certaines cellules peuvent avoir une capacité inférieure à celle d'autres cellules. Au fur et à mesure que le pack est chargé, les cellules de plus faible capacité atteindront leur tension de sécurité maximale avant le reste du pack. Le BMS détectera cette haute tension et coupera la charge supplémentaire. Le résultat sera qu'une grande partie du pack n'est pas complètement chargée lorsque le BMS coupe la charge en raison de la tension plus élevée de la cellule la plus faible. Une dynamique similaire peut se produire pendant la décharge, lorsque les cellules de capacité supérieure ne peuvent pas se décharger complètement car le BMS déconnecte la charge lorsque la batterie la plus faible atteint sa limite de tension basse. Le pack n'est donc aussi bon que ses batteries les plus faibles, comme une chaîne n'étant aussi solide que son maillon le plus faible.

Une solution à ce problème consiste à utiliser une balance board. Bien qu'il existe de nombreuses stratégies pour équilibrer le pack, les planches d'équilibrage «passives» les plus simples sont conçues pour purger une partie de la charge des cellules à la tension la plus élevée lorsque le pack est presque entièrement chargé. Alors qu'une partie de l'énergie est gaspillée, le pack peut dans son ensemble stocker plus d'énergie. La purge se fait en dissipant une certaine puissance à travers une combinaison résistance/interrupteur contrôlée par un microcontrôleur. Cette instructable décrit un système d'équilibrage passif compatible avec l'arduino/LTC6804 BMS d'un projet précédent.

Fournitures

Vous pouvez commander le PCB Balance Board auprès de PCBWays ici:

www.pcbway.com/project/shareproject/Balance_board_for_Arduino_BMS.html

Étape 1: Théorie du fonctionnement

Théorie du fonctionnement
Théorie du fonctionnement

La page 62 de la fiche technique LTC6804 traite de l'équilibrage des cellules. Il existe deux options: 1) utiliser les MOSFETS internes à canal N pour purger le courant des cellules hautes, ou 2) utiliser les MOSFETS internes pour contrôler les commutateurs externes qui transportent le courant de purge. J'utilise la deuxième option car je peux concevoir mon propre circuit de purge pour gérer un courant plus élevé que ce qui pourrait être fait en utilisant les commutateurs internes.

Les MOSFETS internes sont disponibles via les broches S1-S12 tandis que les cellules elles-mêmes sont accessibles via les broches C0-C12. L'image ci-dessus montre l'un des 12 circuits de purge identiques. Lorsque Q1 est allumé, le courant circule de C1 à la terre via R5, dissipant une partie de la charge dans la cellule 1. J'ai sélectionné une résistance de 6 ohms, 1 watt, qui devrait être capable de gérer plusieurs milliampères de courant de fuite. Il y a une LED ajoutée afin que l'utilisateur puisse voir quelles cellules s'équilibrent à un moment donné.

Les broches S1-S12 sont contrôlées par le CFGR4 et les 4 premiers bits des groupes de registres CFGR5 (voir pages 51 et 53 de la fiche technique LTC6804). Ces groupes de registres sont définis dans le code Arduino (discuté ci-dessous) dans la fonction balance_cfg.

Étape 2: Schéma

Schématique
Schématique

Le schéma de la balance BMS a été conçu à l'aide d'Eagle CAD. C'est assez simple. Il y a un circuit de purge pour chaque segment de série de blocs-batteries. Les commutateurs sont contrôlés par les signaux du LTC6804 via l'en-tête JP2. Le courant de purge s'écoule du bloc-batterie à travers le collecteur JP1. Notez que le courant de purge circule vers le segment de batterie inférieur suivant, donc par exemple, C9 saigne dans C8, etc. Le symbole de blindage Arduino Uno est placé sur le schéma de la disposition du circuit imprimé décrite à l'étape 3. Une image à plus haute résolution est fournie dans le fichier zip. Ce qui suit est la liste des pièces (pour une raison quelconque, la fonction de téléchargement de fichiers Instructables ne fonctionne pas pour moi….)

Qté Valeur Emballage de l'appareil Description des pièces

12 LEDCHIPLED_0805 CHIPLED_0805 LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8, LED9, LED10, LED11, LED12 LED 12 BSS308PEH6327XTSA1 MOSFET-P SOT23-R Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12 P-Channel Mosfet 2 PINHD-1X13_BIG 1X13-BIG JP1, JP2 PIN HEADER 12 16 R-US_R2512 R2512 R5, R7, R9, R11, R13, R15, R17, R19, R21, R23, R25, R27 RESISTANCE, symbole américain 12 1K R-US_R0805 R0805 R4, R6, R8, R10, R12, R14, R16, R18, R20, R22, R24, R26 RESISTANCE, symbole américain 12 200 R-US_R0805 R0805 R1, R2, R3, R28, R29, R30, R31, R32, R33, R34, R35, R36 RESISTANCE, symbole américain

Étape 3: mise en page PCB

Disposition PCB
Disposition PCB

La disposition est principalement déterminée par la conception du système BMS principal discuté dans un instructable séparé (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/). Les en-têtes JP1 et JP2 doivent correspondre aux en-têtes correspondants sur le BMS. Les Mosfets, les résistances de purge et les LED sont disposés de manière logique sur le shield Arduino Uno. Les fichiers Gerber ont été créés à l'aide d'Eagle CAD et les PCB ont été envoyés à Sierra Circuits pour fabrication.

Le fichier joint "Gerbers Balance Board.zip.txt" est en fait un fichier zip contenant les Gerbers. Vous pouvez simplement supprimer la partie.txt du nom de fichier, puis la décompresser comme un fichier zip normal.

Envoyez-moi un message si vous souhaitez obtenir un PCB, il m'en reste peut-être encore.

Étape 4: Assemblage du PCB

Les circuits imprimés de la carte d'équilibrage ont été soudés à la main à l'aide d'une station de soudage à température contrôlée Weller WESD51 avec une pointe "tournevis" ETB ET série 0,093 et une soudure de 0,3 mm. Bien que les pointes plus petites puissent sembler meilleures pour les travaux complexes, elles ne retiennent pas la chaleur et rendent le travail plus difficile. Utilisez un stylo à flux pour nettoyer les pastilles de PCB avant de souder. La soudure de 0,3 mm fonctionne bien pour le soudage à la main de pièces SMD. Placez un peu de soudure sur un pad, puis placez la pièce avec une pince à épiler ou un couteau x-acto et fixez ce pad. Le plot restant peut alors être soudé sans que la pièce ne bouge. Assurez-vous de ne pas surchauffer la pièce ou les pastilles du PCB. Étant donné que la plupart des composants sont assez volumineux selon les normes SMD, le PCB est assez facile à assembler.

Étape 5: Coder

Code
Code

Le code Arduino complet est fourni dans le précédent instructable lié à ci-dessus. Ici, j'attire votre attention sur la section qui contrôle l'équilibrage des cellules. Comme mentionné ci-dessus, S1-S12 sont contrôlés par le CFGR4 et les 4 premiers bits des groupes de registres CFGR5 sur le LTC6804 (voir pages 51 et 53 de la fiche technique LTC6804). La fonction de boucle du code Arduino détecte le segment de batterie à tension la plus élevée et place son numéro dans la variable cellMax_i. Si la tension de cellMax_i est supérieure à CELL_BALANCE_THRESHOLD_V, le code appellera la fonction balance_cfg(), en passant le numéro du segment haut, cellMax_i. La fonction balance_cfg définit les valeurs du registre LTC6804 approprié. Un appel à LTC6804_wrcfg écrit ensuite ces valeurs sur le circuit intégré, activant la broche S associée à cellMax_i.

Conseillé: