Arduino : les secrets de l’analogique

Comparaison rapide, ADC et référence externe : c’est ici

a marqué ce sujet comme résolu.

Tout le monde se secoue ! :D

J’ai commencé (dimanche 27 août 2017 à 17h32) la rédaction d’un article au doux nom de « Arduino : les secrets de l’analogique » et j’ai pour objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limites pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l’adresse suivante :

Notons qu’il s’agit d’un contenu défié pour les défis de Clem ; aussi, je cherche des relectures principalement techniques, même si les validations orthographiques / syntaxiques sont bienvenues.

En ce qui concerne le contenu, il me reste à retravailler les parties 3 et 4 pour les faire fonctionner sur la Mega (changements mineurs), aussi, une partie bonus arrive, avec au programme :

V. Quelques bonus de la datasheet

  1. Le capteur de T° intégré
  2. Les autres déclencheurs de l’ADC
  3. Prévention et annulation du bruit
  4. La fonction analogRead au complet (ou presque)

Merci !

+3 -0

Voilà mes retours pour le moment, globalement pas grand chose à dire sur le fond, en revanche pour la forme, tu es spécialiste des phrases kilomètriques !! Ca les rends difficile à lire, et on est obligé de les relire pour les comprendre. Tu gagnerais à les couper en plusieurs morceaux au lieu d’abuser des points-virgules.

Je n’ai pas relu les codes, je te fais confiance de ce côté ^^

Voici les phrases trop longues à mon goût :

Deux fonctions nous seront particulièrement utiles pour travailler avec les registres, les fonctions sbi et cbi, qui vont passer, respectivement, un bit d’un registre à 1 ou à 0, par exemple, en reprenant notre exemple ci-dessus, pour faire au niveau du processeur l’équivalent d’un appel à analogRead, il faut utiliser :

-> Phrase trop longue !

déjà, un bloc de code bizarre en haut, et il s’agit d’un bout de code permettant, si les fonctions ne sont pas définies sur la carte, de les définir nous même, ce n’est donc pas important et je ne vais pas le mettre dans les exemples partiels, vous pouvez essayer sans, et si votre code ne fonctionne pas, tentez de les ajouter, ça pourrait corriger le problème ;

-> idem

La véritable fonction analogRead contient en plus du code pour sélectionner le pin à lire, ainsi que pour lire la valeur de sortie, mais le code complet ne nous intéresse pas ici, cet exemple n’est que, d’une part, pour vous expliquer le principe des registres, d’autre part, pour montrer la complexité du développement AVR.

-> Toujours pareil

A noter que cela permets d’utiliser uniquement des nombres pour les pins (0, 1, 2, …), mais pas les raccourcis qu’Arduino mets à notre disposition (A0, A1, A2), vous pouvez tester, mais comme ces pins correspondent en interne à des nombres de 14 à 21, et que nous avons ajouté un masque (le 0x07, 0000 0111 en binaire), le pin lu sera celui correspondant en décimal aux trois dernier bits du nombre correspondant à l’entrée analogique – c’est à ça que sert le masque, il n’écrit que sur les trois derniers bits du registre

-> encore

Ici, le capteur marqué TH est un capteur de température, il est monté, ainsi que les deux autres résistances de gauche, en pont diviseur – rappelez-vous, nous avons abordé cette notion plus haut, avec la création d’un référence de tension, vous n’avez pas besoin de comprendre le principe exact de fonctionnement (d’ailleurs, les résistances n’ont même pas de valeurs), mais simplement de voir que lorsque la température augmente, la résistance de la thermistance (le composant qui mesure la température) diminue, ce qui fait augmenter la tension sur V+, et va au bout d’un moment (quand la tension sera passée au dessus de V−), déclencher le comparateur, qui allumera la LED.

-> idem

Le premier bit, ACD, permets de désactiver le comparateur lorsqu’il est passé à 1, par conséquent, il faudra nous assurer qu’il est à 0 avant d’utiliser le comparateur ; aussi, les entrée du comparateur sont déjà utilisées pour des entrées numérique de l’Arduino, il nous faudra donc désactiver les entrées numériques sur les pins 7 et 6, à travers un registre fait pour ça, DIDR1, que nous passerons intégralement à 0 sauf pour les deux derniers bits. Aussi, le bit d’activation des interruptions (oui, comme dans la partie précédente, avec ADC_vec), doit être passé à 1, il s’agit du bit ACIE du registre ACSR.

-> idem

Dans certains cas, l’utilisation d’un pin numérique pour effectuer une comparaison peux sembler inutile, surtout quand des pins analogiques sont présents pour effectuer ces comparaison en temps normal ; voyons donc comment utiliser nos chers pins analogiques pour l’entrée négative du comparateur – notons que l’entrée + ne peux quand à elle pas être remplacée, il s’agira toujours de AIN0, située broche 6 du Uno.

-> Encore trop long

ce qui déclenchera une interruption lorsque de V+ deviendra supérieur à V−.

-> Typo

+0 -0

J’avance sur mon contenu, la dernière partie est en cours de rédaction et la relecture est quasiment terminée.

J’ai une question toutefois, avant d’envoyer le tout en validation dans quelques temps : pensez-vous que je doive publier en article (ce que je pensait faire) ou en tutoriel (qui en fait ne me semble plus si improbable) ?

+0 -0
Ce sujet est verrouillé.