bonjour ,je suis débutant et nulos de la programmation sur arduino uno et j'aimerai réaliser, en remplacement de mon ancienne carte de porte sectionnelle qui ne fonctionne plus , un programme avec un bouton poussoir et 2 relais;le problème est que le moteur doit s'arrêter en ouverture ou fermeture au bout de 15s.
le bout de programme que j'ai fait ,m'active la tempo pour le relais ouverture mais après le relais fermeture est encore sous tension ,par contre je peux relancer le relais ouverture avec tempo
question: est ce possible avec un seul bouton poussoir de realiser ce programme ? et comment ?
merci pour votre aide
const int switchPin = 2;
const int ouverture = 13;
const int fermeture = 7;
long startTime;
long duration = 10000;
Bonjour
Pour être dans la commande de volet roulant en ce moment, un petit conseil à propos des relais. N'utilise pas le 1er pour l'ouverture et le 2ème pour la fermeture. Une erreur de programmation et tu active tes 2 relais, ce qui voudrait dire que le volet doit monter et descendre en même temps. Le moteur risque de ne pas apprécier.
Utilise plutôt un relais pour l'activation ou non du moteur et le 2ème pour choisir le sens de déplacement (monter ou descendre), les deux étant reliés en série.
Phase alim sur le commun du relais 1
Contact repos du relais 1 sur commun du relais 2
Contact repos du relais 2 sur moteur commande 1
Contact travail du relais 2 sur moteur commande 2
Neutre moteur au neutre alim
Terre ensemble
Dans le programme, il ne reste plus qu'a gérer le sens de déplacement et l'activation ou non du moteur.
Autre chose, y-a-t-il un capteur de fin de course sur ton volet? Si non, faut arrêter le volet au bon endroit sinon ton moteur va forcer, que ce soit en descente ou en monté.
Pour ton programme, j'ai pas trop regarder, mais ta variable "duration" devrait être une constante. et le revoir complètement
si tu suis mon conseil.
Je tiens à faire une première remarque : gaffe avec ce genre de bricolage, les portes automatiques ne sont pas inoffensives, le fils d'amis à mes parents est dans un fauteuil roulant nourri à la paille depuis ses 10 ans et ce pour le restant de ses jours car il s'est coincé le coup dans un portail automatique dont la sécurité n'a pas fonctionné. Donc soit extrêmement prudent ! Normalement ce genre de système possède un suivi du courant du moteur qui permet de détecter un effort excessif du moteur (un moteur bloqué consomme beaucoup plus de courant que s'il est libre).
Pour ton programme, je te suggère de passer par un switch/case sur une variable qui sera incrémentée par le bouton
si appui sur bouton {
incrémentation variable
si variable>3 variable = 0
stockage de millis dans variable temps
}
si variable temps + 15s<= millis() variable=0
switch variable {
case 0
digitalWrite(monter,high)
digitalWrite(descendre,low)
case 2
digitalWrite(monter,low)
digitalWrite(descendre,high)
default
digitalWrite(monter,low)
digitalWrite(descendre,low)
}
A noter que l'effet de rebond n'est pas gérer ici. Au premier appui ça monte, au deuxième ça stoppe, au troisième ça descend, au quatrième ça stoppe.