| Next revision | Previous revision |
| fr:avr:adc [2010/03/22 14:45] – créée sdeniaud | fr:avr:adc [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| ====== Convertisseur analogique - numérique ====== | ====== Convertisseur analogique - numérique ====== |
| |
| Le convertisseur analogique numérique (ADC) transforme une valeur de tension analogique en une valeur numérique. Le niveau de tension autorisé en entrée de l'ADC d'un micro-contrôleur est entre 0 et 5.5V. La taille de la valeur numérique est de 10 bits, mais sa précision est de ±2 unités. L'erreur pourrait être plus importante, si l'énergie d'alimentation du micro-contrôleur n'est pas protégée contre les interférences. Un AVR contient des broches différentes pour la tension d'alimentation et la tension de comparaison. La tension d'alimentation séparée aide à contrer les interférences et ne doit pas être différent de 0.3V de différence avec la tension d'alimentation. La tension de comparaison défini la valeur de tension maximale. Par exemple, si la tension de comparaison est de 3V par rapport à une entrée de même tension sera lue comme 2<sup>10</sup> - 1 (1023). | Le convertisseur analogique numérique (ADC) transforme une valeur de tension analogique en une valeur numérique. Le niveau de tension autorisé en entrée de l'ADC d'un micro-contrôleur est entre 0 et 5.5V. La taille de la valeur numérique est de 10 bits, mais sa précision est de ±2 unités. L'erreur pourrait être plus importante, si l'énergie d'alimentation du micro-contrôleur n'est pas protégée contre les interférences. Un AVR contient des broches différentes pour la tension d'alimentation et la tension de comparaison. La tension d'alimentation séparée aide à contrer les interférences et ne doit pas être différent de 0.3V de différence avec la tension d'alimentation. La tension de comparaison définie la valeur de tension maximale. Par exemple, si la tension de comparaison est de 3V par rapport à une entrée de même tension sera lue comme 2<sup>10</sup> - 1 (1023). |
| |
| AVR ADC works on the principal of successive approximation. In short, the measured voltage is compared to specific voltage levels and the results are reported as a bit array. This method is relatively slow, as each bit in the final result is calculated separately. AVR spends 13 clock cycles for each measuring, except the first (on start-up), which takes 25 cycles. These cycles are not the controller's duty cycles though, but instead special cycles allocated to the ADC unit by the frequency divider. The ADC frequency should be 50-200 kHz to achieve maximum precision, on higher frequencies the precision fades. In some cases it is more important to get a large number of readings instead of maximum precision, in which case using a larger frequency is totally justified. According to AVR documentation, one measuring takes 13-260 µs. | L'AVR ADC travaille sur l'approximation successive. Bref, la tension mesurée est comparée aux niveaux de tension spécifiques et les résultats sont reportés dans la liste de bits. Cette méthode est relativement lente, comme chacun des bits du résultat final est calculé séparément. AVR passe 13 cycles d'horloge pour chacune mesure, sauf pour le premier (le start-up), qui prend 25 cycles. Ces cycles ne sont pas les cycles obligatoires du contrôleur, mais des cycles alloués spécialement à l'unité ADC par le diviseur de fréquence. La fréquence ADC devrait être 50-200 kHz pour avoir une précision maximale, sur des fréquences plus hautes la précision diminue. Dans quelques cas il est plus important d'obtenir un grand nombre de lectures au détriment de la précision maximale, dans le cas où l'utilisation d'une plus grande fréquence est totalement justifiée. Selon la documentation AVR, une mesure prend 13-260 µS. |
| |
| The measured value can be read as an 8- or 10-bit value. Since AVR itself is an 8-bit device, it has two 8-bit registers for storing the ADC values. It is possible to specify in the settings whether the first two or the last two bits go to a separate register. If the two younger bits, which characterize the result less, are separated, the result can be read as an 8-bit value - a combination like that is called a left aligned result. The other combination, where both registers are read and the value is in 10-bit format, is called a right aligned result. | La valeur mesurée peut être lue comme une valeur de 8- à 10- bits. L'AVR lui-même est un dispositif de 8 bits, il a deux registres de 8 bits pour stocker les valeurs d'ADC. Il est possible de spécifier dans leur configuration si les deux premiers ou les deux derniers bits vont à un registre séparé. Si les deux bits les plus bas, qui caractérisent le résultat le plus bas, sont séparés, le résultat peut être lu comme une valeur de 8 bits - une telle combinaison est appelé un résultat aligné à gauche. L'autre combinaison, où les deux registres sont lus et la valeur est dans un format de 10 bits, est appelée un résultat aligné à droite. |
| |
| A typical AVR has 8 analog voltage input channels, ATtiny series have only a few, some ATmega devices have 16, but there is always only one converter. To make it possible to use different inputs, the device has a built-in multiplexer. The input of the multiplexer is definable using a special register. The ADC unit has a few more properties: using the processor's sleep mode for converting to reduce the interference and the option to use an internal fixed comparison voltage (usually 2.65 V, in some models 1 V). | Un AVR typique a 8 canaux d'entrée de tension analogique, la série ATtiny en ont seulement quelques-uns, quelques dispositifs ATMEGA en ont 16, mais il n'y a seulement qu'un convertisseur. Pour permettre d'utiliser des entrées différentes, le dispositif a un multiplexeur incorporé. L'entrée du multiplexeur est définissable en utilisant un registre spécial. L'unité ADC a encore plus de propriétés : l'utilisation du mode de veille du processeur pour convertir pour réduire l'interférence et l'option pour utiliser une tension de comparaison fixe interne (d'habitude 2.65 V, dans quelques modèles 1 V). |
| |
| ~~PB~~ | <pagebreak> |
| |
| <box 100% round #EEEEEE|Example> | <box 100% round #EEEEEE|Exemple> |
| |
| Task: measure the voltage in ADC channel 3 of an ATmega128. The voltage is in range of 0-5 V and the result should be at 8-bit precision. | Tâche: une mesure de tension dans la voie 3 de l'ADC de l'ATmega128. La tension est comprise entre 0-5 V et la précision doit être de 8-bits. |
| |
| <code c> | <code c> |