Table des matières:

Condensateur ATTiny85 : 4 étapes
Condensateur ATTiny85 : 4 étapes

Vidéo: Condensateur ATTiny85 : 4 étapes

Vidéo: Condensateur ATTiny85 : 4 étapes
Vidéo: Programmer un attiny85 - EP03 Projet Dé Electronique 2024, Juillet
Anonim
Condensateur ATTiny85
Condensateur ATTiny85
Condensateur ATTiny85
Condensateur ATTiny85

Cette instructable est pour un compteur de condensateur basé sur l'ATTiny85 avec les caractéristiques suivantes.

  • Basé sur ATTiny85 (DigiStamp)
  • Écran OLED SSD1306 0,96"
  • Mesure de fréquence pour condensateurs de faible valeur 1pF - 1uF à l'aide de l'oscillateur 555
  • Mesure du temps de charge pour les condensateurs de haute valeur 1uF - 50000uF
  • 2 ports séparés utilisés pour les méthodes visant à minimiser la capacité étoilée
  • Deux valeurs de courant utilisées pour le temps de charge afin de minimiser le temps pour les gros condensateurs
  • La méthode 555 se met à zéro au démarrage, peut être remise à zéro avec un bouton-poussoir
  • Un test rapide utilisé pour sélectionner la méthode à utiliser pour chaque cycle de mesure.
  • La précision de la méthode du temps de charge peut être améliorée grâce à la prise en charge du réglage de la fréquence d'horloge OSCVAL

Étape 1: Schéma et théorie

Schéma et théorie
Schéma et théorie

Le schéma montre l'ATTiny pilotant l'écran OLED SSD1306 via une interface I2C. Il est directement alimenté par une batterie LiOn 300mAh et un point de charge est inclus qui peut être utilisé avec un chargeur externe compatible LiOn.

La première méthode de mesure est basée sur la mesure de la fréquence d'un oscillateur 555 à fonctionnement libre. Celui-ci a une fréquence de base déterminée par les résistances et un condensateur qui doit être de haute précision car cela détermine la précision des mesures. J'ai utilisé un condensateur polystyrène 820pF 1% que j'avais mais d'autres valeurs autour de 1nF peuvent être utilisées. La valeur doit être saisie dans le logiciel avec une estimation de toute capacité parasite (~20pF). Cela a donné une fréquence de base d'environ 16KHz. La sortie du 555 est introduite dans PB2 de l'ATTiny qui est programmé comme un compteur matériel. En mesurant le compte sur une période d'environ 1 seconde, la fréquence peut être déterminée. Ceci est fait au démarrage pour déterminer la fréquence de base. Lorsqu'un condensateur testé est ajouté en parallèle au condensateur de base, la fréquence est abaissée et lorsqu'elle est mesurée et comparée à la fréquence de base, la valeur de la capacité ajoutée peut être calculée.

La caractéristique intéressante de cette méthode est que la valeur calculée ne dépend que de la précision du condensateur de base. La période de mesure n'a pas d'importance. La résolution dépend de la résolution des mesures de fréquence qui est assez élevée, de sorte que même une très petite capacité ajoutée peut être mesurée. Le facteur limitant semble être le "bruit de fréquence" de l'oscillateur 555 qui pour moi équivaut à environ 0,3pF.

La méthode peut être utilisée sur une plage décente. Pour améliorer la portée, je synchronise la période de mesure sur la détection des fronts des impulsions entrantes. Cela signifie que même les oscillations à basse fréquence comme 12 Hz (avec un condensateur de 1 uF) sont mesurées avec précision.

Pour les condensateurs plus grands, le circuit est conçu pour utiliser une méthode de synchronisation de charge. Dans ce cas, le condensateur testé est déchargé pour s'assurer qu'il commence à 0, puis chargé à travers une résistance connue de la tension d'alimentation. Un ADC dans l'ATTiny85 est utilisé pour surveiller la tension du condensateur et le temps pour passer de 0% à 50% de charge est mesuré. Cela peut être utilisé pour calculer la capacité. Comme la référence pour l'ADC est également la tension d'alimentation, cela n'affecte pas la mesure. Cependant, la mesure absolue du temps pris dépend de la fréquence d'horloge ATTiny85 et les variations de celle-ci affectent le résultat. Une procédure peut être utilisée pour améliorer la précision de cette horloge en utilisant un registre d'accord dans l'ATTiny85 et ceci est décrit plus loin.

Pour décharger le condensateur à 0 V, un MOSFET à canal n est utilisé avec une résistance de faible valeur pour limiter le courant de décharge. Cela signifie que même les condensateurs de grande valeur peuvent être déchargés rapidement.

