CPGE TSI – Lycée P.-P. Riquet – St-Orens de Gameville - 4 -
2/ Application : calcul de la quantité d'électricité produite par une batterie au démarrage d'un moteur
Lors du démarrage d'un moteur à courant continu, le courant qu'il consomme présente une pointe importante car il n'est limité que
par la résistance interne du moteur, qui est faible. Au fur et à mesure de son accélération, le courant consommé chute pour se
stabiliser lorsque la vitesse a atteint un régime permanent.
Dans un système embarqué, ce phénomène doit être quantifié pour pourvoir dimensionner la batterie d'alimentation. Celle-ci
peut en effet fournir un certain courant pendant un certain temps ; c'est sa capacité, exprimée en A.s ou A.h.
Sur un système du laboratoire, on a relevé le courant Ce comportement peut se
de démarrage suivant : modéliser par la fonction :
f(x) = 200 . x . e-10.x
avec x le temps en secondes.
Son tracé est en effet :
Ce modèle conserve sa
validité au-delà de t = 0,5 s, si
l'on considère que le courant
n'est plus seulement dû au
démarrage.
La quantité d'électricité Qdemar fournie par la batterie au démarrage est la surface sous la courbe du courant. Elle correspond en
effet à un produit courant x temps, et s'exprime en A.s. On peut donc la calculer avec Qdemar =
Commencer par programmer la fonction f(t).
Programmer ensuite la fonction int_rect(f, a, b, n) en suivant l'algorithme de la page précédente pour l'intégration par la méthode
des rectangles (sans Ecrire() et Lire() car a, b et n seront passés en paramètres lors de l'appel).
Programmer la fonction Qdemar(a, b, n) appelant int_rect et affichant la quantité d'électricité consommée en A.s. Tester l'appel.
Programmer la fonction primitive(t) = –2 . e-10.t – 20 . t . e-10.t permettant de tester votre programme en donnant le résultat exact du
calcul d'intégrale avec primitive(0.9) – primitive(0).
Modifier n. Que constate-t-on ?
Rajouter la fonction int_trap(f, a, b, n) en suivant l'algorithme de la page précédente pour l'intégration par la méthode des trapèzes.
Rajouter l'appel à int_trap dans la fonction Qdemar, afin de pouvoir comparer les résultats des 2 méthodes.
Conclusion : quelle est la méthode la plus précise ?
Que doit valoir n pour que cette méthode donne un résultat approché avec une erreur inférieure à 10-3 A.s ?
Pour ceux qui ont le temps :
Rajouter une fonction qui trouve n pour garantir une erreur < 10-5, dans chacune des 2 méthodes.
Tracer f(t) avec l’instruction plot(T,Y), après avoir constitué la liste T des instants et la liste Y des valeurs de f(t). On peut par exemple
définir la fonction :
def tracef():
T, Y = [], []
for i in range(100):
T.append(i/100)
Y.append(f(i/100))
plot(T, Y)
Rajouter la méthode des rectangles par point milieu.
Calibres:
1A/div
0,1s/div
Calculer le temps mis par le processeur pour faire le calcul
pour chaque méthode, avec :
from time import *
t1 = clock()
res = int_rect(f, a, b, n) # Par ex.
t2 = clock()
print(t2-t1)