[Energie] [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S - Page 2
Répondre à la discussion
Page 2 sur 2 PremièrePremière 2
Affichage des résultats 31 à 53 sur 53

[PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S



  1. #31
    gienas
    Modérateur

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S


    ------

    Bonsoir à tous

    Citation Envoyé par guanglier Voir le message
    ... Désolé vous avez bien raison ça va être le bazar ...
    Je confirme.

    Mais pas d’inquiétude.

    Quand le projet sera abouti (ou presque) il sera déplacé vers les projets, et toutes les questions/réponses qui ne sont pas dans le droit fil en seront exclues.

    Nous aviserons, le moment venu, ce qu’elles doivent devenir.

    -----

  2. #32
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    20V est la tension minimale, ce qui correspond à la configuration minimale 5S du BQ77PL900.
    Tu peux bien sur mettre plus.
    Les masses sont séparées sur le schéma pour des raisons pratiques, j'y reviendrai.

    Je vous prépare les justifications de ce premier schéma que je posterai dans la journée.
    @+

  3. #33
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    J'ai l'impression que l'éditeur du forum le reformate automatiquement l'image et du coup on ne distingue pas grand chose...
    Si un modo à la main là dessus et peut augmenter sa taille.

    Pour les explications:

    1/EQUILIBRAGE - Dimensionnement de l'équilibrage externe

    Equilibrage_extrait_schéma.JPG

    Nous allons expliquer dans ce chapitre comment dimensionner cet étage.

    Compte tenu de la capacité du pack (15Ah), le BQPL900 ne peut pas équilibrer uniquement avec ses transistors internes, le limitant à 10mA environ selon la résistance min (400 ohms) qui constituera
    le filtre RC passe-bas servant aussi à la mesure.

    Equilibrage_interne.JPG
    Une fenêtre de 50ms est divisée en 2 séquences, la première de 10ms est consacrée à la mesure de la tension cellule, les 40ms suivants sont réservées pour la phase d'équilibrage, etc
    La constante de temps du filtre doit être suffisamment courte pour permettre une rapide stabilisation de la tension après une phase d'équilibrage et ne pas entacher le résultat de la mesure.

    Ordinairement, sans équilibrage externe, cette constante de temps est limitée à 100µs max (1K*100n) soit 1% max du temps de mesure.
    Dans l'usage il est plus courant de voir 470 ohms et 100nF soit 50µs environ.

    Pour déterminer le courant d'équilibrage, nous utilisons le principe suivant:

    On définit une valeur maximale de charge Q à équilibrer, par exemple 5% de la capacité nominale d'une branche de cellules soit dans notre cas 0.75Ah (15*0.05).
    On décide également dans quel laps de temps maximum il faudra équilibrer la cellule (entendez par "cellule" le groupement parallèle de 5 cellules de 3Ah), par exemple 3h,
    représentant la moitié du temps de charge en mode normal.

    Avec la formule de base liant la charge au courant et au temps, Q=I*t, nous obtenons:

    I=0.75/6=125mA

    En introduisant le rapport temporel entre mesure et équilibrage (1-10/40=0.75) cela nous donne I=0.125/0.75=166mA.

    Pour obtenir ce courant il nous faut placer une résistance dans le chemin d'équilibrage, qui détournera ce courant de la cellule la plus chargée vers celle là moins chargée,
    valant Req=4/166.10^-3=24 ohms (en négligeant le Rds(on) du MOS.
    Nous prendrons Req=27 ohms/1W pour rester dans un format de boitier 2010.
    C'est une simple application de la loi des noeuds, le courant du chargeur vaut par exemple 5A, sans équilibrage ce courant circulera dans chaque cellule du montage en série.

    Equilibrage_externe.JPG

    Lorsqu'un équilibreur se met en fonction, il dérive 166mA du courant de charge => la cellule se charge moins vite, celle d'en dessous en revanche recevra la somme du courant
    dérivé PLUS celui qui circule dans la cellule supérieure (soit exactement le courant de charge) => elle se recharge plus vite que celle du dessus.


    Pour cela nous réalisons l'équilibrage en ayant recours à un transistor externe NMOS qui sera piloté indirectement par le transistor interne au BQ77PL900.
    L'intérêt est double.
    A/ le courant que nous ferons circuler dans le MOS interne sera beaucoup plus faible (de l'ordre de 200µA) => le circuit ne s'échauffera pas.
    B/ Nous pouvons régler à notre convenance la valeur du courant d'équilibrage.

    L'astuce qui permet d'autopiloter le MOS externe consiste à modifier la valeur du couple RC de manière à ce que la chute de tension aux bornes de R soit suffisante pour
    activer le NMOS.
    Cde_Vgs(th).JPG
    Il faut donc que le NMOS que nous prendrons ait un Vgs(th) faible, autour de 1V.
    Le couple RC doit donc d'une part satisfaire la condition vue plus haut, à savoir 100µs de constante de temps, et assurer une tension Vgs(th)>1V.
    Nous prendrons le couple RC suivant qui rempli les 2 conditions:

    R=10kohms
    C=10nF

    Le courant qui circulera dans le chemin d'équilibrage du BQ77PL900 vaudra au minimum: Ieq(bq)=3.9/20.10^3=195µA
    D'où Vgs(th)=10.10^3*195.10^-6=1.95V tension bien suffisante pour notre petit NMOS d'équilbrage.
    Le MOS est choisi pour sa tension Vgs(th) sensible mais aussi pour sa résistance Rds(on) suffisamment faible pour ne pas provoquer de pertes significatives.

    Le DMN2114 que j'ai choisi rempli ces conditions.
    Rds(on)max=160mOhms => Vds(on)=0.16*0.155=25mV
    La puissance perdue par le MOS sera Pd=(25.10^-3)²/0.16=3.9mW => perte négligeable
    La tension Vds max du MOS est pour le modèle choisi de 20VDC.

    Voilà maintenant vous savez comment dimensionner un équilibrage passif.
    Dernière modification par Exotique ; 06/01/2021 à 09h53.

  4. #34
    guanglier

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Nickel !

    vivement la suite !

  5. #35
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Mesure des courants (charge et décharge):

    Mesure_de_courant.JPG

    Aujourd'hui dans ce chapitre nous allons voir 2 sujets liés autour de cette mesure des courants.
    -> Le premier concerne le dimensionnement du shunt de mesure et les caractéristiques nécessaires qu'il doit satisfaire.
    Egalement une considération sur le routage, qui est trop souvent méconnu et sous estimé.

    -> Le 2eme sujet concerne l'aspect pratique de cette mesure, son interfaçage avec le µC et notamment comment obtenir la résolution souhaitée et une introduction sur son traitement logiciel.
    Ces considérations pratiques seront valables également pour toutes les autres mesures.

    **********************

    La mesure de courant se réalise ici en mode intrusif à travers un shunt dont nous allons définir ses caractéristiques pour notre projet.
    Garder à l'esprit que nous aurions tout aussi bien pu prendre une solution non intrusive de type détection du champ magnétique (capteur Hall).
    La solution shunt présente ici un avantage de coût faible et de facilité de mise en oeuvre, compte tenu que la batterie est de capacité modeste dans notre projet (15Ah).

    Les données nécessaires pour le dimensionnement:

    -> courant maximum mesurable => courant de court-circuit maximum: Icc=100A
    -> plage de tension mesurable par le BQ77PL900: +/-100mV

    La tension aux bornes de Rsense ne doit pas excéder 0.25% de la tension batterie, afin de ne pas impacter notablement la tension globale du chemin de puissance et ainsi limiter les pertes.
    Nous la limiterons à +/-100mV, avec 100mV pour un courant de court-circuit que nous limitons en mesure à 100A.
    D'où nous pouvons déduire immédiatement la valeur du shunt: Rsense=1mohm 1%.
    La puissance que devra supporter le shunt est calculée par rapport au courant maximum permanent plus une marge de 50%, soit Pmax=0.001*(12.5*1.5)²=0.35W
    Bien comprendre qu'il est inutile de prendre la valeur du courant de court-circuit dont le délai de mise en protection n'excèdera pas 250µs.
    Le courant de surcharge quant à lui sera mis en protection au delà de 10ms (valeur estimée pour le moment).
    Nous prendrons une résistance au format 2010 et ayant une dérive thermique de 50ppm/°C (la valeur du shunt doit rester stable dans une plage de température allant de -10°C à 60°C).

    Ce shunt sera partagé avec le MAX17205 dont nous verrons l'usage dans un autre chapitre.

    Pour le routage, il n'y a qu'une seule bonne manière de procéder: la liaison 4 fils appelé encore liaison KELVIN.
    Appelé ainsi puisqu'il faut compter les 2 fils de puissance et 2 fils pour la mesure.
    Les fils de mesure vont véhiculer des courants extrêmement faibles, donc ils devront être éloignés des champs environnants et être placés sur un plan de masse (signal).
    Les liaisons faibles signaux devront être courtes et un filtrage est également à prévoir au plus près du BQ77PL900.
    Le routage sera de ce type:

    Mesure_de_courant.JPGshunt_mesure_courant.JPG

    Pour le BQ77PL900:
    La pin IOUT du BQ77PL900 délivre une tension qui sera l'image du courant selon cette relation:

    (VIOUTmax - Vref - (Voffset * Igain))/(Ipackmax * Igain) = Rsense


    La décharge sur court-circuit est exceptionnelle, le BQ77PL900 devra pouvoir détecter cette situation et réagir dans un temps de l'ordre de 250µs max.
    Nous verrons dans un prochain chapitre ce que cela implique pour le dimensionnement des NMOS de commutation.

    En situation normale, nous voyons que V(rsense)nom=R(sense)*Pmax/Vbat=0.001*250/36=7A et 8.33A lorsque Vbat est minimum.
    Nous fixons le seuil de surcharge @Psurge=1.5Pmax=375W => I(surge)=12.5A @Vbat(min)=30V

    Nous pouvons également déduire VIOUTmax selon cette relation qui dépend du gain choisi:
    En décharge:
    Gain de 10 (Vref=1.2V) : VIOUTmax=Rsense*(Idis_cc * Igain)+1.2+(Voffset * Igain) => VIOUTmax=0.001*(100*10)+1.2+(0 .003*10)=2.23V
    Gain de 50 (Vref=0.95): VIOUTmin=Rsense*(Idis_cc * Igain)+0.95+(Voffset * Igain) => VIOUTmin=0.001*(100*50)+0.95+( 0.003*50)=6.1V

    En charge:
    Gain de 10 (Vref=1.2V) : VIOUTmin=Rsense*(-Ichg * Igain)-(Voffset * Igain)+1.2 => VIOUTmax=0.001*(-7*10)-(0.003*10)+1.2=1.1V
    Gain de 50 (Vref=0.95): VIOUTmax=Rsense*(-Ichg * Igain)-(Voffset * Igain)+0.95 => VIOUTmax=0.001*(-7*50)-(0.003*50)+0.95=0.45V

    Nous optons pour un gain de 10 afin de ne pas rajouter des composants supplémentaires pour adapter à la plage utile de l'ADC du µC.

    Nous avons une plage utile de 1030mV pour l'image tension du courant de décharge et 100mV pour l'image tension du courant de charge.

    Le µC que nous allons utiliser sera alimenté en 3.3V et possède un ADC 12 bits, nous choisissons une tension de référence de 2.5V pour les mesures du µC.

    Avec un ADC de 12 bits nous avons une résolution de tension brute de: q(v)=Vref/2^n=2.5/2^12=610µV

    Pour trouver la résolution du courant image mesurable, avec le gain de 10 du BQ77PL900, nous avons: q(i)=(130+120)/4096=61mA

    => 610µV <-> 61mA

    Avec 130 le courant équivalent thérorique de décharge correspondant à [Vref(µC) - Vref(bq)]/(gain*Rsense) => (2.5-1.2)/(10*0.001)=130A
    Avec 117 le courant équivalent théorique de charge correspondant à 1.2/(10*0.001)=120A

    Notre objectif est de pouvoir mesurer avec une résolution de 10mA, il nous faut donc augmenter la résolution d'un rapport x6.
    Soit une résolution tension q(v)=102µV

    Plusieurs solutions possibles:
    1/ diminuer Vref
    2/ créer un décalage et amplifier pour coller au mieux à la plage utile
    3/ utiliser un ADC ayant une plus grande résolution
    4/ suréchantillonner pour augmenter le nombre de bits effectifs (ENOB -> Effective Number Of Bit)

    Pour ne pas ajouter de composants c'est l'option 4/ que nous utiliserons.

    Nous allons à ce stade faire une petite parenthèse et justifier certains points pour la suite:

    -> Nous avons prévu dans notre système un MAX17205 qui assure la fonction jauge et qui fera naturellement une mesure de ces courants de manière bien plus précise qu'à travers le BQ77PL900 et notre µC avec ADC 12 bits.
    Cette mesure effectuée par le MAX17205 sera accessible en I2C dans un registre dédié.
    Nous pourrions donc nous passer de la mesure par le BQ77PL900, ou à minima ne pas être trop exigeant sur la résolution.
    Comme nous sommes joueurs , nous allons malgré tout mettre en concurrence la mesure du MAX17205 et celle du BQ77PL900, l'idée derrière est d'avoir une redondance simple sur cette mesure importante.
    Et puis vous pourrez réexploiter cette technologie dans vos propres réalisations

    -> Nous allons maintenant expliquer le suréchantillonnage que nous allons mettre en place*:

    (*A lire pour ceux que cela intéresse sur un plan théorique, sinon vous pouvez sauter cette partie)

    Pour cela nous allons utiliser les mathématiques du signal et rappeler 3 notions fondamentales:

    1/ le critère de Nyquist nous dit que la fréquence d'échantillonnage Fe doit être au moins le double de la fréquence du signal à convertir.
    2/ la technique de suréchantillonnage se base sur l'approximation que le bruit total de quantification d'un ADC peut s'écrire s=q²/12
    3/ la puissance de densité spectrale du bruit (PSD) vaut: PSD=q²/(12*Fe)

    On voit que le PSD est inversement proportionnel à la fréquence d'échantillonnage Fe, si Fe augmente => le bruit diminue* => ENOB augmente
    *la méthode de suréchantillonnage n'est efficace qu'en présence d'un bruit blanc avec la même intensité d'amplitude moyenne au moins supérieure au quantum q.
    (un "bruit blanc" signifie que toutes les fréquences sont présentes, la densité spectrale est constante)

    Le rapport M=Fs/Fe représente le suréchantillonnage, avec Fs=fréquence de suréchantillonnage.
    Le gain du rapport signal-bruit (SNR: signal noise ratio) s'écrit: G_SNR=10log(M)
    Le nombre de bit est proportionnel au SNR -> SNR=6.02*N+1.77dB
    D'où nous tirons: ENOB=10*log(M)/6 + N (avec N le nombre de bits de l'ADC du µC)

    => un suréchantillonnage M=4 augmente l'ENOB de 1, si M=4^2 => ENOB de 2, M=4^3 => ENOB de 3, etc

    Dans notre cas nous voulons passer d'une résolution de 61mA à une résolution de 10mA minimum.

    => q(i)=10mA => q(v)=102µV => 2^n=Vref/q et n=[log(Vref/q)]/log(2)=14.58 => ADC 15 bits

    Il nous faut donc 3 bits supplémentaires (vu que notre ADC possède déjà 12 bits) => ENOB=3 => M=4^ENOB=4^3=64 échantillons à acquérir.

    Dans notre soft c'est cette valeur M qui nous servira pour l'itération de la boucle for et ENOB servira de valeur de décalage à droite pour la division.
    Ca donnera quelque chose dans ce principe:
    Code:
    #define ENOB 3
    #define M 64
    
    unsigned int mesure;
    
    unsigned int oversampling(unsigned char input)
    {
    unsigned int a;
    
       for (a=0; a<M; a++) result+=mes_ADC(input); 
       result >> = ENOB;
       return (result);
    
    main()
       {
       init_ADC();
       mesure = oversampling(0);
       while(1);
       }
    }
    Simple mais très efficace, le soft permet d'adapter facilement selon le besoin et aucun composant supplémentaire

    A suivre.
    Dernière modification par Exotique ; 08/01/2021 à 16h42.

  6. #36
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Configuration matérielle autour du BQ77PL900:

    Nous allons balayer l'ensemble des pins du BQ77PL900 et justifier les valeurs et structures fonctionnelles
    (quand la datasheet le permet car certaines valeurs sont plus ou moins imposées par TEXAS).

    pin 1 à 6 (la pin 2 est non connectée): CPOUT, CP1, CP2, CP3, CP4

    CPOUT est la sortie de la pompe de charge destinée à piloter les MOSFET avec les bons niveaux de tension gate-source,
    ainsi que d'assurer l'alimentation de la circuiterie interne du BQ et notamment d'activer les 2 régulateurs LDO
    (3.3V et 5V).
    La fréquence de commutation de la pompe de charge est de l'ordre de 10kHz.
    Une capacité de découplage de 4.7µF min sur cette sortie est conseillée par TEXAS c'est cette valeur que nous prendrons.

    Entre CP1-CP2 et CP3-CP4 nous avons les "flying capacitors" pour la pompe de charge configurée ici en step-down.
    Ces 2 capas peuvent être fixées à 1µF min.
    Dans un BMS il faut toujours garder à l'esprit que l'on cherche toujours à minimiser les courants de fuite, les courants de pont, et tout ce qui peut diminuer la consommation générale.
    Trop souvent les technologies de condensateurs sont amplement méconnues et on assiste à des copié-coller où peu de gens savent concrètement justifier la valeur et le choix technologique.
    C'est aussi une des raisons fréquentes de non fiabilité rencontrées dans les BMS low cost.
    Un petit rappel (ou découverte pour beaucoup je pense):
    En général, la résistance d'isolement tend à diminuer à mesure que les valeurs de capacité augmentent.
    Le courant de fuite augmente aussi avec la hausse de la température.
    Pour un MLCC (multi layer ceramic chip) les fuites augmentent d’un facteur > 7 entre la température ambiante et 45°C, ce n'est donc pas à négliger.
    Dans l'industrie on prévilégie des condensateurs conformes aux normes AEC-Q200, ces composants supportent une plage de températures de fonctionnement de -55°C à +125°C.
    Donc avant de regarder le PCB ou de nettoyer le flux de soudure, bien prendre en compte ces aspects essentiels avant toutes autres considérations métaphysiques...

    La relation entre le courant de fuite (leakage current) et la résistance d'isolement du diélectrique du condensateur est donnée par la formule simple :
    I(leakage) = V/R(iso), donc le choix du diélectrique sera à évaluer selon les projets.
    Pour rappel, un condensateur se définit par les caractéristiques suivantes:
    – Capacité (μF)– Tension (V)– ESR (mΩ)– Fréquence (kHz)– Courant de fuite (μA)– Taille (mm) / empreinte– Durée de Vie– plage de température fonctionnelle
    Ces caractéristiques seront à justifier dans le cadre d'une étude sérieuse.

    Un point également assez mal connu est la relation entre la valeur C et la tension continue de service.

    Nom : capacity_vs_voltage.JPG
Affichages : 855
Taille : 43,8 Ko

    Les condensateurs céramiques multicouches à haute capacité (MLCC) ont une propriété souvent mal comprise par les concepteurs d'électroniques: la capacité varie avec la tension continue appliquée.
    Ce phénomène est présent dans tous les condensateurs à constante diélectrique élevée, ou condensateurs de classe II (caractéristique B / X5R R / X7R et F / Y5V).
    Cependant, cette variation peut être considérable entre différents types de MLCC.
    Un bon article sur ce sujet a été écrit par Mark Fortunato:
    https://www.edn.com/temp-and-voltage...comes-0-33-uf/

    La conclusion de cet article est que vous devez toujours vérifier la fiche technique du condensateur pour voir comment la capacité varie avec la tension de polarisation prévue.
    Ici la règle idiote de "qui peut le plus peut le moins" est à proscrire, seul le juste nécessaire pour le meilleur fonctionnel sera à trouver.

    Nous noterons aussi que la pompe de charge se désactive automatiquement si Ireg(3.3V) et Ireg(5V) sont < 3mA, ou encore si une situation de mise en protection a été déclenché.
    Ce sont des mécanismes courant dans les circuits spécialisés pour BMS afin de réduire les consommations du circuit superviseur.

    Pour le routage il faut s'assurer que ces condensateurs soient au plus près du BQ77PL900, nous aurons l'occasion d'y revenir plus tard quand nous étudierons les contraintes de routage.
    Dernière modification par Exotique ; 09/01/2021 à 13h49.

  7. #37
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    La pin 8: DSG

    Cette pin permet nativement d'activer le PMOS de décharge, dans notre cas nous nous en servirons d'information pour l'entrée DSG_EN du BQ76200, puisque ce dernier va nous permettre d'activer des NMOS comme nous le verrons.
    Pour cela nous devrons respecter la tension d'entrée max de la pin DSG_EN qui est indiquée à 16V en maximum absolute rating, ce qui conduira à réaliser l'adaptation simple suivante:

    DSG_adaptation.JPG

    La pin 9: BAT

    Cette broche permet au BQ77PL900 de s'alimenter et de surveiller ce qui se passe sur la tension globale du pack cellules.
    Pour autant le BQ77PL900 ne sera qu'en veille une fois cette pin reliée à une tension "valable", il faudra une autre information pour activer réellement le BMS avec toujours la condition nécessaire de n'avoir aucune situation de défaut.
    Certains auront peut être noté la circuiterie sur BAT qui peut paraître étrange:

    BAT_input.JPG

    Tout d'abord le polyswitch dont le rôle est de protéger le circuit aval afin de séparer le BQ77PL900 de la batterie en cas de défaillance grave du BQ.
    Nous prendrons ce modèle de chez Littlefuse: NANOASMDC016F-2
    Hold current:160mA
    Trip current: 450mA
    Boitier: 1206

    R23+C18 permet de charger doucement la pin BAT au moment de la connexion du +PACK et sert de filtre notamment lors de la charge.
    Le plus intéressant est la diode 1N4148.
    Quelqu'un a-t-il une petite idée?

  8. #38
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Bon, je vous laisse chercher

    On va s'occuper du reste en attendant.

    Les pins de 10 à 20: VC1 à VC11

    Ce sont les entrées de mesures et de commande d'équilibrages.
    Chaque entrée ne devra pas excéder 7VDC, c'est pour cette raison que 2 cellules adjacentes ne peuvent être égalisées en même temps (2*4.2V > 7V).
    Il serait préférable de mettre une zéner de 5.1V entre chaque entrées de mesure, c'est ce que nous faisons habituellement mais ici nous en passerons dans ce projet compte tenu que nous ne sommes pas tenu ici à un objectif de certification.

    Une petite remarque pour l'entrée VC11:
    certains plus curieux auront observé que cette entrée est caractérisée dans la datasheet à 0.5V max ce qui peut paraître très faible.
    Et ils ont raison!
    Cette pin est censée mesurer la différence de tension entre le GND et le référentiel interne du BQ77PL900, mais dans la phase mesure uniquement.
    Cette valeur est excédée en cours d'équilibrage mais ce n'est pas un problème puisque dans ce cas, et uniquement dans ce cas, la circuiterie interne gère cette situation particulière et autorise un dépassement.
    Pour l'aspect routage, les filtrages sont à disposer au plus près des entrées de mesures.
    Vous noterez aussi que j'ai disposé des fusibles sur les entrées de mesure reliées à chaque cellule.
    Là encore il serait possible de l'éviter dans un process industriel totalement formaté et où les protocoles d'assemblages sont rigoureux.
    Pour les gros packs on préfère les conserver, le prix de ces fusibles étant totalement négligeables sur le reste.

    Ici nous les gardons pour le cas où vous feriez la bêtise de bricoler sur les entrées et de faire un joli court-circuit.
    Changer un fusible c'est mieux que de tuer des cellules et de cramer les fins fils de mesures, voir pire encore.

    Les caractéristiques à respecter pour ces fusibles sont les suivantes:

    -> tension de service 50V min
    -> résistance à froid: <100mohms
    -> type rapide
    -> valeur 0.8 ou 1A (en dessous de ces valeurs les fusibles ont une résistance trop élevée généralement)
    -> format de boitier réduit, on préfèrera des 0603.

    La pin 21, 30, 37 et 41: GND

    C'est la référence principale du BQ77PL900.
    Il faudra bien distinguer les GND "signal" des GND "puissance" lors du routage de la carte.
    Le GND "signal" sera à prendre au plus près de l'entrée GND du pack cellules sur le PCB, il ne faut pas que les di/dt, qui peuvent être importants sur le chemin -BAT de puissance, entachent les mesures de tensions cellules et perturbent les fonctions internes du BQ.
    Bien entendu toutes les pins GND doivent être reliées au plan GND "signal", même si elles portent le même nom elles doivent être toutes reliées.

    Les pins 22 et 23: SRBGND et SRPGND

    SRBGND pour sense resistor battery ground, c'est la borne d'entrée de mesure du shunt coté pack cellules, appelé "battery" vu du coté de Texas et que nous appelons le coté PACK cellules.
    SRPGND pour sense resistor pack ground, c'est l'autre coté du shunt de mesure de courant, cette fois coté "pack" pour Texas et BAT pour nous.
    Je sais c'est chiant mais je vous avais prévenu. c'est une question d'habitude et de convention rarement compatibles entre nous et l'autre coté de l'Atlantique.

    Pour ces 2 pins la seule contrainte à respecter est ce que nous avons déjà vu plus haut dans l'exposé, à savoir le routage correct du shunt et également de disposer le filtre d'entrée au plus près du BQ.

    La pin 24: EEPROM

    Cette pin permet de programmer l'EEPROM du BQ.
    Pour autoriser et activer l'écriture, une tension min de 0.8*VLOG devra être appliquée (avec VLOG=3.3V ou 5V selon le choix de relier VLOG à VREG1 ou VREG2), ce qui revient à un WE (write enable).
    Après sa programmation et en mode normal, cette pin est mise à GND, ce qui revient à un /WP ou write protect.

  9. #39
    Vincent PETIT
    Animateur Électronique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Salut l'ami
    Citation Envoyé par Exotique Voir le message
    Le plus intéressant est la diode 1N4148.
    Quelqu'un a-t-il une petite idée?
    Cette fois ça y est ! Je sens que je vais dire une de ces conneries parce que j'écris à chaud mais je me lance... parce que j'ai peur de rien

    J'ai l'impression que tu as créé une rampe d'alimentation, tu as linéarisé la forme exponentielle de la charge R23+C18 en y opposant la forme logarithmique de VF f(IF).

    C'est ça ? Je suis à côté de la plaque ?
    Là où il n'y a pas de solution, il n'y a pas de problème.

  10. #40
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Salut Vincent,

    intéressante idée, mais ce n'est pas ce résultat que nous allons exploiter.
    Son rôle ici est surtout destinée à pouvoir maintenir la tension sur la pin Vbat dans un cas particulier qu'est le court-circuit sur une batterie au lithium.
    Le temps de réaction pour la protection en court-circuit étant de l'ordre de 200~250µs, si la tension du pack chute brutalement elle va descendre en dessous du 20V fatidique pour lequel le BQ77PL900 ne sera plus en mesure de réagir, donc de protéger et ce sera la catastrophe assurée.
    Il faut donc que le condensateur puisse contenir suffisamment d'énergie pour maintenir à flot le BQ77PL900 dans cette situation critique.

    En comptant un courant max nécessaire de 25mA max pour l'activité du BQ pour une durée de 500µs (nous prenons le double du temps nécessaire), notre condensateur doit satisfaire:

    C=I*t/(Umin-Uoff)=25.10^-3*500.10^-6/(27-20)=1.78µF
    Nous prenons 2.2µF/50V en X7R.

    Le courant de court-circuit sur un pack lithium peut atteindre une valeur extrêmement importante, dans notre pack autour de 250A.
    Si on estime ce courant on peut le modéliser de manière simplifiée ainsi:

    simu_cc.jpg

    On voit que la tension BAT du BQ atteindra 16V environ au moment du CC.

    Avec la modification le résultat est très différent:
    Images attachées Images attachées  

  11. #41
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Les valeurs que j'ai utilisé dans cette simulation sont assez réalistes puisque ce sont celles relevées sur un de mes packs pour ebike avec cellules NMC.
    Le courant de court-circuit est de quasi 200A en réel pour une batterie chargée à 90%.
    Avec des cellules LFP le courant de CC s'approche de 300A avec une chute de tension moins prononcée.
    Comme quoi ça pousse bien le lithium
    Vous comprenez sans doute mieux pourquoi le SOA des NMOS sera une caractéristique critique et que le choix du temps de réaction sera sans doute adapté en fonction du choix des cellules.
    Nous verrons ça prochainement.

    A suivre.
    Dernière modification par Exotique ; 09/01/2021 à 22h01.

  12. #42
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Poursuivons sur la configuration du BQ77PL900 et le descriptif des pins.

    La pin 25: XALERT

    XALERT est une sortie "open drain", avec un pull-up de 100k typique intégré dans le BQ77PL900.
    Cette sortie passe à 0 dès que le registre STATUS est modifié, c'est à dire dès qu'un défaut est détecté par le circuit.
    Pour rétablir et retrouver un usage normal il faut:
    1/ que le défaut ait disparu
    2/ envoyer une séquence 0-1-0 (toggle) sur le bit CTRL du registre OUTPUT_CONTROL
    3/ mettre ON les MOS
    4/ lire le registre STATUS ce qui remettra la pin XALERT à 1.

    Comme déjà dit plus tôt dans l'exposé, cette sortie XALERT doit être reliée de préférence à une entrée d'interruption du µC hôte afin de pouvoir réagir le plus rapidement possible.

    Les pins 26 et 27: SDATA et SCLK

    Le BQ77PL900 est un périphérique "esclave" compatible I2C, SDATA est la ligne signal qui transportera les données (datas) et SCLK est la ligne signal horloge cadençant la communication et le transfert des données.
    Il faudra prévoir la plupart du temps des pull-up externes sur ces 2 lignes, même si ce circuit en dispose en interne (10k reliés en interne à VLOG).
    En général 4.7kohms est un bon compromis, sinon comme souvent on vérifie à l'oscilloscope l'allure des signaux afin que les timings soient conformes aux spécifications précisées dans la datasheet.
    La fréquence maximale I2C pour le BQ77PL900 est fixée à 100kHz.

    I2C_parameters.JPG

    Comme tout circuit I2C esclave, le BQ77PL900 ne génère pas la clock.
    Son adresse fixe est sur 7 bits à laquelle l'ajout d'un 8eme bit permet de le mettre en écriture (0) ou en lecture (1).
    Cela donne:

    Ecriture: 0010 0000 => W -> 0x20
    Lecture: 0010 0001 => R -> 0x21

    Le BQ77PL900 est un I²C-like, il possède quelques limitations et déroge aux spécifications officielles de l'I2C que je décris ci-dessous:

    -> Le BQ ne retourne pas un ACK -> 0 mais un NACK -> 1 (ACK pour acknowledge ou acquittement)

    -> Le BQ n'intègre pas d'adresse en auto-incrémentation, ce qui autorise une écriture ou lecture en continu.
    -> Le bq77PL900 permet d'écrire ou de lire des données au même emplacement donc pas besoin de renvoyer l'emplacement de l'adresse du registre dans lequel on lit ou écrit.

    I2C_protocoles_R_W.JPG
    Dernière modification par Exotique ; 10/01/2021 à 14h03.

  13. #43
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    La pin 28: XRST

    Elle permet de faire un reset du µC au moment de la mise sous tension du BQ.
    Cela permet de synchroniser la disponibilité du BQ avec son µC hôte, le temps que le BQ active ses régulateurs LDO, sa pompe de charge, etc. puis que le µC hôte puisse communiquer avec lui sans conflit.
    Là encore c'est une sortie open-drain avec un pull-up interne de 3kohms relié en interne à VLOG (qui peut être 3.3V ou 5V selon le choix de raccordement de la pin VLOG).

    La pin 29: IOUT

    Cette pin est la sortie qui permet de récupérer l'information tension, image du courant de charge ou de décharge selon la formule suivante:
    Vcurrent(IOUT) = 1.2 + [IPACK × RSENSE × (IGAIN)]
    De manière plus précise nous la traiterons ainsi dans le soft:

    Vcurrent(IOUT)= 1.2+[IPACK × RSENSE × (IGAIN)]+(Voffset * Igain)

    Cette tension augmente selon le gain choisi (respectivement 10 ou 50) lorsque le courant est positif (en décharge), avec un 0 de courant référencé à 1.2V.
    De la même manière la tension diminue en dessous de 1.2V en situation de charge.
    Une procédure de calibration sera nécessaire pour obtenir la mesure la plus précise, nous lui consacrerons un chapitre spécifique plus loin.

    La pin 31: VOUT

    Cette pin est le pendant de la mesure de courant que nous venons de voir mais cette fois-ci nous obtiendrons une tension image de la tension de chaque cellule, ou de la tension globale du pack cellules ou encore de la tension en sortie batterie.

    VOUT1 = 0.975 – {(Cell voltage) × 0.15} quand VGAIN = 0
    ou
    VOUT2 = 1.2 – {(Cell voltage) × 0.20} quand VGAIN = 1

    Egalement:

    La tension totale en sortie de la batterie peut également être mesurée en activant le bit du registre FUNCTION_CONTROL [PACK].
    VOUT3 = (tension totale en sortie batterie) × 0,02 lorsque PACK = 1

    et

    La tension totale du pack cellules en activant le bit BAT du registre FUNCTION_CONTROL [BAT].
    VOUT3 = (tension totale du pack cellules) × 0,02 lorsque BAT = 1

    (Une fois encore je rappelle que notre convention PACK et BAT est inversée par rapport à celle de TEXAS)

    La procédure de calibration sera vue avec celle du courant dans un chapitre spécifique dédié au soft.

  14. #44
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    La pin 32: VLOG

    Cette pin est le rail d'alimentation des circuits logiques auquel les pull-up internes du BQ, la configuration du nombre de cellules (CNF0 à CNF2) et certains autres circuits internes seront raccordés.
    VLOG devra donc être reliée soit à VREG1 (5V) soit à VREG2 (3.3V) au moment de la conception selon les besoins et notamment selon l'alimentation du µC hôte.

    Les pins 33, 34 et 35: CNF0, CNF1 et CNF2

    Ces 3 pins permettent d'informer le BQ77PL900 du nombre de cellules qui lui sont raccordées.
    Selon le tableau suivant:

    Cell_configuration.JPG

    Un état "0" implique de relier la (ou les) pin(s) correspondante(s) directement au GND
    Un état "1" implique de relier la (ou les) pin(s) correspondante(s) à VLOG à travers une résistance de 10K.

    Dans notre projet en 10S, nous relierons CNF0, CNF1 et CNF2 directement au GND.

    La pin 36: ZEDE

    La pin ZEDE active les délais de détection programmés dans l'EEPROM lorsqu'elle est connectée directement à GND, c'est le mode normal d'usage.
    Le temps de retard de détection est mis à 0 lorsque cette broche est connectée à VLOG, donc ne sert qu'à inhiber les délais contenus en EEPROM à des fins de tests avant production.
    Dans notre cas nous relions cette broche à GND à travers une 10K.

    Les pins 38 et 39: TIN et TOUT

    TIN est l'entrée de mesure du pont diviseur qui permet de mesurer la température par une CTN de 10K +/-1% @25°C.
    TOUT est la broche d'alimentation activable du pont diviseur contenant la CTN.
    La référence de cette CTN de précision que nous prenons chez SEMITEC est 103AT.

    CTN_circuiterie.JPG

    Le BQ77PL900 gère tout seul cette mesure en interne en la comparant à une référence de 0.975V, si TIN<0.975V alors les MOS de charge et de décharge seront mis OFF.
    Dans ce cas le registre STATUS mettra à 1 le bit OVTEMP pour indiquer une surtempérature.
    Le µC en mode HOST ne permet de décider que du moment où la pin TOUT enverra 3.3V sur le pont diviseur à travers le registre FUNCTION_CONTROL [TOUT], ceci afin de minimiser la consommation de ce pont diviseur.
    Le pont diviseur comme le montre le schéma est constitué d'une résistance de 6.98kohms 1% en haut de pont et d'une résistance de 61.9kohms 1% en pied de pont diviseur.

    Nous utiliserons exactement le même montage pour les CTN que nous relierons au µC hôte.
    Le soft que j'ai développé autour de cette CTN, il y a maintenant une bonne décennie, permet une mesure à +/-0.5°C sur la plage -10°C à 80°C.
    Ce sera l'occasion enfin de voir qu'une simple CTN et un bon soft de traitement sont bien supérieurs aux autres solutions souvent abordées sur ce forum.

  15. #45
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Les pins 40 et 42: VREG2 et VREG1

    VREG1: sortie du régulateur LDO 5V intégré au BQ77PL900 (25mA @5V et 35mA@4.5v)
    VREG2: sortie du régulateur LDO 3.3V intégré au BQ77PL900 (25mA @3.3V)

    Nous devons découpler les sorties de ces régulateurs avec une capacité pour chacun de 2.2µF/16V en X7R (0603).

    La pin 44: GPOD

    La sortie GPOD est activée ou désactivée à travers le registre OUTPUT_CONTROL [GPOD] et son état par défaut est OFF.
    En mode autonome, cette broche est utilisée pour piloter un MOS de précharge pour la charge de la batterie lorsque celle-ci est en dessous de la tension min, entre 1.8V et 2.7V par cellule.
    Nous ne nous servirons pas de cette fonctionnalité pour notre BMS puisque nous allons réserver la pin PCHG_EN du BQ76200 pour piloter une prédécharge par le µC.
    Une petite parenthèse s'impose:

    Dans le monde du vélo électrique, il est assez fréquent de rencontrer des contrôleurs moteurs à bas coût.
    Ceux-ci ne disposent que très rarement d'une précharge de leurs condensateurs d'entrée, ce qui se traduit par des surcourants de fortes amplitudes durant quelques ms au moment du raccordement batterie/contrôleur.
    La conséquence est la formation d'étincelles au moment du branchement ce qui à moyen terme détruit les contacts du connecteurs et provoquera à coup sur des pannes...
    Dans ces conditions, si rien n'est prévu, le BMS déclenchera sa sécurité en surcourant ou en court-circuit.
    Dans le contrôleurs dignes de ce nom, la mise sous tension se fait de manière douce généralement contrôlée par un MOS utilisé en mode linéaire durant le temps de la mise sous tension et dans ce cas pas de surcourant à déplorer.

    Pour parer à ce cas, si vous achetez votre contrôleur moteur sur les sites épiciers habituels nous prévoyons donc cette pré-décharge qui sera piloté par le µC et reliée au BQ76200 qui pilotera un petit PMOS qui mettra en série une résistance de 1kohms/2W pour limiter le courant de pré-décharge à 40mA environ.
    Lorsque le pic d'appel en courant au branchement est passé nous éteignons cette fonction, après environ 1s, et pouvons activer normalement le bras de puissance et l'alimentation de sortie sera totalement disponible.

    La pin 46: PMS

    Cette broche (Precharge mode select) permet de sélectionner ou non le mode précharge que nous avons vu précédemment.
    Dans notre cas cette pin sera à relier à +BAT (la sortie) pour interdire le mode précharge à travers une résistance de 10K.

    La fonction précharge est importante mais pour notre projet elle sera directement faite par une communication CAN entre le BMS et le chargeur, car je vous rappelle que j'ai choisi une architecture système et nous verrons que cela fait toute la différence avec les solutions à bas coûts et pour la fiabilité à long terme.

    La pin 47: PACK

    Cette broche joue plusieurs rôles:
    1/ elle permet le réveil du BMS en présence d'un chargeur, dès que sa tension atteint un seuil équivalent au moins à celui du pack cellules + 0.4V et qu'aucune des cellules ne soient en dessous du UV (undervoltage) paramétré.
    2/ de vérifier que la tension de sortie est bien redescendue en dessous du seuil d'éveil lorsque la commande de shutdown est activée (en général quelques dizaines de secondes selon la valeur de la charge capacitive en sortie).
    3/ d'analyser la situation en sortie après une situation de mise en sécurité.
    4/ d'alimenter les 2 LDO à l'initialisation de la même manière que nous l'avons vu avec la pin BAT, pour cela il faut que VPACK(startup)>7.5V si VBAT=7V

    Sur cette entrée PACK nous aurons le même montage diode+RC que sur la pin BAT que nous avons vu précédemment.

    La pin 48: CHG

    Nous terminons cette revue des pattes du BQ77PL900 par la sortie destinée à piloter nativement un PMOS de charge mais que nous relions, comme pour la pin DSG de décharge, au BQ76200 et plus précisément à l'entrée CHG_EN en y associant la résistance et la diode zéner 5.1V pour protéger l'entrée.

    Cette présentation était un peu longue désolé, bien que résumée, mais c'est typiquement le processus normal à faire quand on veut exploiter efficacement un tel composant sans avoir de grosses surprises après coup...

    A suivre.

  16. #46
    guanglier

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Et ben voila une analyse bien bien complète !

    j'attend avec impatience la réalisation

  17. #47
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Le placement provisoire est fait, cette première page de schéma est en place, je posterai sa mise à jour un peu plus tard.
    Je vais pouvoir faire la 2eme page pour le MAX17205, le µC et la COM.

    Voici où j'en suis pour le PCB:
    Images attachées Images attachées  

  18. #48
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Voici le schéma modifié pour la page 1 prenant en compte le MAX17205:

    Nom : schéma_BMS10S_page1.jpg
Affichages : 1238
Taille : 170,3 Ko

    La page 2 et 3 dans la soirée.
    (j'espère que le schéma sera lisible vu le redimensionnement fait par l'interface du forum, sinon je le posterai en zip)

  19. #49
    Exotique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Bon je le mets en zip...
    Fichiers attachés Fichiers attachés

  20. #50
    Vincent PETIT
    Animateur Électronique

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Merci parce qu'en effet, j'ai essayé de lire le schéma et c'est écrit trop petit
    Là où il n'y a pas de solution, il n'y a pas de problème.

  21. #51
    mweber

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Bonjour et un grand bravo pour ton projet, très complet et sérieux !

    Pourrais tu donner le rôle de R15 en série avec C13 et C14 (ils forment un amortisseur "muffler" en anglais je crois, non ?) c'est pour le cas de commandes de charges inductive comme le moteur de ton vélo élec ?

    Idem pour R23 en parallèle D3 qui alimente l'entrée Bat de IC1

    Merci d'avance !

    Matthieu

  22. #52
    Bitrode

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Oui c'est ça.
    Les 2 condensateurs en série prennent en considération le risque de défaillance d'un des 2 condensateur en mode court-circuit, la résistance permet de limiter le courant d'appel dans ces condensateurs ( !jamais de discontinuité de tension aux bornes d'un condensateur).
    D3 assure l'isolement du condensateur en cas de court-circuit, il est dimensionné pour assurer l'énergie nécessaire à IC1 dans ce cas particulier (quelques centaines de µs).
    La résistance offre un chemin au courant lorsque la diode est bloquée ou si celle-ci était HS en mode ouvert.
    Ce sont des considérations liées à la sécurité fonctionnelle.

  23. #53
    fiscal75

    Re : [PROJET] Réalisation d'un PCM/BMS pour batterie lithium de 5S à 10S

    Bonjour

    petit déterrage de ce super projet. Avez vous un retour d'expérience?

Page 2 sur 2 PremièrePremière 2

Discussions similaires

  1. [Blanc] Chargeur pour batterie Lithium 22V
    Par enzif dans le forum Dépannage
    Réponses: 10
    Dernier message: 31/10/2020, 11h18
  2. [Energie] Projet batterie de camping car 18650 Lithium ion
    Par rabetcau dans le forum Électronique
    Réponses: 1
    Dernier message: 05/10/2020, 20h43
  3. [Energie] Batterie Lithium pour vélo...
    Par invite3d6c783d dans le forum Électronique
    Réponses: 9
    Dernier message: 06/03/2019, 08h05
  4. [Analogique] Diodes zener pour batterie lithium-ion
    Par invite92ce1af6 dans le forum Électronique
    Réponses: 9
    Dernier message: 11/08/2016, 17h09
  5. [Energie] Choisir le bon chargeur pour une batterie lithium
    Par titus06 dans le forum Électronique
    Réponses: 0
    Dernier message: 03/05/2016, 22h08
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...