Communiquer avec une carte NI6009 :
Nous allons reprendre le TP Arduino Labview de la semaine
dernière,
mais nous allons remplacer la carte Arduino par une carte NI6009 (ou
NI6008)
Cahier des Charges :
- Utiliser une carte NI6009 comme une carte ES (Entrées Sorties)
- Afficher la température mesurée par une CTN pour une gamme de 20°C à 80 °C
- Evaluer les incertitudes de la mesure de température par ce montage
- Réaliser un programme de régulation TOR à 2 seuils
Etape 1 : découverte de la carte NI6009
Etape 2 : afficher la température grâce à LabVIEW
Etape 2b : faire la moyenne de 20 mesures
Etape 2c : évaluation de l'incertitude de la mesure
Etape 3 : Piloter un microfour
Etape 4 : Régulation TOR à 2 seuils.
Etape 5 : Améliorations et exploitation des courbes obtenues
Découverte
de la carte NI6009 :
La carte NI 6009 est un microcontrôleur, comme un Arduino, développée par National Instrument pour Labview.
Sa programmation s'effectue directement dans Labview grâce aux
assistants DAQ
- Elle est spécialisée dans la mesure des tensions analogiques
grâce à ses 8 entrées analogique (AI : Analog Input).
- Les mesures réalisées sont plus précises qu'avec un Arduino,
notamment en mode différentiel (entre AI0+ et AI4- par exemple, résolution de 14 bits au lieu de 10 bits pour un Arduino)
de plus la gamme de mesure va de -10 V à + 10 V au lieu de 0 à 5 V pour un Arduino. - La NI 6009 dispose aussi de 2 sorties analogiques AO : Analog Output, gamme 0 à 5 V 150 Hz.
- Enfin comme un Arduino, la NI6009 dispose de 12
Entrées/Sorties numériques (Digital Input Output, DIO)
elles sont regroupées en 2 ports,
le port 0 : P0 avec 8 DIO de P00 à P07
le port 1 : P1 avec 4 DIO de P10 à P13
Pour avoir une connectique plus pratique, nous avons "mis en boite" la NI 6009 :
Etape
2 : Mesurer une tension analogique
Pour commencer nous allons mesurer la tension dans ce diviseur de tension :
- Sélectionner le DAQ (Data AcQuisition) Lire :
- Nous voulons réaliser une mesure analogique sur la voie AI0 (voie unique), une seule mesure (échantillon
unique), sous forme d'un nombre DBL
(DBL : nombre à virgule flottante codé sur un double mots de 32 bits soit 64 bits)
- Il faut maintenant créer une constante pour lui donner la
tâche :
- Puis sélectionner la tâche à exécuter : Lire la tension sur
AI0 du périphérique (device) pris (ici le périphérique du poste
4, P4) :
Remarque : Prenez toujours la carte NI correspondant à votre poste,
ainsi vous pourrez réutiliser les tâches déjà créées sans avoir à les refaire... - Si la tâche n'existe pas il faut la créer grâce à
l'assistant DAQ :
Tester systématiquement la tâche créée !
Cela permet d'être sûr que c'est un problème de programmation
si votre programme ne fonctionne pas par la suite... -
Retrouvez dans votre ENT (Environnement Numérique de Travail) le programme Modélisation d'une CTN réalisé lors de ce TP
et afficher la température de la pièce pour une gamme de 20°C à 80 °C :
Etape
2b : Faire la moyenne de 20 mesures
Pour réduire l'erreur aléatoire de la carte NI6009, nous allons :
- réaliser très rapidement 20 mesures (en 20 ms avec un
échantillonnage à 1 kHz)
pour cela il suffit de déclarer un Echantillons multiples de 20 mesures
Editer la tâche pour demander N échantillons, échantillons à lire : 20
indiquer que nous voulons 20 échantillons par voie -
faire la moyenne de ces 20 mesures
- afficher la température correspondant à cette tension moyenne
La figure ci-contre permet de comparer deux méthodes de mesure de température :
- à l'aide d'une seule mesure (courbe en blanc Instantané)
- à l'aide d'une moyenne de 20 mesures (courbe en rouge Moyenne 20 mesures)
Que pouvez-vous conclure sur l'intérêt d'utiliser la moyenne de 20 mesures pour calculer T ?
Vous voulez réaliser cette expérience avec votre carte NI 6009 ?
Voici le lien vers un
programme possible.
A noter : nous avons utilisé le VI graphe au lieu du VI graphe
déroulant afin d'avoir des curseurs...
Etape 2c : Evaluation de l'incertitude de la mesure
Rappel sur les
incertitudes de mesure d'après Wikipédia.
Dans cette chaine de mesure évaluer les incertitudes élargies U, les exprimer en °C :
- Umodélisation indiquée sur le VI utilisé pour déterminer la fonction de transfert du montage
- UNI6009b
pour une mesure (incertitude de type B)
utiliser la doc constructeur disponible dans le dossier Notices ou sur ce lien ou ici pour la NI6008 des postes 1 et 2
pour l'exprimer en °C, prendre comme sensibilité moyenne 45 mV/°C (pente de la droite de modélisation)
détailler les calculs
reprendre ce calcul si on ne prend pas le mode différentiel mais le mode asymétrique ou RSE
- UNI6009a
incertitude de type A :
proposer un protocole respectant les conditions de répétabilité
afin de déterminer l'erreur aléatoire UNI6009a (caractérisant la fidélité) de la NI 6009
lors de la mesure de la température ambiante. Réaliser ce protocole.
La tension mesurée par la NI 6009 est-elle juste ?
Proposer un protocole afin de vérifier la justesse de la NI 6009.
L'erreur de justesse constatée, est-elle compatible
avec l'incertitude annoncée par le constructeur ? (incertitude de type B)
Besoin d'aide ? Une solution possible...
- UCTN pour une gamme de 20°C à 80 °C.
1% de la mesure ± 0,25°C avec une référence à 25°C d'après le constructeur
Propagation des incertitudes :
- Est-il important de prendre une gamme de mesure adaptée et
le mode différentiel pour la NI6009 ?
Justifier votre réponse. - Quel est l'intérêt de faire une moyenne de 20 mesures ?
- Calculer l'incertitude de la chaine de mesure
- Quel est le maillon faible de cette chaine de mesure ?
Etape 3 : Piloter un microfour
Le montage :
Une sortie digitale ne peut fournir que très peu de courant.
La résistance interne d'une sortie est de 4,7 kΩ,
Usortie= 5 - 4,7*I ,
avec I en mA.
I = 0,2 mA , Usortie ≈
4 V
I = 0,4 mA , Usortie ≈
3 V
I = 0,6 mA , Usortie ≈
2 V ...
Pour piloter un microfour demandant 3 A, nous avons ajouté un
transistor MOS IRF640.
Ce transistor nécessite quasiment aucun courant pour être commandé.
Il suffit que la sortie P00 de la NI 6009 applique sur la Grille du
transistor une tension supérieure à 4 V pour qu'il soit
passant.
Avec une tension de 0V sur sa Grille le transistor est
bloqué.
Le Microfour est une charge résistive aussi nous ne sommes pas obligé de mettre une diode de roue libre à ses bornes.
Ce montage de type hacheur avec un transistor MOS IRF640, nous permet à partir d'une commande 0 - 5 V, 0 A :
- de commander un courant important (jusque 6 A)
- d'obtenir une tension aux bornes de la charge élevée
(jusque 60 V)
qui correspond à l'alimentation extérieure utilisée
Programmation de la NI 6009 :
- Sélectionner le DAQ (Data AcQuisition) écrire :
- Nous voulons piloter le four à l'aide du bit P00 :
=>
- Il faut maintenant créer une constante pour lui donner la
tâche :
- Puis sélectionner la tâche à exécuter : Ecrire le bit
(Ligne) P00 sur le périphérique (device) utilisé (ici le périphérique du poste
4, P4) :
- Si la tâche n'existe pas il faut la créer grâce à
l'assistant DAQ :
- Créer une commande pour piloter le MicroFour, puis vérifier
son fonctionnement :
- commande à vrai : le MicroFour consomme environ 3 A
- commande à faux : le MicroFour consomme 0 A
Utilisation du VI express Assistant DAQ

