Td corrigé SOMMAIRE - Free.fr pdf

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 d’un 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 s’agit 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, l’Assembleur…), 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 d’un système et du système lui même, les interruptions sont indispensables pour rendre compte de l’environnement 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 l’information entouré d’une multitude de sous-systèmes qui apportent les informations. Elles peuvent venir de l’extérieur si on désire le faire interagir avec un environnement humain (console de pilotage), industriel (chaîne de fabrication), ou de l’intérieur (résultat d’un calcul, d’une procédure). Dès la prise de connaissance d’une interruption, le centre de traitement va exécuter une procédure de traitement associée à l’interruption générée. Le résultat de cette exécution va déterminer l’ordre d’exécution des processus restants.

Dans notre TP, pour rendre le contexte plus intéressant et proche d’un cas industriel, c’est un dispositif de barrière à ultra-son qui génèrera l’interruption. 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 d’un moteur. Ce cas pourra être rencontré dans une usine de production où les produits défilent sur un tapis roulant qui s’arrête dès que l’un d’eux 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



L’objectif du Tp est de pouvoir organiser la gestion de processus sous interruptions au niveau d’un 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, l’utilisation d’une interface série SCI (TxD,RxD), et l’activation d’un signal d’arrêt d’urgence. Pour cela nous allons étudier le comportement d’un moteur à courant continu au sein d’une boucle d’asservissement. 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 d’explorer et d’exploiter 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 d’aborder des notions importantes dans la gestion des processus. Parmi celles-ci, nous en relevons deux qui nous semblent primordiales : l’ordonnancement et les interruptions.

