Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Gérard
Carte pour mesurer la capacité des batterie NIMH
-
cyril13110
Confirmé- Messages : 713
- Âge : 40
- Enregistré en : avril 2016
- Localisation : 13
Bonsoir à tous,
Je reviens avec un nouveau montage qui va me permettre de mesurer la capacité restantes de mes batteries NIMH de taille AA et AAA que j'ai a la maison.
J'ai pas encore fait de schéma , mais il est trés simple. une resistance de 10 ohm en serie avec une batterie AA et un transistor MOS pour couper dés que la pile arriver à 0.8V.
Le schéma est trés simple
Voila mon code test, pour le moment je suis sur une seule batterie et je suis avec un 18F2550.
Voila le resultat sur afficheur LCD
Par contre je bloque une une chose, je souhaiterais n'avoir que 2 chiffre aprés la virgule pour la tension (1.21V) et 3 chiffre aprés la virgule pour le courant (0.125mA) mais je ne sais pas comment mi prendre
J'ai tenté de passer par des changement de format mais sans grand résulat.
Auriez vous une idée pour reduire le nombre de chiffres aprés la virgules?
Le but final est une carte avec 5 batteries avec la possibilité de mettre des AA et des AAA et le pic final sera un 18F46J50.
Voila pour le moment
bonne soiré à tous
Je reviens avec un nouveau montage qui va me permettre de mesurer la capacité restantes de mes batteries NIMH de taille AA et AAA que j'ai a la maison.
J'ai pas encore fait de schéma , mais il est trés simple. une resistance de 10 ohm en serie avec une batterie AA et un transistor MOS pour couper dés que la pile arriver à 0.8V.
Le schéma est trés simple
Voila mon code test, pour le moment je suis sur une seule batterie et je suis avec un 18F2550.
Code : Tout sélectionner
program mesure_cap_NIMH1
' Declarations section
' Valeur de la resistance de decharge
const Res = 10.0
' Seuil bas de la tension d'une pile Ni-MH
const SEUIL_BAS_TENSION_PILE = 0.80
' Détection de seuil bas de la tension de la pile
dim seuilBasBatterieAtteint as bit
' Heure de début de la mesure
dim initTime as longword
' Quantité d'électricité générée par la pile lors
' de la dernière seconde
dim quantiteElectricite as float
' Quantité d'électricité totale générée par la pile
' depuis le lancement du programme
dim quantiteElectriciteTotale as float
dim quantiteElectriciteTotale_I as word
dim U0 as float
dim U0_I as word
dim U0_calc as float
dim U1 as float
dim tensionResistance as float
dim courant as float
dim courant_I as word
dim courant_calc as float
dim txt as string[6]
' Lcd module connections
dim
LCD_RS as sbit at RB4_bit
LCD_EN as sbit at RB5_bit
LCD_D7 as sbit at RB3_bit
LCD_D6 as sbit at RB2_bit
LCD_D5 as sbit at RB1_bit
LCD_D4 as sbit at RB0_bit
dim
LCD_RS_Direction as sbit at TRISB4_bit
LCD_EN_Direction as sbit at TRISB5_bit
LCD_D7_Direction as sbit at TRISB3_bit
LCD_D6_Direction as sbit at TRISB2_bit
LCD_D5_Direction as sbit at TRISB1_bit
LCD_D4_Direction as sbit at TRISB0_bit
' End Lcd module connections
dim U0_direction as sbit at TRISA0_bit
U1_direction as sbit at TRISA1_bit
Trans_direction as sbit at TRISC0_bit
Trans as sbit at Portc.0
sub procedure mesureQuantiteElectricite()
' Lit la tension aux bornes de la pile et aux bornes de la résistance
U0 = ADC_Read(0)*5/1024
U1 = ADC_Read(1)*5/1024
tensionResistance = U0-U1
' Verifie que la tension de la pile n'est
' pas inferieure à son seuil bas afin de ne pas
' l'endommager
if (U0 < SEUIL_BAS_TENSION_PILE) then
seuilBasBatterieAtteint = 1
end if
' Calcul du courant qui circule dans la résistance
courant = (U0-U1)/Res
' La quantité d'électricité est la quantité de charges électriques
' déplacées par les électrons. Elle est égale à l'intensité
' multipliée par le temps (1 seconde ici).
' Afin d'avoir la quantité d'électricité en mAh, il faut
' utiliser le facteur 1000/3600
quantiteElectricite = courant/3.6
' On additionne cette quantité d'électricité aux précédentes
' afin de connaître la quantité totale d'électricité
' à la fin de la mesure
quantiteElectriciteTotale = quantiteElectriciteTotale+quantiteElectricite
quantiteElectriciteTotale_I = quantiteElectriciteTotale
' Affichage sur l'afficheur OLED de la tension de la pile,
' du courant débité ainsi que de la quantité d'électricité débitée
' par la pile depuis le lancement du programme
Lcd_Out(1,1,"Test mesure")
FloatToStr(U0, txt)
Lcd_Out(2,1,"U=")
Lcd_Out(2,3,txt)
Lcd_Out(2,15,"V")
FloatToStr(courant, txt)
Lcd_Out(3,1,"A=")
Lcd_Out(3,3,txt)
Lcd_Out(3,15,"A")
' FloatToStr(quantiteElectriciteTotale, txt)
IntToStr(quantiteElectriciteTotale_I, txt)
Lcd_Out(4,1,"Q=")
Lcd_Out(4,3,txt)
Lcd_Out(4,12,"mAh")
end sub
main:
' Main program
OSCCON = $7F
ADCON1 = $0D
ADCON2 = $21
' RA0 Entrée ANA, RA1 Entrée ANA
' RCO Sortie commande transistor, RC1 entrée TOR BP marche
Trans_direction = 0
' Port B commande afficheur
ADC_Init ()
Lcd_Init()
seuilBasBatterieAtteint = 0
quantiteElectriciteTotale=0
Trans = 1
While (TRUE)
' Mesure de la quantité d'électricité débitée toutes les
' secondes jusqu'à ce que la tension de la pile soit inférieure
' à son seuil bas afin de ne pas l'endommager.
if (seuilBasBatterieAtteint = 0) then
mesureQuantiteElectricite()
Delay_ms(1000)
else
' Une fois que le seule bas de la pile est atteint,
' on positionne le transistor en mode bloqué afin
' d'arrêter la décharge de la pile
Trans = 0
Lcd_Out(1,1," ")
Lcd_Out(2,1," ")
Lcd_Out(3,1," ")
Lcd_Out(4,1," ")
Lcd_Out(1,1,"Fin Decharge")
Lcd_Out(2,1,"Capacite pile=")
IntToStr(quantiteElectriciteTotale_I, txt)
Lcd_Out(3,3,txt)
Lcd_Out(4,1," mAh")
Delay_ms(1000)
end if
Wend
end.
Voila le resultat sur afficheur LCD
Par contre je bloque une une chose, je souhaiterais n'avoir que 2 chiffre aprés la virgule pour la tension (1.21V) et 3 chiffre aprés la virgule pour le courant (0.125mA) mais je ne sais pas comment mi prendre
J'ai tenté de passer par des changement de format mais sans grand résulat.
Auriez vous une idée pour reduire le nombre de chiffres aprés la virgules?
Le but final est une carte avec 5 batteries avec la possibilité de mettre des AA et des AAA et le pic final sera un 18F46J50.
Voila pour le moment
bonne soiré à tous
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Carte pour mesurer la capacité des batterie NIMH
-
cyril13110
Confirmé- Messages : 713
- Âge : 40
- Enregistré en : avril 2016
- Localisation : 13
Carte pour mesurer la capacité des batterie NIMH
Bonjour cyril13110, et tout le forum,
Je peux t'aider, mais que en ASM, je sais le faire,
Autre chose, tu as intérêt à mettre un suiveur Rail-to-Rail entrée, sortie, sur l'entrée analogique, avec pont diviseurs, et avoir une bonne référence de tension comme des MCP1501, de plus ta résistance de 10 Ohms doit être très précis pour une bonne mesure(Ampérage)
Montage très intéressant, et instructive, je suis à peux près sur la même chose que toi, j'en reparlerai plus tard en section ASM
Ps :
Bon... je sais... ça a rien à voir, mais en langage RapidQ, qui est du basic pour ordinateur, voici une Function que j'ai écrit, je l'utilise très souvent.
A+
cyril13110 a écrit :Source du message Par contre je bloque une une chose, je souhaiterais n'avoir que 2 chiffre aprés la virgule pour la tension (1.21V) et 3 chiffre aprés la virgule pour le courant (0.125mA) mais je ne sais pas comment mi prendre
Je peux t'aider, mais que en ASM, je sais le faire,
Autre chose, tu as intérêt à mettre un suiveur Rail-to-Rail entrée, sortie, sur l'entrée analogique, avec pont diviseurs, et avoir une bonne référence de tension comme des MCP1501, de plus ta résistance de 10 Ohms doit être très précis pour une bonne mesure(Ampérage)
Montage très intéressant, et instructive, je suis à peux près sur la même chose que toi, j'en reparlerai plus tard en section ASM