Une autre méthode pour programmer une carte NI6009 consiste à utiliser le VI express Assistant DAQ :
C'est un peu plus convivial, mais c'est conçu pour piloter
plusieurs voies il faut donc indiquer la voie que l'on utilise...
De plus si on change de carte, il faut réécrire tout le DAQ au lieu
de changer la tâche uniquement.
A vous de choisir...
Etape
4 : Régulation TOR à 2 seuils.
Nous allons piloter maintenant le microfour à l'aide de la CTN.
Pour cela nous allons utiliser l'algorithme d'une régulation TOR à 2
seuils (Ch : consigne haute et Cb consigne basse) :
- Si le four est éteint et que la température est inférieure à Cb, on allume le four (consigne active : Cb) ;
- Si le four est allumé et que la température est supérieure à Ch, on éteint le four (consigne active : Ch) .
Réaliser une interface proche de celle affichée ci-contre :
Pour mémoriser l'état du four, on peut,
- soit utiliser un registre à décalage (recommandé par Labview),
- soit utiliser une variable locale (plus proche de la programmation Arduino).
Manque de temps ? Besoin d'aide ? Des éléments de réponse ici...
Etape 5 : Améliorations et exploitation des courbes obtenues :
- Afficher la consigne active (Ch ou Cb) sur le graphe déroulant ;
- Modifier le graphe déroulant en graphe afin d'ajouter des
curseurs.
(cf étape 3 du TP précédent et cet exemple)
Faire une capture de ce graphe sur 600 s pour la joindre au
compte rendu,
et à l'aide des curseurs pour un échelon de consigne (passer
de la température ambiante à Cb=48°C et Ch=52°C),
déterminer :
- tR la durée du transitoire (caractérise la rapidité du système régulé) ,
- la période du cycle en régime établi (détermine la durée de vie de l'organe de réglage : relais...)
- l'amplitude des variations de température Tmax et Tmin en
régime établi (caractérise la stabilité du
système)
puis en déduire la température moyenne du régimé établi : Tmoy. - échelon de température appliqué au process : échelon = Tmoy - Tdépart
- dépassement = Tmax - Tmoy
- d le dépassement en % de l'échelon (caractérise la stabilité du système),
- erreur statique = Tmoy - Consigne_Moyenne (caractérise la précision).
Conclure sur la rapidité, la stabilité et la précision de ce
système régulé.
Cette régulation vous semble-t-elle satisfaisante ?
Reportez ces résultats dans le tableau récapitulatif ci-dessous
(à copier dans Excel)
que nous finirons de remplir lors du TP régulation.
Comparaison régulation | TOR 2 seuils | P | P + Talon Intégral | |
Si (four & T > Ch) four = 0 Si (!four & T < Cb) four = 1 |
Y = Kp*( consigne - T ) | Y = Kp*( consigne - T) + TI | ||
Ch = | Kp = | Kp = | ||
Cb = | Consigne = | Consigne = | ||
Consigne | ||||
Echelon | ||||
Temps de réponse : tR | Rapidité | |||
Régime établi : | ||||
Amplitude = Tmax - Tmin | Stabilité | |||
d en % | Stabilité | |||
erreur statique = Tmoy - consigne | Précision | |||
comparaison sur : | ||||
la rapidité | ||||
la stabilité | ||||
la précision |
- Stocker les mesures dans un tableau Excel : HH:mm:ss;T;Four;Ch;Cb
(cf étape 3 du TP précédent) - Piloter un ventilateur si T>Ch...