Je travaille sur un projet ATMega qui gardera du temps et j'essaie de le faire pour que vous ayez une option de temps logiciel (basé sur millis ()), DS1307 ou DS3231 (ChronoDot) RTC.
À la base, ce que je voudrais faire, c'est d'avoir des en-têtes pour un ChronoDot disponibles à souder, puis en quelque sorte dans le logiciel de détecter si le ChronoDot est connecté et de passer à l'utilisation de cela. Il serait généralement assez facile de vérifier que le DS1307 ou DS3231 est présent car ils utilisent le même registre I2C, mais après cette vérification initiale, ils s'écartent un peu les uns des autres et ce dernier a plus de fonctionnalités. Je veux donc toujours déterminer lequel est connecté. En général, je prévois d'avoir une place directement à bord pour souder dans le DS1307 comme option par défaut et le support du DS3231 serait avec un ChronoDot complet uniquement via deux en-têtes à 4 broches. Le ChronoDot s'adapterait essentiellement à l'endroit où le DS1307 irait normalement (il ne serait pas rempli dans ce cas). La principale raison pour laquelle je me concentre spécifiquement sur le ChronoDot est qu'il ' s populaire, facile à acquérir et ne nécessite pas de soudure SMD pour l'utilisateur final (ceci pour un kit). Alors, voici ce que je pense ...
Les deux DS1307 et DS3231 ont une ligne Vbat sur la puce, mais ce n'est vraiment pas nécessaire pour rien. Cependant, le ChronoDot a une broche VBat réelle sur la carte de dérivation. Je pourrais peut-être brancher uniquement Vbat à partir de l'en-tête ChronoDot et non le DS1307 et le connecter à une broche d'entrée numérique sur mon ATMega. Mais faites abattre cette broche d'entrée à la masse par une résistance (vous ne savez pas vraiment quelle valeur ... peut-être 4,7 k?). Si ma théorie de l'EE est correcte, je peux alors lire cette broche et si j'obtiens un bas, il n'y a pas de chronodot mais si j'obtiens un haut, il y en a un.
Quelque chose comme ça:
simuler ce circuit - Schéma créé à l'aide de CircuitLab
Ma principale question ici est de savoir si cela va finir par vider la batterie de secours sur le RTC? Normalement, il n'y aurait pas de courant tiré de la batterie de secours pendant que l'alimentation principale, 5 V, est fournie, mais est-ce que le brancher à une entrée numérique lui permettrait de tirer tout le temps de la batterie? Ou, y a-t-il un mode dans lequel je devrais mettre la broche après l'avoir lue pour la "déconnecter", pour ainsi dire? Je sais que je pourrais le changer en sortie, mais je crois que si elle est définie comme sortie et faible, je mettrais essentiellement la batterie à la terre.
Quoi qu'il en soit, mes cours d'EE étaient il y a longtemps. Toute aide sur la théorie ici serait appréciée.
Presque tous ces schémas de mesure impliquant des résistances, s'ils sont connectés en permanence, entraîneront une consommation de courant inacceptable et une réduction de la durée de vie de la petite batterie au lithium qui alimente ces appareils.
La solution est alors de faire en sorte que le circuit de mesure ne consomme du courant que brièvement pendant des intervalles peu fréquents, lorsque vous effectuez réellement une mesure.
Pour un test numérique, cela pourrait être aussi simple que d'utiliser un menu déroulant interne configurable par logiciel et de le configurer uniquement en tant que menu déroulant pendant une brève période de temps entourant le test. Cependant, vous devrez examiner les complications possibles d'une tension sur la broche lorsque le microcontrôleur effectuant la mesure n'est pas alimenté / en mode veille.
Une mesure analogique deviendrait plus délicate, mais des idées similaires pourraient être appliquées. Par exemple, vous pouvez connecter la résistance inférieure d'un diviseur de tension (haute impédance par rapport aux E / S) à une broche de sortie, et la maintenir faible uniquement pendant un temps entourant la mesure. Ou vous pourriez même être en mesure de construire un circuit RC avec un petit condensateur à faible fuite et une seule broche d'E / S que vous pourriez piloter en sortie, puis configurer en tant qu'entrée analogique et mesurer la tension après un certain temps. Si la tension de seuil numérique de l'appareil est cohérente (attention à la température!), Vous pouvez même faire une mesure analogique avec une entrée numérique de cette façon, en mesurant le temps nécessaire au condensateur pour se charger à la tension de seuil.
la source
Le DS3231 a une température interne que vous pouvez lire. Vous pouvez émettre une commande sur I2C pour lire la température, si vous avez une réponse, vous avez le DS3231, sinon vous avez le DS1307.
la source