SOMMAIRE - Free.fr
Il a s'agit ensuite de câbler une interruption grâce à des capteurs à ultrasons.
Ces interruptions, plus ... Ampli Op. TL074 ... La carte DSP devra corriger une
commande appliquée à un moteur. Cette correction sera calculée sur les
principes d'opérations de la proportionnalité ? dérivation : K*(1+Td*p), avec K=2
et Td=0,13.
part of the document
cas concret de mise en situation dun système temps réel assujettie à des contraintes de fonctionnement (interruption) et temporel. Nous avons ainsi précisé dans notre esprit des définitions des mots tel que : Ordonnancement, Interruptions, Priorité
Il a sagit ensuite de câbler une interruption grâce à des capteurs à ultrasons. Ces interruptions, plus tard avec la programmation, allaient devenir des interruptions logiciels.
Enfin, la principale partie, qui regroupe les idées et les notions des autres chapitres du TP, consistait à commander un moteur et ses différents modes de fonctionnement dans une simulation de cas réel.
Ce TP fait ainsi interagir de nombreuses connaissances dans le domaine de lélectronique (ADC, Registre, DSP, lAssembleur
), mais aussi fait intervenir des notions en traitement du signal et en temps réel bien sûr, en un mot : un TP dense et intéressant.
Base de la gestion des périphériques dun système et du système lui même, les interruptions sont indispensables pour rendre compte de lenvironnement du système et décider de la suite des exécutions des différents processus. En effet, on peut considérer un système avec son centre de traitement de linformation entouré dune multitude de sous-systèmes qui apportent les informations. Elles peuvent venir de lextérieur si on désire le faire interagir avec un environnement humain (console de pilotage), industriel (chaîne de fabrication), ou de lintérieur (résultat dun calcul, dune procédure). Dès la prise de connaissance dune interruption, le centre de traitement va exécuter une procédure de traitement associée à linterruption générée. Le résultat de cette exécution va déterminer lordre dexécution des processus restants.
Dans notre TP, pour rendre le contexte plus intéressant et proche dun cas industriel, cest un dispositif de barrière à ultra-son qui génèrera linterruption. Elle sera ensuite pris en compte par un DSP 56002 de Motorola, qui fait ici office de centre de traitement, qui agira sur la rotation dun moteur. Ce cas pourra être rencontré dans une usine de production où les produits défilent sur un tapis roulant qui sarrête dès que lun deux passe devant le barrière à ultra sons.
Nous nous sommes donc réparti le travail en deux groupes de trois personnes chacun pour réaliser et tester indépendamment les sous modules avant de faire un assemblage final. Voici la présentation de ces modules.
2- Objectifs
Lobjectif du Tp est de pouvoir organiser la gestion de processus sous interruptions au niveau dun composant DSP de chez Motorola (le DSP 56002). La gestion de processus devra gérer la priorité parmi trois programmes tournant sous le DSP : une opération de filtrage sur le moteur, lutilisation dune interface série SCI (TxD,RxD), et lactivation dun signal darrêt durgence. Pour cela nous allons étudier le comportement dun moteur à courant continu au sein dune boucle dasservissement. Dans un premier temps létude se fait pour chaque fonction de façon indépendante, et dans un deuxième temps létude devra gérer les trois applications de façon multitâches en appliquant des règles de priorité
Le but de ce TP de temps réel est dexplorer et dexploiter un calculateur pour la gestion matérielle de différentes tâches.
Pour réaliser cela, nous utilisons le matériel suivant :
Carte DSP56002EVM
Console texte reliée à la carte via une liaison série + clavier
Prise DB25 mâle
Une paire émetteur/récepteur à ultrasons
Transistor 2N1711
Ampli Op. TL074
Portes logiques série HC : 04, 14, 08, 32, 00, 02
Buffer 74HC245
Registre 74HC574
Convertisseur ADC808
Convertisseur DAC08
Ampli. Op. TL074
Ensemble : moteur à courant continu+boîtier de commande+ capteur de position
but
Le but de ce TP est daborder des notions importantes dans la gestion des processus. Parmi celles-ci, nous en relevons deux qui nous semblent primordiales : lordonnancement et les interruptions.
Nous avons eu loccasion au cours de ce TP dappliquer ces concepts sur un cas concret de contrôle dun moteur avec interruptions. Pour ce faire, nous avons branché ensemble un moteur, un ADC, un buffer, un DSP, un registre, un DAC, et un moteur dans une boucle fermée.
Dans un premier temps, nous avons dû câbler le circuit dinterruption. Puis, nous avons intégré le DSP et ses organes dutilisation ( exemple : ADC, buffer
)
Ensuite arrive la phase de codage du DSP via une interface de programmation en assembleur.
Le résultat de tout ce travail consiste à obtenir un contrôle du moteur, cest-à-dire, lorsquune interruption survient : commander larrêt du moteur.
Définition de lordonnancement
Nous avons vu cette notion pour la première fois en cours de temps réel.
Dans un système multi-tâches (exemple ce TP), un ordonnanceur a pour rôle dallouer le processeur à diverses tâches. A titre dindication, nous avons vu les fonctionnalités de lOrdonnanceur par tourniquet, par priorité, et mixte.
Quel que soit lOrdonnanceur, les tâches sont coordonnées et répondent au critère suivant :
Schéma détats des tâches :
Suite à ce schéma, il devient évident que lOrdonnanceur a principalement à gérer les interruptions.
Gestion des interruptions
Nous avons vu précédemment que cette fonctionnalité est assurée par lOrdonnanceur, nous allons maintenant définir plus particulièrement les interruptions.
Dans un système multi-tâches, les interruptions surviennent lorsquun programme de forte priorité réclame le processeur, alors la tâche en cours sinterrompt pour lui laisser sa place. Dans ce cas, on peut dire que le système est préemptif.
Exemple de nature dinterruptions :
interruptions matérielles ou câblées,
logicielles,
exceptions
Cependant, ceci pose des problèmes, notamment pour les zones critiques de code. Les solutions apportées à ces difficultés sont le masquage logiciel, matériel, les sémaphores, et rendez-vous.
Nous avons dû en tenir compte lors du codage du DSP.
3- Travail réalisé
A) 1ère partie
On se propose tout dabord de faire exécuter trois taches séparées au processeur.
Contrôle dun moteur à courant continu
La carte DSP devra corriger une commande appliquée à un moteur. Cette correction sera calculée sur les principes dopérations de la proportionnalité dérivation : K*(1+Td*p), avec K=2 et Td=0,13.
Pour réaliser le circuit de la boucle dasservissement nous avons respecté différentes contraintes :
La carte DSP56002EVM dispose dun espace adressable libre à partir de ladresse $8000. On utilisera cette plage pour définir les deux adresses de lADC808 et du DAC08CN aux conditions suivantes :
EMBED Equation.DSMT4 : linformation reçue de lADC ou envoyée vers le DAC fait partie des données
EMBED Equation.DSMT4 : la distinction entre ADC et DAC (au niveau des adresse), se fera évidemment par les ordres de lecture ou décriture ( EMBED Equation.DSMT4 )
EMBED Equation.DSMT4 : ces données seront traitées dans le champ mémoire Y (pour éviter les conflits des données des périphériques)
DAB15 : lespace entre $8000 et $FFFF sera sélectionné pour une valeur que prendra une ligne particulière du bus dadresse
Dans un premier temps, pour réaliser cette partie du travail, nous avons câblé les éléments qui permettent dutiliser le DSP. En effet, le DSP fonctionne avec des signaux numériques tandis quà la sortie du moteur, nous avons un signal analogique. Ceci nous oblige à utiliser un ADC puis un DAC. Le buffer sert à stocker linformation avant lentrée dans le DSP et le registre met en forme le signal pour le DAC pendant que le DSP soccupe des prochaines informations à venir.
Schéma des organes du DSP :
La première étape a été de vérifier le bon fonctionnement des branchements de chaque composant :
ADC : les entrées, la mise en contact des pattes START-EOC-ALE, la mise en place du clock, et la configuration de la patte 0 en entrée.
Buffer: la configuration du buffer en mettant le dir (patte 1 à +5V) tel que le signal aille de lADC au registre, car il fallait dabord tester toute la boucle avant de brancher le circuit au DSP.
Registre lalimenter
DAC lalimenter en +15/-15 et 0/5V
Le montage du soustracteur
1- Composants du montage :
ADC 808
LADC 808 est un convertisseur à pesées successives qui délivre un signal de fin de conversion(pour chaque échantillon traité). Il indique également quune données est disponible dans son registre de sortie.
Nous allons relier le signal de fin de conversion EOC à lentrée dinterruption /IRQA(ou /IRQB) pour que le DSP puisse lire une donnée disponible à ladresse du convertisseur.
Remarque : pour éviter les temps morts on relie START,ALE et EOC entre eux. Cela permet denchaîner les conversions une à une.
Buffer 74HC245
Le Buffer 74HC245 possède une entrée DIR qui fixe la direction des données. Nous alimenterons cette entrée à +5V.
Le Buffer 74HC245 sert à stocker les données de lADC pour le DSP 56002.
Remarque : Sur les convertisseurs D0 correspond au bit de poids faible LSB et D7 au bit de poids fort MSB.
Pour choisir le sens de transfert, on agit sur G\ et Dir.
Registre 75HC574
Le registre a pour rôle de stocker les données provenant du DSP 56002 pour le DAC.
Décodage à effectuer pour adresser le montage sur le bus de la carte DSP56002EVM
Equation booléen
EMBED Equation.3
EMBED Equation.3
Schéma théorique du montage :
Tout dabord on relie le bus de donnée de la carte avec notre bus de donnée
Puis on réalise les équations booléen à laide de porte 74HC00 et 74HC04
On utilise un 74HC04 car il ny a pas assez de porte dans le 74HC00 pour réaliser tout les inverseurs
Rôle du registre et du buffer :
Le buffer est utilisé dans le montage pour mémoriser les données reçu de lADC lorsque le DSP essaye de lire une conversion.
Cela permet à lADC deffectuer une autre conversion pendant que le DSP lit la première. Il permet également de pouvoir relier lADC au bus de donnée du DSP car quand le DSP ne veut pas lire une conversion il peut vaquer à ses occupations en désactivant le buffer. Car si lon branchait directement le DSP à lADC808 il se produirait lorsque le DSP voudrait accéder à la mémoire externe un conflit au niveau du bus de donnée.
Le registre permet de stocker la donnée envoyer par le DSP pour le DAC ainsi le DAC à tout le temps de traiter la donnée. Il permet également comme le buffer déviter les conflits de donnée, car le registre ne capture que les données qui lui sont adressées. Sinon le DAC prendrait en compte tout les données présentent sur le bus de donnée.
Le soustracteur :
Le montage soustracteur : classique, réalisé à partir dun AO sur le modèle suivant, il admet en entrée - la consigne V2 et en entrée + la tension V1 comprise entre 5 V et +5 V provenant du potentiomètre de sortie du moteur.
Schéma :
Calcul de démonstration pour le soustracteur :
Abaisseur de tension :
Le convertisseur analogique/numérique supporte une tension dentrée comprise entre 0 et 5 Volts. Apres le soustracteur on peut avoir une tension comprise entre -5V et +10V. On est donc obliger de réduire la tension à laide du schéma suivant :
Schéma :
Convertisseur Analogique/Numérique :
On choisit lentrée 0 et pour cela on configure les adresses de la manière suivante A=B=C=0 Volt. Les entrées START, EOC, ALE sont reliées ensemble. Dautre part on relie EOC au DSP afin de lancer le traitement des données.
Etude du buffer, du registre et des signaux EMBED Equation.3 et H
Dans le montage réalisé lors du TP, le bus de donnée dentrée et de sortie du DSP est identique. Afin déviter tout conflit entre les informations entrantes et sortantes, le buffer et le registre sont utilisés dans le but de stocker linformation. Le signal EMBED Equation.3 est contrôlé par le DSP afin que le buffer laisse passer linformation ou la bloque lorsque le DSP et le bus associé sont en cours dutilisation. De même le signal H est envoyé par le DSP qui attend un signal du DAC indiquant un signal de fin de conversion permettant ainsi au registre de libérer ses données.
Une logique booléenne est donc utilisée dans lenvoi des signaux EMBED Equation.3 et H à partir des informations récupérées sur le DSP.
EMBED Equation.3 correspond à létat dactivité des registres du DSP.
RD correspond à la fonction de lecture du DSP.
WR correspond à la fonction décriture du DSP.DAB15 est le bit de poids le plus fort. (MSB : Most Significant Bit). On lutilise afin de faire une vérification sur lespace du bus de données. En effet ce dernier ne change pas de valeur dans lespace alloué de $8000 à $FFFF. Il est toujours à 1.
Doù on obtient les schémas suivants :
SHAPE \* MERGEFORMAT
EMBED Equation.3
Etude du montage soustracteur à laide dun amplificateur opérationnel
SHAPE \* MERGEFORMAT
On a e+ = e- (1), daprès le théorème de tension.
or e- = (R4/( R4 +R3)).V2
et e+ = ((V2 /R1) + (Vs /R2)) / ((1/R1) + (1/R2))
Doù, daprès (1) on a :
(R4 / (R4 + R3)).V2 = ((V2 / R1) + (Vs / R2)) / ((1 / R1) + (1 / R2))
(R4 / (R4 + R3)).V2 = (V1.R2 + VS.R1) / (R2 + R1)
(R4.(R2 + R1) / (R4 + R3)).V2 = V1.R2 + VS.R1
(R4 / R1).((R2 + R1) / (R3 + R4).V2 (R2/R1).V1 = VS
On a R1 = R2 = R3
Doù VS = V2 V1
SHAPE \* MERGEFORMAT
Daprès le diviseur de tension, on a :
VS = ((V+ / R2) + (Ve / R1) + 0 / R3) / ((1 / R1) + (1 / R2) + (1 / R3)
VS = ((V+.R1.R3) + (Ve.R2.R3)) / (R1.R2 + R2.R3 + R1.R3)
Posons R1 = R2 = R3 = R ;
On a alors :
VS = (( V+.R²) + (Ve .R²)) / 3R²
VS = ( V+ + Ve) / 3
Comme nous sommes dans le cas dun abaisseur de tension, on a alors :
VS < Ve
Soit VS = ( V+ + Ve) / 3
VS = ( S + Ve) / 3
Prenons par exemple Ve = 10V, on obtient alors :
VS = 15/3 =5
Donc on a bien : VS < Ve
Explication ecriture/lecture avec DSP plus code source
Schéma de la boucle dasservissement
: Partie basse du bus de donnée, D0-D7
: Signaux de contrôle
: Signal analogique
1- Composants du
À partir des conditions ci-dessus (les quatre signaux du DSP : EMBED Equation.DSMT4
), nous pouvons déterminer la logique booléenne afin de générer les deux signaux EMBED Equation.DSMT4 pour le buffer de lADC et H (horloge du registre 74HC574) pour le DAC :
Pour obtenir EMBED Equation.DSMT4 et H, nous réalisons ces montages à laide de 74HC32 (OR) et 74HC04 (NOT) :
En pratique nous avons synthétisé les deux montages en un seul pour limiter le nombre de portes utilisées.
Nous avons relié lEOC de lADC à lIRQ A (3e bit de la broche J17 du DSP) : la configuration (destion des priorités) est faite dans le programme assembleur (cf. prog).
Nous avons ajusté la tension sur le GBF pour obtenir une tension entre 0 et 5V.
Pour éviter les temps morts sur lADC on a relié START, ALE et EOC entre eux.
Nous avons fixé la direction des données à laide de lentrée DIR du 74HC245.
Nous avons organisé les bits sur le bus de données du DSP de DB0 (LSB) ( DB7 en faisant attention à lordre des bits sur le buffer et le registre.
Nous avons réalisé le montage soustracteur à laide dun amplificateur opérationnel :
Montage soustracteur X
1-2) Explication du programme
Nous avons commencé sans le DSP pour tester notre boucle en fixant le EMBED Equation.DSMT4 à 0 et le H du registre synchronisé avec lhorloge de lADC .
Ensuite, nous avons relié les bits sur le bus de données du DSP. Nous avons également réalisé le circuit logique nous permettant de générer EMBED Equation.DSMT4 et H (voir schéma ci-dessus) afin de synchroniser les données du DSP avec le buffer et le registre . Nous avons écrit un programme simpliste transmettant les données du buffer vers le registre sans aucune gestion dinterruptions.
Finalement, en se servant de linterruption IRQ A relié à lEOC de lADC, nous avons réécrit notre programme assembleur afin de tenir compte de celle-ci. On constate que lorsque lIRQ est débranché, nous navons plus de signal de sortie.
;AVEC INTERRUPTIONS
START EQU $40 ;dÈclaration de la variable start
org p:$0 ;vecteur reset
jmp START ;saut l'adresse $40 contenue dans start
org p:$0A ;vecteur d'interruption IRQB
jsr INTB
org p:$08 ;vecteur d'interruption IRQA
jsr INTA
org p:START ;dÈbut du programme partir de l'adresse $40
move #$0300,sr ;Reset du registre status register (SR)
movep #$000019,x:$FFFF ;dÈfinition des priorites grace au registre IPR
move #$0000,sr ;initialisation du registre SR
move #0,omr ;initialisation du registre OMR en Single Chip Mode (Operating Mode Register)
BOUCLE
jmp BOUCLE ;boucle infinie
INTA move y:$8000,a ;lecture ADC |G=1 et H=0
move a,y:$8000 ;ecriture DAC |G=0 et H=1
rti ;retour d'interruption
;**************************************************
; Programme sous interruption routine lecture-écriture
;**************************************************
;Constantes
START EQU $0040 ;Début du programme
ADCDAC EQU $8000 ;Adresse où se situe les registres des convertisseurs
; Vecteur RESET
ORG P:$0000
JMP START ;Renvoie au début du programme
; Vecteur IRQB
ORG P :$0010 ;Quand une conversion est terminée
JSR LectEcrit ;On a une interruption
; Initialise
ORG P:START ;Début du programme
ORI #$03,MR ;masque l'interruption temporairement
MOVEP #$18,X:IPR ;met la priorité de l'interruption à 2 active en front ;descendant
ANDI #$FC,MR ;Réactive les interruptions
MAIN JMP MAIN ;Boucle dans lattente dinterruption
LectEcrit
MOVE Y :BUFFER,X1 ;Stocke dans X1 ce qui vient de lADC
MOVE X1,Y :BUFFER ;Renvoie vers le DAC ce qui est dans X1
RTI ;Retour
Etude du programme de lecture et écriture du DSP
Etude du traitement du signal d arrêt
Soit VC = A.exp(-t / (R.C)) + B (1) où A et B sont les côtes.
A t = 0 :
VC = A + B or VC = -R1 / (R1+R2).Vsaturation ; à t = 0, la décharge est totale.
A = VC - B
A t -> " :
VC = B = Vsaturation
A t = ", le condensateur est entièrement chargé.
On a donc
A = EMBED Equation.3
A = EMBED Equation.3
A = EMBED Equation.3
A t = T / 2 :
On a choisi t = T / 2 car le condensateur est chargé positivement et par conséquent, la tension qui en résulte doit être positive.
On remplace les données de (1) à laide des résultats trouvés précédemment :
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
On a donc EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
Si on pose R1 = R2 = 1 k©,
il ne reste alors plus qu à ajuster R à l aide d un potentiomètre variable de 10 k©
SHAPE \* MERGEFORMAT
Pour réaliser le montage nous avons distingué plusieurs étapes :
En sortie du montage, nous obtenions un signal créneau variant entre + et 12 V.
Afin daugmenter la puissance, et ce pour que lémetteur dultrasons fonctionne correctement, nous avons rajouté un générateur de puissance. Il en résulte une augmentation de lintensité du montage ; de plus, de ce fait, lamplitude du signal se trouve comprise entre 0 et 5 V.
Alors, au niveau du récepteur dultrasons, on observe un signal sinusoïdal de fréquence 40 kHz dont lamplitude varie en fonction de la distance séparant les deux cellules démission et de réception ; grâce à certains composants (une diode Zener pour le redressement en mono alternance du signal, un condensateur qui se charge sur front montant et se décharge au travers dune résistance pour le lissage du même signal), la tension continue obtenue est exploitable et son amplitude reste fonction de la distance entre les deux capsules démission réception.
3) Activation dun signal durgence
Synoptique général :
Pour utiliser un dispositif à ultrasons, il faut exciter lémetteur précisément à sa fréquence de résonance. Ici, il sagit de générer une fréquence de 40 kHz. Nous utilisons un des quatre amplificateurs opérationnels disponibles dans la puce TL074 en montage astable. Lajustement des résistances et du condensateur permet de régler précisément cette fréquence à 40 kHz en suivant la relation suivante :
T= R*C*2* ln (2+R1/R2)
En prenant R1 = R2 = 1 K( et C =1 nF, il ne reste plus quà ajuster R avec un potentiomètre variable de 10 K(.
Le signal ainsi obtenu en sortie est un créneau qui varie entre + et 12 V. Mais lintensité délivrée par un tel montage est trop faible pour alimenter la capsule émettrice dultrasons. On va donc utiliser un générateur de puissance qui aura un double rôle : fournir la puissance nécessaire ainsi que ramener lamplitude entre 0 et 5 V.
Du coté de la réception, si rien ne vient sinterposer entre les deux capsules qui forment désormais une barrière, on observe un signal sinusoïdal de fréquence 40 kHz dont lamplitude varie en fonction du rapprochement des deux cellules. Pour pouvoir exploiter cette information, on va dans un premier temps amplifier ce signal puis le lisser de manière à avoir une tension continue. Le principe est donc le même que dans une alimentation secteur : on redresse le signal avec une diode (un redressement par mono-alternance suffit) puis on lisse avec un condensateur qui se chargera sur un front montant et se déchargera à travers une résistance montée en parallèle avec le condensateur en attendant le front montant suivant.
Maintenant que nous obtenons une tension continue dont lamplitude est fonction de la distance entre les deux capsules, nous réglons la partie amplification précédente de manière à ce quune fois les deux capsules en face lune de lautre et espacées de 15 centimètres, cette tension maximum soit de 6 V. Il ne reste plus quà utiliser un montage comparateur où la tension aux borne du montage récepteur sera comparée avec une tension de 5V (facile à optenir). Un autre montage de conditionnement des signaux permettra avec un transistor et deux résistances dobtenir une information compatible TTL active à létat bas.
Remarque : Si ce nest pas le cas (active à létat haut), il suffit dutiliser un LS04 (porte inverseuse) ou dinverser les entrées du comparateur.
SHAPE \* MERGEFORMAT
On dispose dune paire émetteur/récepteur à ultrasons. Le signal doscillation fourni à lémetteur sera généré par un Astable à amplificateur opérationnel. Le courant de sortie de celui-ci nétant pas assez puissant, on lamplifiera à laide dun transistor NPN : 2N1711.
Le signal de détection doit être obtenu par comparaison. Il sera ensuite conformé en un signal compatible TTL (0-5V) et devra être actif à létat bas.
But : Détection dun signal reçu sur un capteur à ultrason. Cette détection entraînera lactivation dun processus dalarme et larrêt durgence du moteur.
Schéma de détection :
On dispose dune paire émetteur/récepteur à ultrasons. Le signal doscillation fourni à lémetteur sera généré par un astable à amplificateur opérationnel (cf.. schéma astable). Le courant de sortie de celui-ci nétant assez puissant, on lamplifiera à laide dun transistor NPN 2N1711.
SHAPE \* MERGEFORMAT
Astable à AOP
Il sagit de détecter un signal reçu sur un capteur à ultrasons (quartz résonnant à 40 Khz).
Nous générerons un TTL, cest-à-dire que nous mettrons la sortie du système 5V, si les ultrasons passent, et à 0V sinon.
Dans un premier temps, nous allons étudier un Astable à amplificateur opérationnel qui génère un signal alternatif à 40kHz à envoyer à lentrée (patte B) dun transistor.
Il est important dobtenir la fréquence de la façon la plus précise possible, car les émetteurs et récepteurs à ultrasons sont composés de cristaux de quartz à très étroite bande passante.
Le montage de cet Astable à amplificateur opérationnel est le suivant :
La sortie Vs peut prendre 2 états : Vsat = + 15 V ou -Vsat = -15
V+ = +/- .Vsat.
Si Vs = + Vsat, on a alors :
V+ = .Vsat
Le condensateur va se charger à travers la résistance R.
Quand V- = V+, Vs prend la valeur Vsat et V+ la valeur - Vsat. Le
condensateur se décharge alors à travers la résistance de R.
Puis la sortie bascule lorsque :
V- = - Vsat.
Finalement, le circuit atteint un régime permanent.
Appelons Vc la tension aux bornes de C. Dans la suite, nous supposerons Vs = +Vsat et nous définirons comme condition initiale :
Vc(t=0)= -
La variation de Vc avec t est de la forme :
Vc = A exp(-t/RC) + B
A t = 0 :
Vc = A + B = - *Vsat
Quand t tend vers linfini :
Vc = B = Vsat
Doù :
A = - *Vsat
Donc Vc = Vsat (2R1+R2)Vsat* exp(-t/RC)
Quand Vc = Vsat, t = T/2 :
= 1 - exp(-T/2RC)
Doù :
T = 2 RC ln ((2R1+R2)/R2)
Pour simplifier les calculs, on a pris R1 = R2 et on obtient : T = 2RC ln3.
Comme f = 40 kHz, on trouve T =25.10-6s. Nous pouvons alors trouver R en fixant C.
Astable à amplificateur opérationnel
Il nous permet de créer un signal sinusoïdal de période (.
Détermination des valeurs des composants
Afin dobtenir un temps de réponse correspondant à la fréquence de résonance du quartz (40Khertz), nous avons fixé les valeurs des résistances et nous avons pu déterminer ainsi la capacité C du condensateur.
On sait que :
( = RC.ln ( 1+ 2.R1/R2 )
En posant :
R1 = 5 K(
R2 = 10 K(
R = 36 K( on trouve C = 0.7 nF
et
( = 1/40000 s
Nous choisirons donc un condensateur de capacité 1 nF.
Partie « émetteur » :
Circuit-émission
La patte C, collecteur, du transistor étant reliée à la borne +VCC, et la patte E, émetteur, à la masse, en branchant un émetteur à ultrasons entre la masse et la patte C du transistor, nous émettons un signal carré à 40Khz.
SHAPE \* MERGEFORMAT
Formule de lAstable
T = R * C * 2 * ln (2+ EMBED Equation.3 )
En pratique :
R = 11,3 K &! est une résistance variable.
R1 = R2 = 1 K &!
C = 1 nF
T = R * C * 2 * ln (2+ EMBED Equation.3 )
EMBED Equation.DSMT4
EMBED Equation.DSMT4
Il nous faut 40 KHz, or f=1/T
Donc T=1/f=1/40000
Donc 2,5.10^-5
Transistor 2N1711
Le signal sinusoïdal établi, il est amplifié à laide du transistor 2N1711 afin que lémission de celui-ci par lémetteur soit suffisamment importante pour être perçue par le récepteur.
Le signal amplifié est transformé en onde sonore sphérique progressive grâce à lémetteur. A présent, celle-ci est acquise par le récepteur.
Partie « récepteur » :
Circuit-réception
Ensuite, le récepteur US génère un signal sinusoïdal à 40kHz, puisquil ne « récupère » que la première fondamentale du signal.
Le montage diode condensateur résistance permet tout dabord de ne conserver que la partie positive du signal puis de le lisser grâce à la charge du condensateur : le signal est maintenu à son amplitude maximale le maximum de temps possible.
En choisissant bien le condensateur, (forte capacité), on obtient un signal continu.
Enfin le deuxième transistor permet donc dobtenir sur la patte E un signal à 5V si le récepteur à ultra-sons reçoit un signal, ou un signal à 0V sinon.
Ainsi nous générons un TTL, que nous pouvons envoyer à l IRQ du DSP.
Le but du montage qui suit le récepteur d ultrasons est d amplifier le signal reçu (H"100 à 200 mV), de supprimer les valeurs négatives, et de numériser le signal.
Pour cette dernière étape, le signal est converti en front d ondes de +5 V ou 0 V. Cette étape, convertissant l analogique au numérique, permet la liaison avec le DSP56002.
RC>> T/2 = 12,5 µs
Z=RC=125*100
=1250
Amplification :
EMBED Equation.DSMT4 avec R1= 1 K&! et R2= 50 K&!
donc une amplification de 51.
Notre montage envoie un 0 lorsque quil détecte un obstacle.
Nous avons relié la sortie de ce système à lIRQ B et chargé le programme suivant dans le DSP pour gérer les priorités du signal durgence. Pour cela nous avons créer une tâche prioritaire (INT B) qui sexécute lorsque lIRQ B reçoit un 0 (sortie du système durgence).
Circuit de détection
Le filtrage de londe sonore seffectue donc grâce à un filtre passe-haut qui permet lélimination des bruits de basse fréquence. Il permet également lamplification du signal reçu grâce aux réglages du condensateur et de la résistance.
Cependant, lamplification du signal nétant pas assez importante, nous avons ajouté un amplificateur opérationnel non inverseur, ce qui règlera ce problème damplification.
Après avoir effectué ces deux étapes, on désire avoir une tension continue ayant pour valeur la tension de crête du signal. Pour cela, il faut réaliser un dispositif qui permette de passer dun signal sinusoïdal à un signal continu . On utilisera donc un système de type hacheur.
Ce système consiste à charger un condensateur puis à le décharger à laide dune résistance placée en parallèle. Une diode placée en entrée du système permet de charger le condensateur dans un premier temps, puis lorsquil est totalement chargé de créer un circuit fermé permettant sa décharge.
Selon les caractéristiques, de la résistance et du condensateur la décharge se fera plus ou moins rapidement. Afin, davoir un signal continu, on cherchera à décharger le condensateur le plus lentement possible.
Un premier programme de gestion des interruptions :
Cette étape est une première prise en main dun programme de gestion des interruptions. Le résultat de son exécution lorsquil y a interruption au niveau de la barrière à ultra-son est lactivation dune LED.
;****************************************************
; Gestion des interruptions par le détecteur à US
;****************************************************
; Constantes
START equ $0040 ;Début du programme
PCC equ $FFE1 ;Registre de controle du port C
BCR equ $FFFE ;Registre de controle de bus
IPR equ $FFFF ;Registre des priorités d'interruption
PBDDR equ $FFE2 ;Registre de direction de port B
PBD equ $FFE4 ;Registre de donnée du port B
PBC equ $FFE0 ;Registre de contrôle
; Vecteur Reset
ORG P:$0000
JMP START
; Vecteur d'interruption IRQA
ORG P:$0008
jmp Led
; Initialize
ORG P:START ;Début du programme
ORI #$03,MR ;masque l'interruption temporairement
MOVEP #$03,X:IPR ;met la priorité de l'interruption à 2
MOVEP #$0,X:PBC ;Selectionne le portB en port de sortie I/O
MOVEP #$7FFF,X:PBDDR ;Selectionne le port B en sortie
ANDI #$FC,MR ;Réautorise les interruptions
Start MOVEP #$00,X:PBD ;Mise de H0 à 0
jmp Start
; Led On
Led MOVEP #$01,X:PBD ;Mise de H0 à 1
jmp Led
END
;AVEC INTERRUPTIONS
START EQU $40 ;déclaration de la variable start
org p:$0 ;vecteur reset
jmp START ;saut l'adresse $40 contenue dans start
org p:$0A ;vecteur d'interruption IRQB
jsr INTB
org p:$08 ;vecteur d'interruption IRQA
jsr INTA
org p:START ;début du programme partir de l'adresse $40
move #$0300,sr ;Reset du registre status register (SR)
movep #$000019,x:$FFFF ;dÈfinition des priorites grace au registre IPR
move #$0000,sr ;initialisation du registre SR
move #0,omr ;initialisation du registre OMR en Single Chip Mode (Operating Mode Register)
BOUCLE
jmp BOUCLE ;boucle infinie
INTA move y:$8000,a ;lecture ADC |G=1 et H=0
move a,y:$8000 ;ecriture DAC |G=0 et H=1
rti ;retour d'interruption
INTB
move #0,x0
move x0,y:$8000 ;envoi de 0 au DAC |G=0 et H=1
rti ;retour d'interruption
La tâche correspondante au signal durgence coupe le signal pour le moteur (envoi dun 0 par le DSP).
Programme suiveur sans interruptions.
START EQU $40 ;déclaration de la variable start
org p:$0 ;vecteur reset
jmp START ;saut à l'adresse $40 contenue dans start
org p:START ;début du programme partir de l'adresse $40
move #$0300,sr ;initialisation du registre status register (SR)
move #$0000,sr ;initialisation du registre SR
move #0,omr ;initialisation du registre OMR (Operating Mode Register)
INTA move y:$8000,a ;lecture ADC |G=1 et H=0
move a,y:$8000 ;écriture DAC |G=0 et H=1
jmp INTA ;boucle infinie
Programme suiveur avec interruptions.
;AVEC INTERRUPTION
START EQU $40 ;dÈclaration de la variable start
org p:$0 ;vecteur reset
jmp START ;saut l'adresse $40 contenue dans start
org p:$08
jsr INTA
org p:START ;dÈbut du programme partir de l'adresse $40
move #$0300,sr ;initialisation du registre status register (SR)
movep #$000006,x:$FFFF ;dÈfinition des priorites grace au registre IPR
move #$0000,sr ;initialisation du registre SR
move #0,omr ;initialisation du registre OMR (Operating Mode Register)
BOUCLE
jmp BOUCLE ;boucle infinie
INTA move y:$8000,a ;lecture ADC |G=1 et H=0
move a,y:$8000 ;ecriture DAC |G=0 et H=1
rti ;retour d'interruption
;AVEC INTERRUPTIONS
START EQU $40 ;déclaration de la variable start
org p:$0 ;vecteur reset
jmp START ;saut l'adresse $40 contenue dans start
org p:$0A ;vecteur d'interruption IRQB
jsr INTB
org p:$08 ;vecteur d'interruption IRQA
jsr INTA
org p:START ;début du programme partir de l'adresse $40
move #$0300,sr ;Reset du registre status register (SR)
movep #$000019,x:$FFFF ;dÈfinition des priorites grace au registre IPR
move #$0000,sr ;initialisation du registre SR
move #0,omr ;initialisation du registre OMR en Single Chip Mode (Operating Mode Register)
BOUCLE
jmp BOUCLE ;boucle infinie
INTA move y:$8000,a ;lecture ADC |G=1 et H=0
move a,y:$8000 ;ecriture DAC |G=0 et H=1
rti ;retour d'interruption
INTB
move #0,x0
move x0,y:$8000 ;envoi de 0 au DAC |G=0 et H=1
rti ;retour d'interruption
CONCLUSION
Il nous paraît important ici de signaler que malgré notre implication et notre intérêt, nous navons pas eu assez de temps durant le TP pour aborder sereinement le codage de la carte DSP.
Cependant, nous retenons déjà beaucoup grâce au TP dans des notions fondamentales de lélectronique : recherche et câblage des résistances dans un bon rapport, fonctionnement dun transistor en signal analogique, filtrage du signal, utilisation dAOP dans des montages dastable, de suiveur, damplificateur inverseur
Nous sommes simplement malheureux de navoir pas pu donner suite, lors du TP, à notre travail de câblage et dassimilations de notions en électronique et en temps réel par une programmation en assembleur de la commande du moteur en fonctionnement avec interruptions.
Cependant ce fut loccasion de travailler sur un projet global regroupant des domaines divers et variés.
Ce TP délectronique nous a permis de mieux appréhender lutilisation des interruptions, de buffers et de convertisseurs ainsi que la programmation dinterface série. De plus, nous connaissons mieux aujourdhui lutilisation dun microprocesseur tel que le DSP56002. Nous navons malheureusement pas totalement terminé ce TP, mais nous avons réussi à lamener proche de son terme. En effet, il ne nous reste plus pour lachever, que de relier les trois parties que nous avons étudiées, et de les faire fonctionner ensemble, à laide dun programme en assembleur. Les raisons de ces retard sont souvent liées à des mauvais contacts sur les plaques dessais. Pour un TP aussi intéressant, le labo pourrait graver une demie douzaine de plaques avec des supports de puces que lon utiliserait après validation des circuits.
En plus dun apprentissage technique, ce TP nous a donné une bonne expérience dun travail collectif autour dune équipe solidaire et motivée.
Lors de ce TP létude a permis de comprendre deux notions de lélectronique au sein dune boucle asservis : la notion de conversion dun signal analogique en numérique et vice versa, différentes fonctionnalités dans un composant DSP. En effet la première partie du TP a consisté dans la transformation dun signal analogique en numérique et de faire la réciproque. Ensuite on a pu étudier différentes fonctionnalités du DSP : écriture et lecture dinformations, la gestion du bus de données où lensemble des informations passe aussi bien en entrée quen sortie du traitement des données, la notion de priorité des différentes tâches à laide de lIRQ montrant une notion plus ou moins importante de linformation à traiter.
Par ailleurs on a pu également la notion d émission et de réception d ultrasons afin d intégrer un signal d arrêt gérer par le DSP.
TP2 : Gestion de processus sous interruptions
PAGE 44 - NUMPAGES 44
Astable à
Ampli OP
+
-
C
11,3 K &!
1 K &!
Astable
Signalisation d urgence et arrêt moteur.
Obstacle
/IRQ
Transistor
Récept.
Emett.
Circuit de détection
1 K &!
Emetteur
Ultrasons
DSP 56002
EVM
Masse
1 K &!
22 K &!
2N1711
AOP
DIR
EOC
Légende
: Partie basse du bus de donnée, D0-D7
: Signaux de contrôle
: Signal analogique
/IRQA
J17 (patte 3)
X
/IORQ
H
/G
E
S
Soustracteur
Numérique
Analogique
DAC
08CN
Analogique
Numérique
ADC
808
Consigne
Registre
74HC574
DSP56002
MOTEUR
Aop
TL074
Buffer
74hc245
Obstacle
+15 V
R2=50 K &!
Récepteur
Ultrasons
Diode
5 V
+
-
10 K &!
+
-
R1=1K&!
10 K &!
100 nF
125 K &!
Masse
Obstacle
5 V
5 V
Amplification
C
R
Masse
R2=50 K &!
R1=1 K &!
+
-
R1
R2
R
1
COURANT
EN ATTENTE
PRÊT
Blocage,interruption
Réveil
Alloocation
Préemption
R
R1
R2
Vs
R1
R1 + R2
R1
R1 + R2
R1
R1 + R2
R1
R1 + R2
R1
R1 + R2
R1
R1 + R2
2R1+R2
R1 + R2
R1
R1 + R2
2R1+R2
R1 + R2
R1
R1 + R2
Astable à ampli OP
Transistor
E
B
C
r
Emetteur à ultra-sons
+VCC
r
Récepteur à ultra-sons
AO
inverseur
Transistor
+5V
C
B
E
100nF
3k
H
S
Registre
74hc574
DAC
08CN
AOP
TL074
MOTEUR
/IORQ
DSP56002
/G
(
ADC
808
Buffer
74hc245
Consigne
(0-5V)
S
Registre
74hc574
DAC
08CN
AOP
TL074
/G
(
ADC
808
Buffer
74hc245
Consigne
(0-5V)
H
/IRQ
/G
(0-5V)
E
S
(
Consigne
ADC 808
Buffer 74hc245
DSP56002
Registre 74HC574
DAC
Aop TL074
Moteur
Obstacle
Signalisation durgence et arrêt du moteur
Astable à Ampli OP
Transistor : 2N1711
Circuit de Détection
DSP56002
EVM
Emetteur
Récepteur
R
- (
+
C
R2
Vs
R1
Vc
Signal sinusoïdal
Onde sonore
Emetteur
Signal amplifié
Vs
Vs
amplifiée
Vs
R2
R1
- (
+
Vsa = (1+R2/R1)
Vs
Avec
R1 = 1 K(
R2 = 330 K(
Nous avons choisi :
C = 1µF
Et
R = 100 K(
R
C
Ve
Vs
&
/RD
WR
1
1
DAB15
&
/G
DAB15
H
Signal analogique
Signaux de contrôle
Partie basse du bus de donnée, D0-D7
H
EMBED Equation.3 IORQ
EMBED Equation.3
S
E
Moteur
Aop TL074
DAC 08CN
Registre
74hc574
DSP 56002
Buffer
74hc245
ADC 808
µ
Consigne
EMBED Equation.3
EMBED Equation.3
DAB15
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
H
R1
R2
R3
R4
+
-
VS
V2
V1
On a pris R1 = R2 = R3 = R4 = 4,7 ohm
R1
R3
R2
Ve
VS
;*************************************
;*** Routine de lecture-ecriture ***
;*************************************
;Initialisation des constantes
debut EQU $0040 ;Adresse de debut du programme
BUFFER EQU $8000 ;Adresse où l'on va stocker les données transmises
IPR EQU $FFFF ;adresse des priorités pour les interruptions
;interrruption suite à l'activation du bouton reset
ORG P:$0000 ;adresse de l'interruption correspondant au Reset
JMP debut ;retour au programme principal
;interrruption suite à la fin de conversion par l'adc
ORG P:$0008 ;adresse de l'interruption correspondant a IRQA
JSR ReadWrite ;branchement sur le sous programme ReadWrite
;phase d'initialisation
ORG P:debut ;lancement du programme principal
ORI #$3,MR ;masque les interruptions dans le status register
MOVEP #$3,X:IPR ;active les interruptions irqa et irqb en mode 2
MOVE #0,OMR ;reset l'operating mode register
ANDI #$FC,MR ;enleve les masquages d'interuption dans le statut du registre
;programme principal permettant d'attendre une interruption
boucle JMP boucle
;programme permettant de transferer les donées de l'adc au dac puis de revenir au programme boucle
ReadWrite
MOVE Y:BUFFER,X1 ;stocke dans X1 les données en provenance de l'adc
MOVE X1,Y:BUFFER ;envoie les données stockées dans X1 vers le dac
RTI ;retour au programme boucle
1 k©
1 k©
1 k©
+
-
1 k©
+15 V
Base
Collecteur
Emetteur
E
Emetteur d ultrasons