Table des matières:
- Étape 1: Qu'est-ce qu'un ADC ?
- Étape 2: Comment fonctionne l'ADC dans AVR-Microcontrôleur
- Étape 3: Formule de conversion ADC
- Étape 4: Comment configurer l'ADC dans ATmega8 ?
- Étape 5: Sélection ADLAR
- Étape 6: Sélection ADCSRA
- Étape 7: Si vous voulez profiter de la valeur ADC, vous devez effectuer certains travaux énumérés ci-dessous
- Étape 8: Définir la valeur ADC
- Étape 9: Configurer la broche de la LED de sortie
- Étape 10: Configurer le matériel ADC
- Étape 11: Activer l'ADC
- Étape 12: Commencer les conversions analogiques-numériques
- Étape 13: PENDANT QUE POUR TOUJOURS
- Étape 14: À la fin, le code complet est
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-23 14:46
Dans ce tutoriel, vous saurez tout sur l'ADC dans le microcontrôleur avr
Étape 1: Qu'est-ce qu'un ADC ?
Un ADC, ou convertisseur analogique-numérique, permet de convertir une tension analogique en une valeur numérique pouvant être utilisée par un microcontrôleur. Il existe de nombreuses sources de signaux analogiques que l'on peut souhaiter mesurer. Il existe des capteurs analogiques qui mesurent la température, l'intensité lumineuse, la distance, la position et la force, pour n'en nommer que quelques-uns.
Étape 2: Comment fonctionne l'ADC dans AVR-Microcontrôleur
L'AVR ADC permet au microcontrôleur AVR de convertir des tensions analogiques en valeurs numériques avec peu ou pas de pièces externes. L'ATmega8 dispose d'un ADC à approximation successive de 10 bits. L'ATmega8 a 7 canaux ADC à PortC. L'ADC a une broche de tension d'alimentation analogique séparée, AVCC. AVCC ne doit pas différer de plus de ± 0,3 V de VCC. La référence de tension peut être découplée de l'extérieur au niveau de la broche AREF. AVCC est utilisé comme référence de tension. L'ADC peut également être configuré pour fonctionner en continu (le mode de fonctionnement libre) ou pour n'effectuer qu'une seule conversion.
Étape 3: Formule de conversion ADC
Où Vin est la tension sur la broche d'entrée sélectionnée et Vref la référence de tension sélectionnée
Étape 4: Comment configurer l'ADC dans ATmega8 ?
Les registres suivants sont utilisés pour la mise en œuvre de l'ADC dans ATmega8
Sélection du multiplexeur ADC
Étape 5: Sélection ADLAR
Résultat ADC Left Adjust Le bit ADLAR affecte la présentation du résultat de la conversion ADC dans le registre de données ADC. Écrivez-en un à ADLAR pour ajuster le résultat à gauche. Sinon, le résultat est ajusté à droite
Lorsqu'une conversion ADC est terminée, le résultat est trouvé dans ADCH et ADCL. Lorsque ADCL est lu, le registre de données ADC n'est pas mis à jour tant que ADCH n'est pas lu. Par conséquent, si le résultat est laissé ajusté et qu'il ne faut pas plus de 8 bits de précision, il suffit de lire ADCH. Sinon, ADCL doit être lu en premier, puis ADCH. Bits de sélection de canal analogique La valeur de ces bits sélectionne les entrées analogiques qui sont connectées à l'ADC.
Étape 6: Sélection ADCSRA
• Bit 7 – ADEN: Activer l'ADC L'écriture de ce bit sur un active l'ADC. En l'écrivant à zéro, l'ADC est désactivé
• Bit 6 – ADSC: ADC Start Conversion En mode Single Conversion, écrivez ce bit sur un pour démarrer chaque conversion. En mode Free Running, écrivez ce bit sur un pour démarrer la première conversion.
• Bit 5 – ADFR: ADC Free Running Select Lorsque ce bit est défini (un), l'ADC fonctionne en mode Free Running. Dans ce mode, l'ADC échantillonne et met à jour les registres de données en continu. Effacer ce bit (zéro) mettra fin au mode de fonctionnement libre.
• Bit 4 – ADIF: indicateur d'interruption ADC Ce bit est activé lorsqu'une conversion ADC se termine et que les registres de données sont mis à jour. L'interruption de conversion ADC terminée est exécutée si le bit ADIE et le bit I dans SREG sont définis. ADIF est effacé par le matériel lors de l'exécution du vecteur de traitement d'interruption correspondant. Alternativement, ADIF est effacé en écrivant un un logique dans le drapeau.
• Bit 3 – ADIE: activation de l'interruption ADC Lorsque ce bit est écrit sur un et que le bit I dans SREG est défini, l'interruption de conversion ADC terminée est activée.
• Bits 2:0 – ADPS2:0: Bits de sélection du pré-échelonneur ADC Selon la fiche technique, ce pré-scalaire doit être réglé de sorte que la fréquence d'entrée ADC soit comprise entre 50 KHz et 200 KHz. L'horloge ADC est dérivée de l'horloge système à l'aide d'ADPS2:0. Ces bits déterminent le facteur de division entre la fréquence XTAL et l'horloge d'entrée de l'ADC.
Étape 7: Si vous voulez profiter de la valeur ADC, vous devez effectuer certains travaux énumérés ci-dessous
- Définir la valeur ADC
- Configurer la broche LED de sortie
- Configurer le matériel ADC
- Activer l'ADC
- Démarrer les conversions analogiques-numériques
- TANT QUE pour toujours
SI la valeur ADC est supérieure à la valeur définie, allumez la LED SINON éteignez la LED
Étape 8: Définir la valeur ADC
Code: uint8_t ADCValue =128;
Étape 9: Configurer la broche de la LED de sortie
Code: DDRB|= (1 << PB1);
Étape 10: Configurer le matériel ADC
Configurer le matériel ADC
Cela se fait en définissant des bits dans les registres de contrôle de l'ADC. Tout d'abord, définissons le préscalaire pour l'ADC. Selon la fiche technique, ce préscalaire doit être réglé de sorte que la fréquence d'entrée du CAN soit comprise entre 50 KHz et 200 KHz. L'horloge ADC est dérivée de l'horloge système. Avec une fréquence système de 1MHz, un pré-échelonneur de 8 donnera une fréquence ADC de 125 Khz. La pré-mise à l'échelle est définie par les bits ADPS dans le registre ADCSRA. Selon la fiche technique, les trois bits ADPS2:0 doivent être réglés sur 011 pour obtenir le 8 préscaler.
Code: ADCSRA |= (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Ensuite, définissons la tension de référence ADC. Ceci est contrôlé par les bits REFS dans le registre ADMUX. Ce qui suit définit la tension de référence sur AVCC.
Code: ADMUX |= (1 << REFS0);
Pour définir le canal transmis par le multiplexeur à l'ADC, les bits MUX dans le registre ADMUX doivent être définis en conséquence. Puisque nous utilisons ADC5 ici
Code: ADMUX&=0xF0; ADMUX|=5;
Afin de mettre l'ADC en mode de fonctionnement libre, définissez le bit ADFR bien nommé dans le registre ADCSRA:
Code: ADCSRA |= (1 << ADFR);
Une dernière modification des paramètres sera effectuée pour faciliter la lecture de la valeur ADC. Bien que l'ADC ait une résolution de 10 bits, cette quantité d'informations n'est souvent pas nécessaire. Cette valeur de 10 bits est répartie sur deux registres de 8 bits, ADCH et ADCL. Par défaut, les 8 bits les plus bas de la valeur ADC se trouvent dans l'ADCL, les deux bits supérieurs étant les deux bits les plus bas de l'ADCH. En définissant le bit ADLAR dans le registre ADMUX, nous pouvons aligner à gauche la valeur ADC. Cela place les 8 bits les plus élevés de la mesure dans le registre ADCH, le reste dans le registre ADCL. Si nous lisons ensuite le registre ADCH, nous obtenons une valeur de 8 bits qui représente notre mesure de 0 à 5 volts sous la forme d'un nombre de 0 à 255. Nous transformons essentiellement notre mesure ADC de 10 bits en une mesure de 8 bits. Voici le code pour définir le bit ADLAR:
Code:
ADMUX |= (1 << ADLAR); Cela termine la configuration du matériel ADC pour cet exemple. Deux autres bits doivent être définis avant que l'ADC ne commence à prendre des mesures.
Étape 11: Activer l'ADC
Pour activer l'ADC, définissez le bit ADEN dans ADCSRA:
Code: ADCSRA |= (1 << ADEN);
Étape 12: Commencer les conversions analogiques-numériques
Pour démarrer les mesures ADC, le bit ADSC dans ADCSRA doit être défini:
Code: ADCSRA |= (1 << ADSC);
À ce stade, l'ADC commencerait à échantillonner en continu la tension présentée sur l'ADC5. Le code à ce stade ressemblerait à ceci:
Étape 13: PENDANT QUE POUR TOUJOURS
La seule chose qui reste à faire est de tester la valeur ADC et de régler les LED pour afficher une indication haut/bas. Étant donné que la lecture ADC dans ADCH a une valeur maximale de 255, une valeur de test de th a été choisie pour déterminer si la tension était élevée ou basse. Une simple instruction IF/ELSE dans les boucles FOR nous permettra d'allumer la bonne LED:
Code
if(ADCH > ADCValeur)
{
PORTB |= (1 << PB0); // Allumer la LED
}
autre
{
PORTB&= ~(1 << PB0); // Éteindre la LED
}
Étape 14: À la fin, le code complet est
Code:
#comprendre
int principal (vide)
{
uint8_t ADCValue =128;
DDRB |= (1 << PB0); // Définir LED1 comme sortie
ADCSRA |= (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Réglez l'ADC préscalaire sur 8 - // Taux d'échantillonnage 125KHz 1MHz
ADMUX |= (1 << REFS0); // Définir la référence ADC sur AVCC
ADMUX |= (1 << ADLAR); // Ajuster le résultat ADC à gauche pour permettre une lecture facile sur 8 bits
ADMUX&=0xF0;
ADMUX|=5; // Les valeurs MUX devaient être modifiées pour utiliser ADC0
ADCSRA |= (1 << ADFR); // Définir l'ADC en mode d'exécution libre
ADCSRA |= (1 << ADEN); // Activer l'ADC
ADCSRA |= (1 << ADSC); // Lancer les conversions A2D while(1) // Loop Forever
{
if(ADCH > ADCValue)
{
PORTB |= (1 << PB0); // Allume la LED1
}
autre
{
PORTE &= ~(1 << PB1); // Éteindre la LED1
}
}
renvoie 0;
}
Première publication de ce tutoriel Cliquez ici
Conseillé:
Arduino en tant que FAI -- Graver un fichier hexadécimal dans AVR -- Fusible dans l'AVR -- Arduino en tant que programmeur : 10 étapes
Arduino en tant que FAI || Graver un fichier hexadécimal dans AVR || Fusible dans l'AVR || Arduino en tant que programmeur :………………………Veuillez vous abonner à ma chaîne YouTube pour plus de vidéos……..Cet article est tout à propos d'arduino en tant que fournisseur d'accès Internet. Si vous souhaitez télécharger un fichier hexadécimal ou si vous souhaitez configurer votre fusible dans l'AVR, vous n'avez pas besoin d'acheter un programmeur, vous pouvez le faire
Introduction au microcontrôleur CloudX : 3 étapes
Introduction au microcontrôleur CloudX : le microcontrôleur CloudX est un micro-ordinateur matériel et logiciel open source qui vous permet de créer vos propres projets interactifs. CloudX est une petite carte à puce qui permet aux utilisateurs de lui dire quoi faire avant de prendre toute action, il accepte différents k
Microcontrôleur AVR. Basculez les LED à l'aide d'un interrupteur à bouton-poussoir. Anti-rebond de bouton poussoir. : 4 étapes
Microcontrôleur AVR. Basculez les LED à l'aide d'un interrupteur à bouton-poussoir. Anti-rebond de bouton-poussoir. : Dans cette section, nous allons apprendre comment créer un code C de programme pour ATMega328PU pour basculer l'état des trois LED en fonction de l'entrée d'un interrupteur à bouton. En outre, nous avons exploré une solution au problème de « Switch Bounce ». Comme d'habitude, nous allons
Gérez 100 appareils dans les applications, les organisations, les rôles et les utilisateurs Ubidots : 11 étapes
Gérer 100 appareils dans les applications, les organisations, les rôles et les utilisateurs d'Ubidots : à cette occasion, j'ai décidé de tester la fonctionnalité de la plate-forme IoT Ubidots pour la gestion des utilisateurs dans le cas où elle aurait de nombreux appareils pour plusieurs organisations ou entreprises sous la même Plateforme Ubidots. Information du maire : vous
Configuration des bits de fusible du microcontrôleur AVR. Création et téléchargement dans la mémoire flash du microcontrôleur du programme de clignotement des voyants : 5 étapes
Configuration des bits de fusible du microcontrôleur AVR. Création et téléchargement dans la mémoire flash du microcontrôleur du programme de clignotement des LED. : Dans ce cas, nous allons créer un programme simple en code C et le graver dans la mémoire du microcontrôleur. Nous allons écrire notre propre programme et compiler le fichier hexadécimal, en utilisant Atmel Studio comme plate-forme de développement intégrée. Nous allons configurer le fusible bi