Bonjour à tous,
Je suis un étudiant en ingénierie, et je travaille actuellement sur un projet de motorisation électrique.
Calculs et dimensionnements faits, je vais alimenter deux moteurs à courant continu en PWM via des ponts en H.
Le contrôle en vitesse des roues ne protège pas le convertisseur de l'overshoot de courant, ce qui m'amène à mettre en place une solution de régulation de courant en cascade dans la boucle de vitesse, pour ce qui est du contrôle.
Les questions arrivent maintenant, pour des raisons de temps (très court) et de budget (plus que limité), la meilleure solution de support semble être Arduino.
Si on fait le décompte des choses à gérer, on a:
1) une commande de commutation commune aux deux drivers que je souhaite fixer à 20kHz, produite par l'Arduino (pas par la PWM usuelle qui ne dépasse pas les 500 Hz)
2)Deux boucles PI(D) pour contrôler le courant, à une fréquence de 10kHZ (temps bien inférieur à la constante électrique des moteurs...). La boucle de courant consiste à lire les valeurs des capteurs de courant, à mettre à jour les variables du PI(D) en tenant compte de la consigne, à calculer la nouvelle valeur de rapport cyclique et à l'insérer dans la commande de commutation.
3)Deux boucles PID pour contrôler la vitesse, à une fréquence entre 100H 1kHz. Il s'agit également de lire la valeur du capteur de vitesse (effet Hall), de réaliser la calcul de la fréquence à partir des relevés temporels, et de recalculer la consigne en conséquence.
Sachant que pour une boucle PID l'allure (en gros) du script est:
u(n)=Kp*e(n-1) + Ki*Se(n-1) + Kd*de(n-1)
e(n-1)=e(n)
e(n)=Ucons - u(n)
Se(n)=Se(n) + dT*e(n)
de(n)=( e(n) - e(n-1) )/ dT
Question: est ce qu'une carte Arduino Mega avec un processeur ATmega 1280 à 16 MHz est capable de tenir tout ça seule? a priori la fréquence est largement suffisante, mais on ne peut pas tolérer de retards du à des calculs trop longs sur le contrôle du courant ou sur la stabilité de la PWM pour des raisons de sécurité.
Je pense que ça revient à déterminer le temps que met Arduino pour faire une addition, une division, une assignation... mais je n'en ai aucune idée... Si je dédouble les cartes, je me pose la question du temps de communication entre ces dernières...?
Donc voila, je n'ai pas ces ordres de grandeurs en tête, et c'est la première fois que je m'attaque à ça, j'espère ma question est claire, et merci d'avance aux électroniciens qui prendront le temps de répondre!
-----