Pour charger le condensateur 2 valeurs de résistance de charge sont utilisées. Une valeur de base donne des temps de charge raisonnables pour les condensateurs de 1 uF à environ 50 uF. Un MOSFET à canal p est utilisé en parallèle dans une résistance inférieure pour permettre de mesurer des condensateurs de valeur plus élevée dans un intervalle raisonnable. Les valeurs choisies donnent un temps de mesure d'environ 1 seconde pour des condensateurs jusqu'à 2200uF et proportionnellement plus long pour des valeurs plus importantes. A l'extrémité inférieure de la valeur, la période de mesure doit être maintenue raisonnablement longue pour permettre de déterminer le passage par le seuil de 50 % avec une précision suffisante. Le taux d'échantillonnage de l'ADC est d'environ 25uSec, donc une période minimale de 22mSec donne une précision raisonnable.

Comme l'ATTiny a des E/S limitées (6 broches), l'allocation de cette ressource doit être effectuée avec soin. 2 broches sont nécessaires pour l'affichage, 1 pour l'entrée de la minuterie, 1 pour l'ADC, 1 pour le contrôle de décharge et 1 pour le contrôle du taux de charge. Je voulais une commande à bouton-poussoir pour permettre la remise à zéro à tout moment. Cela se fait en détournant la ligne I2C SCL. Comme les signaux I2C sont à drain ouvert, il n'y a donc pas de conflit électrique en permettant au bouton de tirer cette ligne vers le bas. L'affichage cessera de fonctionner avec le bouton enfoncé mais cela n'a aucune conséquence car il reprend lorsque le bouton est relâché.

Étape 2: Construction

Construction
Construction
Construction
Construction
Construction
Construction

J'ai fait cela dans une petite boîte imprimée en 3D de 55 mm x 55 mm conçue pour contenir les 4 composants principaux; la carte ATTiny85 DigiStamp, l'écran SSD1306, la batterie LiOn et un petit morceau de carte prototype contenant la minuterie 55 et l'électronique de contrôle de charge.

Boîtier sur

Pièces nécessaires

  • Carte ATTiny85 DigiStamp. J'ai utilisé une version avec un connecteur microUSB qui est utilisé pour télécharger le firmware.
  • Écran OLED SSD1306 I2C
  • Batterie Li-ion 300 mAh
  • Petite bande de planche de prototypage
  • Puce de minuterie CMOS 555 (TLC555)
  • MOSFET n-canal AO3400
  • MOSFET à canal p AO3401
  • Résistances 4R7, 470R, 22K, 2x33K
  • Condensateurs 4u7, 220u
  • Condensateur de précision 820pF 1%
  • Interrupteur à glissière miniature
  • 2 connecteurs à 3 broches pour le port de charge et les ports de mesure
  • Bouton poussoir
  • Enceinte
  • Brancher le fil

Outils nécessaires

  • Fer à souder à pointe fine
  • Pince à épiler

Composez d'abord le circuit de la minuterie 555 et les composants de charge sur la carte prototype. Ajoutez des fils volants pour les connexions externes. Fixez l'interrupteur à glissière, le point de charge et le port de mesure dans le boîtier. Fixez la batterie et faites le câblage d'alimentation principal au point de charge, interrupteur coulissant. Connectez la terre au bouton-poussoir. Fixez l'ATTiny85 en place et terminez le branchement.

Vous pouvez apporter quelques modifications d'économie d'énergie à la carte ATTiny avant de l'installer, ce qui réduira un peu le courant et prolongera la durée de vie de la batterie.

www.instructables.com/Reducing-Sleep-Curre…

Ce n'est pas critique car il y a un interrupteur d'alimentation pour éteindre le compteur lorsqu'il n'est pas utilisé.

Étape 3: Logiciel

Le logiciel pour ce mesureur de condensateur peut être trouvé à

github.com/roberttidey/CapacitorMeter

Ceci est un croquis basé sur Arduino. Il a besoin de bibliothèques pour l'affichage et I2C qui peuvent être trouvées à

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Ceux-ci sont optimisés pour que l'ATTiny occupe un minimum de mémoire. La bibliothèque I2C est une méthode bit bang à grande vitesse qui permet d'utiliser n'importe quelle 2 broches. Ceci est important car les méthodes I2C utilisant le port série utilisent PB2 qui est en conflit avec l'utilisation de l'entrée de minuterie/compteur nécessaire pour mesurer la fréquence 555.

Le logiciel est structuré autour d'une machine d'état qui prend la mesure à travers un cycle d'états. Un ISR prend en charge le débordement du compteur de minuterie pour étendre le matériel 8 bits. Un deuxième ISR prend en charge l'ADC fonctionnant en mode continu. Cela donne la réponse la plus rapide au circuit de charge franchissant le seuil.

Au début de chaque cycle de mesure, une fonction getMeasureMode détermine quelle est la méthode la plus appropriée à utiliser pour chaque mesure.

