Pages: [1] 2   Go Down
Author Topic: Commande de volet (manuel, horaire, detection de lumiere)  (Read 3961 times)
0 Members and 1 Guest are viewing this topic.
Belgique
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjours tout le monde
j'ai comme projet avec ma nouvelle(3 semaines) carte arduino uno de remplacer la comande du volet de mon salon
mais comme je n'aime pas me simplifier la vie , je voudrait que la commande se fasse de 3 façons
1manuel 2 ou 3 bouttons :
       1 pour monter
       1 pour descendre
       1 pour arreter la montée/descente n'importe qd
2commande horaire : monte a X heure descent a X heure
3(photosensible): le volet descent si la lumiere du salon est allumer

je ne compte pas vous demander de faire le code a ma place mais plutot des conseille sur le choix du code
excuser moi d'avance car je suis un novice en programation pour l'electronique par contre je me defend

merci d'avence
 
Logged

arduino uno
debian squeeze
eee 1000H
arduino 1.0.5

Belgique
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je rajoute ici un petit descriptif de "comment je vois le code"
je commence par les com , je remplirai les blanc au fur et a mesure
je me suis clairement inspirer des examples trouver avec le soft mais j'ai des gros trous

Code:
//commande de volet

//definition des constantes
const int buttonPin1 = 2;     //boutton "montée"
const int buttonPin2 = 3;    //boutton "descente"
const int ledPin1 =  13;      // relay "Montéé"
const int ledPin2 =  12;      // relay "Descente"
const int ledPin3 =  11;      // led etat volet (on= up) (off= down)

//definition des variables
int buttonState1 = 0;       
int buttonState2 = 0;

//definition des entree et sorties
void setup(){
  pinMode(ledPin1, OUTPUT);     
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
}

void loop(){
//si bp1 est presser et que led d'etat est off
//le volet monte
for (int i=0; i <= 23; i++){   //la led clignotte pendant 25 sec (durée de la montée)
        digitalWrite(ledPin3, HIGH); // set the LED on
        delay(500);                  // wait for 0,5 second
        digitalWrite(ledPin3, LOW);  // set the LED off
        delay(500);                  // wait for 0,5 second
      }
//le moteur s'arrete
//la led d'etat rest alumé

//si bp2 est presser et que led d'etat est on
//le volet descent
for (int i=0; i <= 23; i++){   //la led clignotte pendant 25 sec (durée de la descente)
        digitalWrite(ledPin3, HIGH); // set the LED on
        delay(500);                  // wait for 0,5 second
        digitalWrite(ledPin3, LOW);  // set the LED off
        delay(500);                  // wait for 0,5 second
      }   
//le volet s'arrete
//la led d'etat s'eteint

//si il est X heure
//le volet monte

//si il est X heure
//le volet descent
}



Logged

arduino uno
debian squeeze
eee 1000H
arduino 1.0.5

Belgique
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

alors j'ai un peu plus de code que sur le post plus haut mais j'esite deja et je me demande si je dois metre un bp3 stop pour arreter la montée/descente du volet a tout moment ou si il y a moyen de faire une difference  entre appuis long appuis cour sur les bp pour qu'avec un appuis court il monte/descende completement
et avec un appuis long (+2sec) il s'arrete des qu'on relache le bp??
dans les 2 cas quelle type de "boucle" dois-je prendre ?? if...else, switch...case, ????

merci de votre aide de vos conseiles
Logged

arduino uno
debian squeeze
eee 1000H
arduino 1.0.5

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Alors pour la circonstance ton projet m'interesse smiley-wink

J'ai en vu quelque chose de similaire pour une gestion domotique avec entre autre, chauffage centrale et volet roulant pour l'essentielle.
Je ne sais pas de quelle manière tu gères tes signaux de commande, relais, thyristors, etc. Pour ma part, j'ai opté pour une carte relais 8 canaux piloté en rs485.
D'ailleurs, je suis dans l'inconnu quant à la manière dont s'arrête un volet roulant, tout en supposant que se soit mécanique genre un fin de course ou quelque chose dans le genre. Peut-être pourras-tu m'apporter des précisions sur cet aspect !!!

Pour ton code, j'opterais pour une série de case. C'est plus lisible.
Il faudrait donc dans un premier temps détecter le front montant correspondant à un appui et ensuite évaluer la durée de cet appui. Soit court, soit long. Une variable prendrait cette valeur et rentrerait dans la série des cas possibles (case).

Par contre, pour la sonde de lumière, je ne comprends pas trop pourquoi tu ne la mets pas à l'exterieure plutôt. Le but est me semble-t'il de fermer les volets roulants dés que la nuit tombe.
Je ne programmerais pas non plus de montée du volant automatisé...grasses matinées obliges  smiley-grin

