Dans ce projet, nous allons interfacer LDR avec le microcontrôleur ATMEGA8, et avec cela nous pouvons mesurer l'INTENSITÉ LUMINEUSE dans la zone. Dans ATMEGA8, nous allons utiliser la fonction ADC (conversion analogique-numérique) 10 bits pour mesurer l'intensité lumineuse.
Am LDR est un transducteur qui change sa résistance lorsque la LUMIÈRE tombe sur sa surface change. Le capteur LDR est disponible en différentes tailles et formes.
Les LDR sont fabriqués à partir de matériaux semi-conducteurs pour leur permettre d'avoir leurs propriétés de sensibilité à la lumière. Il existe de nombreux types de matériaux utilisés, mais celui qui est populaire est le SULFURE DE CADMIUM (CdS). Ces LDR ou PHOTO REISTORS fonctionnent sur le principe de la «Photo Conductivité». Maintenant, ce que dit ce principe, c'est que chaque fois que la lumière tombe sur la surface du LDR (dans ce cas), la conductance de l'élément augmente ou en d'autres termes la résistance du LDR diminue lorsque la lumière tombe sur la surface du LDR. Cette propriété de diminution de la résistance pour le LDR est obtenue parce qu'il s'agit d'une propriété du matériau semi-conducteur utilisé en surface. Les LDR sont utilisés la plupart du temps pour détecter la présence de lumière ou pour mesurer l'intensité de la lumière.
Il existe différents types de LDR comme indiqué dans la figure ci-dessus et chacun a des spécifications différentes. En règle générale, un LDR aura 1MΩ-2MΩ à l'obscurité totale, 10-20KΩ à 10 LUX, 2-5KΩ à 100 LUX. Le graphique typique de résistance au LUX d'un LDR est montré dans la figure.
Comme le montre la figure ci-dessus, la résistance entre les deux contacts du capteur diminue avec l'intensité lumineuse ou la conductance entre deux contacts du capteur augmente.
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, R1 est ici une résistance constante et R2 est un capteur FORCE 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 le poids.
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 augmente, pour l'instant nous n'avons pas à nous soucier de l'effet de chargement.
Ce que nous allons faire ici, c'est que 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
Matériel: ATMEGA8, alimentation (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), condensateur 100uF, condensateur 100nF (5 pièces), résistance 10KΩ, LDR (Light Dependent Resistor).
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 16 * 2 LCD, 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 pour LCD sont indiquées ci-dessous:
PIN1 ou VSS ------------------ masse
PIN2 ou VDD ou VCC ------------ + 5v d'alimentation
PIN3 ou VEE --------------- masse (donne le meilleur contraste pour un débutant)
PIN4 ou RS (sélection de registre) --------------- PB0 de uC
PIN5 ou RW (lecture / écriture) ----------------- masse (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 ----------------------------- PD4 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é la communication 8 bits (D0-D7) mais ce n'est pas obligatoire, nous pouvons utiliser la communication 4 bits (D4-D7) mais avec le programme de communication 4 bits devient un peu complexe. 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 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.
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.
Donc, avec la résistance de LDR sur l'écran LCD 16x2, nous pouvons le faire correspondre avec le graphique LUX pour obtenir l'intensité lumineuse.