|
|
les solutions des exercices de language C:
#include
#include
#include
#define PI 3.14159
double surface (double longueur, double largeur, char nature); /*prototype*/
int main(void)
{
double lo, /*longueur*/
la, /*largueur*/
sr, /*surface rectangle*/
sl, /*surface losange*/
se; /*surface ellipse*/
printf("BRICOLO GEOMETRIQUE\n");
printf("Soit un rectangle R.\nEntrez sa longueur (en m): ");
scanf("%lf", &lo);
printf("Entrez sa largeur (en m): ");
scanf("%lf", &la);
sr = surface (lo,la,'R'); /* appel à la fonction surface()*/
sl = surface (lo,la,'L'); /* appel à la fonction surface()*/
se = surface (lo,la,'E'); /* appel à la fonction surface()*/
printf("\n\nLa surface du rectangle R est: %lf\n", sr);
printf("La surface du losange dans R est: %lf\n", sl);
printf("La surface de l'ellipse dans R est: %lf\n", se);
system ("pause");
return 0;
}
double surface (double longueur, double largeur, char nature) /*en tête*/
{
double temp;
switch(nature)
{
case'R': temp = longueur*largeur;
break;
case'L': temp = longueur*largeur*.5;
break;
case'E': temp = longueur*largeur*PI*.25;
}
return (temp);
}
/*
Name: tp6 - ex1b
Copyright: b1-1
Author: ARCHAMBEAU
Date: 13/09/06 14:07
Description: calcul géométrique (surface rectangle ; surface losange : surface ellipse)
deuxième méthode
*/
#include
#include
#include
#define PI 3.14159
double surface (double longueur, double largeur, char nature); /*prototype*/
int main(void)
{
double lo, /*longueur*/
la, /*largueur*/
sr, /*surface rectangle*/
sl, /*surface losange*/
se; /*surface ellipse*/
printf("BRICOLO GEOMETRIQUE\n");
printf("Soit un rectangle R.\nEntrez sa longueur (en m): ");
scanf("%lf", &lo);
printf("Entrez sa largeur (en m): ");
scanf("%lf", &la);
sr = surface (lo,la,'R'); /* appel à la fonction surface()*/
sl = surface (lo,la,'L'); /* appel à la fonction surface()*/
se = surface (lo,la,'E'); /* appel à la fonction surface()*/
printf("\n\nLa surface du rectangle R est: %lf\n", sr);
printf("La surface du losange dans R est: %lf\n", sl);
printf("La surface de l'ellipse dans R est: %lf\n", se);
system ("pause");
return 0;
}
double surface (double longueur, double largeur, char nature) /*en tête*/
{
double temp;
switch(nature)
{
case'R': temp = longueur*largeur;
break;
case'L': temp = longueur*largeur*.5;
break;
case'E': temp = longueur*largeur*PI*.25;
}
return (temp);
}
les structures structurées:
#include
#include
main()
{
float max,som=0;
struct etudiant
{
int cne,age;
float moy;
char nom[100];
};
struct etudiant T[100];
int n,i;
printf("--------------------------------------------------------\n");
printf("--------------------------ENNAIR EL_GHAZI---------------\n");
printf("--------------------------------------------------------\n");
printf("donnez le nbre des elements");
scanf("%d",&n);
for (i=0;i {
printf("T[%d].cne=",i);
scanf("%d",&T[i].cne);
printf("T[%d].nom=",i);
scanf("%s",&T[i].nom);
printf("T[%d].age=",i);
scanf("%d",&T[i].age);
printf("T[%d].moy=",i);
scanf("%f",&T[i].moy);
}
for (i=0;i som+=T[i].moy;
printf("la moyenne de la classe = %f\n",som/n);
max=T[0].moy;
for(i=1;i if(T[i].moy>max)
max=T[i].moy;
printf ("les majorants sont\n");
for(i=0;i if(T[i].moy==max)
printf("nom est %s,il a la moyenne %f\n",T[i].nom,T[i].moy);
getch();
}
#include
#include
void reel ();
void MIN_MAX ();
int main ()
{
reel ();
MIN_MAX ();
getch ();
return 0;
}
void reel ()
{
float x,y;
printf ("Donner le premier nombre = ");
scanf ("%f",&x);
printf ("\n\nDonner le deuxieme nombre = ");
scanf ("%f",&y);
}
void MIN_MAX ()
{
float x,y,MIN,MAX;
if (x>y)
{
MAX=x;
MIN=y;
printf ("\n\nLe MIN est %.2f ",MIN);
printf ("\n\nLe MAX est %.2f ",MAX);
}
else
{
MAX=y;
MIN=x;
printf ("\n\nLe MIN est %.2f ",MIN);
printf ("\n\nLe MAX est %.2f ",MAX);
}
}
#include
#include
main()
{
struct etudiant;
{
int cne,age,;
float moy,som;
char nom[100];
}
struct etudiant T[100];
int n,i;
printf("donnez le nbre des elements");
scanf("%d",&n);
for (i=0;i {
printf("T[%d].cne=",i);
scanf("%d",&T[i].cne);
printf("T[%d].nom=",i);
scanf("%s",&T[i].nom);
printf("T[%d].age=",i);
scanf("%d",&T[i].age);
printf("T[%d].moy=",i);
scanf("%f",&T[i].moy);
}
for (i=0;i som+=t[i].moy;
printf("la moyenne de la classe = %f",som/n);
max=t[o].moy;
for(i=1;i if(t[i].moy>max)
max=t[i].moy;
printf ("les majorants sont\n");
for(i=0;i if(t[i].moy==max)
printf("nom est %s,moyenne est %f",T[i].nom,T[i].moy);
getch();
}
programme des billets necessaire:
/*
Name:
rendu monnaie
Author:
ENNAIR EL GHAZI
Date: 10/03/09 10:02
Description:
Donne les nombres et types de billets pour une somme d'argent
*/
#include
#include
#include
int main(void)
{
int nb500,nb200,nb100,nb50,nb20,nb10,nb5,np2,np1,argent;
printf("----------ENNAIR EL GHAZI--------------\n ");
printf("---------------------------------------\n ");
printf("Veuillez entrer la somme d'argent\n");
scanf("%d", &argent);
nb500 = argent/500;
argent = argent%500;
nb200 = argent/200;
argent = argent%200;
nb100 = argent/100;
argent = argent%100;
nb50 = argent/50;
argent = argent%50;
nb20 = argent/20;
argent = argent%20;
nb10 = argent/10;
argent = argent%10;
nb5 = argent/5;
argent = argent%5;
np2 = argent/2;
argent = argent%2;
np1 = argent;
if(nb500>1)
printf("Il faut %d billets de 500 EUR\n", nb500);
if(nb500==1)
printf("Il faut %d billet de 500 EUR\n", nb500);
if(nb200>1)
printf("Il faut %d billets de 200 EUR\n", nb200);
if(nb200==1)
printf("Il faut %d billet de 200 EUR\n", nb200);
if(nb100>1)
printf("Il faut %d billets de 100 EUR\n", nb100);
if(nb100==1)
printf("Il faut %d billet de 100 EUR\n", nb100);
if(nb50>1)
printf("Il faut %d billets de 50 EUR\n", nb50);
if(nb50==1)
printf("Il faut %d billet de 50 EUR\n", nb50);
if(nb20>1)
printf("Il faut %d billets de 20 EUR\n", nb20);
if(nb20==1)
printf("Il faut %d billet de 20 EUR\n", nb20);
if(nb10>1)
printf("Il faut %d billets de 10 EUR\n", nb10);
if(nb10==1)
printf("Il faut %d billet de 10 EUR\n", nb10);
if(nb5>1)
printf("Il faut %d billets de 5 EUR\n", nb5);
if(nb5==1)
printf("Il faut %d billet de 5 EUR\n", nb5);
if(np2>1)
printf("Il faut %d pieces de 2 EUR\n", np2);
if(np2==1)
printf("Il faut %d piece de 2 EUR\n", np2);
if(np1>1)
printf("Il faut %d pieces de 1 EUR\n", np1);
if(np1==1)
printf("Il faut %d piece de 1 EUR\n", np1);
system ("pause");
return 0;
}
#include
#include
#include
void fusion(int *t1, int taille1, int *t2, int taille2, int *tab);
void aff_tab(int *t01, int *t02, int *tf00, int nb01, int nb02, int nbff);
int main(void)
{
int t1[5] = {1, 5, 11, 20, 100},
t2[7] = {2, 7, 8, 20, 70, 150, 200},
n1 = 5,
n2 = 7,
t[12],
nf;
nf = (n1 + n2);
printf(" FUSION DE 2 TABLEAUX\n\n\n");
fusion(t1, n1, t2, n2, t);
aff_tab(t1, t2, t, n1, n2, nf);
printf("\nFIN!\n");
system ("pause");
return 0;
}
/******************************************************************************/
void fusion(int *t1, int taille1, int *t2, int taille2, int *tab)
{
int i, j, k;
i = j = k = 0;
while ((i {
if(t1[i] {
tab[k]=t1[i];
i++;
}
else
{
tab[k]=t2[j];
j++;
}
k++;
}
if (i==taille1)/*dc tab1 déjà tout recopier => finir de recopier le tab2*/
for (j ; j {
tab[k] = t2[j];
k++;
}
else/*dc tableau2 déjà tout recopier => finir de recopier le tableau1*/
for (i ; i {
tab[k] = t1[i];
k++;
}
}
/******************************************************************************/
void aff_tab(int *t01, int *t02, int *tf00, int nb01, int nb02, int nbff)
{
int i;
printf("| Tableau 1 || Tableau 2 || Tableau F |\n");
printf("|---------------||---------------||---------------|\n");
printf("|indice| valeur ||indice| valeur ||indice| valeur |\n");
printf("|------|--------||------|--------||------|--------|\n");
for(i=0 ; i<(nbff) ; i++)
{
if(i printf("| %2d | %4d |",i,t01[i]);
else
printf("|******|********|");
if(i printf("| %2d | %4d |",i,t02[i]);
else
printf("|******|********|");
printf("| %2d | %4d |\n",i,tf00[i]);
}
}
next up previous
Les intégrateurs R.C et RMOS.C
Table des matières
* Table des matières
* Introduction
* Les intégrateurs actifs RC
o L'intégrateur de Miller
o L'intégrateur positif à coefficient de qualité positif
o D'autres intégrateurs RC
o Les intégrateurs à sorties différentielles
* Références
Introduction
BLABLA
Les intégrateurs actifs RC
L'intégrateur de Miller
Constitution
Sous sa forme la plus simple non différentiel (figure 1) l'intégrateur actif RC est composé d'un condensateur, d'une résistance et d'un amplificateur opérationnel.
Figure 1:
\includegraphics[scale=0.5]{int-miller.eps}
L'intégrateur de Miller
Si l'AOP est idéal, l'intégrateur de Miller est un montage inverseur caractérisé par la fonction de transfert
\begin{displaymath}T_I = \frac{Vs}{Ve} = - \frac{1}{RCp}. \end{displaymath}
Prise en compte des non-idéalités actives: le concept de coefficient de qualité
Pratiquement, l'amplificateur opérationnel non idéal introduit un biais sur la fonction de transfert de l'intégrateur se traduisant par un amortissement tel que
$ T_I = \frac{1}{R(\omega)+jX(\omega)}.\\ $
Par analogie avec les inductances et les condensateurs qui présentent un coefficient de qualité infini lorsqu'ils sont sont sans perte (amortissement nul), on caractérise l'intégrateur actif non idéal par son coefficient de qualité
\begin{displaymath}Q_I = \frac{X(\omega)}{R(\omega)} = - \tan(\Theta) . \end{displaymath}
Coefficient de qualité de l'intégrateur de Miller
Si on considère un amplificateur opérationnel (figure 2) modélisé par une réponse en fréquence à un pôle avec
\begin{displaymath}A(\omega) = \frac{A_0}{1+\frac{p}{\omega_c}} = \frac{1}{\frac... ...ga_c}} \approx \frac{1}{\frac{1}{A_0} + \frac{p}{\omega_T}} \end{displaymath}
et en considérant un admittance parasite $Y_1=G_1+C_1p$, connectée sur l'entrée inverseuse de l'amplificateur, on détermine la fonction de transfert
$ \frac{Vs}{Ve} = \frac{-G}{p^2 \frac{C+C_1}{\omega_T}+p(\frac{G+G_1}{\omega_T}+\frac{C+C_1}{A_0}+C)+\frac{G+G_1}{A_0}}.\\ $
On peut noter que l'admittance parasite $Y_1$ peut modéliser la capacité parasite d'entrée de l'AOP et les résistances et condensateurs d'injection d'éventuels autres signaux d'entrée sur le n\oeud de sommation.
Figure 2:
\includegraphics[scale=0.35]{miller-ni.eps}
Modéle de calcul pour le coefficient de qualité
de l'intégrateur de Miller
En terme de coefficient de qualité, l'intégrateur de Miller est formellement caractérisé par
\begin{displaymath}Q_I = \frac{\frac{\omega}{\omega_T}(1+\frac{G_1}{G})+\frac{\o... ...{\frac{1+G_1/G}{A_0}-\frac{\omega^2}{\omega_T}\frac{C+C1}{G}}, \end{displaymath}
ainsi pour une fréquence particulière $\omega_i$ telle que $\omega_c \ll \omega_i = 1/RC \ll \omega_T$
\begin{displaymath}Q_I \approx \frac{1}{\frac{1}{A_0}-\frac{\omega_i}{\omega_T}} \approx - \frac{\omega_T}{\omega_i}. \end{displaymath}
D'autre part, avec
$ \frac{Vs}{Ve} \approx -\frac{1}{RCp} \frac{1}{p\frac{1+C_1/C}{\omega_T}+\frac{1+R/R_1}{C\omega_T}+1},\\ $
et avec $C_1=G_1=0$, la fonction de transfert de l'intégrateur sécrit
$ \frac{Vs}{Ve} \approx -\frac{1}{RCp} \frac{1}{1+\frac{\omega_i}{\omega_T}+j\frac{\omega_i}{\omega_T}}.\\ $
L'intégrateur de Miller "physique" présente donc une erreur de phase négative
\begin{displaymath}\epsilon_\Theta \approx -\frac{\omega_i}{\omega_T}.\\ \end{displaymath}
ainsi qu'un facteur d'erreur sur le gain
\begin{displaymath}\Upsilon_G \approx 1 - \frac{\omega_i}{\omega_T} - 0.5(\frac{\omega_i}{\omega_T})^2. \end{displaymath}
Dans le cas courant où l'amplificateur opérationnel est modélisé par un circuit à deux pôles, le second pôle $\omega_b$ étant spécifié en terme de marge de phase $MP \approx \arctan(\omega_b/\omega_T)$, on peut formellement effectuer une prise en compte de ce second pôle avec
\begin{displaymath}\epsilon_\Theta \approx - \frac{\omega_i}{\omega_T}(1+\cot(MP)). \end{displaymath}
L'intégrateur positif à coefficient de qualité positif
Constitution
La réalisation de ce type d'intégrateur (figure 3) nécessite l'utilisation de deux éléments actifs. Les amplificateurs opérationnels étant idéaux, ce circuit a pour fonction de transfert
\begin{displaymath}T_I = \frac{1}{RC}. \end{displaymath}
Figure 3:
\includegraphics[scale=0.4]{int-am.eps}
L'intégrateur à $Q_I$ positif
Prise en compte des non-idéalités des AOPs
Une prise en compte des non-idéalités des deux amplificateurs opérationnels, supposés identiques, peut être réalisée à partir du modéle de calcul de la figure 4.
Figure 4:
\includegraphics[scale=0.35]{am_ni.eps}
Modéle de calcul pour le coefficient de qualité
de l'intégrateur positif
L'intégrateur positif peut ainsi être modélisé par une fonction de transfert du quatrième ordre
\begin{displaymath}T_I = \frac{p^2 \frac{C_3}{G_2\omega_T} + p (\frac{2+G_3/G_2}... ...+ \frac{2+G_3/G_2}{A_0} + 1} {a p^4 + b p^3 + c p^2 + d p + e} \end{displaymath}
avec
$ a = \frac{(C_1+C)C_3}{G G_2\omega_T^2}\\ $ $ b = \frac{(C+C_1)(2+G_3/G_2)}{G\omega_T^2}+\frac{C_3(1+G_1/G)}{G_2\omega_T^2}+\frac{2C_3(C+C_1)}{GG_2A_0\omega_T}\\ $ $ c = \frac{(1+G_1/G)(2+G_3/G_2)}{\omega_T^2}+\frac{C+C_1}{G\omega_T}+\frac{(C+C_1)(2+G_3/G_2)}{A_0G\omega_T} +\frac{C_3(1+G_1/G)}{A_0G_2\omega_T}\\ $ $ d = \frac{1+G_1/G}{\omega_T}+\frac{C}{G}+2\frac{(2+G_3/G_2)(1+G_1/G)}{A_0\omeg... ...\frac{C+C_1}{A_0G}+\frac{1+G_1/G}{A_0)} +\frac{(1+G_1/G)(2+G_3/G_2)}{A_0^2}\\ $ $ e=\frac{1+G_1/G}{A_0)} + \frac{(1+G_1/G)(2+G_3/G_2)}{A_0^2}.\\ $
Sous les mêmes conditions d'approximation que l'intégrateur de Miller, la fonction de transfert peut s'écrire
$ T_I \approx \frac{1}{RCp} \frac{1+\frac{2p}{\omega_T}}{\frac{p}{\omega_T}+1+\frac{1}{RC\omega_T}}.\\ $
En considérant la phase
$ \Theta \approx \arctan(\frac{2\omega_i}{\omega_T})-\arctan(\frac{\omega_i}{\omega_T}),\\ $
l'intégrateur non inverseur "physique" présente un coefficient de qualité positif
\begin{displaymath}Q_I \approx \frac{\omega_T}{\omega_i}. \end{displaymath}
Quant à l'erreur de phase (pour un modéle d'AOP à deux pôles) et au facteur d'erreur sur le gain , ils s'écrivent respectivement
\begin{displaymath}\epsilon_\Theta \approx \frac{\omega_i}{\omega_T}.(1+\cot(MP))\\ \end{displaymath}
et
\begin{displaymath}\Upsilon_G \approx 1 - \frac{\omega_i}{\omega_T} + 0.5 (\frac{\omega_i}{\omega_T})^2 \end{displaymath}
Il est important de noter que l'association intégrateur de Miller et intégrateur positif conduit à une compensation des erreurs de phase (compensation des coefficients de qualité), et cette particularité est couramment mis à profit en filtrage.
D'autres intégrateurs RC
Il existe de nombreux autres intégrateurs RC, ces montages ne possédant pas de version différentielle ou utilisant un grand nombre d'AOP, ils sont difficilement utilisables en micro-électronique, ainsi nous ne donneront que le schéma électrique des principaux [1] et leurs performances simplifiées.
Les intégrateurs de Miller non-inverseur
Leur coefficient de qualité étant de même signe que l'intégrateur de Miller inverseur, ils ne sont pas compensables (figure 5 et figure 6).
Figure 5:
\includegraphics[scale=0.35]{miller-ninv.eps}
L'intégrateur de Miller non-inverseur standard
$T_I= \frac{1}{RC}$ et $Q_I \approx -\frac{\omega_T}{3\omega_i}$
Figure 6:
\includegraphics[scale=0.35]{miller-ninv-mod.eps}
L'intégrateur de Miller non-inverseur modifié
$T_I= \frac{1}{RC}$ et $Q_I \approx -\frac{\omega_T}{\omega_i}$
L'intégrateur positif de Deboo
Cet intégrateur (figure 7) utilise un seul élément actif, mais exige un parfait appariement des résistances.
Figure 7:
\includegraphics[scale=0.35]{deboo.eps}
L'intégrateur de Deboo
$T_I= \frac{1}{RC}$ et $Q_I \approx -\frac{\omega_T}{2\omega_i}$
Les intégrateur à haut coefficient de qualité
Leur coefficient de qualité est pratiquement infini. Leur réalisation nécessite l'utilisation d'un suiveur de tension difficilement réalisable à cause du mode commun d'entrée limité de la plupart des amplificateurs opérationnels. (figure 8 et figure 9)
Figure 8:
\includegraphics[scale=0.35]{hq-inv.eps}
L'intégrateur à haut coefficient de qualité inverseur
$T_I= -\frac{1}{RC}$ et $Q_I \approx -(\frac{\omega_T}{\omega_i})^3$
Figure 9:
\includegraphics[scale=0.35]{hq-ninv.eps}
L'intégrateur à haut coefficient de qualité non-inverseur
$T_I= \frac{1}{RC}$ et $Q_I \approx -(\frac{\omega_T}{\omega_i})^3$
Les intégrateurs à sorties différentielles
L'intégrateur à coefficient de qualité négatif
Le schéma de l'intégrateur à sorties différentielles est directement dérivé du schéma de l'intégrateur de Miller. Le schéma de la figure 10 correspond à la version négative. Par permutation des sorties on obtiendrait un intégrateur positif. De part le principe du demi-circuit, ses performances en terme de coefficient de qualité sont celles de l'intégrateur non différentiel.
Figure 10:
\includegraphics[scale=0.35]{miller-dif.eps}
L'intégrateur différentiel de Miller
$T_I= -\frac{1}{RC}$ et $Q_I \approx -\frac{\omega_T}{\omega_i}$
L'intégrateur à coefficient de qualité positif
Un schéma de l'intégrateur à sorties différentielles est directement dérivé du schéma de l'intégrateur positif. Le schéma de la figure figure 11 correspond à la version négative. Par permutation des sorties on obtiendrait un intégrateur positif. Ses performances en terme de coefficient de qualité sont celles de l'intégrateur correspondant non différentiel.
Figure 11:
\includegraphics[scale=0.35]{qpos-dif.eps}
L'intégrateur différentiel à coefficient de qualité positif
$T_I= -\frac{1}{RC}$ et $Q_I \approx +\frac{\omega_T}{\omega_i}$
Références
1
P. O. BRACKETT and A. S. SEDRA.
"Active compensation for high-frequency effects in op-amp circuits with applications to active RC filters".
IEEE Transaction on Circuit and System, vol. 23(No. 2):pp. 68-72, Feb. 1976.
À propos de ce document...
This document was generated using the LaTeX2HTML translator Version 98.1p1 release (March 2nd, 1998)
Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html -no_math -html_version 3.2 -split 0 integrateurs_rc.tex.
The translation was initiated by Jacky Porte on 2003-04-28
next up previous
Jacky Porte
2003-04-28
Last updated: 3/10/2010 4:24:37 AM
|
|