Nous avons eu l’occasion au cours de ce TP d’appliquer ces concepts sur un cas concret de contrôle d’un 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 d’interruption. Puis, nous avons intégré le DSP et ses organes d’utilisation ( 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, c’est-à-dire, lorsqu’une interruption survient : commander l’arrêt du moteur.

Définition de l’ordonnancement


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 d’allouer le processeur à diverses tâches. A titre d’indication, nous avons vu les fonctionnalités de l’Ordonnanceur par tourniquet, par priorité, et mixte.



Quel que soit l’Ordonnanceur, 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 l’Ordonnanceur a principalement à gérer les interruptions.

Gestion des interruptions

Nous avons vu précédemment que cette fonctionnalité est assurée par l’Ordonnanceur, nous allons maintenant définir plus particulièrement les interruptions.

Dans un système multi-tâches, les interruptions surviennent lorsqu’un programme de forte priorité réclame le processeur, alors la tâche en cours s’interrompt pour lui laisser sa place. Dans ce cas, on peut dire que le système est préemptif.

Exemple de nature d’interruptions :

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 d’abord de faire exécuter trois taches séparées au processeur.

Contrôle d’un moteur à courant continu


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.

Pour réaliser le circuit de la boucle d’asservissement nous avons respecté différentes contraintes :

La carte DSP56002EVM dispose d’un espace adressable libre à partir de l’adresse $8000. On utilisera cette plage pour définir les deux adresses de l’ADC808 et du DAC08CN aux conditions suivantes :
 EMBED Equation.DSMT4  : l’information reçue de l’ADC 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 : l’espace entre $8000 et $FFFF sera sélectionné pour une valeur que prendra une ligne particulière du bus d’adresse


Dans un premier temps, pour réaliser cette partie du travail, nous avons câblé les éléments qui permettent d’utiliser 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 l’information avant l’entrée dans le DSP et le registre met en forme le signal pour le DAC pendant que le DSP s’occupe 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 l’ADC au registre, car il fallait d’abord tester toute la boucle avant de brancher le circuit au DSP.
Registre l’alimenter
DAC l’alimenter en +15/-15 et 0/5V
Le montage du soustracteur


1- Composants du montage :
ADC 808

L’ADC 808 est un convertisseur à pesées successives qui délivre un signal de fin de conversion(pour chaque échantillon traité). Il indique également qu’une données est disponible dans son registre de sortie.
Nous allons relier le signal de fin de conversion EOC à l’entrée d’interruption /IRQA(ou /IRQB) pour que le DSP puisse lire une donnée disponible à l’adresse du convertisseur.

Remarque : pour éviter les temps morts on relie START,ALE et EOC entre eux. Cela permet d’enchaî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 l’ADC 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 d’abord on relie le bus de donnée de la carte avec notre bus de donnée
Puis on réalise les équations booléen à l’aide de porte 74HC00 et 74HC04
On utilise un 74HC04 car il n’y 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 l’ADC lorsque le DSP essaye de lire une conversion.
Cela permet à l’ADC d’effectuer une autre conversion pendant que le DSP lit la première. Il permet également de pouvoir relier l’ADC 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 l’on branchait directement le DSP à l’ADC808 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 d’un 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 d’entré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 à l’aide du schéma suivant :



Schéma :




Convertisseur Analogique/Numérique :

On choisit l’entré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. D’autre 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 d’entré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 l’information. Le signal  EMBED Equation.3  est contrôlé par le DSP afin que le buffer laisse passer l’information ou la bloque lorsque le DSP et le bus associé sont en cours d’utilisation. 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 l’envoi des signaux  EMBED Equation.3  et H à partir des informations récupérées sur le DSP.

 EMBED Equation.3  correspond à l’état d’activité 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 l’utilise afin de faire une vérification sur l’espace du bus de données. En effet ce dernier ne change pas de valeur dans l’espace alloué de $8000 à $FFFF. Il est toujours à 1.
D’où on obtient les schémas suivants :
 SHAPE \* MERGEFORMAT 
 EMBED Equation.3 
Etude du montage soustracteur à l’aide d’un amplificateur opérationnel
 SHAPE \* MERGEFORMAT 


On a e+ = e- (1), d’après le théorème de tension.
or e- = (R4/( R4 +R3)).V2
et e+ = ((V2 /R1) + (Vs /R2)) / ((1/R1) + (1/R2))


D’où, d’aprè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
D’où VS = V2 – V1
 SHAPE \* MERGEFORMAT 
D’aprè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 d’un 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 d’asservissement





































 : 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 l’ADC et H (horloge du registre 74HC574) pour le DAC :

Pour obtenir  EMBED Equation.DSMT4  et H, nous réalisons ces montages à l’aide 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é l’EOC de l’ADC à l’IRQ 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 l’ADC on a relié START, ALE et EOC entre eux.

Nous avons fixé la direction des données à l’aide de l’entrée DIR du 74HC245.

Nous avons organisé les bits sur le bus de données du DSP de DB0 (LSB) ( DB7 en faisant attention à l’ordre des bits sur le buffer et le registre.

Nous avons réalisé le montage soustracteur à l’aide d’un 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 l’horloge de l’ADC .

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 d’interruptions.

Finalement, en se servant de l’interruption IRQ A relié à l’EOC de l’ADC, nous avons réécrit notre programme assembleur afin de tenir compte de celle-ci. On constate que lorsque l’IRQ est débranché, nous n’avons 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 l’attente d’interruption

LectEcrit
MOVE Y :BUFFER,X1 ;Stocke dans X1 ce qui vient de l’ADC
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) à l’aide 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 d’augmenter la puissance, et ce pour que l’émetteur d’ultrasons fonctionne correctement, nous avons rajouté un générateur de puissance. Il en résulte une augmentation de l’intensité du montage ; de plus, de ce fait, l’amplitude du signal se trouve comprise entre 0 et 5 V.
Alors, au niveau du récepteur d’ultrasons, on observe un signal sinusoïdal de fréquence 40 kHz dont l’amplitude 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 d’une 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 d’un signal d’urgence




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 s’agit 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. L’ajustement 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 l’intensité délivrée par un tel montage est trop faible pour alimenter la capsule émettrice d’ultrasons. On va donc utiliser un générateur de puissance qui aura un double rôle : fournir la puissance nécessaire ainsi que ramener l’amplitude entre 0 et 5 V.

Du coté de la réception, si rien ne vient s’interposer entre les deux capsules qui forment désormais une barrière, on observe un signal sinusoïdal de fréquence 40 kHz dont l’amplitude 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 l’amplitude est fonction de la distance entre les deux capsules, nous réglons la partie amplification précédente de manière à ce qu’une fois les deux capsules en face l’une de l’autre 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 d’obtenir une information compatible TTL active à l’état bas.

Remarque : Si ce n’est pas le cas (active à l’état haut), il suffit d’utiliser un LS04 (porte inverseuse) ou d’inverser les entrées du comparateur.




 SHAPE \* MERGEFORMAT 

On dispose d’une paire émetteur/récepteur à ultrasons. Le signal d’oscillation 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 l’amplifiera à l’aide d’un 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 d’un signal reçu sur un capteur à ultrason. Cette détection entraînera l’activation d’un processus d’alarme et l’arrêt d’urgence du moteur.

Schéma de détection :
On dispose d’une paire émetteur/récepteur à ultrasons. Le signal d’oscillation 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 l’amplifiera à l’aide d’un transistor NPN 2N1711.























 SHAPE \* MERGEFORMAT 








Astable à AOP


Il s’agit de détecter un signal reçu sur un capteur à ultrasons (quartz résonnant à 40 Khz).

Nous générerons un TTL, c’est-à-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 à l’entrée (patte B) d’un transistor.

Il est important d’obtenir 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 l’infini :

Vc = B = Vsat

D’où :

A = - *Vsat



Donc Vc = Vsat – (2R1+R2)Vsat* exp(-t/RC)


Quand Vc = Vsat, t = T/2 :




= 1 - exp(-T/2RC)



D’où :

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 d’obtenir 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 l’Astable
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é à l’aide 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, puisqu’il ne « récupère » que la première fondamentale du signal.















Le montage diode condensateur résistance permet tout d’abord 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 d’obtenir 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 qu’il détecte un obstacle.
Nous avons relié la sortie de ce système à l’IRQ B et chargé le programme suivant dans le DSP pour gérer les priorités du signal d’urgence. Pour cela nous avons créer une tâche prioritaire (INT B) qui s’exécute lorsque l’IRQ B reçoit un 0 (sortie du système d’urgence).

Circuit de détection












Le filtrage de l’onde sonore s’effectue donc grâce à un filtre passe-haut qui permet l’élimination des bruits de basse fréquence. Il permet également l’amplification du signal reçu grâce aux réglages du condensateur et de la résistance.
Cependant, l’amplification du signal n’étant pas assez importante, nous avons ajouté un amplificateur opérationnel non inverseur, ce qui règlera ce problème d’amplification.



















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 d’un 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 à l’aide d’une 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 lorsqu’il 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, d’avoir 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 d’un programme de gestion des interruptions. Le résultat de son exécution lorsqu’il y a interruption au niveau de la barrière à ultra-son est l’activation d’une 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 d’urgence coupe le signal pour le moteur (envoi d’un 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 n’avons 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 d’un transistor en signal analogique, filtrage du signal, utilisation d’AOP dans des montages d’astable, de suiveur, d’amplificateur inverseur…


Nous sommes simplement malheureux de n’avoir pas pu donner suite, lors du TP, à notre travail de câblage et d’assimilations 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 l’occasion de travailler sur un projet global regroupant des domaines divers et variés.


Ce TP d’électronique nous a permis de mieux appréhender l’utilisation des interruptions, de buffers et de convertisseurs ainsi que la programmation d’interface série. De plus, nous connaissons mieux aujourd’hui l’utilisation d’un microprocesseur tel que le DSP56002. Nous n’avons malheureusement pas totalement terminé ce TP, mais nous avons réussi à l’amener proche de son terme. En effet, il ne nous reste plus pour l’achever, que de relier les trois parties que nous avons étudiées, et de les faire fonctionner ensemble, à l’aide d’un programme en assembleur. Les raisons de ces retard sont souvent liées à des mauvais contacts sur les plaques d’essais. Pour un TP aussi intéressant, le labo pourrait graver une demie douzaine de plaques avec des supports de puces que l’on utiliserait après validation des circuits.
En plus d’un apprentissage technique, ce TP nous a donné une bonne expérience d’un travail collectif autour d’une équipe solidaire et motivée.

Lors de ce TP l’étude a permis de comprendre deux notions de l’électronique au sein d’une boucle asservis : la notion de conversion d’un 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 d’un 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 d’informations, la gestion du bus de données où l’ensemble des informations passe aussi bien en entrée qu’en sortie du traitement des données, la notion de priorité des différentes tâches à l’aide de l’IRQ montrant une notion plus ou moins importante de l’information à 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 d’urgence 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