Dans ce tutoriel, nous allons interfacer le capteur FLEX avec le microcontrôleur ATMEGA8. Dans ATMEGA8, nous allons utiliser la fonction ADC (conversion analogique-numérique) 10 bits pour faire ce travail. Maintenant, l' ADC dans ATMEGA ne peut pas prendre une entrée supérieure à + 5V.
Qu'est-ce qu'un capteur Flex?
Un capteur FLEX est un transducteur qui change sa résistance lorsque sa forme est modifiée. Il est illustré dans la figure ci-dessous.
Ce capteur est utilisé pour détecter les changements de linéarité. Ainsi, lorsque le capteur FLEX est plié, la résistance est considérablement pliée. Ceci est illustré dans la figure ci-dessous.
Maintenant, pour convertir ce changement de résistance en changement de tension, nous allons utiliser un circuit diviseur de tension. Dans ce réseau résistif, nous avons une résistance constante et une autre résistance variable. Comme le montre la figure ci-dessous, R1 est une résistance constante et R2 est un capteur FLEX qui agit comme une résistance. Le point médian de la branche est pris à la mesure. Lorsque la résistance R2 change, le Vout change avec lui de manière linéaire. Donc, avec cela, nous avons une tension qui change avec la linéarité.
Maintenant, la chose importante à noter ici est que l'entrée prise par le contrôleur pour la conversion ADC est aussi faible que 50µAmp. Cet effet de charge du diviseur de tension basé sur la résistance est important car le courant tiré de Vout du diviseur de tension augmente le pourcentage d'erreur, pour l'instant nous n'avons pas à nous soucier de l'effet de chargement.
Nous allons prendre deux résistances et former un circuit diviseur de sorte que pour un Vin 25Volts, nous obtenons un 5Volt Vout. Il suffit donc de multiplier la valeur de Vout par «5» dans le programme afin d'obtenir la tension d'entrée réelle.
Composants requis
MATÉRIEL: ATMEGA8, alimentation (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), condensateur 100uF, condensateur 100nF (5 pièces), résistance 100KΩ.
LOGICIEL: Atmel studio 6.1, progisp ou flash magic.
Schéma de circuit et explication de fonctionnement
Dans le circuit PORTD de ATMEGA8 est connecté au port de données LCD. Dans l'écran LCD 16x2, il y a 16 broches sur tout s'il y a un rétro-éclairage, s'il n'y a pas de rétro-éclairage, il y aura 14 broches. On peut alimenter ou laisser les broches du rétroéclairage. Or, dans les 14 broches, il y a 8 broches de données (7-14 ou D0-D7), 2 broches d'alimentation en énergie (1 et 2 ou VSS et VDD ou GND et + 5v), 3 ème broches de la commande de contraste (VEE-contrôle l'épaisseur des caractères doivent être illustré) et 3 broches de commande (RS & RW & E).
Dans le circuit, vous pouvez observer que je n'ai pris que deux broches de contrôle. Le bit de contraste et READ / WRITE ne sont pas souvent utilisés afin qu'ils puissent être court-circuités à la masse. Cela met l'écran LCD en mode de contraste et de lecture le plus élevé. Nous avons juste besoin de contrôler les broches ENABLE et RS pour envoyer des caractères et des données en conséquence.
Les connexions LCD avec ATmega8 sont les suivantes:
PIN1 ou VSS à la terre
Alimentation PIN2 ou VDD ou VCC à + 5v
PIN3 ou VEE à la masse (donne le meilleur contraste pour un débutant)
PIN4 ou RS (sélection de registre) à PB0 de uC
PIN5 ou RW (lecture / écriture) à la terre (met l'écran LCD en mode lecture facilite la communication pour l'utilisateur)
PIN6 ou E (Activer) à PB1 de uC
PIN7 ou D0 à PD0 de uC
PIN8 ou D1 à PD1 de uC
PIN9 ou D2 à PD2 de uC
PIN10 ou D3 à PD3 de uC
PIN11 ou D4 à D4 de uC
PIN12 ou D5 à PD5 de uC
PIN13 ou D6 à PD6 de uC
PIN14 ou D7 à PD7 de uC
Dans le circuit, vous pouvez voir que nous avons utilisé une communication 8 bits (D0-D7) mais ce n'est pas obligatoire, nous pouvons utiliser une communication 4 bits (D4-D7) mais avec un programme de communication 4 bits devient un peu complexe, nous sommes donc allés avec 8 bits la communication. (Consultez également ce tutoriel: interface LCD 16x2 avec microcontrôleur AVR)
Donc, à partir de la simple observation du tableau ci-dessus, nous connectons 10 broches de l'écran LCD au contrôleur dans lequel 8 broches sont des broches de données et 2 broches sont pour le contrôle.
La tension aux bornes de R2 n'est pas complètement linéaire; ce sera bruyant. Pour filtrer, les condensateurs de bruit sont placés à travers chaque résistance dans le circuit diviseur comme indiqué sur la figure.
Le pot 1K ici est d'ajuster la précision de l'ADC. Parlons maintenant de l'ADC d'ATMEGA8.
Dans ATMEGA8, nous pouvons donner une entrée analogique à l'un des QUATRE canaux de PORTC, peu importe le canal que nous choisissons car tous sont identiques, nous allons choisir le canal 0 ou PIN0 de PORTC.
Dans ATMEGA8, l'ADC a une résolution de 10 bits, de sorte que le contrôleur peut détecter un changement minimum de Vref / 2 ^ 10, donc si la tension de référence est de 5V, nous obtenons un incrément de sortie numérique pour chaque 5/2 ^ 10 = 5mV. Ainsi, pour chaque incrément de 5 mV dans l'entrée, nous aurons un incrément de un à la sortie numérique.
Nous devons maintenant définir le registre d'ADC en fonction des termes suivants, 1. Tout d'abord, nous devons activer la fonction ADC dans ADC.
2. Ici, nous allons obtenir une tension d'entrée maximale pour la conversion ADC est de + 5V. Nous pouvons donc configurer la valeur maximale ou la référence de l'ADC à 5V.
3. Le contrôleur a une fonction de conversion de déclenchement qui signifie que la conversion ADC n'a lieu qu'après un déclenchement externe, car nous ne voulons pas que nous ayons besoin de définir les registres pour que l'ADC fonctionne en mode de fonctionnement libre continu.
4. Pour tout ADC, la fréquence de conversion (valeur analogique en valeur numérique) et la précision de la sortie numérique sont inversement proportionnelles. Donc, pour une meilleure précision de la sortie numérique, nous devons choisir une fréquence moindre. Pour l'horloge ADC normale, nous réglons la prévente de l'ADC à la valeur maximale (2). Puisque nous utilisons l'horloge interne de 1MHZ, l'horloge de l'ADC sera (1000000/2).
Ce sont les quatre seules choses que nous devons savoir pour démarrer avec ADC.
Les quatre fonctionnalités ci-dessus sont définies par deux registres:
ROUGE (ADEN): Ce bit doit être défini pour activer la fonction ADC d'ATMEGA.
BLEU (REFS1, REFS0): Ces deux bits sont utilisés pour définir la tension de référence (ou tension d'entrée max que nous allons donner). Puisque nous voulons avoir une tension de référence de 5V, REFS0 doit être défini par la table.
JAUNE (ADFR): Ce bit doit être défini pour que l'ADC fonctionne en continu (mode de fonctionnement libre).
PINK (MUX0-MUX3): Ces quatre bits sont destinés à indiquer le canal d'entrée. Puisque nous allons utiliser ADC0 ou PIN0, nous n'avons pas besoin de définir de bits comme dans la table.
MARRON (ADPS0-ADPS2): ces trois bits servent à régler le préscalaire pour ADC. Puisque nous utilisons un prescalaire de 2, nous devons définir un bit.
VERT FONCE (ADSC): ce bit est défini pour que l'ADC commence la conversion. Ce bit peut être désactivé dans le programme lorsque nous devons arrêter la conversion.
L'interfaçage du capteur FLEX avec ATmega8 est expliqué étape par étape dans le code C ci-dessous.