Pages: [1] 2 3   Go Down
Author Topic: realisation porte automatique  (Read 5640 times)
0 Members and 1 Guest are viewing this topic.
france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir tout le monde
Je commence enfin mon premier projet arduino (et oui il été temps ^^)
Alors j'ai déjà quelques plans, j'ai aussi déjà commander mon arduino + shield Ethernet + carte 4 relais. J'ai tout le reste des plan dans ma tète  smiley
Mais les soucis commences déjà.
Je m'explique :
Il faut que j'alimente mon arduino avec du 9volts + ma carte relais 5volts + un ventilateur 12volts + un tout petit moteur de 9 volts.
Il faudrait donc que je prenne une allim 12volts et que je la régule en 9 et 5 volts ?
A oui aussi est se que cela dérange si je branche le petit moteur sur le même circuit 9v que la carte arduino ?
merci d'avance pour vos réponses =)
« Last Edit: May 12, 2011, 03:21:16 pm by jjdu67 » Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3847
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je crois que tu t'es répondu tout seul smiley

Après il faut juste bien faire attention aux puissances nécessaires, et tu peux étudier différentes solution suivant ton budget et la l'intégration dans ton projet, l'idéal étant un transfo fournissant plusieurs tensions ou plusieurs transfo pour les différentes tensions. Après redressement, lissage et si besoin utilisation d'un régulateur.
Logged


france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'aimerais partir sur un simple transfo 12v mais j'aurais besoin d'aide pour cree plusieurs tensions (5v-9v-9v-12v) a partir de celui ci .
j'ai entendu parler d'un pont diviseur de tension mais je ne sais pas si il n'est pas préférable de fabriquer un multi régulateur ?
Logged

Forum Moderator
Toulouse / France
Online Online
Full Member
*****
Karma: 5
Posts: 243
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Tout d'abord, pourquoi vouloir alimenter spécialement l'Arduino en +9V ?

De plus, quand d'une telle source (isolée, non régulée, ...) tu veux en tirer plusieurs tensions d'alimentation, il est plus que recommandé de passer par des régulateurs, du moins tant que les puissances demandées sont relativement faibles.

Ce que je te conseille, est de réaliser un simple shield multi-régulateur avec une fiche pour le 12V en entrée, notamment à l'aide de shield incorporant des breadboards.

Pourquoi un shield ? Car en reliant la sortie de ton régulateur +5V à la pin correspondant du connecteur du shield, tu pourras alimenter l'Arduino et l'ethernet shield dans la foulée.
De plus en fonction des caractéristiques de ton ventilateur 12V, il est possible que tu puisses le rentrer sur ton +12V source, sans écrouler la tension d'entrée de tes régulateurs.

Attention cependant, fait le bilan des puissances de ton installation, pour vérifier que tous tes éléments peuvent être alimentés par ton transformateur 12V.

J'espère avoir répondu à tes questions.

Stéphane
Logged

- Distributeur officiel Arduino - France

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Merci Stéphane d'avoir répondu a ma question .
Pourrais tu m'aider a réaliser se shield multi-régulateur ? (je n'est pas beaucoup de connaissance en électronique)
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

regarde la doc des régulateurs 7805 / 7812 et compagnie.

Ensuite, va faire un tour sur le site de sonelec (utilise google) dans la rubrique "montages"

Ensuite, fait des essais smiley-wink - commence par utiliser un crayon et une gomme, puis trace un schéma de montage qui te semble logique avec ce que tu auras appris sur les docs ci-dessus. Soumets le ici pour correction avant réalisation d'un proto.
note : tu peux aussi utiliser Fritzing
Logged

pas taper... sauf application de l'article 35 ...

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir
Alors voici mon premier schema :
[IMG=http://img807.imageshack.us/img807/2439/jhk001.jpg][/IMG]

Uploaded with ImageShack.us

Mais comme dit c'est vraiment basique . il me reste a calculer la valeur des resistances mais avant sa j'ai encore quelques questions :
- Est t-il vraiment necesaire de mettre un regulateur pour la partie 1?
- Est t-il possible de brancher l'arduino + shield ethernet  sur le meme regulateur que celui du moteur de la porte (regrouper partie 2 et 3) ?
 bref j'en est fini pour se soir
se projet me tient particuliérement a coeur (j'ai deja mis en place tout les cablages et presque tout le reste, il me manque plus que la fabrication de cette boite avec l'arduino et tout le reste)
Bon bonne nuit tout le monde je revien demain pour poster des photos et d'autres explications
« Last Edit: May 20, 2011, 04:48:10 pm by jjdu67 » Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1398
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut!

Très compliquée, ton alim, pour ce qu'elle doit faire.

Pourquoi n'utilises-tu pas une alim de PC, qui te fournira toutes les tensions nécessaires? elle te donnera du 12V sur 2A à 5A, deux lignes 5V (l'une à 1A pour l'arduino, l'autre à 20A pour tout le reste), et même du 3.3V, du -5V, du -12V... Le tout super régulé et déjà tout fait et surtout étudié pour la micro. il suffit juste de shunter deux fils et mettre une résistance sur le 5V de puissance pour assurer une consommation suffisante. Pour avoir du 9V, par contre, il te faudra un 7809 sur le 12V.

Dans ton schéma, si tu veux utiliser un 7812, il te faut un transfo de 15V (les régulateurs ont besoin d'une entrée d'au moins 3V au dessus de la sortie pour bien marcher), et tes régulateurs 5V vont beaucoup chauffer (la série 78/79 supporte mal la puissance au dessus de 5W pour des TO220). La puissance dissipée par un régulateur est (Vin-Vout) x Iout, et il faut rester en dessous de la moitié des limites du constructeur (même avec dissipateurs thermiques, cherche pas pourquoi, moi j'en ai cramé un paquet en les faisant marcher dans les autorisations constructeurs...).

Pour info, les régulateurs portent les noms suivants : 78_xx et 79_xx, 78 = régulateur positif et 79 = régulateur négatif, xx la tension de sortie, on en trouve des 03, 04, 05, 06... presque toutes les tensions. Ca évite le calcul de résistances...

Mais vois l'alim de PC... ça reste le plus simple...
Logged

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci pour les explications =)
je met tout sa un peu de coté car je viens de recevoir mon arduino.
Mais je suis vraiment débutant donc j'aurais besoin d'aide .
alors je m'explique : mon but est d'allumer la led1 grâce a une pression sur le bouton poussoir 1 et d'éteindre cette led1 2 seconde aprés. puis de ne rien faire tant que j'appuis pas sur l'interupteur2 .
une fois le l'interupteur2 enclenche, la led2 doit s'allumer pendant 2 secondes puis s’arrêter .
alors mon programme :

Code:
// --- Déclaration des constantes ---

const int APPUI=0; // constante état du BP - appui sur niveau bas
const int PAS_APPUI=1; // constante état du BP - relâché sur niveau haut


// --- constantes des broches ---

const int BP1=2; //declaration constante de broche
const int relais1=3; //declaration constante de broche
const int relais2=4; //declaration constante de broche
const int BP2=5;

// --- Déclaration des variables globales ---

int ETAT_BP1; // variable d'état du bouton poussoir
int ETAT_BP2; // variable d'état du bouton poussoir

// --- Initialisation des fonctionnalités utilisées ---

//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// --- ici instructions à exécuter au démarrage ---

pinMode(relais1, OUTPUT); //met la broche en sortie
pinMode(relais2, OUTPUT); //met la broche en sortie

pinMode(BP1, INPUT); //met la broche en entree
digitalWrite(BP1, HIGH) ; // activation du pullup de la broche en entrée
pinMode(BP2, INPUT); //met la broche en entree
digitalWrite(BP2, HIGH) ; // activation du pullup de la broche en entrée

} // fin de la fonction setup()
// ********************************************************************************

//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop(){ // debut de la fonction loop()

// --- ici instructions à exécuter par le programme principal ---

ETAT_BP1=digitalRead(BP1); // lit l'état du BP1 et met la valeur 0/1 dans la variable
ETAT_BP1=digitalRead(BP2); // lit l'état du BP2 et met la valeur 0/1 dans la variable


  if (ETAT_BP1==APPUI);{
  digitalWrite(relais1,1); // allume la LED
  delay(2000);                  // waits for a second
  digitalWrite(relais1,0);
  }
  
  if (ETAT_BP2==APPUI);{
  delay (3000);
  digitalWrite(relais2,1);
  delay(2000);
  digitalWrite(relais2,0);
}

// remarque : on aurait pu écrire ceci sur une seule ligne selon :
// if (ETAT_BP==APPUI)digitalWrite(LED,1); else digitalWrite(LED,0);

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

// --- Fin programme ---



mais se programme ne fonctionne pas ?
« Last Edit: June 06, 2011, 09:34:02 pm by Jean-François » Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1398
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

1 - le programme marche mal, mais très bien (tu peux allumer le led1 mais tant qu'elle est allumée, tu ne peux pas agir sur la 2).
2 - tu as pris un truc tout fait, donc il ne correspond peu-être pas à tes attentes.
3 - tes leds sont à l'envers?
4 - tes BP sont mal câblés?
5 - pour n'allumer que deux leds (ou deux relais), c'est bien rempli, je trouve...

je te propose le prog suivant (avec led intégrée sur pin 13) :

Code:
const byte ledPin = 13; // led intégrée sur broche 13
const byte bp1 = 8; // BP branché entre pin 8 et GND

void setup(){
  pinMode (ledPin, OUTPUT);  // pin led en sortie
  pinMode (bp1, INPUT);        // pin bp en entrée
  digitalWrite (bp1, HIGH);     // pulup "on"
}

void loop(){
  while (digitalRead(bp1) == HIGH) {}  // boucle tant que pas d'appui.
  digitalWrite (ledPin, HIGH);             // led ON
  delay (1000);                                // attendre 1 seconde (1000 ms)
  digitalWrite (ledPin, LOW);             // led OFF
}
Logged

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

help me !
je ne comprend rien pour l'ethernet shield !
j'ai un arduino ethernet shield v1.1
je ne trouve pas l'adresse mac quelqu'un pourrait m'aider svp ?
Logged

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

http://arduino.cc/en/Guide/ArduinoEthernetShield
Logged

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoirs
Je débute dans l'univers arduino .
Mon but et de contrôler 4 relais par rapport a internet ou par rapport a 2 boutons poussoirs mais cela en fonction de 2 autres interrupteurs (fin de courses) et d'envoyer un email a une certaine adresse a un certain moment du programme .
je m'explique un peut mieux :
au démarrage de l'arduino mon programme est censé faire clignoter une led puis :

1) Faire une vérification des capteurs ( si le fdc du verrou et le fdc de la porte sont tout les 2 == HIGH, la led rouge s'allume et le programme continu. Mais si le fdc du verrou est == LOW et que le fdc de la porte est == HIGH, allumer le relais de fermeture (relayclose) pendant 800 ms puis allumer la led rouge et continuer le programme. Autrement si le fdc du verrou == LOW et que le fdc de la porte est == LOW ou que si le fdc du verrou == HIGH et que le fdc de la porte est == LOW , continuer a chercher une condition valable pour continuer le programme.)



Le reste de mon programme est deja dans ma téte mais c'est trop long a expliquer pour le moment je prefere faire par étapes .
En gros mon souci c'est que je n'arrive pas a bien faire mon programme :/
J'aurais besoin d'un peu (beaucoups) d'aide.
merci d'avance .

ps :
Quote
#include <SPI.h>

const int relayopen = A0; //Relais 1 connecter au pin A0
const int relayclose = A1; //Relais 2 connecter au pin A1
const int relaylight = A2; //Relais 3 connecter au pin A2
const int relaypc = A3; //Relais 4 connecter au pin A3
const int ledverte = A4; //Led1 connecter au pin A4
const int ledrouge = A5; //Led2 connecter au pin A5
const int bpescalier = 4; //Bouton poussoir 1 (dans l'escalier) connecter au pin 4
const int bpporte = 5; //Bouton poussoir 2 (sur la porte) connecter au pin 5
const int fdcporte = 2; //Fin de course 1 (porte ouverte ou fermer) connecter au pin 2
const int fdcverrou = 3; //Fin de course 2 (verrou) connecter au pin 3

int bpescalierEtat = 0;
int bpporteEtat = 0;
int fdcporteEtat = 0;
int fdcverrouEtat = 0;
int switch1 =  1;
int width1 = 20; // configuration du nombre de repetition de l'animation de demarrage
void setup() {
   
  // configuration des relais et des led
  pinMode(relayopen, OUTPUT);
  pinMode(relayclose, OUTPUT);
  pinMode(relaylight, OUTPUT);
  pinMode(relaypc, OUTPUT);
  pinMode(ledverte, OUTPUT);
  pinMode(ledrouge, OUTPUT);
  // configuration des bp et de fdc
  pinMode(bpescalier, INPUT);
  digitalWrite(bpescalier, HIGH) ;
  pinMode(bpporte, INPUT);
  digitalWrite(bpporte,HIGH);
  pinMode(fdcporte, INPUT);
  digitalWrite(fdcporte, HIGH) ;
  pinMode(fdcverrou, INPUT);
  digitalWrite(fdcverrou, HIGH) ;
  // initialisation de la connection SPI
  Serial.begin(9600);
  // initialisation de l'état des relais et des led
  digitalWrite(relayopen,HIGH);
  digitalWrite(relayclose,HIGH);
  digitalWrite(relaylight,HIGH);
  digitalWrite(relaypc,HIGH);
 
 
  fdcverrouEtat = digitalRead (fdcverrou);
  fdcporteEtat = digitalRead (fdcporte);
  bpescalierEtat = digitalRead (bpescalier);
  bpporteEtat = digitalRead (bpporte);
 
  // animation de demarrage (a placer toujours a la fin)
  for (int i=1;i<width1;i++){
  digitalWrite(ledverte,HIGH);
  delay(30);
  digitalWrite(ledverte,LOW);
  delay(30);
 }
 

}
 
void loop(){


// partie sécuritée au demarrage
 
  switch (switch1) {
  case 1: if (fdcverrouEtat == LOW || fdcporteEtat == HIGH){
  digitalWrite (relayclose,LOW);
  delay (800);
  digitalWrite (relayclose,HIGH);
  digitalWrite (ledrouge,HIGH);
  delay(500);
  break;}
 
  case 2: if (fdcverrouEtat == HIGH || fdcporteEtat == HIGH){
  digitalWrite (ledrouge,HIGH);
  delay(500);
  break;
 
  case 3: if (fdcverrouEtat == LOW || fdcporteEtat == LOW){
    digitalWrite (ledverte,HIGH);
  }
  }
 }





{
  digitalWrite (relaypc,LOW);
  delay (1000);
  digitalWrite (relaypc,HIGH);
  delay (1000);
}
}
Logged

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

Salut,

ça manque de
Code:
fdcverrouEtat = digitalRead (fdcverrou);
  fdcporteEtat = digitalRead (fdcporte);
  bpescalierEtat = digitalRead (bpescalier);
  bpporteEtat = digitalRead (bpporte);
 
appelé cycliquement pour mettre à jour l'état du bp... en tenant compte des éventuelles rebonds dû à la mécanique.

Astuce: places des "Serial.println("mon code est passé par ici") et autre "Serial.println("il est repassé par là") à des endroits stratégiques de ton programme: ça te facilitera le debogage.  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

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci de l'astuce Gromain.
Sa ne fonctionne pas comme j'aimerais car j'aimerais executer une seule fois se (switch/case) au demarrage mais dans la partie void loop. Quelqu'un aurais une idée ?
Logged

Pages: [1] 2 3   Go Up
Jump to: