Je suis un ingénieur électricien qui a été plongé dans le monde numérique et a appris au fur et à mesure. Je programme un processeur TI pour faire une boucle PID (proportionnelle-intégrale-dérivée) , illustrée par ce diagramme:
Je vais également le décrire:
Ampli op à rétroaction négative, avec borne non inverseuse mise à la terre. Entrée par borne négative. La boucle de rétroaction est un circuit série RE en parallèle avec une résistance et tout cela en parallèle avec un capuchon.
Quelqu'un a une idée de comment convertir ce circuit en code C? Je suis un peu hors de mon élément à ce sujet et je pourrais utiliser l'aide.
dt
dans les constantes, au lieu de faire des divisions et des multiplications supplémentaires dans la boucle.Réponses:
Le circuit
Ok, je viens de créer un compte ici quand j'ai vu cette question. Je ne suis pas en mesure de modifier votre question afin que je puisse corriger la faute de frappe que vous avez faite. Je pense que vous vouliez dire un circuit de la série RC en parallèle au lieu de RE (si c'est le cas, je n'ai aucune idée de ce que cela signifie)
On dirait que le circuit analogique que vous souhaitez simuler en utilisant C ressemble à ceci
(Je n'ai pas pu résister à mon envie de dessiner cela car je voulais vous dire comment les ingénieurs électriciens / électroniciens communiquaient dans les forums et les e-mails sans images ... et pourquoi nous adorons le courrier, la police à largeur fixe)
Je dois avouer que le circuit que vous utilisez est simple à configurer mais est très complexe mathématiquement, quand il s'agit de régler les constantes promotionnelles, intégrales et dérivées du système à une valeur souhaitée individuellement, ce n'est pas possible.
Je vous suggère fortement d'utiliser le circuit de cette source pour étudier.
Même s'il est un peu fastidieux à mettre en place, mathématiquement, c'est beaucoup plus simple à analyser car vous pouvez le relier directement à la forme mathématique standard au lieu de la forme idéale.
Enfin, le Vout sert à contrôler un moteur ou tout ce qui doit être contrôlé. Et Vin est la tension variable Process.
Avant de se mouiller les pieds en C (mer?)
Je suppose que vous lisez les signaux d'une sorte de convertisseur analogique-numérique. Sinon, vous devrez simuler le signal en entrée.
Si nous utilisons le formulaire standard, nous avons,
En supposant que le temps de fonctionnement de la boucle est suffisamment petit (un processus lent), nous pouvons utiliser la fonction suivante pour calculer la sortie,
où
où initialement «der» et «int» seraient nuls. Si vous utilisez une fonction de retard dans le code pour régler la fréquence de boucle pour dire 1 KHz, votre dt serait de 0,001 seconde.
Dessiner en C
J'ai trouvé cet excellent code pour PID en C, bien qu'il n'en couvre pas tous les aspects, c'est un bon néanmoins.
Si nous prenons un processus lent, alors nous pouvons utiliser une fréquence plus basse telle que le temps d'exécution du code dt >>> pour une seule boucle (bien plus que). Dans de tels cas, nous pouvons supprimer la minuterie et utiliser une fonction de retard à la place.
la source