Réveiller un Atmega328p

Bonjour

Je suis sur un petit projet simple tournant autour d’un Atmega328p. Voilà, je voudrais que ce Mcu soit la plupart du temps en veille mode power down forever. La question que je me pose c’est est-ce que l’on peut le réveiller en faisant la chose suivante:
Je dispose sur l’entrée A0, un pont diviseur ( R + LDR), lorsque le niveau de tension est supérieure à 1,7V , le code fait passer la sortie digitale 10 à 1 relié à INT0 pour réveiller le MCU. Je compte utiliser le code à développer suivant:

  • LowPower.h
  • attachInterrupt(2, Traitement, RISING)
  • LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF)

Un petit schéma pour illustrer :

Merci pour vos avis

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Bonjour,

Je ne comprend pas ce que tu veux faire.
Si l'atmega328 est en mode veille il ne peut pas exécuter de code donc il ne peut pas tester la tension (surtout si en plus tu dévalides l'ADC) et actionner une sortie.

Pour réveiller l'atmega328 il faudrait un comparateur externe.

Peut être que l'on peut utiliser le comparateur interne de l'atmega328. Il faudrait vérifier s'il est actif en mode sleep (je pense que oui).

Si le MCU se réveille avec un 1 sur le INT0, pourquoi ne pas mettre ton pont diviseur directement sur cette broche ?

Bonjour
Oui en ce qui concerne ADC je le configurais en ADC_ON. Par contre je ne savais pas qu’il y avait un comparateur interne. Je n’en ai pas mis en externe pour minimiser l’encombrement et la consommation.

Parce que ce niveau de tension est très fluctuant fonction du niveau de luminosité, trop linéaire.

Désolé
Merci

Mais en quoi le fait de le faire passer par l'ADC ou un comparateur interne, le rendra moins fluctuant ?

Tu pourrais m’en dire un peu plus sur comment utiliser le comparateur analogique j’ai lu que c’était les pin AIN0 et AIN1 qui étaient concernés. Faut il appliquer une référence de tension sur Aref ?
J’ai cherché des exemples en vain.
Merci

Le mieux serait d’utiliser le comparateur analogique interne, merci à kamill de m’en avoir parlé. Mais j’aimerais avoir un exemple d’utilisation , un tuto ou des d’explications.
Pour répondre à ta question, en fait je lis la valeur sur A0 et je fais un traitement selon le valeur lue.
Mais je voudrais que le mcu soit en veille et se réveille quand le seuil de tension est atteint.

Ba oui, mais ta source sera toujours fluctuante, je comprends bien que si le MCU était réveiller tu pourrait faire un traitement comme une sorte de moyenne, pour amortir les fluctuations, comme le ferais un condensateur en gros.
Mais à partir du moment que ton MCU est en veille et que tu ne peux pas utiliser de code, je ne vois pas trop la différence entre utiliser un comparateur interne ou externe ou le trigger(qui est surement aussi un comparateur).

Si je peux me permettre encore une question, tu indique que la tension est fluctuante, mais de quel ordre?
Il n'y a pas un seuil ou tu peux être sûre que ta photorésistante est assez éclairer pour réveiller ton MCU ?

Désolé pour toutes ces questions, si tu trouve ça un peu hors sujet, je comprendrais :slight_smile:

Non.
Tu mets une tension sur AiN0 et une tension sur AIN1.
Sur AIN0 tu mets le pont diviseur avec la LDR et sur AIN1 tu mets un pont diviseur qui te donnera le seuil (1.7V sur ton schéma).

Ici tu as un exemple d'utilisation du comparateur avec interruption.

Merci pour votre aide.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.