Lorsque la méthode 555 est utilisée, la temporisation du comptage ne démarre que lorsque le compteur a changé. De même, la temporisation n'est arrêtée qu'après l'intervalle de mesure nominal et lorsqu'un front est détecté. Cette synchronisation permet un calcul précis de la fréquence même pour les basses fréquences.

Lorsque le logiciel démarre, les 7 premières mesures sont des « cycles d'étalonnage » utilisés pour déterminer la fréquence de base du 555 sans condensateur ajouté. Les 4 derniers cycles sont moyennés.

Il existe un support pour ajuster le registre OSCAL pour le réglage de l'horloge. Je suggère de définir OSCCAL_VAL sur 0 initialement en haut de l'esquisse. Cela signifie que l'étalonnage d'usine sera utilisé jusqu'à ce que le réglage soit effectué.

La valeur du condensateur de base 555 doit être ajustée est requise. J'ajoute également un montant estimé pour la capacité parasite.

Si différentes résistances sont utilisées pour les méthodes de charge, les valeurs CHARGE_RCLOW et CHARGE_RCHIGH dans le logiciel devront également être modifiées.

Pour installer le logiciel, utilisez la méthode normale de digistamp pour télécharger le logiciel et connecter le port USB lorsque vous y êtes invité. Laissez l'interrupteur d'alimentation en position d'arrêt car l'alimentation sera fournie par l'USB pour cette opération.

Étape 4: Fonctionnement et étalonnage avancé

Le fonctionnement est très simple.

Après avoir allumé l'appareil et attendu la fin du zéro d'étalonnage, connectez le condensateur à tester à l'un des deux ports de mesure. Utilisez les ports 555 pour les condensateurs de faible valeur < 1uF et le port de charge pour les condensateurs de valeur plus élevée. Pour les condensateurs électrolytiques, connectez la borne négative au point de terre commun. Pendant le test, le condensateur sera chargé jusqu'à environ 2V.

Le port 555 peut être remis à zéro en maintenant le bouton-poussoir enfoncé pendant environ 1 seconde et en le relâchant. Assurez-vous que rien n'est connecté au port 555 pour cela.

Étalonnage avancé

La méthode de charge repose sur la fréquence d'horloge absolue de l'ATTiny85 pour mesurer le temps. L'horloge utilise l'oscillateur RC interne agencé pour donner une horloge nominale de 8 MHz. Bien que la stabilité de l'oscillateur soit assez bonne pour les variations de tension et de température, sa fréquence peut être dépassée de quelques pour cent même s'il est calibré en usine. Cet étalonnage définit le registre OSCCAL au démarrage. L'étalonnage d'usine peut être amélioré en vérifiant la fréquence et en effectuant un réglage plus optimal de la valeur OSCCAL pour l'adapter à une carte ATTiny85 particulière.

Je n'ai pas encore réussi à intégrer une méthode plus automatique dans le firmware, j'utilise donc la procédure manuelle suivante. Deux variantes sont possibles en fonction des mesures externes disponibles; soit un fréquencemètre capable de mesurer la fréquence de la forme d'onde triangulaire sur le port 555, soit une source d'onde carrée de fréquence connue, par ex. 10KHz avec des niveaux 0V/3,3V qui peuvent être connectés au port 555 et outrepasser la forme d'onde pour forcer cette fréquence dans le compteur. J'ai utilisé la deuxième méthode.

  1. Démarrez le compteur sur sa puissance normale sans condensateurs connectés.
  2. Connectez le fréquencemètre ou le générateur d'ondes carrées au port 555.
  3. Redémarrez le cycle d'étalonnage en appuyant sur le bouton.
  4. À la fin du cycle d'étalonnage, l'écran affichera la fréquence telle que déterminée par le compteur et la valeur OSCCAL actuelle. Notez que l'utilisation répétée du cycle d'étalonnage basculera entre l'affichage de la fréquence mesurée et l'absence d'affichage normal.
  5. Si la fréquence affichée est inférieure à ce qui est connu, cela signifie que la fréquence d'horloge est trop élevée et vice versa. Je trouve qu'un incrément OSCCAL ajuste l'horloge d'environ 0,05%
  6. Calculez une nouvelle valeur OSCCAL pour améliorer l'horloge.
  7. Entrez la nouvelle valeur OSCCAL dans OSCCAL_VAL en haut du micrologiciel.
  8. Reconstruisez et téléchargez le nouveau firmware. Répétez les étapes 1 à 5 qui devraient afficher la nouvelle valeur OSCCAL et la nouvelle mesure de fréquence.
  9. Si nécessaire, répétez les étapes jusqu'à ce que le meilleur résultat soit obtenu.

Il est important de noter qu'il est important d'effectuer la partie mesure de ce réglage lorsque vous utilisez une alimentation normale et non USB pour minimiser tout décalage de fréquence dû à la tension d'alimentation.

Conseillé: