Bonjour !
Je suis étudiant en système embarqué. J'ai pour projet de créer un banc d'essai avec MATLAB.
L'objectif est de pouvoir tester un asservissement contenu dans un microcontrôleur ou un FPGA via à un model implanté sur Simulink
Dans mon cas, j'ai un FPGA avec un PID pour asservir un moteur en vitesse. J'ai modélisé mon moteur de deux manières sur Simulink : dans le domaine de laplace et avec la "librairie" Simscape. Je dispose d'une carte d'acquisition NI myDAQ. La carte transmet le retour en vitesse et la consigne grâce à une tension image de ces dernières et elle reçoit une PWM pour contrôler le moteur grâce à Data Acquisition Toolbox.
Voilà pour la description du projet !
Cela fait 3 semaines que je travaille dessus mais j'ai quelques difficultés. Pour le moment, j'ai modélisé mon moteur et j'arrive à renvoyer la tension image de la vitesse du moteur.
Déjà première question : Le projet vous semble-t-il réalisable sur MATLAB ? (LABView est-il plus adapté par rapport à MATLAB selon vous ?)
Je n'arrive pas à récupérer ma PWM (ou au moins le rapport cyclique) sur Simulink avec la carte acquisition, connaissez-vous une solution ?
J'ai crée un script pour récupérer le rapport cyclique, il fonctionne mais je ne sais pas comment le transcrire sur Simulink.
Et enfin si j'arrive à récupérer mon signal de PWM comment le convertir en tension (signal/fil bleu) ?
Merci pour vos réponse
J'espère avoir été claire ^^
Mon script pour le rapport cyclique : (ici on renvoi une tension image du rapport cyclique)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 clear Fpwm = 20000; %Hz Tpwm=1/Fpwm; %s s = daq.createSession('ni'); ch = addCounterInputChannel(s,'myDAQ1','ctr0','PulseWidth'); ch.ActivePulse = 'High'; ch1 = addAnalogOutputChannel(s,'myDAQ1','ao0','Voltage'); while(1) Tlow = s.inputSingleScan; DC = (Tlow / Tpwm)*100 Tension = DC/20 outputSingleScan(s,Tension); end
Partager