ADC au niveau matériel De nombreux signaux électriques autour de nous sont analogiques dans la nature. Cela signifie qu’une quantité varie directement avec une autre quantité. La première quantité est la plupart du temps la tension tandis que la deuxième quantité peut être la température, la pression, la lumière, la force ou l'accélération. Par exemple, dans le cas du capteur de température LM35 la tension de sortie varie en fonction de la température, de sorte que si nous pouvions mesurer la tension, on pourrait mesurer la température. Mais nos ordinateurs (ou Microcontrôleurs) sont de nature numérique. Ils ne peuvent que différencier entre le niveau HAUT ou BAS sur les broches d'entrée. Par exemple, si l'entrée est supérieure à 2.5v elle sera lue comme 1 et si elle est inférieure à 2,5, alors elle sera lue comme 0 (dans le cas des systèmes de 5v). Donc, nous ne pouvons pas mesurer la tension directement à partir d’un CPU. Pour résoudre ce problème la plupart des microcontrôleurs modernes disposent d'une unité de CAN (convertisseur analogique –numérique) ou ADC ( Analog Digital converter) . Quelques exemples très utile de dispositifs analogiques sont Capteurs de lumière. Capteurs de température. Accéléromètres. Ecrans tactiles. Microphone pour enregistrement audio. Le principe Théoriquement la conversion doit s’effectuer en respectant 3 étapes : L’échantillonnage La quantification La pesée L’échantillonnage L’analogie la plus simple est celle d ’un sondage électoral. Prévoyons que le parti x aura 49% des voix, le parti y 20% des voix etc… Nous venons d’effectuer un échantillonnage des intentions de vote. Mais attention, cette estimation est approximative, le résultat final du parti x par exemple peut très bien être de 48% ou de 50%. Accordons-nous donc une marge d’erreur. C’est exactement la même chose en télécommunications. Dans notre cas nous ne devons pas échantillonner des intentions de vote. (Un échantillon correspond à une impulsion). Nous devons échantillonner de la parole. Définition : La parole est un signal analogique dont la gamme des fréquences varie entre 300 et 3400 Hertz. Deux questions se posent : •Que faut-il échantillonner ? •À quelle fréquence faut-il échantillonner ? La réponse à la première question est simple, nous voulons échantillonner de la parole (les abonnés téléphoniques par exemple). La réponse à la deuxième question est donnée par le théorème de Shannon. Théorème de Shannon F échantillonnage >= 2 fois la fréquence maximum du signal à échantillonner Nous devons échantillonner la parole ( BF) soit un signal variant entre 300 et 3400 Hertz. La fréquence d’échantillonnage doit donc être au moins de : 3400 x 2 = 6800 Hz Nous arrondissons à 8000 hertz soit 8 Khz , 8 étant une puissance de 2. Il ne faut pas oublier que nous allons travailler en numérique, donc en binaire. Comme T(période)=1/F , T= 1/8000= 125m secondes 1 La quantification 2 Important : Il est à noter que l’erreur de quantification est la seule erreur hors ligne lors d’une conversion A-N. Le codage ou la pesée C’est l’opération qui consiste à convertir en binaire (Numérique) la valeur lue lors de la quantification. La conversion s’effectue sur 8 bits. exemple de valeur positive +117 deviendra 01110111 exemple de valeur négative - 43 deviendra 11010111 Quelques méthodes de conversion ( extrait du cours de l’auteur) Les CAN font correspondre à une entrée analogique une sortie numérique. Le bit de poids fort se nomme MSB et le bit de poids faible LSB. Convertisseur simple rampe QuickTime™ et un décompresseur sont requis pour visionner cette image. principe: À la fermeture de l’interrupteur le condensateur se charge linéairement. Le temps de basculement du comparateur dépendra donc directement de la tension d’entrée. Au moment du basculement, le ET bloque l’horloge du compteur. La sortie binaire de ce dernier est donc proportionnelle à la tension d’entrée Ue . Le principal inconvénient vient de l’influence du vieillissement de la capacité et de la stabilité de l’horloge sur le mot de sortie. Pour s’affranchir de ceci, on utilise fréquemment une conversion double rampe. On charge la capacité jusqu’à ce que le compteur soit plein . Ce temps de comptage est donc constant. Puis on effectue une décharge avec une entrée de référence jusqu’au passage à zéro. QuickTime™ et un décompresseur sont requis pour visionner cette image. Réalisez un codeur simple rampe Quelques données technique pour vous aider 3 QuickTime™ et un décompresseur sont requis pour visionner cette image. 4 QuickTime™ et un décompresseur sont requis pour visionner cette image. La commande remet à zéro le compteur et démarre la rampe Réalisez un codeur double rampe Principe de base On compare la tension d’une charge de condensateur avec un tension de référence pendant un certain temps. Tant que la tension de référence est supérieure à la tension de charge du condensateur la sortie du comparateur est à 1, ce qui crée ce que l’on nomme une fenêtre. Pendant le temps d’ouverture de la fenêtre ( temps à 1). On insère des coups d’horloge. Il suffit alors de compter le nombre de coup d’horloge pour obtenir un nombre binaire proportionnel à la largeur de la fenêtre. 5 LE CODEUR À PESÉES SUCCÉSSIVES QuickTime™ et un décompresseur sont requis pour visionner cette image. Conversion par comptage d’impulsions Étude du monostable, le convertisseur à simple et double rampe Présentation Qu'est qu'un monostable ? C'est un circuit électronique dont la sortie se trouve dans un état électrique stable quand il est au repos, et qui lorsqu'il reçoit une impulsion dite de déclenchement, fait basculer sa sortie dans l'état électrique opposé pendant un "certain temps". Ce nouvel état est instable, et la sortie retrouve son état initial au bout de ce "certain temps". Un monostable peut donc servir de base à la construction d'un temporisateur. Caractéristiques principales Un monostable présente quelques caractéristiques de base qu'il convient de connaître. Impulsion de déclenchement (ou impulsion d'entrée) Il s'agit de l'évènement qui conduit la sortie du monostable à changer d'état. Il peut s'agir d'une courte impulsion ou d'un changement d'état logique sans retour à l'état initial. Attention, la durée de l'impulsion de déclenchement doit être suffisamment grande pour que le monostable la voit . Le célèbre circuit intégré "timer" NE555 demande une impulsion dont la largeur doit être de l'ordre de 1 ms. Le monostable TTL SN74123 accepte quant lui une impulsion dont la largeur est de quelques dizaines de nanosecondes seulement (même s'il faut 100 ns, ça nous donne un rapport de 10000 tout de même). D'autres circuits plus rapides encore (série ECL) travaillent sans faillir avec des impulsions de seulement quelques nanosecondes. Intuitivement, on se rend compte que la fréquence maximale de travail peut être limitée si la largeur de l'impulsion est large. Polarité de l'impulsion de déclenchement Elle peut être positive (bas-haut-bas ou bas-haut) ou négative (haut-bas-haut ou hautbas). 6 Impulsion de sortie C'est ainsi que l'on nomme l'état instable dans lequel le monostable se trouve lorsqu'il vient d'être déclenché, c'est à dire quand l'état logique de sa sortie se trouve à l'opposé de l'état logique présent au repos. Polarité de l'impulsion de sortie Au repos, la sortie du monostable peut être à l'état haut ou à l'état bas, et sur présence d'une impulsion de déclenchement, passer à l'état opposé, bas ou haut. Durée de l'impulsion de sortie C'est la durée du "certain temps", pendant lequel la sortie du monostable reste dans son état instable, et ce que l'on ait affaire à une durée de 100 ns (cent nanosecondes) ou de 100 s (cent secondes). Redéclenchable ou non redéclanchable Un monostable non redéclenchable délivre une impulsion de sortie dont la durée est immuable, même si pendant l'état instable, surviennent plusieurs impulsions de déclenchement. Un monostable redéclenchable délivre une impulsion de sortie qui se "réactive" à chaque nouvelle impulsion de déclenchement. Si une nouvelle impulsion de déclenchement a lieu alors que la sortie du monostable n'est pas encore retourné à son état stable (de repos), ou dit autrement, si le temps qui sépare deux impulsions de déclenchement est inférieur à la durée de l'impulsion de sortie, la durée de l'impulsion de sortie est prolongée d'un temps égal à la durée d'une impulsion de sortie unique. Utilisations Le monostable est un circuit très utilisé. Il permet : ▪ de fixer la durée d'un évènement ▪ de retarder la production d'un évènement ▪ de contrôler la présence ou l'absence d'un signal périodique (surveillance rotation ventilateur par exemple) ▪ d'effectuer un filtrage (blocage d'un signal dont la fréquence ne répond pas à une certaine plage de valeurs) ▪ de mesurer des fréquences, si on l'associe à un intégrateur RC. Fonctionnement de base Pour commencer, examinons le fonctionnement d'un monostable simple travaillant en logique positive. Le schéma simplifié ci-après représente le monostable sous la forme d'une "boite noire" dotée des points de connexion suivants : ▪ une entrée CLK (Clock, horloge) qui est l'entrée de déclenchement, active sur un front montant ▪ une entrée RESET que nous n'utilisons pas et qui est reliée à la masse, ▪ une sortie Q qui est la sortie principale "positive", ▪ une sortie Q barre (Q avec point d'exclamation à gauche QuickTime™ et un décompresseur sont requis pour visionner cette image. Sur l'entrée CLK, nous appliquons une impulsion de déclenchement positive Imp, et nous regardons ce qui se passe sur la sortie Q (Out). Graphe aa QuickTime™ et un décompresseur sont requis pour visionner cette image. Ce premier graphe montre ce qui se passe avec une impulsion de déclenchement positive Imp dont la durée (50 ms) est inférieure à la durée de l'impulsion de sortie Out (500 ms). Graphe ab QuickTime™ et un décompresseur sont requis pour visionner cette image. 7 Alors que ce graphe montre ce qui se passe avec une impulsion de déclenchement positive Imp dont la durée (500 ms) est supérieure à la durée de l'impulsion de sortie Out (50 ms). Dans les deux cas, une seule et unique impulsion est née en sortie Q (Out) du monostable. Premier point à retenir : pour un déclenchement isolé, la durée de l'impulsion de déclenchement n'a pas besoin d'être inférieure (ni supérieure) à la durée de l'impulsion de sortie. Le fonctionnement observé ici est identique pour un monostable non-redéclenchable et pour un monostable redéclenchable. Durée de l'impulsion de sortie Dans le schéma simplifié ci-avant, aucun élément visible ne permet de modifier la durée de l'impulsion de sortie. C'est normal, car c'est un schéma simplifié, les éléments "de réglage" sont cachés. Dans un montage réel, on emploie généralement une résistance et un condensateur pour fixer la durée de l'impulsion de sortie (voir plus loin, paragraphe Exemples pratiques). Impulsions négatives Dans l'exemple précédent, les impulsions de déclenchement et de sortie étaient toutes deux de type positives. L'entrée CLK du monostable était active sur le front montant de l'impulsion de déclenchement. Sur le front montant ? Oui, le front montant désigne le passage de l'état logique bas (zéro volt) vers l'état logique haut (+5V par exemple). Normal qu'on appelle ça front montant, puisque la tension monte. Même chose pour le front descendant, qui désigne le passage de l'état logique haut (+5V par exemple) vers l'état logique bas (zéro volt) : la tension descend. Il est tout à fait possible de travailler avec des impulsions négatives ou de travailler sur des fronts descendants. Ce qui n'est pas du tout la même chose, comme on va s'en rendre compte avec les graphes suivants, où nous observons maintenant l'état électrique des deux sorties Q et Q barre. QuickTime™ et un décompresseur sont requis pour visionner cette image. Graphe ba QuickTime™ et un décompresseur sont requis pour visionner cette image. Déclenchement sur le front montant d'une impulsion positive Graphe bb QuickTime™ et un décompresseur sont requis pour visionner cette image. Déclenchement sur le front descendant d'une impulsion positive Graphe bc QuickTime™ et un décompresseur sont requis pour visionner cette image. Déclenchement sur le front descendant d'une impulsion négative 8 Graphe bd QuickTime™ et un décompresseur sont requis pour visionner cette image. Déclenchement sur le front montant d'une impulsion négative Côté sortie Q (Out) et Q barre (Out_b), pas de réelle surprise : quand Q (Out) est à l'état haut, Q barre (Out_b) est à l'état bas. Et inversement. Si le monostable possède de nature ces deux sorties complémentées, cela permet de disposer immédiatement de la polarité désirée, ce qui peut dans certains cas éviter l'emploi d'un inverseur additionnel. Côté entrée de déclenchement (entrée CLK, signal Imp), les dessins (graphes) valent mieux qu'un grand discours. Aussi, prenez bien le temps d'observer les différences entre les quatre graphes. Graphe be QuickTime™ et un décompresseur sont requis pour visionner cette image. Déclenchement sur le front descendant d'une impulsion positive, l'impulsion de déclenchement étant cette fois plus longue. L'impulsion de sortie du monostable est déclenchée avec un retard égal à la durée de l'impulsion de déclenchement. Cela était déjà le cas dans les graphes bb et bd, mais ici, c'est beaucoup plus visible. Application première : ajout d'un retard, dont la durée est aussi facile à spécifier que l'est la durée de l'impulsion de sortie principale ellemême. Comment créer une impulsion de déclenchement qui joue le rôle de retardateur ? Avec un second monostable, par exemple... Voyez le schéma qui suit, où deux monostables sont branchés en série. QuickTime™ et un décompresseur sont requis pour visionner cette image. On utilise la sortie Q barre du monostable 1 pour déclencher le monostable 2 via son entrée CLK. La sortie Q barre du monostable 1 produit une impulsion négative, et l'entrée CLK du monostable 2 est active sur un front montant, ce qui permet de se retrouver avec la même configuration de fonctionnement que celle qui a conduit au résultat affiché sur le graphe be précédent. Afin de mieux coordonner les évenements qui ont lieu dans ce circuit, un point de mesure TP1 a été ajouté (TP = Test Point, point test). Voici ci-après le graphe ca. qui dévoile le chronogramme de fonctionnement d. Graphe ca QuickTime™ et un décompresseur sont requis pour visionner cette image. Déclenchement du monostable 1 sur le front montant d'une impulsion positive : l'impulsion de sortie a lieu immédiatement. La sortie Q barre du monostable 1 (TP1) passe donc aussitôt à l'état bas. Comme l'entrée CLK du monostable 2 (TP1 aussi) est uniquement sensible aux fronts montant, il faut attendre que le monostable 1 repasse dans son état de repos, c'est à dire que la sortie Q barre repasse à l'état haut, pour que le monostable 2 soit déclenché. A cet instant, une impulsion est produite par le monostable 2. 9 Voilà, vous venez de voir comment peut être constituée une alarme simple : le monostable 1, dont l'impulsion de sortie est calibrée à 10 secondes, permet de rentrer chez soi en laissant 10 secondes pour entrer un code, avant déclenchement de la sirène. Si au bout des 10 secondes le monostable 2 n'est pas inhibé, la fin de l'impulsion du monostable 1 déclenche le monostable 2, qui lui-même commande une sirène pendant un temps égal à la durée de son impulsion de sortie. Une application pratique de ce double monostable cascadé est proposée à la page Alarme 004. Bien entendu, ce n'est qu'une application parmi d'autres. Détection de présence ou d'absence de signal périodique Jusqu'à maintenant, nous n'avons parlé que d'impulsions de déclenchement uniques et isolées. Nous allons maintenant observer ce qui se passe quand plusieurs impulsions de déclenchement se succèdent. C'est ici que prend toute sa valeur la notion de redéclenchement. Mais là encore, quelques graphes valent mieux que des dizaines de lettres de l'alphabet. Ceux qui suivent émanent du circuit de base vu au tout début du cours : QuickTime™ et un décompresseur sont requis pour visionner cette image. Dans tous les exemples qui suivent, la durée de l'impulsion de déclenchement est de 50 ms, et la durée de l'impulsion de sortie du monostable est de 400 ms. Seule la durée qui sépare les impulsions de déclenchement n'est pas toujours la même. Graphe da QuickTime™ et un décompresseur sont requis pour visionner cette image. Monostable non redéclenchable, avec plusieurs impulsions de déclenchement qui se suivent. Le temps qui sépare entre elles deux impulsions de déclenchement, est supérieur à la durée de l'impulsion de sortie. La sortie du monostable est activée pendant une durée qui correspond à sa durée d'impulsion nominale. Fonctionnement identique à celui vu précédemment. Graphe db QuickTime™ et un décompresseur sont requis pour visionner cette image. Monostable non redéclenchable, avec plusieurs impulsions de déclenchement qui se suivent. Le temps qui sépare entre elles deux impulsions de déclenchement, est inférieur à la durée de l'impulsion de sortie, une nouvelle impulsion de déclenchement survient alors que le monostable est toujours dans son état instable. Là encore, la durée de l'impulsion de sortie correspond à la durée d'impulsion nominale. Graphe dc QuickTime™ et un décompresseur sont requis pour visionner cette image. Monostable redéclenchable, avec plusieurs impulsions de déclenchement qui se suivent. Le temps qui sépare entre elles deux impulsions de déclenchement, est supérieur à la durée de l'impulsion de sortie. Pas de différence là non plus, la sortie du monostable est activée pendant une durée qui correspond à sa durée d'impulsion nominale. 10 Graphe dd QuickTime™ et un décompresseur sont requis pour visionner cette image. Monostable redéclenchable, avec plusieurs impulsions de déclenchement qui se suivent. Le temps qui sépare entre elles deux impulsions de déclenchement, est inférieur à la durée de l'impulsion de sortie. C'est ici que les choses changent. Le monostable est redéclenchée avant qu'il ne retourne à son état de repos : tout repart à zéro, sans tenir compte du temps déjà écoulé. Cas du graphe dd : La durée de l'impulsion de sortie est rallongée à chaque nouvelle impulsion de déclenchement, et comme cela se reproduit à intervalles réguliers, le monostabe ne retourne jamais à son état de repos. Il reste continuellement dans son état instable. Nous avons vu que la durée de l'impulsion de déclenchement n'était pas très critique pour un déclenchement isolé, comme c'est le cas par exemple avec une commande de minuterie d'une cage d'escalier. Nous voyons maintenant que cette durée peut être critique si les impulsions de déclenchement sont rapprochées et que l'on a affaire à un monostable redéclenchable. Deuxième point à retenir, donc. Un peu perturbant, tout ça, non ? Toujours est-il que nous sommes ici en présence d'un excellent système de détection de présence ou d'absence d'un signal périodique. Cas d'utilisation 1 - Utilisez un capteur optique ou magnétique placé vers un élément en rotation, qui génère une impulsion à chaque tour de l'élément en question, pour déclencher le monostable. Utilisez la sortie Q, qui reste à l'état haut tant que le monostable est redéclenché, et vous obtenez alors un système qui génère une information positive en présence de rotation. Utilisez maintenant la sortie Q barre, qui reste à l'état bas tant que le monostable est redéclenché, et vous obtenez alors un système qui génère une information positive en absence de rotation. Cas d'utilisation 2 - Imaginez maintenant que les impulsions sont fournies par un logiciel, tant que ce dernier "tourne" correctement. En cas de plantage, les impulsions ne sont plus produites, et le monostable effectue un reset "hard", dont le fonctionnement ne peut pas être perturbé par le plantage logiciel. Bien entendu, il ne s'agit là que d'applications entre autres. Exemples pratiques Voici maintenant quelques exemples de réalisations pratiques de monostables : ▪ avec des circuits intégrés spécialisés pour cet usage, tels les fameux CD4538(CMOS) et SN74121 (TTL), ▪ avec des portes logiques (portes ET, OU, etc), ▪ avec un NE555, circuit intégré "timer" très répendu et multi-usages, ▪ avec des diodes et/ou des transistors (avec des diodes Tunnel, possibilité d'avoir des impulsions de sortie très courtes). Utilisation d'un CD4538 (ou CD4528) Le CD4538 (ou CD4528) comporte dans un même boitier de 16 pattes, deux monostables que l'on peut utiliser de façon totalement indépendante. Dans l'exemple qui suit, le premier monostable U1:A est déclenchable par le front montant d'une impulsion de déclenchement, alors que le second monostable est déclenchable par un front descendant. La durée de l'impulsion de sortie est définie par la valeur des composants R et C (R1 / C1 et R2 / C2), selon la formule T = RC (R en ohms et C en farads). Par exemple, si R = 1 Mohms et C = 1 uF, durée impulsion de sortie = 1 seconde. 11 QuickTime™ et un décompresseur sont requis pour visionner cette image. Utilisation de portes logiques Des portes logiques ET (AND), OU (OR), NON-OU (NOR), peuvent être mises à contribution pour réaliser des monostables. Selon le type de portes utilisées, le câblage peut légèrement différer. Dans les circuits suivants, la durée de l'impulsion de sortie est définie par la valeur des composants R et C (R1 / C1), selon la formule T = 0,5 x RC (R en ohms et C en farads). Par exemple, si R = 1 Mohms et C = 1 uF, durée impulsion de sortie = 0,5 seconde. QuickTime™ et un décompresseur sont requis pour visionner cette image. Les schémas suivants ne mettent en oeuvre qu'une seule porte logique. Pour un fonctionnement correct, R1 doit être faible devant R2, et R1 doit être supérieure à 100 kO. Dans ces conditions, la durée de l'impulsion de sortie est définie par la valeur des composants R et C (R1 / C1), selon la formule T = RC / 1.5 (R en ohms et C en farads). Par exemple, si R = 1 MO et C = 1 uF, durée impulsion de sortie = 0,75 seconde. En pratique, la formule peut aussi être T = 0,5 x RC, si la valeur donnée à R2 est de 10 kO (rapport R1/R2 plus faible). QuickTime™ et un décompresseur sont requis pour visionner cette image. 12 QuickTime™ et un décompresseur sont requis pour visionner cette image. Utilisation du NE555 Le NE555 est un exemple de réussite à lui tout seul. Il s'agit d'un circuit intégré qui permet un tas de choses, en tout cas dans le domaine du temps. Le schéma qui suit l'utilise en tant que monostable : sur une impulsion de déclenchement négative, il délivre une impulsion de sortie positive. Pour donner au schéma un côté plus "pratique" et un peu plus attrayant, nous avons ajouté un bouton poussoir pour produire l'impulsion de déclenchement, et une LED pour visualiser l'état de la sortie Out. QuickTime™ et un décompresseur sont requis pour visionner cette image. Si l'on souhaite déclencher le NE555 avec une impulsion positive, on peut le faire précéder par un transistor monté en inverseur logique, comme le montre le schéma suivant. QuickTime™ et un décompresseur sont requis pour visionner cette image. 13 On peut aussi déclencher le NE555 avec les doigts, et non plus avec un bouton poussoir ou une impulsion électrique : QuickTime™ et un décompresseur sont requis pour visionner cette image. Un câblage différent du NE555 est possible QuickTime™ et un décompresseur sont requis pour visionner cette image. Dans ce montage, le NE555 est utilisé en simple comparateur et la sortie est active tant que la tension aux bornes de C1 est inférieure aux deux tiers de l'alimentation (soit un seuil de 6 V pour une alimentation générale de 9 V). Le bouton poussoir SW1/Start, lorsqu'il est enfoncé, court-circuite le condensateur C1 et la temporisation démarre dès cet instant. Notez que la charge du condensateur ne peut pas s'amorcer tant que SW1 est enfoncé. La durée totale de temporisation (d'activation de la sortie) est égale à la somme de la durée nécessaire à la charge du condensateur C1 pour atteindre 2/3 de Valim et de la durée d'appui sur SW1. Avec les valeurs du schéma, on obtient une temporisation de durée comprise entre une seconde et deux minutes environ (durée enfoncement SW1 non comprise), selon la position du curseur du potentiomètre RV1. Le test doit se faire sans l'extension secteur, avec pour seul élément de contrôle la LED D1. L'extension secteur est totalement facultative et constitue un exemple simple de commande d'une charge résistive au travers d'un triac, dont la gâchette G (broche de commande) est reliée à la sortie (broche 3) du NE555. Attention si vous réalisez ce montage avec le triac car une des broches du secteur (celle marquée Neutre sur le schéma) se trouve reliée à la masse (le montage fonctionne aussi si les fils Neutre et Phase sont inversés). Et comme vous le savez, le secteur n'est pas une pile de 1,5 V. L'avantage de ce montage est que le NE555 est capable d'injecter un courant suffisant (ici environ 50 mA) dans le triac, ce qui assure un déclenchement plus sûr même avec des triacs "peu sensibles". Le montage qui précède produit une "impulsion" positive, c'est à dire que la sortie est active pendant la durée de la temporisation. Avec le même NE555, il est possible de travailler à l'envers, c'est à dire avec la sortie qui s'active au terme de la temporisation. C'est ce que montre le schéma suivant, où on se contente finalement d'intervertir condensateur et résistance de temporisation. 14 QuickTime™ et un décompresseur sont requis pour visionner cette image. avec ce schéma à NE555, la sortie reste activée après temporisation, alors qu'avec deux monostables CD4538, on dispose d'une temporisation active après une temporisation d'attente. Comme quoi il y a toujours de la place pour tout le monde. A quoi sert la diode D2 ? A décharger rapidement le condensateur quand le montage est mis hors tension, elle est facultative. Ce montage s'active automatiquement à la mise sous tension, le poussoir SW1 n'est là que pour relancer la machine en cas de besoin. Ce type de montage peut donc servir à mettre en route un équipement au bout d'un certain temps après sa mise sous tension (la LED D1 et sa résistance série peuvent être remplacées par un relais avec diode de roue libre câblée en parallèle dessus et en inverse) Utilisation de transistors ? Il est vrai qu'un circuit intégré de type CD4528 ou CD4538, une résistance et un condensateur suffisent pour réaliser un monostable qui peut être déclenché au choix sur un front montant ou sur un front descendant. QuickTime™ et un décompresseur sont requis pour visionner cette image. Ce circuit permet de produire une impulsion positive sur la sortie Out, déclenchée par une impulsion positive amenée sur l'entrée In. La durée de l'impulsion de sortie dépend de la valeur du condensateur C2 et de celle de la résistance R7. Les valeurs données ici aux composants permettent de définir une durée d'impulsion de 10 ms par paquet de 100 nF pour C2. Un condensateur de 220 nF amènera donc une durée d'impulsion voisine de 20 ms, et avec un condensateur de 1 uF on obtiendra une durée voisine de la seconde. Bien entendu ces valeurs sont théoriques et vous pourrez observer de petites différences avec votre maquette, l'important est de retenir l'ordre de grandeur Étude détaillée de l’astable 15 QuickTime™ et un décompresseur sont requis pour visionner cette image. À l’intérieur du 555, trois résistances identiques R1, R2 et R3 divisent le voltage d'alimentation en 3 parts égales. Si on alimente le circuit avec une pile de 9 volts, chacune des résistances provoquera une chute de tension de 3 volts. Le but de diviser la tension d'alimentation en 3 parties est de fournir aux comparateurs CA et CB, deux voltages de référence qui seront égaux aux 1/3 et au 2/3 du voltage d'alimentation. Chacun des 2 comparateurs a une patte connectée sur un point de référence, soit 1/3 ou 2/3 de l'alimentation. 16 QuickTime™ et un décompresseur sont requis pour visionner cette image. L'autre patte de chaque comparateur, soit les broches de connexion 2 et 6, sont reliées ensemble et connectées juste au sommet du condensateur externe C1. Le voltage sur le condensateur est variable alors que les tensions de référence sont fixes. ----------------------------------------------------------------Le comparateur CA agit uniquement si le voltage sur C1 descend sous le seuil de 1/3 de la tension d'alimentation. Quand cela se produit il envoie un pulse à la bascule pour qu'elle fasse un Reset (Remise à zéro) sur sa sortie. Le transistor Q1 relié à la sortie de la bascule passera alors en mode bloqué arrêtant le passage du courant. Le condensateur externe C1 peut alors se charger au travers des résistances externes RA et RB. ----------------------------------------------------------------Le comparateur CB agit uniquement si le voltage sur C1 dépasse le seuil de 2/3 de la tension d'alimentation. Quand cela se produit il envoie un pulse à la bascule pour qu'elle fasse un Set (Remise à 1) sur sa sortie. Le transistor Q1 relié à la sortie de la bascule passera alors en mode saturé, permettant le passage du courant. Le condensateur externe C1 est alors court-circuité et se décharge au travers de la résistance externe RB. Le courant part de la masse et va à la borne négative du condensateur. Mais le courant entre aussi par la broche 1 du 555, passe dans le transistor Q1, puis dans la résistance externe R2 pour atteindre l'autre borne du condensateur C1. Les deux bornes de C1 étant au même potentiel électrique, C1 se décharge au travers de la résistance externe RB. Tant que le circuit 555 est sous tension, le cycle charge décharge du condensateur se répète sans fin. On dit que le circuit oscille, que le circuit est astable, il n'a pas d'état stable, il oscille continuellement. L'étage de sortie se compose de plusieurs transistors permettant au 555 de fournir ou d'absorber jusqu'à 200 milliampères sur sa sortie, la broche 3 pour faire clignoter une del ou produire tout autre travail utile. Pour plus de courant, il faut utiliser sur la sortie, un transistor comme le 2N2222, capable de manipuler jusqu'à 800 milliampères. 17 La sortie (broche 3) est à un niveau logique haut quand C1 se charge et à un niveau logique bas quand C1 se décharge. Autrement dit, sur la broche 3 on retrouve une onde carrée. Alimenter avec une pile de 9 volts, on aura 9 volts, 0 volt, 9 volts, 0 volt de façon répétitive tant que le circuit est sous tension. La durée de temps à un niveau logique haut puis à un niveau logique bas est déterminée par les valeurs des résistances externes RA et RB et bien sûr par la valeur du condensateur externe C1. Pour la durée de temps au niveau logique haut la formule est T1 =0.693 X (RA + RB) X C1. Pour la durée de temps au niveau logique bas la formule est T2 =0.693 X RB X C1. La période est égale à P = T1 + T2. La période est la durée de temps d'un cycle (un niveau logique haut + un niveau logique bas). La fréquence est égale à F = 1/P ou une autre formule est F = 1.44/((RA+ 2RB) X C1). La fréquence est le nombre de cycle par seconde (niveau logique haut +niveau logique bas par seconde). Dans les formules RA et RB sont en ohms. Ainsi pour une résistances de 10 kiloohms, il faut mettre 10000 dans les formules. Pour C1, son unité est le farad. Ainsi pour un condensateur de 10 uF, il faut mettre 0.000010 ou 0.00001 dans les formules. Étude détaillée en monostable QuickTime™ et un décompresseur sont requis pour visionner cette image. 18 QuickTime™ et un décompresseur sont requis pour visionner cette i mage. Spécifications de ADCs La spécification importante de l’ADC est la résolution. Ceci indique la précision de mesure des signaux d'entrée analogiques. Les ADC communs sont sur 8 bits, 10 bits et 12 bits. Par exemple, si la tension de référence de l'ADC est de 0 à 5V , un ADC 8 bits mesurera avec précision jusqu'à 5/256 v = 19mV env. Alors que l'ADC 10 bits aura une précision de 5/1024 = 4.8mV env. Ainsi, vous pouvez voir que l'ADC 8 bits ne peut pas faire la différence entre 1mV et 18mV. D'autres spécifications comprennent (sans s'y limiter) le taux d'échantillonnage, ce qui signifie à quelle vitesse l'ADC peut prendre des lectures. Microchip affirme que l'ADC peut aller aussi haut que 100K échantillons par seconde. ADC Terminologie Référence Tension: La tension de référence spécifie la plage minimale et maximale de tension d'entrée analogique. Dans les PIC il y a deux tension de référence, le Vref et l'autre est Vréf +. Vref indique la tension d'entrée minimale de l'entrée analogique et Vref + indique la valeur maximale. Par exemple, si le signal d'entrée Vref est appliqué sur le canal d'entrée analogique, alors le résultat de la conversion sera de 0 et si la tension égale à Vref + est appliqué sur le canal d'entrée, le résultat sera 1023 (valeur max pour 10bit ADC). L’ADC ou le convertisseur analogique / numérique cas du PIC18F4520 Les broches Vref + et Vref sont disponibles sur PIN5 et PIN4 de la puce PIC18F4520. Donc, vous pouvez connecter la tension de référence . Pour une conception simple, le Vref est au GND et Vref + est au Vcc. C’est une configuration commune que l'ADC peut configurer pour utiliser ces références en interne. ADC Canaux: Le module ADC est connecté à plusieurs canaux via un multiplexeur. Le multiplexeur peut connecter l'entrée de l'ADC à l'un des canaux disponibles. Cela vous permet de connecter plusieurs signaux analogiques au CPU (disons 3 capteurs de température). Pour le PIC18F4520 il existe 13 canaux d'entrée analogiques, ils sont nommés AN0, AN1 etc. Vous pouvez jeter un oeil à la configuration des broches dans la fiche des PIC18F4520 pour localiser leur position. Temps d'acquisition: Lorsqu'un canal spécifique est sélectionnée, la tension de ce canal d'entrée est stockée dans un condensateur de maintien interne. Il faut un certain temps au condensateur pour se charger complètement et de devenir égal à la tension appliquée. Ce temps est appelé temps d'acquisition. L'ADC du PIC18F4520 fournit un temps d'acquisition programmable, de sorte que vous pouvez configurer le temps d'acquisition. Une fois que le temps d'acquisition du canal d'entrée est déconnecté de la source la conversion commence. Le temps d'acquisition dépend de plusieurs facteurs comme l'impédance de source, Vdd du système et de la température. Vous pouvez vous référer à la page 227 et 228 dans la fiche technique pour plus de détails sur son calcul. Une valeur sûre est 2.45uS, donc le temps 19 d'acquisition doit être défini sur une plus grande valeur.. ADC Clock: L’ ADC Nécessite une source d'horloge pour faire sa conversion, cela est appelé ADC Clock. La période de temps de l'horloge de l'ADC est appelée TAD. Il est également le temps nécessaire pour générer 1 bit de conversion. L'ADC nécessite 11 TAD pour faire une conversion de 10 bits. Elle peut être dérivée de l'horloge du processeur (appelé TOSC) en la divisant par un facteur de division appropriée. Il y a sept options possibles. 2 x TOSC 4 x TOSC 8 x TOSC 16 x TOSC 32 x TOSC 64 x TOSC RC interne Pour Corriger D Conversion A /, l'horloge de conversion A / D (TAD) doit être aussi courte que possible, mais plus grande que le TAD minimum. Voir le tableau 26-25 dans PIC18F4520 Fiche (ou table 28-29 dans PIC18F4550 / PIC18F2550 fiche technique). Il est 0.7uS pour le dispositif PIC18FXXXX et 1.4uS pour le dispositif PIC18LFXXXX. Nous utilisons le 20MHz dans notre carte de développement PIC et nous avons donc mis prédiviseur de 32 TOSC. Notre = 20MHz FOSC Par conséquent, notre FOSC = 1 / 20MHz = 50ns 32 tosc = 32 x 50 nS = 1600nS = 1.6uS Vous pouvez calculer la valeur pour le facteur de division en utilisant l'exemple ci-dessus dans le cas où vous utilisez un cristal d'autre fréquence. Nous pouvons calculer le facteur de division pour le temps d'acquisition. Le temps d'acquisition peut être spécifiée en termes de TAD. Il peut être réglé sur l'une des valeurs suivantes. 20 x TAD 16 x TAD 12 x TAD 8 x TAD 6 x TAD 4 x TAD 2 x TAD 0 x TAD Comme nous l'avons vu au paragraphe ci-dessus que le temps d'acquisition est sûre 2.45uS, donc nous choisissons 2 x TAD que le temps d'acquisition. TACQ = 2 x TAD = 2 x 1.6uS (TAD Remplacement = 1.6uS) = 3.2uS Programmation ADC dans HI-TECH C pour MPLAB ADC se connecte au CPU PIC par 3 registres de contrôle et 2 registres de données. Les registres de contrôle sont utilisés pour configurer et donner des commandes à l'ADC. Ils fournissent également l'état de l'ADC. Les deux registres de données contiennent les 10 bits de données converties. Étant donné que chaque registre PIC18 est de 8 bits par conséquent 2 registres sont tenus de conserver les données de 10 bits. Les trois registres de contrôle sont: ADCON0 - Utilisé pour sélectionner le canal d'entrée analogique, démarrer la conversion, vérifier si la conversion est effectuée et pour activer / désactiver le module. (Nous utilisons cela dans ADCRead () fonction.) ADCON1 - Utilisé pour sélectionner la référence de tension, et pour configurer des ports comme analogique du numérique. (Nous laissons ces valeurs par défaut) ADCON2 - Utilisé pour sélectionner le format de données de l'ADC, Set temps d'acquisition, la configuration ADC d'horloge (de configuration dans ADCInit () fonction) D'abord, nous configurons l'ADC à nos besoins dans la fonction ADCInit (). 20 // Fonction pour initialiser le module ADC ADCInit void () { // Nous utilisons la valeur par défaut pour +/- Vref // VCFG0 = 0, VCFG1 = 0 // Cela signifie + Vref = Vdd (5v) et -Vref = GEN // Configuration Port // Nous utilisons également la valeur par défaut ici aussi // Tous les canaux anx sont Analog /* ADCON2 * ADC Résultat justifié à droite. * Temps d'acquisition = 2TAD * Horloge de conversion = 32 Tosc */ ADCON2 = 0b10001010; } Vous pouvez voir que nous ne mettons en place la configuration ADCON2 register.We l'ADC comme suit format Résultat d'ADC droit Justified (expliqué ci). Le temps d'acquisition = 2TAD (calculé ci-dessus) Horloge de conversion en 32 TOSC (calculé ci-dessus) Nous laissons également ADCON1 aux valeurs par défaut, ce qui implique ce qui suit + VREF est 5v (Notre Vcc) -VREF Est GND Tous les canaux anx sont analogiques. Si vous avez besoin d'eux pour faire E / S numériques configuration alors en conséquence. Maintenant, nous avons notre configuration du module ADC, chaque fois que vous voulez faire la conversion ADC dans un canal, il suffit d'appeler ADCRead (). Par exemple, pour faire la conversion ADC sur le canal 0 et stocker le résultat dans la variable val appeler la fonction de la manière suivante. val = ADCRead (0); C'est tout ! la valeur analogique présente sur AN0 sera convertie en une valeur numérique et stockée dans la variable val . Comment ADCRead () fonctionne ? // Fonction pour lire le canal ADC donnée (0-13) unsigned int ADCRead (unsigned char ch) { if (ch> 13) return 0; // Invalid Channel ADCON0 = 0x00; ADCON0 = (ch << 2); // Sélection ADC canal ADON = 1; // Passer sur le module adc Godone = 1; // Démarrer la conversion tandis que (Godone); // Attendez que la conversion pour terminer ADON = 0; // Désactiver adc retour ADRES; } 21 La première ligne vérifie si le canal d'entrée fournie par l'utilisateur est valide ou non. Ensuite, nous sélectionnons le canal ADC. Après nous passons sur le module en réglant ADON bit. Ensuite, la conversion est démarrée en réglant le bit Godone. Dès que le bit Godone est mis à 1 le module démarre le processus de conversion. Tant que le module est occupé le bit Godone est élevé, et lorsque la conversion est terminée, il est effacé par le module. Donc, nous attendons dans la boucle tant que Godone est élevé. Rappelez-vous que la boucle while est vide (un point virgule juste après), aussi longtemps que Godone est élevé, le CPU ne fera rien. Dès Godone est effacé nous passons au module en écrivant 0 au bit ADON. Enfin, le résultat de la conversion est renvoyé, le registre ADRES détient la valeur convertie. programme de démonstration pour tester PIC code ADC Nous allons écrire un programme très simple qui démontrera l'utilisation des ADC. Le programme va lire ADC canal 0 (AN0 PIN) et afficher sa valeur sur l'écran LCD. Le programme est destiné à être compilé en utilisant le HI-TECH C pour PIC18 utilisant le MPLAB IDE. / ************************************************* ******************* ANALOGIQUE DIGITAL CONVERTOR INTERFACE PROGRAMME D'ESSAI -------------------------------------------------- ------Programme simple : se connecter avec l'ADC interne du PIC MCU. Le programme lit et affiche la valeur d'entrée analogique à AN0. Nécessite la bibliothèque PIC18 lcd. MCU: PIC18FXXXX série de Microchip. Compiler: HI-TECH C Compiler pour PIC18 MCU (http://www.htsoft.com/) ************************************************** ****************** / #include <htc.h> #include "lcd.c" // Paramètres de puce __CONFIG (1,0x0200); __CONFIG (2,0X1E1F); __CONFIG (3,0X8100); __CONFIG (4,0X00C1); __CONFIG (5,0XC00F); // Simple Routine Retard Wait void (unsigned de retard int) { pour (; retard; delay--) __delay_us (100); } // Fonction pour initialiser le module ADC ADCInit void () { // Nous utilisons la valeur par défaut pour +/- Vref // VCFG0 = 0, VCFG1 = 0 // Cela signifie + Vref = Vdd (5v) et -Vref = GEN // Configuration Port // Nous utilisons également la valeur par défaut ici aussi // Tous les canaux anx sont Analog /* ADCON2 * ADC Résultat justifié à droite. * Temps d'acquisition = 2TAD * Horloge de conversion = 32 Tosc */ ADCON2 = 0b10001010; } // Fonction pour lire le canal ADC donnée (0-13) unsigned int ADCRead (unsigned char ch) 22 { if (ch> 13) return 0; // Invalid Channel ADCON0 = 0x00; ADCON0 = (ch << 2); // Sélection ADC canal ADON = 1; // Passer sur le module adc Godone = 1; // Démarrer la conversion tandis que (Godone); // Attendez que la conversion pour terminer ADON = 0; // Désactiver adc retour ADRES; } void main () { // Laissez le module LCD démarrage Attendre (100); // Initialisation du module LCD LCDInit (LS_BLINK); // Initialisation du module ADC ADCInit (); // Effacer le module LCDClear (); // Ecrire une chaîne à courant pos du curseur LCDWriteString ( "ADC Test"); tandis que (1) { int val unsigned; // ADC Valeur val = ADCRead (0); // Lire canal 0 LCDWriteIntXY (0,1, val, 4); Attendre (1000); } } Le dspic 30F3010 comporte un seul ADC et 4 échantillonneurs bloqueurs (S/H). Ces derniers peuvent être lancés simultanément ou successivement. Auparavant, l'ADC doit être configuré : • configurées en AN à l'aide du registre ADPCFG. • • bit 2 ASAM), la manières dont les données sont sortis (ADCON1 bit 9-8 FORM) la source de lancement de l'ADC (ADCON1 bit 7-5 SSRC). • -8 CHPS), tous les combiens de séquence échantillonnage/conversion, une interruption ADC sera enclenchée (ADCON2 bit 5-2 SMPI), par défaut à chaque fois. • • • 1; Si on spécifie une interruption, on doit aussi configurer le _ADIF, _ADIE, éventullement la priorité, et ajouter la routine de service de l'interruption (ISR) spécifique. Elle doit lire les buffers de l'ADC. Exemple de lecture de 2 buffers 0 et 1 : void __attribute__((interrupt, auto_psv)) _ADCInterrupt () { 23 InfoLED=1; _ADIF = 0; a = ADCBUF0<<2; // 10 bits * 4 pour avoir 4096, Q12 : 4.12 pu b = ADCBUF1<<2; InfoLED=0; } 24