Mesurer la tension de la batterie au lithium-ion (donc la capacité restante)

14

Ce avec quoi je travaille: J'utilise ma carte Arduino auto-fabriquée (dans le sens où j'utilise le chargeur de démarrage Arduino et l'éditeur de code) à 3,3 V, et alimentée par une batterie au lithium-ion, qui est chargée par USB par une micropuce correspondante chargeur IC.

Ce que j'essaie de réaliser: je veux mesurer la capacité de la batterie toutes les minutes environ. J'ai un écran LCD connecté, donc l'idée est que la configuration globale me permet de savoir comment la batterie fonctionne à un moment donné. La fiche technique de la batterie a une courbe tension / niveau de décharge, et donc en mesurant la tension de la batterie, je peux estimer la capacité restante (très grossièrement mais assez pour moi!).

Ce que j'ai fait:

  • (EDIT: valeurs de résistance mises à jour et commutateur P-MOSFET ajouté en fonction des suggestions de @stevenvh et @ Jonny).

  • J'ai connecté un diviseur de tension de la batterie V_plus, avec la plus grande "portion" allant à une broche de lecture analogique (c'est-à-dire ADC) sur la puce Arduino / Atmega.

  • Le diviseur est de 33 KOhm à 10 KOhm, permettant ainsi la mesure jusqu'à 4,1 Volts maximum de la batterie Li-ion de mon microcontrôleur de niveau 3,3 V.

  • De plus, en utilisant l'une des broches d'E / S connectée à un MOSFET à canal n, je ne peux commuter le courant via le diviseur que lorsque j'ai besoin de la mesure.

  • Voici un schéma approximatif (mis à jour pour la 2e fois sur la base des suggestions de @stevenvh et @Nick):

entrez la description de l'image ici

Ma question:

  • Comment est ma configuration actuelle?

  • Mes seules contraintes sont: (1) Je voudrais faire une mesure approximative de la capacité de la batterie en fonction de la lecture de tension, comme décrit ci-dessus. (2) Je voudrais empêcher le diviseur de tension d'interférer avec la lecture de la présence de la batterie par mon CI de charge (dans ma configuration d'origine, le diviseur a parfois fait mal lire la présence du CI même lorsque la batterie était absente).

morsure
la source
1
"J'ai utilisé de grandes valeurs de résistance". La broche d'entrée peut avoir un courant de fuite, la pire valeur typique est de 1 uA. Avec un courant faible à travers le diviseur, cela peut fausser la lecture.
stevenvh
Je veux donc un courant faible à travers le diviseur, mais suffisamment élevé pour qu'il soit au moins un ordre de grandeur supérieur au courant de fuite maximum.
boardbite
Ou utilisez un FET pour allumer et éteindre le diviseur, comme je l'ai suggéré dans cette réponse à une question similaire.
stevenvh
Avec le FET en place, dans l'état "off" du diviseur, pensez-vous que cela pourrait également résoudre le problème de lecture erronée du circuit intégré du chargeur de la présence de la batterie? (BTW, quelle coïncidence si cette personne a également posé la question aujourd'hui!)
boardbite
1
Vous avez le mauvais FET du mauvais côté. Si vous désactivez celui-ci, la pleine tension sera sur la broche d'entrée, car R1 ne consommera pas de courant. Vous avez besoin d'un P-MOSFET sur le côté haut, de sorte que sa mise hors tension tire la broche d'E / S à la masse.
stevenvh

Réponses:

12

entrez la description de l'image ici

Cela semble être très similaire au schéma de Nick, il était probablement occupé à le dessiner quand il a posté :-).

D'abord pourquoi vous ne pouvez pas utiliser le N-FET sur le côté haut: il a besoin d'une tension de grille de quelques volts supérieure à la source, et le 4,2 V est tout ce que vous avez, rien de plus élevé, donc cela ne fonctionnera pas.

J'ai une valeur plus élevée pour le pull-up, bien qu'une valeur de 100 kΩ fera également l'affaire. 10 kΩ provoquera un courant supplémentaire inutile de 400 µA lorsque vous mesurez. Ce n'est pas la fin du monde, mais c'est 1 résistance dans les deux cas, alors pourquoi ne pas utiliser une valeur plus élevée.

Pour les MOSFET, il existe une variété de pièces à choisir étant donné que les exigences ne sont pas si strictes; vous pouvez envisager des solutions peu coûteuses comme, par exemple, Si2303 pour le canal P et BSS138 pour le canal N.

stevenvh
la source
Merci pour la réponse officielle! Je pense que je pourrais penser à plusieurs utilisations de cette combinaison particulière. J'ai mis à jour mon schéma dans la question, basé sur cela. Et appréciez l'explication du N-FET.
boardbite
Que recommanderiez-vous comme exemple de MOSFET N-Channel adapté (idéalement de type SMD) à utiliser ici? L'IRF530 semble être grand et pas trop bon marché non plus. (Pour le canal P, je vois que le Si2303 est disponible en SMD, de sorte que l'on est déjà pris en charge.)
Boardbite
1
@Inga - Vous n'avez pas besoin de courant, donc la résistance d'activation n'est pas si importante. Il suffit de regarder la tension de seuil de la porte: elle devrait être allumée à 3,3 V, mais même dans ce cas, elle n'a pas à absorber de courant, et il y a ensuite beaucoup de choix. Le BSS138 est l'un des moins chers que j'ai pu trouver et fera l'affaire.
stevenvh
7

@Inga. Il s'agit plus d'un commentaire que d'une réponse. Mais je voudrais publier une photo, donc je la poste comme réponse.

Votre microcontrôleur (uC) est alimenté avec + 3,3V. La vidange du P-MOSFET proposé peut atteindre jusqu'à + 4,1 V. Comme il est actuellement dessiné, un signal logique + 3,3 V ne pourra pas éteindre complètement le P-MOSFET. Q6 dans le schéma ci-dessous forme une sortie de drain ouvert, qui est tolérante à + 4.1V.

C14 réduit l'impédance, que votre A / D verra.

entrez la description de l'image ici

[...] tension de la batterie (donc capacité restante)

Vous pourriez constater que la détection de la tension de la batterie n'est pas un moyen précis de détecter la capacité restante. Dans les équipements portables (téléphones portables, ordinateurs portables), la capacité de la batterie est estimée en mesurant le courant entrant et sortant de la batterie. Il existe des dizaines de CI de jauge de carburant de batterie spécialisés ( bq27200 , par exemple), qui aident à cette tâche.

Pourquoi pas un seul MOSFET à canal N sur le côté bas et le diviseur à deux résistances sur le côté supérieur?
[à partir d'un commentaire ci-dessous]

Un interrupteur côté bas a des problèmes lorsque la tension de la batterie (V bat ) est supérieure à la tension d'alimentation du microcontrôleur (V cc ). Lorsque l'interrupteur côté bas est désactivé, l'extrémité de masse du diviseur de tension flotte, le diviseur ne se divise plus, la tension de la batterie complète apparaît sur la broche ADC du microcontrôleur. Cela peut endommager l'UC. Cela créera également un chemin de fuite à travers lequel la batterie se déchargerait.
Un interrupteur côté haut est nécessaire lorsque V bat > V cc .

1 Je vais utiliser V cc pour faire court, mais cette discussion s'applique également à V dd , AV cc , AV dd . En cas de doute, recherchez une fiche technique, bien sûr.

Nick Alexeev
la source
Merci Nick! Cela a du sens, et j'ai mis à jour le schéma (la jauge de carburant est une option, mais j'essaie également d'apprendre des composants électroniques de base et d'expérimenter, d'où l'idée du diviseur de tension)
boardbite
Pourquoi pas un seul N Mosfet sur le côté bas et le diviseur à deux résistances sur le côté supérieur? Je ne vois pas pourquoi il est nécessaire d'utiliser un Mosfet N pour conduire le Mosfet P
Luis Carlos
1
@Luis J'ai édité la réponse et ajouté la réponse à votre commentaire.
Nick Alexeev
4

Ad.A: Je pense qu'il est assez juste d'utiliser un simple diviseur de tension pour détecter la tension de la batterie. Cependant, vous devez choisir soigneusement la résistance. L'impédance interne de vos entrées ADC est de 100kΩ, selon la fiche technique ATmega328 . Voir "Figure 23-8. Circuit d'entrée analogique". Si votre diviseur a une impédance comparable à l'entrée ADC, le circuit d'entrée ADC se comportera essentiellement comme un autre nœud du diviseur. Cela peut vous donner des décalages dans les lectures ADC.

L'utilisation d'un diviseur avec jusqu'à 10 kΩ à travers les rails serait suffisamment faible pour ignorer l'impédance d'entrée ADC, tout en n'utilisant que 410 µA. Si cela est trop pour votre application, vous pouvez bien sûr choisir des résistances plus importantes, mais gardez à l'esprit que l'ADC est là et est connecté à Vcc / 2.

Jonny B Good
la source
Cette explication est logique. Bien sûr, 0,4 mA, ce n'est pas tant que ça! J'essayais juste d'être aussi idéaliste que possible :) Avez-vous des suppositions sur la raison pour laquelle ce diviseur pourrait affecter la lecture de l'IC de mon chargeur pour savoir s'il y a une batterie?
boardbite
Je suppose qu'il y a toujours une connexion entre la broche positive de la batterie où se trouve le diviseur et le + 5V de l'USB. Je ne connais pas votre circuit particulier, mais je suis sûr que vous pouvez déduire ce qui va où si vous jetez un coup d'œil au schéma Arduino .
Jonny B Good
Je suis sûr que si vous suivez l'idée de stephenh d'utiliser un FET pour connecter / déconnecter le diviseur si nécessaire, tout sera doris. Les MOSFET ont des résistances complètement négligeables pour votre diviseur. Vous auriez peut-être besoin d'un autre ADC pour contrôler si l'USB est connecté ou non.
Jonny B Good
Je vous remercie; J'ai mis à jour la question sur la base de deux des suggestions et ajouté un schéma. En ce qui concerne la surveillance de l'alimentation USB, l'IC de charge a déjà une sortie d'état pour cela aussi!
boardbite