chargeur li po iut aisne V1 - e-Kart

publicité
INSTITUT UNIVERSITAIRE DE TECHNOLOGIE DE L’AISNE
DEPARTEMENT GENIE MECANIQUE
DEPARTEMENT GENIE ELECTRIQUE ET INFORMATIQUE INDUSTRIELLE
13, Avenue François Mitterrand, 02880 CUFFIES SOISSONS
: 03 23 76 40 10
: 03 23 76 40 15
[email protected]
Courbe des
batteries sur PC
Sebastien butt
Gauthier Duhaunoy
Enseignant : Sivert Arnaud
SOMMAIRE :
1 – Introduction........................................................................................................ 1
2- Cahier des charges du chargeur avec équilibreur..................................3
3 - Gestion de l'afficheur et du chargeur avec 4 Bouton poussoirs........4
4 - Arrêt de la charge...............................................................................5
5 - Algorithme de premier niveau...........................................................5
6 - Equilibreur et BMS...........................................................................6
7 - Testeur d’accumulateur.....................................................................6
8 - Schéma de simulation.......................................................................7
9- Liste d’entre sortie du micro-contrôleur 18F6520............................8
10 - Liste d’entre sortie du micro-contrôleur 16F877...........................9
11 - Schéma d’implantation............................................................................10
12 - Schéma de la carte micro 18F6520....................................................10
13 - Schéma de la carte afficheur, bouton pousoir, buzzer et leds..11
14 - Schéma équilibreur, hacheur et mesure de tension.....................12
15 - Schéma Isis et Typon de la carte réalisé...........................................14
16 – Programmation..........................................................................................18
17 – Conclusion....................................................................................................26
1- Introduction
Les chargeurs rapides pour batterie Li-po dans le commerce sont rares et cher. Les plus puissants
chargent à :
-
360W,12 éléments à 8A de marque Hyperion en 12/2009 à 150 €+50 € équilibreur 0,3A
3000W, 20 éléments 87,6V/35A Zivan 1014 €, pas d’équilibreur
Le premier est un très bon chargeur pour le modélisme donc pour des batteries de faible capacité
énergétique.
Ces chargeurs sont très chers pour les vendeurs de vélo où de scooters électriques. Pourtant, ils
permettent une durée de vie beaucoup plus importante des batteries.
Pourtant, le prix des batteries en 2010 correspond à 30% où 40% du prix d’un véhicule électrique.
Les batteries Li-po ont une tension qui varient de 3,5V à 4,2V en fonction de leur charge. On peut
les charger à la valeur du courant correspondant à leurs capacités énergétique à 1C voir 2C. Donc
pour une 15A.H, on peut les charger à 15A voir 30A. Mais, on peut les décharger en général à 3C
jusqu'à 20C donc à 45A à 300A.
Notre chargeur a pour but de charger les batteries pour le karting.
Pour faire un accumulateur 72V/ 60A.H, le bilan prix, poids, en 2010 est le suivant :
Nbr
élément
série et //
18serie,12//
75 à 64 V
Prix et
poids/élé
m
15 €
0.21 kg
Poids et nbr
Prix pour
72V/60A.H élément total
Lipo 3,6 V à
4,2V
Li po 11C
4,2V à 3,6V
Lithium 3C
4.1V à 3,5V
Plomb 20C
14V à 11V
18 series
183 Euros
183
2serie,4//
55 €
0,5 kg
1654 €*6
4400 €
LiFePO4 3C
20 series
Marque
Type et
tension
polyquest
5.8A.H
/3,6V/0.21 kg
KOKAM
Li po 25C
4,2V à 3,6V
e-solex 15A.H
550 €/36V/5kg
Lifebatt 10A.H
72V/12,6 kg
OPTIMA
35A.H
12V/18 kg
Thunder Sky
60 A.H
20 serie,6//
80Và 68V
6 series
180 €
H*l*L
Fiabilité/20
15 €*18*12 0.2kg*18*12=
3240 €
43,2 kg, 192el 18/20, 2009
9924 €
1080 €
5kg*2*4=
40 kg
12,6kg*6=
76 kg
108 kg
18/20, 2009
18/20, 2009
15/20, 2003
90 €*20
2,3 kg
1800 €
50 kg
16/20, 2010
Remarque :
Mettre des éléments en // peut
occasionner la destruction des
autres éléments qui sont placés en
//, donc on diminue la fiabilité de
l’accu (voir dossier vélo électrique
de l’I.U.T Aisne 2010). Sinon, il est
possible de mettre des diodes mais
la charge est difficile.
On peut voir sur la figure suivante
un accu avec des éléments en //.
Fig 1 : Un accumulateur avec des éléments série et parallèle,
On ne peut dissocier chargeur, accumulateur et Batterie Management Sécurité « BMS ». Les BMS
intégrés aux accumulateurs ne sont pas nécessaires car le courant est déjà limite par le contrôleur
moteur. Par contre, il ne faut pas avoir de renvoie d’énergie lorsque la batterie est pleinement
chargée, mais la aussi le contrôleur peut être piloté.
Certains chargeurs arrêtent la charge des qu’un des éléments atteint sa tension de seuil max donc à
peu prés à 85 % de sa capacité maximale (chargeur Zivan 87,6V/35A 1014 € avec arrêt du chargeur
Batterie Protection Module Lifebatt à 655 €). La charge dure 2 heures pour une 60A.H .
S’il ya une grosse dissymétrie entre les batteries, il faut recharger avec un chargeur qui a un BMS
intégré comme l’Hyperion (voir dossier vélo électrique de l’I.U.T Aisne 2010, chargeur tous types
de 1 à 12 éléments max (~48V) 8A 150 euros). La charge dure dans ce cas 8 heures en cas de
dissymétrie profonde car l’équilibreur est 0,3 A seulement.
En conclusion, pour remplacer les batteries au plomb donc diminuer le poids et le volume par
2 d’un véhicule électrique, le prix en 2010 est multiplié par 3 par rapport aux batteries plomb,
mais l’autonomie est multipliée par 2.
De plus, Les chargeurs et les BMP sont relativement chers.
On choisira 24 éléments de batterie Thundersky de 90A.H à 100 € (3Kg).
On peut les charger à 3C donc avec un courant de 270A (19440W, sur une prise secteur triphasée
400V, cela demande un courant de 56A).
On se limitera à une prise secteur monophasé de 25A (5500W), donc un courant de charge
maximum de 57A/96V ou 76A/72V.
Suite à la réalisation des chargeurs de batteries au plomb 12V/20A en numérique et 80A en
analogique ; nous avons réalisé un chargeur lipo de 4V à 96V/20A avec équilibreur à 4A
-
Charger sans équilibreur
Un Batterie Module Protection (BMP) 24 éléments (96V) avec 16F877 qui coupera
l’alimentation du chargeur analogique 20A des que la tension d’un élément aura atteint sa tension de seuil. Le chargeur visualisera grâce aux BMP, la tension de tous les éléments ainsi que le
courant de l’accu sur afficheur LCD et sur PC par liaison USB. En option, une protection en
température sera utilisée grâce à un thermo rupteur normalement fermé et mise en série sur
chaque élément. Cette sécurité pourra être coupée lors d’une charge du véhicule en plein soleil.
- Charger avec équilibreur
Un équilibreur à 4A avec résistance en parallèle sur les batteries (voir le paragraphe 5) sera utilisé pour mettre tous les éléments à la même tension de seuil.
2
2 - Cahier des charges du chargeur avec équilibreur
Pour charger des batteries il faut les charger à courant constant. Puis, dès qu'une batterie a atteint sa
tension de seuil, le courant diminue pour que la tension de seuil d’un element ne soit jamais dépassé.
Donc la charge se fait à tension constante.
Il y a 24 éléments à charger et le 18F6520 n'a que 10 convertisseurs analogique. Donc, 3
Multiplexeurs (8 vers 1) seront utilisés pour pouvoir mesurer la tension de chaque élément. La
mesure se fera en 16 bits pour avoir une bonne précision de la mesure de la tension de chaque
élément. La tension des 24 éléments est de 4V pour le premier élément donc à 96V pour le dernier.
Le pont diviseur « Mtension 24 » diminue cette tension 96V à 4V, la précision de la mesure est donc
en 16 bit de 76µV donc ramené à 96V, la précision est de 1,8mV.
Le courant de charge, type de batterie (Li-po, Li-ion, Li-Fer) seront paramétrables.
Le nombre d'éléments à charger sera réglable de 1 à 24 éléments.
Avant de charger les batteries, le chargeur devra tester le nombre d’éléments et d’accepter la charge.
Par l’intermédiaire d’une RS232, Un PC permettra de mémoriser les mesures toutes les secondes et
de les afficher. Les mesures sont :
−
Courant de charge des batteries
−
les 24 tensions de chaque élément
−
le calcul de la capacité énergétique
−
la température des éléments (24 sondes de température LM 35 boitier TO 220 multiplexés
seront placé sur les batteries pour sécurisé la charge et connaitre la température de chacune sinon 24
des thermo rupteurs seront placés en séries)
−
la capacité énergétique en fonction du temps
tension d’alimentation du chargeur
courant d’alimentation du chargeur
La tension et le courant d’alimentation devront être mesuré et paramétrable pour limiter le courant
de charge de la batterie en fonction de la puissance maximale que peut fournir l’alimentation.
Dans un premier temps, nous chargerons avec un courant de 20A, à partir de quatre alimentations
secteur continu de 220V/( 24V/20A).
DEVIS :
Alimentation secteur continu 220V/ (24V/20A)
µC 16F877
Afficheur plus B.P
3 MUX 4051
1 bobine
1 transistor + opto
1 capteur mesure courant LEM
24 thermo rupteur
Total :
50 euros*4
15 euros
20 euros
10 euros
25 euros
90 euros
270 €
Il est facile de transformer le chargeur pour passer de 20A à 40A. En plaçant 8 alimentations
12V/40A.
3
3- Gestion de l'afficheur et du chargeur avec 4 Bouton poussoirs
On utilisera un afficheur LCD 4 lignes, 20 caractères ou 2 lignes 20 caractères.
Arrêt de la charge au bout d'un certain temps max ou si la capacité énergétique est trop grande.
Pour voir si un élément est défectueux ou fortement déséquilibrer, il est important de connaître la
tension de chaque élément.
4
Le prochain appuie sur Select font défile les tensions, puis revient sur la charge
4- Arrêt de la charge
L’Arrêt de la charge se fera à partir de 3 paramètres :
au bout d'un certain temps max
si la capacité énergétique est dépassée
si la tension d’un élément a atteint sa tension de seuil lorsque le courant est a 4A (li-po=4.2V,
li-ion=4.1V, li-fer=4V)
information des thermo rupteurs si 0V, alors arrêt de la charge car un élément a atteint
45°C+4°C.
5 - Algorithme de premier niveau
*Une interruption se fera toute les 10 ms
−
−
−
Le courant sera mesurée toutes les 20ms.
La tension de chaque éléments sera effectué touts les 80ms. (3 Mux de 8 vers 1)
La régulation se fera toutes les 80ms.
La tension sera filtrée analogiquement mais aussi numériquement tous les 80ms.
UBFiltre = (UB n + UB n-1 + UB n-2 + UB n-3) / 4
Le courant sera filtré analogiquement mais numériquement tous les 80ms
InFiltre=( In + In-1 + I n-2 + In-3 ) / 4
*Le main
La PWM se fera en 10 bits (0 à 1024) avec une fréquence à 20Khz.
L'affichage tension et courant se fera toutes les 160ms sinon la valeur évolue trop vite à
l'afficheur.
5
6 - Equilibreur et BMS
L’équilibreur permet d'avoir les batteries chargées à 100%. En effet, lorsqu'il n'y a pas d'équilibreur,
il y a arrêt de la charge dés qu'un élément a atteint sa tension de seuil. Comme chaque élément est
différent, les autres éléments ne sont pas chargés à 100%, et un déséquilibre s’accroit en fonction du
nombre de décharge et charge.
Pour équilibrer les batteries, il ya plusieurs solutions :
1° Recharger chaque élément de façon indépendante (c’est la meilleur solution mais il
faudrait un hacheur par élément ce qui reviendrait bien trop cher)
2° Décharger chaque élément de façon indépendante jusqu'à une certaine tension puis
recharger tous les éléments en série
3° Recharger tous les éléments en série, puis dés que la tension de seuil de l'élément est
atteint, alors dévier le courant dans une résistance comme sur la figure suivante:
Fig équilibreur à résistance avec élément li-po tension de seuil 4.2V
On peut voir sur la figure précédente que l'élément 2 et 4 ont atteint leur tension de seuil avec un
courant de 4A, donc son chargé à 100%. Mais la charge continu dans les autres éléments, donc le
courant est dévié dans une résistance par l'intermédiaire de deux relais ou transistor T2 et T4 (TIP
122).
On veut un équilibrage à 4A.
Les résistances auront pour valeur R= (Alim – Vce) / I = (4,2 – 0,4) / 4 = 1ohm/16W.
Lorsque tous les éléments auront atteint 4,2V alors le chargeur s'arrête car tous les éléments sont à
100%. L'inconvénient de cet équilibrage est la puissance perdu dans chaque résistance qui est
importante (d’où une ventilation).
Mais, Il est possible de faire un équilibrage toutes les 10 charges, alors certains éléments seront
chargées entre 90% et 99% en fonction du déséquilibre et il n'y aura qu'un élément qui sera chargé à
100%.
Ces résistances permettent aussi d’utiliser la deuxième solution et de tester la capacité énergétique
de la batterie.
7 - Testeur d’accumulateur
Lorsque les éléments ont effectué un certain nombre de cycle de charge et décharge :
soit qu’un élément se met en court circuit (facile à diagnostiquer) et l’élément gonfle.
soit la tension de seuil est correcte mais la capacité énergétique est bien plus faible que celle
prévue (le diagnostique se fait car le ou les éléments qui ne tiennent pas la charge. L’élément a une
tension beaucoup plus faible après décharge. Si la charge à une instrumentation, on peut savoir
l’autonomie de l’accu)
Par contre, si l’accumulateur n’a pas d’instrumentation, il faut décharger l’accu, et mesurer la
capacité énergétique. Les résistances précédentes peuvent réaliser cette décharge à 4 A et connaitre
précisément la capacité énergétique de chaque élément
6
8 - Schéma de simulation
Schéma de simulation permet de tester le programme du microcontrôleur avec ISIS 7.4. Les
composant présent sont tous actif (model spice) mais ne correspondent pas au schéma
d’implantation. Ce schéma permet de comprendre facilement le fonctionnement du système
Fig Schéma de simulation du hacheur et mesure de chaque élément
R127
R125
R123
R44
R122
R121
R120
R119
R117
R55
R59
R114
R62
R112
R110
R109
R68
R107
R106
R104
R103
R76
R78
0R
0R
33R
0R
0R
20R
160R
200R
0R
0R
200R
20R
300R
43R
0R
0R
82R
160R
62R
0R
0R
20R
0R
R126
R124
R18
R43
R47
R49
R51
R118
R116
R54
R57
R113
R61
R111
R74
R108
R67
R70
R105
R73
R102
R77
R100
50k
0R
33k
1k
0R
620R
1k1
300R
100R
0R
620R
100R
470R
300R
470R
43R
200R
300R
100R
300R
62R
200R
43R
R16
R17
R45
R42
R46
R48
R50
R52
R115
R53
R56
R58
R60
R63
R64
R66
R65
R69
R71
R72
R101
R75
300R
24k
8k2
8k2
6k8
Mtension1
50k
50k
Mtension2
Mtension3
Mtension4
20k
Mtension5
Mtension6
16k
13k
Mtension7
Mtension8
12k
Mtension9
11k
10k
Mtension10
Mtension11
Mtension12
Mtension13
Mtension14
6k8
Mtension15
6k2
Mtension16
6k2
Mtension17
5k6
Mtension18
5k1
Mtension19
5k1
4k7
Mtension20
4k7
Mtension21
Mtension22
4k3
R79
4k3
Mtension23
Mtension24
R11
R14
R15
R80
R81
R82
R83
R84
R85
R86
R87
R88
R89
R90
R91
R92
R93
R94
R95
R96
R97
R98
R99
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
4V
4V
4V
4V
4V
4V
4V
4V
4V
4V
4V
4V
4V
4V
4V
4V
4V
BAT8
BAT9
BAT10
BAT11
BAT12
BAT13
BAT14
BAT15
BA16
BAT17
BAT18
BAT19
BAT20
BAT21
BAT22
BAT23
BAT24
Fig Schéma de simulation de la mesure de tension de chaque élément
7
U24
U23
U22
U21
U20
U19
U18
U17
U16
U15
U1
U14
BAT7
U13
BAT6
U12
BAT5
U11
BAT4
U10
BAT3
U9
BAT2
U8
BAT1
U6
4V
U5
4V
U4
4V
U3
4V
U2
4V
U1
4V
U7
U24
4V
9 - Liste d’entre sortie du micro-contrôleur 18F6520
: Entrées
: Sorties
: Inutilisées
Port
0
1
A
B
E
F
G
3
4
5
CAN ( mesure tension )
CAN
( mesure
tension )
Carte afficheur
LED D1 et D2
Buzzer
PWM ( hacheur
abaisseur )
C
D
2
Carte afficheur ( LCD )
6
7
N/A
Réservées
Sélection MUX
( mesure tension )
Carte
afficheur
Carte afficheur ( LCD )
Communications avec le PIC 16F877
Entrées analogiques mesure
température
Réservées
Réservées
N/A
8
10 - Liste d’entre sortie du micro-contrôleur 16F877
: Entrées
: Sorties
: Inutilisées
Port
0
1
A
2
3
6
7
N/A
Relais 1 à 8
Commande du 18F6520
D
E
5
Relais 17 à 22
B
C
4
Relais 9 à 16
Relais 23 à 24
N/A
Fig Schéma de simulation de l’équilibreur à résistance et déchargeur de chaque élément
(Démultiplexeur et relais 5A avec résistance d’équilibrage 1Ω/16W)
9
11 - Schéma d’implantation
Nous avons 4 cartes :
- carte micro micro 18F6520
- cartes micro 16F877
- carte afficheur LCD et bouton
- la carte équilibreur, hacheur et mesure tension de chaque élément et courant.
La mesure de tension des batteries est effectuée par un pont diviseur. Avec une résistance de 100KΩ
(82KΩ et 18KΩ en série), La résistance de 18KΩ est dans le fil au départ de chaque élément pour
éviter tout court circuit du faisceau électrique (vibration et frottement d’un vehicule).
24 thermo rupteur normalement fermé pour les températures inferieurs à 45°C +4°C à
réinitialisation manuel seront mise en série sur chaque élément code Farnel 732-503 et protégera
chaque élément. Une info sur l’état des thermo rupteurs sera indiquée au chargeur pour arrêter la
charge. Cette sécurité pourra être coupée lors d’utilisation du vehicule en plein soleil. C’est pour
cela que l’on a pris des thermo rupteurs à réinitialisation manuel car les autres ont une hysteris trop
importante.
12 - Schéma de la carte micro 18F6520
Cette carte micro a été réalisée pour être utilisé pour de nombreuses applications. Le micro a un
bootloader et il est possible de la programmer avec un petit programme downloader par
l’intermédiaire d’un câble USB, RS232. Sinon, il est possible d’utiliser le pic flash.
VDD
VDD
VDD
C16
1
1
+
1
+
10µF
+
C24
C19
10ùF
C9
2
1
2
+
2
10µF
PORT F
VSS
PORT A
VSS
1
2
3
4
5
6
7
8
9
10
RF7
RF6
RF5
RF4
RF3
RF2
RF1
RF0
2
10µF
1
2
3
4
5
6
7
8
9
10
out_inclin_analog
RA3
RA2
RA1
RA0
RA5
CCP
PORT B
VSS
PORT RF
PORT RA
et AVdd avec AVss
VDD
CCP1
CCP2
CCP3
CCP4
1
2
3
4
5
6
7
8
9
10
PGD
PGC
n_u_30
n_u_31
n_u_32
n_u_33
n_u_34
n_u_35
VDD
1
2
3
4
5
6
CONN-H6
PORT RB
27
28
21
22
23
24
RA3
RA2
RA1
RA0
CONN-H10
CCP4
RXD_DEBUG_2
TXD_DEBUG_2
CCP3
PORT RE
Alim conv. A/N
VDD
19
D5
R1
10k
7
15pF
1N4148
Inter
prog.
2
1
BP RESET1
+
+
2
BP1
2
1
2
3
4
5
6
7
8
9
10
C2
C3
15pF
10µF
PORT D
VSS
RG4/CCP5
RG3/CCP4
RG2/RX2/DT2
RG1/TX2/CK2
RG0/CCP3
AVdd
AVss
RC7/RX1/DT1
RC6/TX1/CK1
RC5/SDO
RC4/SDI/SDA
RC3/SCK/SCL
RC2/CCP1
RC1/T1OSI/CCP2
RC0/T1OSO/T13CKI
X1
4 MHz
Oscillateur
39
RB7/KBI3/PGD
RB6/KBI2/PGC
RB5/KBI1/PGM
RB4/KBI0
Osc2/CLKO/RA6
RB3/INT3
RB2/INT2
RB1/INT1
Osc1/CLKI
RB0/INT0
MCLR/Vpp
inclinometre
32
31
36
35
34
33
29
30
1uF
MAX232
1
1uF
3
4
C11
5
1uF
11
RC7
RC6
RC5
RC4
RC3
CCP1
CCP2
RC0
37
42
43
44
45
46
47
48
C12
U3
C10
D7
D6
D5
D4
D3
D2
D1
D0
10
TXD_DEBUG_2
12
9
RXD_DEBUG_2
C1+
V+ (+10V)
PGD
PGC
n_u_30
n_u_31
n_u_32
n_u_33
n_u_34
n_u_35
VDD
2
C1--
C14
C2+
V-- (-10V)
6
C2--
1uF
T1 IN (TTL)
T1 OUT (232)
T2 IN (TTL)
T2 OUT (232)
R1 OUT (TTL)
R1 IN (232)
R2 OUT (TTL)
R2 IN (232)
VSS
14
M1
7
1
2
3
4
13
8
C13
MODULAR JACK 4C
VSS
100nF
M3
1
2
3
4
VSS
+12V
VSS
MODULAR JACK 4C
U2
1N4001
D2
1
100uF
1
C7
2
VSS
BORNIER_2
C6
CIRCUIT ALIMENTATION
VDD
7805
B1
100nF
VI
VO
R2
3
+
C17 470
C8
100nF
22µF
D3
CMS
DIODE-LED
VSS
PORT RD
Afficheur_LCD
49
50
51
52
53
54
55
58
18F6X20
VDD=VCC
VSS=GND
1
D0
D1
D2
D3
D4
D5
D6
D7
C1
40
C5
10µF
RD7/PSP7
RD6/PSP6
RD5/PSP5
RD4/PSP4
RD3/PSP3
RD2/PSP2
RD1/PSP1
RD0/PSP0
VSS
RESET_Prog
1N4148
D1
1
20
VDD
VDD
8
6
5
4
3
RA5/AN4/LVDin
RA4/T0CKI
RA3/AN3/Vref+
RA2/AN2/VrefRA1/AN1
RA0/AN0
Gnd
D4
VDD
15
RC0
CMS
1
2
3
4
5
6
7
8
9
10
RE7
RE6
RE5
RE4
RE3
RE2
RE1
RE0
Vcc
RE7
RE6
RE5
RE4
RE3
RE2
RE1
RE0
59
60
61
62
63
64
1
2
16
PORT E
VSS
1
2
3
4
5
6
7
8
9
10
RE7/CCP2
RE6
RE5
RE4
RE3
RE2/CS
RE1/WR
RE0/RD
1
PORT C
RC7
RC6
RC5
RC4
RC3
RF7/SS
RF6/AN11
RF5/AN10/CVref
RF4/AN9
RF3/AN8
RF2/AN7/C1out
RF1/AN6/C2out
RF0/AN5
2
2
2
R3
470
VSS
11
12
13
14
15
16
17
18
RF7
RF6
RF5
RF4
RF3
RF2
RF1
RF0
RA5
10µF
GND
1
10µF
U1
C4
2
+
C15
+
1
VDD
PICC FLASH
Prog
5
4
3
2
1
VDD
PGC
PGD
RESET_prog
CONN-H5
Carte 18F6520
classique : Sivert.A
12/10/2010
Version 2.0
10
Top copper et Top silk
Bottom copper et Bottom silk
13 - Schéma de la carte afficheur, bouton pousoir, buzzer et leds
A
B
C
D
E
F
G
H
mettre coté soudure pour ne pas gener lors de la fixation de la carte dans le boitier
+5V
J4.1 Connecteur PORT B
0
J
K
J1
CONN-DIL10
+5V VDD
J1(1)
ventillateur du transistor
1
2
3
4
5
6
7
8
9
10
bornier à vis
RL1
D2
1
CONN-H3
12V
1
2
3
1N4001
C1
RB0
RB1
RB2
RB3
RB4
RB5
RB6
1uF
Q1
RB7R11
TIP122
+88.8
10k
2
+5V
+5V
+5V
R12
100k
VDD
R4
R5
10k
10k
10k
1
BP1
BP2
BP RESET1
BP RESET1
R13
330
330
100
2
R10
330
BUZ
D5
D4
R20
RB3
RB2
D6
DIODE-LED DIODE-LED DIODE-LED BUZZER
100k
3
R7
C2
100k
IN RD3
2
1
P20
C21
22k
4.7uF
R8
C3
100k
1uF
GND
R9
100k
1uF
C4
1uF
GND
1
BP4
C20
BP RESET1
2
R6
RB1
7
BP3
R2
LCD_AFF
6
1
1
RB0
R3
2
contrasme
VDD
CONN-H10
RB6
E
RW
RS
D7
D6
D5
D4
D3
D2
D1
D0
E
RW
RS
Vc
VDD
VSS
RB5
IN RD3
RW
RS
E
14
13
12
11
10
9
8
7
6
5
4
3
2
1
RB4
10
9
8
7
6
5
4
3
2
1
4
5
afficheur LCD
Connecteur PORT D
mettre coté soudure
J2
LCD
3
BP RESET1
1µf
2
8
FILE NAME:
bouton afficheur.DSN
DESIGN TITLE:
07/08/2009
C:\arnaud1\alimentation 10\alimentation V3\bouton afficheur.DSN
PATH:
C:\arnaud1\alimentation 10\alimentation V3\bouton
1 of 1afficheur.DSN
DATE:
PAGE:
9
BY:
A
B
C
D
E
F
G
REV:
H
J
TIME:
05:04:29
K
afficheur+bouton
2009/2010
Echelle : 1
A.Sivert
Carte : alimentation 10A
I.U.T GEII de Soissons
14 - Schéma équilibreur, hacheur et mesure de tension
J21
F2
Connecteur PORT C
2
J3.1
PIN
+96 Ualim2
1
5A
J3
CONN-DIL10
BORNIER2
1
2
C8
+0 V2
1
2
3
4
5
6
7
8
9
10
VDD
1uF/30V
JL2
JL2B
PIN
PIN1
JS22
R5
R004
18k
470n
18k
R2
U1
8
120
6
R010
D22
U1
U2
C2
MBR1535
2
100uF/20V
D2
R009
LED
5
Q2
HPCL 3020
FDU8880
TO251
J22
C6
PIN
470n
+0 V2
C5
10n
R013
R050
220k
200k
AN5
U2:B
4
R09
+5V
4
1
2
3
4
+5V
J2
100k
VDD
U2:A
2
6
1
R7
CONN-H4
3
R1
R6
100k
100k
7
5
8
100k
LM358
8
GND
R8
C4
LM358
220k
10n
GND
GND
Le hacheur et mesure courant 96V/20A
12
680
D3 JS21
1
3
3
5.6K
1
330
GND
R007
MBR1535
3
b17 microcontroleur
U24
10mH
2
1uF
GND
PIN
L2
2
C3
RC6
RC7
CCP1
C40
U4
Mtension17
Mtension18
Mtension19
Mtension20
Mtension21
Mtension22
Mtension23
Mtension24
13
14
15
12
1
5
2
4
A
B
C
11
10
9
6
X0
X1
X2
X3
X4
X5
X6
X7
3
X
J1 PORT A
AN2
AN1
1
2
3
4
5
6
7
8
9
10
AN2
McourantU1
U24
A
B
C
INH
J1 PORT B
1
2
3
4
5
6
7
8
9
10
BUZZER
SELECT
DEC
INC
CONN-SIL10
J1 PORT C
1
2
3
4
5
6
7
8
9
10
A
B
C
CCP1
CONN-SIL10
J1 PORT E
1
2
3
4
5
6
7
8
9
10
RE6
RE5
RE4
RE3
RE2
RE1
RE0
CONN-SIL10
CONN-SIL10
74HCT4051
U002
Mtension9
Mtension10
Mtension11
Mtension12
Mtension13
Mtension14
Mtension15
Mtension16
13
14
15
12
1
5
2
4
A
B
C
11
10
9
6
J1 PORT G
J1 PORT F
X0
X1
X2
X3
X4
X5
X6
X7
X
3
AN1
Mtemperature4
Mtemperature3
Mtemperature2
Mtemperature1
A
B
C
INH
1
2
3
4
5
6
7
8
9
10
tx2
rx2
1
2
3
4
5
6
7
8
9
10
J1 PORT D
1
2
3
4
5
6
7
8
9
10
D7
D6
D5
D4
D2
D1
D0
CONN-SIL10
CONN-SIL10
CONN-SIL10
74HCT4051
U3
Mtension1
Mtension2
Mtension3
Mtension4
Mtension5
Mtension6
Mtension7
Mtension8
13
14
15
12
1
5
2
4
A
B
C
11
10
9
6
X0
X1
X2
X3
X4
X5
X6
X7
X
3
+88.8
Volts
A
B
C
INH
Vss
74HCT4051
Les multiplexeurs et connecteurs pour la carte microcontrôleurs
R127
R125
R123
R44
R122
R121
R120
R119
R117
R55
R59
R114
R62
R112
R110
R109
R68
R107
R106
R104
R103
R76
R78
0R
0R
33R
0R
0R
20R
160R
200R
0R
0R
200R
20R
300R
43R
0R
0R
82R
160R
62R
0R
0R
20R
0R
R126
R124
R18
R43
R47
R49
R51
R118
R116
R54
R57
R113
R61
R111
R74
R108
R67
R70
R105
R73
R102
R77
R100
50k
0R
33k
1k
0R
620R
1k1
300R
100R
0R
620R
100R
470R
300R
470R
43R
200R
300R
100R
300R
62R
200R
43R
R16
R17
R45
R42
R46
R48
R50
R52
R115
R53
R56
R58
R60
R63
R64
R66
R65
R69
R71
R72
R101
R75
300R
24k
8k2
8k2
6k8
Mtension1
50k
Mtension2
50k
Mtension3
Mtension4
20k
Mtension5
Mtension6
16k
Mtension7
13k
12k
Mtension8
Mtension9
11k
10k
Mtension10
Mtension11
Mtension12
Mtension13
Mtension14
6k8
Mtension15
6k2
Mtension16
6k2
Mtension17
5k6
Mtension18
5k1
Mtension19
5k1
4k7
Mtension20
Mtension21
4k7
Mtension22
4k3
Mtension23
R79
4k3
Mtension24
R11
R14
R15
R80
R81
R82
R83
R84
R85
R86
R87
R88
R89
R90
R91
R92
R93
R94
R95
R96
R97
R98
R99
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
100k
J20
J10
J5
J1
PIN
PIN
1
2
3
4
5
6
7
1
2
3
4
5
6
7
1
2
3
4
5
6
7
1
2
3
4
5
6
7
PIN
PIN
J4
U1
PIN
Fig : connecteur JST pour la mesure de la tension de chaque élément et les ponts diviseurs de
tension
13
15 - Schéma Isis et Typon de la carte réalisé
14
15
16
17
16 – Programmation
#include "chargeur6520.h"
#include <LCD.C>
unsigned int16 tension_1,Mtension_1;
unsigned int16 tension_2,Mtension_2;
unsigned int16 tension_3,Mtension_3;
unsigned int16 tension_4,Mtension_4;
unsigned int16 tension_5,Mtension_5;
unsigned int16 tension_6,Mtension_6;
unsigned int16 tension_7,Mtension_7;
unsigned int16 tension_8,Mtension_8;
unsigned int16 tension_9,Mtension_9;
unsigned int16 tension_10,Mtension_10;
unsigned int16 tension_11,Mtension_11;
unsigned int16 tension_12,Mtension_12;
unsigned int16 tension_13,Mtension_13;
unsigned int16 tension_14,Mtension_14;
unsigned int16 tension_15,Mtension_15;
unsigned int16 tension_16,Mtension_16;
unsigned int16 tension_17,Mtension_17;
unsigned int16 tension_18,Mtension_18;
unsigned int16 tension_19,Mtension_19;
unsigned int16 tension_20,Mtension_20;
unsigned int16 tension_21,Mtension_21;
unsigned int16 tension_22,Mtension_22;
unsigned int16 tension_23,Mtension_23;
unsigned int16 tension_24,Mtension_24;
unsigned int16 temps_mesure_tension;
// compteur pour la mesure tension.
unsigned int16 temps_mesure_courant;
// compteur pour la mesure courant.
unsigned int16 temps_regulation;
// compteur pour la régulation.
unsigned int16 McourantU1;
//Mesure courant
unsigned int16 Mcourant;
//Vraie valeure après calcule
unsigned int8 Iconsigne,Tconsigne;
//Courant de consigne
//unsigned int16 U24;
//tension totale des 24 éléments
unsigned int16 alpha;
// rapport de la pwm !
unsigned int8 charge,choix,select;
unsigned int8 N;
void fonction_equilibreur()
{
if ( tension_1 >= 55000 ) printf("01");
if ( tension_2 >= 55000 ) printf("02");
if ( tension_3 >= 55000 ) printf("03");
if ( tension_4 >= 55000 ) printf("04");
// 55000 = 4.2 V
18
if ( tension_5 >= 55000 ) printf("05");
if ( tension_6 >= 55000 ) printf("06");
if ( tension_7 >= 55000 ) printf("07");
if ( tension_8 >= 55000 ) printf("08");
if ( tension_9 >= 55000 ) printf("09");
if ( tension_10 >= 55000 ) printf("10");
if ( tension_11 >= 55000 ) printf("11");
if ( tension_12 >= 55000 ) printf("12");
if ( tension_13 >= 55000 ) printf("13");
if ( tension_14 >= 55000 ) printf("14");
if ( tension_15 >= 55000 ) printf("15");
if ( tension_16 >= 55000 ) printf("16");
if ( tension_17 >= 55000 ) printf("17");
if ( tension_18 >= 55000 ) printf("18");
if ( tension_19 >= 55000 ) printf("19");
if ( tension_20 >= 55000 ) printf("20");
if ( tension_21 >= 55000 ) printf("21");
if ( tension_22 >= 55000 ) printf("22");
if ( tension_23 >= 55000 ) printf("23");
if ( tension_24 >= 55000 ) printf("24");
}
void fonction_regulation()
{
if (Mcourant>=(Iconsigne=+3))
{
if (Mcourant==Iconsigne) ;
else alpha=alpha--;
}
if (Mcourant<Iconsigne+3) alpha++;
set_pwm1_duty(alpha);
}
void fonction_mesure_courant()
{
set_adc_channel (3);
delay_us(20);
Mcourantu1=read_adc(ADC_START_AND_READ);
Mcourant=Mcourantu1/0.48;
}
//gros problème de calcule ici !
void fonction_mesure_tension()
{
output_low(PIN_C3);output_low(PIN_C4);output_low(PIN_C5);
set_adc_channel (0);
delay_us(20);
19
Mtension_1=read_adc(ADC_START_AND_READ);
set_adc_channel (1);
delay_us(20);
Mtension_9=read_adc(ADC_START_AND_READ);
set_adc_channel (2);
delay_us(20);
Mtension_17=read_adc(ADC_START_AND_READ);
output_high(PIN_C3);output_low(PIN_C4);output_low(PIN_C5);
set_adc_channel (0);
delay_us(20);
Mtension_2=read_adc(ADC_START_AND_READ);
set_adc_channel (1);
delay_us(20);
Mtension_10=read_adc(ADC_START_AND_READ);
set_adc_channel (2);
delay_us(20);
Mtension_18=read_adc(ADC_START_AND_READ);
output_low(PIN_C3);output_high(PIN_C4);output_low(PIN_C5);
set_adc_channel (0);
delay_us(20);
Mtension_3=read_adc(ADC_START_AND_READ);
set_adc_channel (1);
delay_us(20);
Mtension_11=read_adc(ADC_START_AND_READ);
set_adc_channel (2);
delay_us(20);
Mtension_19=read_adc(ADC_START_AND_READ);
output_high(PIN_C3);output_high(PIN_C4);output_low(PIN_C5);
set_adc_channel (0);
delay_us(20);
Mtension_4=read_adc(ADC_START_AND_READ);
set_adc_channel (1);
delay_us(20);
Mtension_12=read_adc(ADC_START_AND_READ);
set_adc_channel (2);
delay_us(20);
Mtension_20=read_adc(ADC_START_AND_READ);
output_low(PIN_C3);output_low(PIN_C4);output_high(PIN_C5);
set_adc_channel (0);
delay_us(20);
Mtension_5=read_adc(ADC_START_AND_READ);
set_adc_channel (1);
delay_us(20);
Mtension_13=read_adc(ADC_START_AND_READ);
set_adc_channel (2);
delay_us(20);
Mtension_21=read_adc(ADC_START_AND_READ);
20
output_high(PIN_C3);output_low(PIN_C4);output_high(PIN_C5);
set_adc_channel (0);
delay_us(20);
Mtension_6=read_adc(ADC_START_AND_READ);
set_adc_channel (1);
delay_us(20);
Mtension_14=read_adc(ADC_START_AND_READ);
set_adc_channel (2);
delay_us(20);
Mtension_22=read_adc(ADC_START_AND_READ);
output_low(PIN_C3);output_high(PIN_C4);output_high(PIN_C5);
set_adc_channel (0);
delay_us(20);
Mtension_7=read_adc(ADC_START_AND_READ);
set_adc_channel (1);
delay_us(20);
Mtension_15=read_adc(ADC_START_AND_READ);
set_adc_channel (2);
delay_us(20);
Mtension_23=read_adc(ADC_START_AND_READ);
output_high(PIN_C3);output_high(PIN_C4);output_high(PIN_C5);
set_adc_channel (0);
delay_us(20);
Mtension_8=read_adc(ADC_START_AND_READ);
set_adc_channel (1);
delay_us(20);
Mtension_16=read_adc(ADC_START_AND_READ);
set_adc_channel (2);
delay_us(20);
Mtension_24=read_adc(ADC_START_AND_READ);
}
void fonction_calcule_tension()
{
tension_1 = Mtension_1;
tension_2 = Mtension_2*2 - Mtension_1 ;
tension_3 = Mtension_3*3 - Mtension_2*2 ;
tension_4 = Mtension_4*4 - Mtension_3*3 ;
tension_5 = Mtension_5*5 - Mtension_4*4 ;
tension_6 = Mtension_6*6 - Mtension_5*5 ;
tension_7 = Mtension_7*7 - Mtension_6*6 ;
tension_8 = Mtension_8*8 - Mtension_7*7 ;
tension_9 = Mtension_9*9 - Mtension_8*8 ;
tension_10 = Mtension_10*10 - Mtension_9*9 ;
tension_11 = Mtension_11*11 - Mtension_10*10;
tension_12 = Mtension_12*12 - Mtension_11*11;
tension_13 = Mtension_13*13 - Mtension_12*12;
21
tension_14 = Mtension_14*14 - Mtension_13*13;
tension_15 = Mtension_15*15 - Mtension_14*14;
tension_16 = Mtension_16*16 - Mtension_15*15;
tension_17 = Mtension_17*17 - Mtension_16*16;
tension_18 = Mtension_18*18 - Mtension_17*17;
tension_19 = Mtension_19*19 - Mtension_18*18;
tension_20 = Mtension_20*20 - Mtension_19*19;
tension_21 = Mtension_21*21 - Mtension_20*20;
tension_22 = Mtension_22*22 - Mtension_21*21;
tension_23 = Mtension_23*23 - Mtension_22*22;
tension_24 = Mtension_24*24 - Mtension_23*23;
}
void fonction_affiche_tension(unsigned int16 var)
{
unsigned int8 a,b;
a=0;
b=0;
while( var >= 13095 )
{
var=var-13095;
a++;
}
while ( var >= 1310 )
{
var=var-1310;
b++;
}
printf(lcd_putc,"%u",a);
lcd_putc(",");
printf(lcd_putc,"%u",b);
}
#int_TIMER0
TIMER0_isr()
{
set_timer0(60500);
//resolution 0.2µs overflow 13.1ms ( 16 bit) 13.11=12.1ms 12.1ms/0.2µ => initialisation à 605500
if (temps_mesure_tension==80)temps_mesure_tension=0;
if (temps_mesure_courant==20)temps_mesure_courant=0;
if (temps_regulation=20)temps_regulation=0;
temps_regulation++;
temps_mesure_tension++;
temps_mesure_courant++;
}
22
void main()
{
lcd_init();
setup_adc_ports(AN0_TO_AN8|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_1,249,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_timer_4(T4_DISABLED,0,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(0);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
enable_interrupts(int_TIMER0);
//desactiver par la suite, on l'activera quand on s'en
servira ! ne pas oublier d'initialiser à 15500( 10ms)
enable_interrupts(GLOBAL);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
charge=0;
choix=0;
select=0;
N=0;
Mtension_24=45000;
//fonction_mesure_tension()
while(1)
{
while( charge==0)
{
lcd_gotoxy(1,1);
lcd_putc("N=");
delay_ms(50);
lcd_gotoxy(6,1);
lcd_putc("IC=");
delay_ms(50);
lcd_gotoxy(12,1);
lcd_putc("A");
delay_ms(50);
lcd_gotoxy(14,1);
lcd_putc("T=");
delay_ms(50);
lcd_gotoxy(19,1);
lcd_putc("m");
delay_ms(50);
23
lcd_gotoxy(1,2);
lcd_putc("U=");
delay_ms(50);
fonction_affiche_tension(Mtension_24);
lcd_putc("V");
delay_ms(50);
lcd_gotoxy(8,2);
lcd_putc("C=90AH");
delay_ms(50);
lcd_gotoxy(16,2);
lcd_putc("IN");
delay_ms(50);
while(choix==0)
{
lcd_gotoxy(1,1);
lcd_putc(" ");
delay_ms(50);
lcd_gotoxy(1,1);
lcd_putc("N=");
delay_ms(50);
if( input(Pin_B1)==1) select=1;
if( input(Pin_B2)==1) choix=3;
if( input(Pin_B3)==1) choix++;
while (select==1)
{
lcd_gotoxy(3,1);
lcd_putc(" ");
delay_ms(100);
lcd_gotoxy(3,1);
printf(lcd_putc,"%02u",N);
delay_ms(100);
if ( N<24 ) if( input(Pin_B3)==1) N++;
if ( N>0 ) if( input(Pin_B2)==1) N--;
if( input(Pin_B1)==1) { select=0; choix=1;}
}
}
while(choix==1)
{
lcd_gotoxy(6,1);
lcd_putc(" ");
delay_ms(50);
lcd_gotoxy(6,1);
lcd_putc("IC=");
delay_ms(50);
if( input(Pin_B1)==1) select=1;
if( input(Pin_B2)==1) choix--;
24
if( input(Pin_B3)==1) choix++;
while (select==1)
{
lcd_gotoxy(9,1);
lcd_putc(" ");
delay_ms(100);
lcd_gotoxy(9,1);
printf(lcd_putc,"%02u",Iconsigne);
delay_ms(100);
if ( Iconsigne<99 ) if( input(Pin_B3)==1) Iconsigne++;
if ( Iconsigne>0 ) if( input(Pin_B2)==1) Iconsigne--;
if( input(Pin_B1)==1) { select=0; choix=2;}
}
}
while(choix==2)
{
lcd_gotoxy(14,1);
lcd_putc(" ");
delay_ms(50);
lcd_gotoxy(14,1);
lcd_putc("T=");
delay_ms(50);
if( input(Pin_B1)==1) select=1;
if( input(Pin_B2)==1) choix--;
if( input(Pin_B3)==1) choix++;
while (select==1)
{
lcd_gotoxy(16,1);
lcd_putc(" ");
delay_ms(100);
lcd_gotoxy(16,1);
printf(lcd_putc,"%02u",Tconsigne);
delay_ms(100);
if ( Iconsigne<120 ) if( input(Pin_B3)==1) Tconsigne++;
if ( Iconsigne>0 ) if( input(Pin_B2)==1) Tconsigne--;
if( input(Pin_B1)==1) { select=0; choix=3;}
}
}
while(choix==3)
{
lcd_gotoxy(16,2);
lcd_putc(" ");
delay_ms(50);
lcd_gotoxy(16,2);
lcd_putc("IN");
delay_ms(50);
if( input(Pin_B2)==1) choix--;
25
if( input(Pin_B3)==1) choix++;
if( input(Pin_D3)==1)if( N>0) if( Mtension_24>N*39000) if (Iconsigne>0) if (Tconsigne>0)
{charge=1; choix=4;}
}
}
while(charge=1)
{
lcd_gotoxy(1,1);
lcd_putc("Mise en charge");
}
}
}
17 - Conclusion
Ce projet, nous a permis d'avoir une approche plus pratique et concrète de
l'électrotechnique et électronique (hacheur, cartes...) et même dans le domaine de
l'informatique industriel (adaptation d'un programme à un projet concret).
Nous aurions aimé pouvoir finaliser ce projet mais l'impossibilité de
simulation dût au logiciel (simulation de la PWM peut fiable sous isis) et le manque
de temps pour la réalisation des cartes dût aux différentes contraintes ne nous l'a
pas permis.
Nous avons eut du mal à travailler en équipe car nous n’avons pas assez
communiqué entre nous. Donc on a du refaire le typon 4 fois. Nous avons tous
soudés et tester le programme en réel. Il nous manque à faire le câblage entre les
différentes cartes.
Nous avons du realiser un cablage d’un equilibreur au dernier moment de batterie
lipo 90A.H avec des alimentations de PC 5V/10A.
Nous tenons à remercier Mr.Sivert pour l'aide qu'il nous a apporté.
26
18
Téléchargement