Étape 3: logiciel
Le logiciel a été développé à l’aide d’un kit de développement de MSP 430 LaunchPad peu coûteux de Texas Instruments. Le LaunchPad se connecte à un ordinateur Windows via le port USB. Quelques composants tels que les pilotes de transistor étaient ajoutent via une maquette au cours du développement de logiciels et circuit.
Il y a autres Instructables montrant comment utiliser le MSP 430 LaunchPad avec TI Studio du compositeur Code fourni pour développer du code, donc je ne dupliquera pas qu’ici. J’ai utilisé l’interface graphique grâce à mettre en place le microcontrôleur. Le fichier joint main.cfg contient le paramétrage de Grace et main.c est le code source C. Les listes de code sont également fournis au format pdf si vous voulez juste regarder le code sans installer de Code compositeur Studio.
Le logiciel est interruption conduite. Le microcontrôleur est mis en place, il est mis en mode « veille ». Il est réveillé lorsque l’un de l’interruption les conditions sont remplies.
Une minuterie conduite par la montre cristal déborde et génère une interruption toutes les deux secondes. Cela est utilisé comme le chronométrage de base pour l’horloge.
Le comparateur génère une interruption lorsque l’impulsion de tension positive de la batterie est générée. Une routine d’interruption timer créé en mode machine État
- un laps de temps pour l’aimant de dépasser légèrement la bobine pour pousser optimale des retards
- la bobine s’allume
- tour à tour la bobine large et laissez-le être suspendu alors qu’un second déclencheur faux n’est pas détecté.
Pour chaque État, une interruption est générée, les mesures prises et le microcontrôleur mis dos pour dormir afin d’attendre la prochaine étape.
Le logiciel mesure chaque oscillation du pendule et compare le temps réel swing à la désirée 1 seconde, générant un numéro d’erreur. Un algorithme de commande PID (proportionnelle - intégrale - différentiel) mis à jour l’utilise le signal d’erreur pour ajuster la durée de l’impulsion à la bobine. Cela modifie l’angle d’oscillation du pendule pour accélérer ou ralentir le pendule et, par conséquent, l’horloge. Le code C est
Pulse = NominalPulse - (Kp * erreur + Ki * i_error) ;
Où Kp et Ki sont des constantes empiriquement et erreur et i_error sont respectivement de l’erreur proportionnelle et intégrée (pas de terme différentiel est nécessaire ou utilisé).
Un enregistreur de données de National Instruments a été utilisé afin de calculer les valeurs de constante et régler le système. Une routine de logiciel mises en place une largeur d’impulsion modulée port de sortie (PWM) relié à un filtre passe bas simple et l’enregistreur de données. La routine a généré une tension proportionnelle à la largeur d’impulsion à la bobine ou le signal d’erreur de l’algorithme de PID. Montré est un journal du signal erreur fermeture et verrouillage sur le zéro.
Le logiciel s’allume une LED bicolore rouge ou verte pour indiquer si le pendule se déplace trop vite ou trop lentement. Cela permet le bob à être ajustée vers le haut ou vers le bas en quelques minutes à mettre en place le pendule. Une fois qu’il est situé assez proche, le microcontrôleur réglemente le pendule pour garder l’heure exacte.
Circuits imprimés furent conçus et construits après que le matériel et les logiciels ont été achevés.