Étape 4: Code Arduino pour l’équilibrage inversé sur place
Autant que je sache, un pendule inversé peut être réalisé en contrôlant le couple du moteur conduite dans l’équation de Lagrange. Couple du moteur peut être contrôlé par un courant à moteur ou une accélération angulaire du moteur.
Dans ce projet, j’ai appliquer motricité actuelle.
Courant d’équilibrage inversé du moteur requis est calculé comme la formule suivante ;
iValue = K1 * theta + K2 * phi + K3 * dtheta + K4 * dphi
iValue : requied courant du moteur (A)
thêta : angle de la roue (rad)---calculées par intégration de dtheta
Phi : angle de corps (rad) –---est obtenu de capteur MPU6050
dtheta : roue une vitesse angulaire (rad/s)---estimée à l’aide de la valeur actuelle et valeur PWM
dphi : corps une vitesse angulaire (rad/s)---calculée par différenciation de phi
K1, K2, K3, K4 : gains (ces chiffres peuvent être trouvés par essai et erreur.)
(Theta et dtheta estimé sont inexactes, mais ceux-ci travaillent à ce projet.)
Contrôle de courant continu est difficile. Alors, j’ai mesurer le courant au moteur (iCurrent) et basé sur l’erreur (iValue – iCurrent) se nourrissent à valeur PWM pour moteur proportionnellement avec filtre passe-bas.
Ces ci-dessus mentionnés sont résumées comme suit :
flotter, K1, K2, K3, K4 ;
flotteur thêta, phi, dtheta, dphi ;
iValue de flotteur, iCurrent, IERREUR ;
flotteur Ka ;
float iMotor ;
void loop()
{
iValue = K1 * theta + K2 * phi + K3 * dtheta + K4 * dphi ;
IErreur = iValue - iCurrent ;
iMotor = lisse (Ka * IERREUR, 0.05, iMotor) ;
MotorDrive(iMotor) ;
}
Sur-la-place-équilibrage n’est pas tellement amusant !
Voiture R/C doit être à distance contrôlée.
Ensuite, faites-en la télécommande !