@+

Zoroastre.
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est cool ça ! étant moi aussi sur un projet domotique je suit ton post avec attention ... ca pourrais bien me servir dans peu de temps ^^
Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Belgique
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut et merci de votre attention
alors toi zoroastre tu me dis de metre un switch...case dans le "void loop" c'est bien ca ??

ps: petite precision je compte integré ça (la carte + une petite alim + une plaque avec les bp et capteur de lumiere) dans un blochet deja presant a coté de la fenetre derriere un "cache trou" modifier
le fait que le volet s'ouvre a ex:8h du matin ne me derange pas vu que c'est uniquement ds mon salon,
et si je met un capteur de lumiere c'est pour ne pas que si j'allume qd il fait sombre on voit ce qu'il s'y passe depuis l'exterieur.
je pourait trouver un moyen plus sur que le capteur de lumiere mais je n'y suis pas encore (je pensse que c'est encore la partie la plus facile a coder)

merci
Logged

arduino uno
debian squeeze
eee 1000H
arduino 1.0.5

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

avant tout, il faut que tu détermines comment est géré ton volet: arret par butée mécanique (-> la commande actuelle est faite par 2 boutons à accrochage) ou arret par détection de surcharge (cas des volets bubbendorf par exemple: impulsion sur des boutons poussoirs).
Seulement après tu sauras comment coder.
Pour les volets par détection de surcharge, c'est un peu plus compliqué, mais j'ai fait une bibliothèque qui gère ça.

Gromain
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

Belgique
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je ne connais pas les detailes mais la commande actuelle c'est un interrupteur a 3 boutton qd tu enfonce le boutton pour monte il monte et s'arete au max  pareil pour le bas mais si j'appuie sur le boutton du milieu ça relache les 2 autres
Logged

arduino uno
debian squeeze
eee 1000H
arduino 1.0.5

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, c'est le premier cas de figure, le plus simple: le 230V du moteur passe directement dans les contacts des BP.
Utilises donc des relais pour remplacer les BP
Moyennant de petites adaptations, la bibliothèque que j'ai écrit fonctionnera parfaitement.

Gromain
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

Belgique
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

                    _________________________________
                 /O
               /
Ph-------O{                                                             cable volet

                  O_________________________________
                
N____________________________________________

désolé pour ce schéma rudimentaire
Logged

arduino uno
debian squeeze
eee 1000H
arduino 1.0.5

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

oui,c'est bien ça.
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Gromain59, comment savoir avec certitude si le volet est à interruption mécanique ou électrique, je vais certainement avoir à me poser la question prochainement ???

Pour la partie codage, la bibliothèque de Gromain59 demande expertise, un lien peut être ???

L'avantage des switch/case est qu'ils ne monopolisent pas trop les ressources de l'arduino, on peut donc envisager d'effectuer d'autres tâches. Au demeurant, il y a plusieurs manières différentes de coder ton process.

@+

Zoroastre.
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Belgique
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

avec certitude je ne sais pas mais j'ai deja laisser le boutton "montée" enfoncer tt la journée y a pas de probleme mais c'est pour eviter tt risques que je limite le temps a 25 sec (en realité il faut au volet 22.3sec)
Logged

arduino uno
debian squeeze
eee 1000H
arduino 1.0.5

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Gromain59, comment savoir avec certitude si le volet est à interruption mécanique ou électrique
- si la commande est faite par impulsion sur un bouton poussoir, alors l'arret est par détection de surcharge.
- si la commande est faite par appui (avec maintien) sur un bouton à accrochage, alors c'est que le bouton alimente le moteur en permanence, et la puissance est coupée par des détecteurs de fin de course réglable au niveau de l'axe du moteur.
superdd est dans ce dernier cas (voir son schéma dans post précédent)

Concernant la bibliothèque, elle ne monopolise pas les ressources du µC, je n'utilise pas de delay(), et permet donc de faire autre chose  smiley-wink

Gromain
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Merci pour ces précisions Gromain59 smiley-wink

Je suis donc dans le même cas de figure que vous messieurs (3 boutons maintiens). Par contre, je m'interroge sur le cablage électrique. Je compte utiliser des relais qui en toute logique doivent se positionner en parallèle des commandes manuelles. Que se passerait-t'il si l'interrupteur est bloqué en postion montée par exemple et que j'excite mon relais pour descendre le volet. On se retrouve avec une incohérence qui pourrait mettre en danger le moteur ???

@+

Zoroastre.
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Pages: [1] 2   Go Up
Jump to: