Relais temporisés
bonjour tout le monde,
je me décide enfin à venir demander de l'aide car je commence à être à court de solution..
je désirerais faire basculer un relais pour deux périodes données, pour par exemple le déclencher 5 min toutes les 25 min.
- avec delay() : ce n'est pas possible parce qu'à l'avenir, il y aura plusieurs relais et donc stopper le programme n'est pas envisageable.
- avec millis() : ça fonctionne très bien mais d'après ce que j'ai vu il y quand même une limite dans le temps et on ne peut pas faire de reset. j'aimerai que mon projet puisse tourner 24h/24h pendant plusieurs mois. il est peut être possible de faire redémarrer l'arduino au bout d'un mois pour tout remettre à zéro mais cela nécessiterait de stocker quelques variables dans l'eeprom et je préférerais m'en passer. je garde cette solution au cas où..
- avec la librairie timer.h : là je pense avoir trouver exactement ce qu'il me faut, sauf que en pratique je dois mal m'y prendre car mon relais commute plusieurs fois avant de lancer la tempo...
voici une partie du code :
les variables h_ontime et m_ontime sont correspondent aux temps de déclenchement saisis via un encodeur et un lcd
j'ai du mal à comprendre pourquoi cela ne fonctionne pas, le relais bascule plusieurs fois très vite puis déclenche la temporisation puis une fois celle-ci terminée rebascule plusieurs fois avant de relancer une tempo.. comme si l'instruction "étatrelais = low" était exécutée avant que la tempo soit terminée..
pouvez-vous m'aider, s'il vous plaît?
merci beaucoup et à bientôt!!
je me décide enfin à venir demander de l'aide car je commence à être à court de solution..
je désirerais faire basculer un relais pour deux périodes données, pour par exemple le déclencher 5 min toutes les 25 min.
- avec delay() : ce n'est pas possible parce qu'à l'avenir, il y aura plusieurs relais et donc stopper le programme n'est pas envisageable.
- avec millis() : ça fonctionne très bien mais d'après ce que j'ai vu il y quand même une limite dans le temps et on ne peut pas faire de reset. j'aimerai que mon projet puisse tourner 24h/24h pendant plusieurs mois. il est peut être possible de faire redémarrer l'arduino au bout d'un mois pour tout remettre à zéro mais cela nécessiterait de stocker quelques variables dans l'eeprom et je préférerais m'en passer. je garde cette solution au cas où..
- avec la librairie timer.h : là je pense avoir trouver exactement ce qu'il me faut, sauf que en pratique je dois mal m'y prendre car mon relais commute plusieurs fois avant de lancer la tempo...
voici une partie du code :
code: [select]
// temporisation relais 1
if(etatrelais1 == high)
{
time1.pulse(sortie1, h_ontime1*3600000 + m_ontime1*60000, high);
etatrelais1 = low;
}
else if (etatrelais1 == low)
{
time1.pulse(sortie1, h_offtime1*3600000 + m_offtime1*60000, low);
etatrelais1 = high;
}
}
les variables h_ontime et m_ontime sont correspondent aux temps de déclenchement saisis via un encodeur et un lcd
j'ai du mal à comprendre pourquoi cela ne fonctionne pas, le relais bascule plusieurs fois très vite puis déclenche la temporisation puis une fois celle-ci terminée rebascule plusieurs fois avant de relancer une tempo.. comme si l'instruction "étatrelais = low" était exécutée avant que la tempo soit terminée..
pouvez-vous m'aider, s'il vous plaît?
merci beaucoup et à bientôt!!
bonjour,
ca fonctionne très bien avec millis().
si tu fais une différence comme millis()-debut, il n'y pas de problème de débordement.
ca fonctionne très bien avec millis().
si tu fais une différence comme millis()-debut, il n'y pas de problème de débordement.
Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Relais temporisés
arduino
Comments
Post a Comment