Ps :

Code : Tout sélectionner
Function Arrondir(decimal as Double,Apres as Single)as Double
if instr(trim(str$(decimal)),".") = 0 then
Arrondir = decimal
exit function
end if
Arrondir = val(mid$(trim(str$(decimal)),1, instr(trim(str$(decimal)),".") + Apres))
end function
A+
Modifié en dernier par Temps-x le mar. 29 mars 2022 19:59, modifié 4 fois.
Carte pour mesurer la capacité des batterie NIMH
Bonjour
C'est quel Basic ?
Il doit y avoir des fonctions de manipulations de strings, qui permettent d'afficher un extrait de la chaîne txt. Il faudrait aussi prévoir un arrondi sur la 2ème décimale.
Est-ce que les float sont vraiment nécessaires ?
en faisant U0 = (ADC_Read(0)*5*1000)/1024 tu obtiens directement un entier 1210, qui permet d'arrondir à 1,21.
C'est quel Basic ?
Il doit y avoir des fonctions de manipulations de strings, qui permettent d'afficher un extrait de la chaîne txt. Il faudrait aussi prévoir un arrondi sur la 2ème décimale.
Est-ce que les float sont vraiment nécessaires ?
en faisant U0 = (ADC_Read(0)*5*1000)/1024 tu obtiens directement un entier 1210, qui permet d'arrondir à 1,21.
Carte pour mesurer la capacité des batterie NIMH
- paulfjujo
Expert- Messages : 2410
- Âge : 72
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
en C , je ferais comme cela
l'indice commence à 0 en C
mais à 1 en basic ?
01234
1.21\0
txt[4]=0;
ou
*(txt+4)=0
car un zero indique fin de string ...
sic Satinas
sinon tu utilises comme reference + ADC FVR=4.096V au lieu de +Vdd
et tu as une lecture directe en faisant
ADC lecture <<2
ou ADC Lecture * 4
apres , il y juste à positionner le . decimal
en C , je ferais comme cela
l'indice commence à 0 en C
mais à 1 en basic ?
01234
1.21\0
txt[4]=0;
ou
*(txt+4)=0
car un zero indique fin de string ...
sic Satinas
en faisant U0 = (ADC_Read(0)*5*1000)/1024 tu obtiens directement un entier 1210, qui permet d'arrondir à 1,21.
sinon tu utilises comme reference + ADC FVR=4.096V au lieu de +Vdd
et tu as une lecture directe en faisant
ADC lecture <<2
ou ADC Lecture * 4
apres , il y juste à positionner le . decimal
Carte pour mesurer la capacité des batterie NIMH
-
cyril13110
Confirmé- Messages : 713
- Âge : 40
- Enregistré en : avril 2016
- Localisation : 13
Bonsoir tous le monde,
Heu j'en voie pas vraiment la nécessité vue que la mesure est plutôt stable.
De ce qui est des résistances, je l'ai ai toute contrôlé via multimètre, elles sont toute pile à 10 ohm du coup nickel de ce coté là.
J'ai fais une petite modif de code, j'ai mis le temps max pour la temps de travail du CAN.
Je suis avec MIKROBASIC PRO V7.6.0.
Ok merci pour ton conseil je vais tester.
Bon en revenant à la valeur que je souhaite ca fait carnage.
Par contre je viens de faire un test qui me vas bien en voila le bout de code (merci paulfjujo car je me suis en partie inspiré de ton bout de code):
J'ai tous simplement fait caractère par caractère.
Le résultat est des plus satisfaisant car la tension est en concordance avec le courant.
Bonne soiré à tous
Temps-x a écrit :Autre chose, tu as intérêt à mettre un suiveur Rail-to-Rail entrée, sortie, sur l'entrée analogique, avec pont diviseurs, et avoir une bonne référence de tension comme des MCP1501, de plus ta résistance de 10 Ohms doit être très précis pour une bonne mesure(Ampérage)
Heu j'en voie pas vraiment la nécessité vue que la mesure est plutôt stable.
De ce qui est des résistances, je l'ai ai toute contrôlé via multimètre, elles sont toute pile à 10 ohm du coup nickel de ce coté là.
J'ai fais une petite modif de code, j'ai mis le temps max pour la temps de travail du CAN.
satinas a écrit :C'est quel Basic ?
Il doit y avoir des fonctions de manipulations de strings, qui permettent d'afficher un extrait de la chaîne txt. Il faudrait aussi prévoir un arrondi sur la 2ème décimale.
Est-ce que les float sont vraiment nécessaires ?
en faisant U0 = (ADC_Read(0)*5*1000)/1024 tu obtiens directement un entier 1210, qui permet d'arrondir à 1,21.
Je suis avec MIKROBASIC PRO V7.6.0.
Ok merci pour ton conseil je vais tester.
Bon en revenant à la valeur que je souhaite ca fait carnage.
Par contre je viens de faire un test qui me vas bien en voila le bout de code (merci paulfjujo car je me suis en partie inspiré de ton bout de code):
J'ai tous simplement fait caractère par caractère.
Code : Tout sélectionner
' Affichage sur l'afficheur OLED de la tension de la pile,
' du courant débité ainsi que de la quantité d'électricité débitée
' par la pile depuis le lancement du programme
Lcd_Out(1,1,"Test mesure")
FloatToStr(U0, txt)
Lcd_Out(2,1,"U=")
Lcd_Chr(2,3,txt[0])
Lcd_Chr(2,4,txt[1])
Lcd_Chr(2,5,txt[2])
Lcd_Chr(2,6,txt[3])
Lcd_Out(2,15,"V")
FloatToStr(courant, txt)
Lcd_Out(3,1,"A=")
Lcd_Chr(3,3,txt[0])
Lcd_Chr(3,4,txt[1])
Lcd_Chr(3,5,txt[2])
Lcd_Chr(3,6,txt[3])
Lcd_Chr(3,7,txt[4])
Lcd_Out(3,15,"A")
' FloatToStr(quantiteElectriciteTotale, txt)
IntToStr(quantiteElectriciteTotale_I, txt)
Lcd_Out(4,1,"Q=")
Lcd_Out(4,3,txt)
Lcd_Out(4,12,"mAh")
Le résultat est des plus satisfaisant car la tension est en concordance avec le courant.
Bonne soiré à tous
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Carte pour mesurer la capacité des batterie NIMH
-
cyril13110
Confirmé- Messages : 713
- Âge : 40
- Enregistré en : avril 2016
- Localisation : 13
Bonsoir à tous,
Je me pose une question existentiel sur mon code.
J'ai fait le test avec des batteries AAA neuve de noté 900mA/h et mon montage m'a indiqué 600mA/h, ce qui fait un sacré décalage.
Soit les batteries ne sont pas à la puissance indiqué (mais 300mA/h de décalage je trouve ca énorme), soit il y a un problème de timing dans mon code.
Pour le moment le top calcul est effectué via une tempo toute simple de 1seconde mais je pense voir si je passe par une interruption pour le timing si ca donnerais pas mieux. car au final je ne suis pas sur 1 seconde pile mais un poile plus vue qu'il y a tous de même 2 lectures ana, des calculs et la gestion de l'affichage.
Si on analyse l'ensemble, si on prends qu'un seul échantillon de quelques secondes ca doit faire un décalages de quelques milliseconde mais sur une durée plus longue j'ai bien peur de fausser ma mesure.
Je vais voir pour modifier mon code et inclure un calcul de seconde via interruption afin de voir si les résultats changent ou pas.
Bonne soirée à tous
Je me pose une question existentiel sur mon code.
J'ai fait le test avec des batteries AAA neuve de noté 900mA/h et mon montage m'a indiqué 600mA/h, ce qui fait un sacré décalage.
Soit les batteries ne sont pas à la puissance indiqué (mais 300mA/h de décalage je trouve ca énorme), soit il y a un problème de timing dans mon code.
Pour le moment le top calcul est effectué via une tempo toute simple de 1seconde mais je pense voir si je passe par une interruption pour le timing si ca donnerais pas mieux. car au final je ne suis pas sur 1 seconde pile mais un poile plus vue qu'il y a tous de même 2 lectures ana, des calculs et la gestion de l'affichage.
Si on analyse l'ensemble, si on prends qu'un seul échantillon de quelques secondes ca doit faire un décalages de quelques milliseconde mais sur une durée plus longue j'ai bien peur de fausser ma mesure.
Je vais voir pour modifier mon code et inclure un calcul de seconde via interruption afin de voir si les résultats changent ou pas.
Bonne soirée à tous
Carte pour mesurer la capacité des batterie NIMH
- paulfjujo
Expert- Messages : 2410
- Âge : 72
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
quelle est la date fraicheur de tes piles ?
à quel valeur de courant de decharge mesures-tu la capacité ?
quelle est la valeur finale de tension apres 900mAH ? et la donnéee constructeur ?
tu ne peux pas rajouter une RTC .. top 1Hz => interrupt RB0 à 1 seconde tres precise ?
et duree Ecoulée globale via le temps HH MM SS de la RTC
cyril13110 a écrit :
Je me pose une question existentiel sur mon code.
J'ai fait le test avec des batteries AAA neuve de noté 900mA/h et mon montage m'a indiqué 600mA/h, ce qui fait un sacré décalage.
Soit les batteries ne sont pas à la puissance indiqué (mais 300mA/h de décalage je trouve ca énorme), soit il y a un problème de timing dans mon code.
Pour le moment le top calcul est effectué via une tempo toute simple de 1seconde mais je pense voir si je passe par une interruption pour le timing si ca donnerais pas mieux. car au final je ne suis pas sur 1 seconde pile mais un poile plus vue qu'il y a tous de même 2 lectures ana, des calculs et la gestion de l'affichage.
Si on analyse l'ensemble, si on prends qu'un seul échantillon de quelques secondes ca doit faire un décalages de quelques milliseconde mais sur une durée plus longue j'ai bien peur de fausser ma mesure.
Je vais voir pour modifier mon code et inclure un calcul de seconde via interruption afin de voir si les résultats changent ou pas.s
quelle est la date fraicheur de tes piles ?
à quel valeur de courant de decharge mesures-tu la capacité ?
quelle est la valeur finale de tension apres 900mAH ? et la donnéee constructeur ?
tu ne peux pas rajouter une RTC .. top 1Hz => interrupt RB0 à 1 seconde tres precise ?
et duree Ecoulée globale via le temps HH MM SS de la RTC
Carte pour mesurer la capacité des batterie NIMH
-
cyril13110
Confirmé- Messages : 713
- Âge : 40
- Enregistré en : avril 2016
- Localisation : 13
Bonjour paulfjujo et bonjour tous le monde,
Elles sont neuves les batteries, je lai ai commandé en debut d'année et sortie de leurs carton la pour l'essai.
elles n'ont encore jamais été utilisé.
ce sont des Duracell AAA 900mAh qui ont ete mesuré a 600mAh.
Oui aussi je pourrais voir pour un RTC mais du coup va falloir que je commande ou peut etre pas mais il ne me semble pas en avoir.
Clairement le calcul semble etre ok cest le timing que je remets en cause.
je vais voir ce que je peux bricoler.
paulfjujo a écrit :bonsoir,
quelle est la date fraicheur de tes piles ?
à quel valeur de courant de decharge mesures-tu la capacité ?
quelle est la valeur finale de tension apres 900mAH ? et la donnéee constructeur ?
tu ne peux pas rajouter une RTC .. top 1Hz => interrupt RB0 à 1 seconde tres precise ?
et duree Ecoulée globale via le temps HH MM SS de la RTC
Elles sont neuves les batteries, je lai ai commandé en debut d'année et sortie de leurs carton la pour l'essai.
elles n'ont encore jamais été utilisé.
ce sont des Duracell AAA 900mAh qui ont ete mesuré a 600mAh.
Oui aussi je pourrais voir pour un RTC mais du coup va falloir que je commande ou peut etre pas mais il ne me semble pas en avoir.
Clairement le calcul semble etre ok cest le timing que je remets en cause.
je vais voir ce que je peux bricoler.
Carte pour mesurer la capacité des batterie NIMH
- paulfjujo
Expert- Messages : 2410
- Âge : 72
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir
oui, mais quelle date fraicheur ?
j'ai des DuraCuir plus de type AA .. date fraicheur 03/2031 !
quand à savoir la réelle capacité .. aucune données techniques sur DURACELL
voir normes IEC 2015
payantes ..
ou *.pdf avec extraits limités ...
avant on avait " comme le PORT SALUT ...... c'est écrit dessus ! "
maintenant on met 2031 ..pour une pile !.. sur que le jouet ou le recepteur sera mort avant ! obsolescence oblige
elles sont neuves les batteries, je lai ai commandé en debut d'année et sortie de leurs carton la pour l'essai.
elles n'ont encore jamais été utilisé.
oui, mais quelle date fraicheur ?
j'ai des DuraCuir plus de type AA .. date fraicheur 03/2031 !
quand à savoir la réelle capacité .. aucune données techniques sur DURACELL
voir normes IEC 2015
payantes ..
ou *.pdf avec extraits limités ...
5.5 Designation, nominal voltage, dimensions, discharge conditions, minimum average
duration and application for these batteries which fall into the same group are summarized in
one table.
avant on avait " comme le PORT SALUT ...... c'est écrit dessus ! "
maintenant on met 2031 ..pour une pile !.. sur que le jouet ou le recepteur sera mort avant ! obsolescence oblige
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Retourner vers « Langage BASIC & PASCAL »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité