france
Offline
Full Member
Karma: 0
Posts: 178
Everybody can do that !
|
 |
« on: May 12, 2011, 03:03:58 pm » |
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  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
Edison Member
Karma: 8
Posts: 1803
Do or DIY
|
 |
« Reply #1 on: May 13, 2011, 01:44:18 am » |
Je crois que tu t'es répondu tout seul  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
Full Member
Karma: 0
Posts: 178
Everybody can do that !
|
 |
« Reply #2 on: May 13, 2011, 06:48:28 am » |
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
Offline
Full Member
Karma: 0
Posts: 208
Arduino rocks
|
 |
« Reply #3 on: May 13, 2011, 08:42:41 am » |
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 - Conception de shields qui défrisent
|
|
|
|
france
Offline
Full Member
Karma: 0
Posts: 178
Everybody can do that !
|
 |
« Reply #4 on: May 17, 2011, 11:16:22 am » |
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
Full Member
Karma: 0
Posts: 185
Arduino rocks
|
 |
« Reply #5 on: May 19, 2011, 10:21:28 am » |
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  - 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
Full Member
Karma: 0
Posts: 178
Everybody can do that !
|
 |
« Reply #6 on: May 20, 2011, 04:38:34 pm » |
Bonsoir Alors voici mon premier schema : [IMG=http://img807.imageshack.us/img807/2439/jhk001.jpg][/IMG]Uploaded with ImageShack.usMais 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
God Member
Karma: 8
Posts: 659
|
 |
« Reply #7 on: May 20, 2011, 11:03:20 pm » |
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
Full Member
Karma: 0
Posts: 178
Everybody can do that !
|
 |
« Reply #8 on: May 22, 2011, 05:58:36 am » |
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 : // --- 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
God Member
Karma: 8
Posts: 659
|
 |
« Reply #9 on: May 22, 2011, 04:09:32 pm » |
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) : 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
Full Member
Karma: 0
Posts: 178
Everybody can do that !
|
 |
« Reply #10 on: May 25, 2011, 04:00:28 pm » |
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
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #11 on: May 26, 2011, 04:22:01 am » |
|
|
|
|
|
Logged
|
|
|
|
|
france
Offline
Full Member
Karma: 0
Posts: 178
Everybody can do that !
|
 |
« Reply #12 on: June 06, 2011, 12:56:53 pm » |
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 : #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
Sr. Member
Karma: 3
Posts: 408
|
 |
« Reply #13 on: June 06, 2011, 02:30:44 pm » |
Salut, ça manque de 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.  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 xPLDuinoIRC: freenode #xplduino
|
|
|
|
france
Offline
Full Member
Karma: 0
Posts: 178
Everybody can do that !
|
 |
« Reply #14 on: June 08, 2011, 05:51:54 am » |
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
|
|
|
|
|
|