Show Posts
Pages: [1] 2 3 ... 5
1  International / Français / Re: Moteur pas à pas - Lib Stepper on: February 10, 2014, 02:14:35 pm
J'utilise le programme d'exemple fournis avec la lib stepper, j'ai aussi essayer de le faire moi même en gérant les sorties avec des petits delay mais ça fait pareil qu'avec la lib

Edit: J'arrive à faire tourner le petit moteur pap correctement !! Enfaite il faut considérer que les fils 1 & 3 c'est une phase et 2 & 4 l'autre, et pas 1&2 et 3&4 comme j'avais fais, je vais test avec l'autre moteur

Edit2: Avec le deuxième moteur ça marche ! smiley...Par contre le couple me semble vachement léger pour déplacer mon chariot, en espérant qu'un driver plus puissants changera quelque chose  smiley-kitty
2  International / Français / Re: Moteur pas à pas - Lib Stepper on: February 10, 2014, 01:30:46 pm
Avec les moteurs DC ça fonctionnait impeccable je les contrôlais en PWM pour modifier la vitesse de rotation, pour ce qui est du moteur pap, j'en ai jamais utilisé dans mes études (sauf sur papier  smiley-sleep) et c'est la première fois à titre personnel, donc pour les branchements j'ai 4 fils, j'ai considéré qu'une phase était le fil 1&2 et l'autre 3&4, j'ai inversé les fils pendant mes essais pour voir si ça changeait quelque chose mais pas vraiment...
Une phase c'est la combinaison de fil qui ont une grande résistance ou faible résistance ?
Merci
3  International / Français / Re: Moteur pas à pas - Lib Stepper on: February 10, 2014, 12:09:08 pm
Le montage est celui indiqué dans la doc, c'est une carte que j'ai fais sur plaque pastillé et qui fonctionnait pour 2 moteurs DC (je m'en servais pour faire du lissajou avec un laser).

Pour ce qui est des limites du CI, je comprend bien mais ce n'est pas définitif comme CI, c'est juste pour faire quelques essais pour être sur que c'est bien ce moteur la que j'ai besoin (force / vitesse), et surtout que j'arrive à le faire fonctionner  smiley-cool.

Bref, en ce qui concerne les bobines, j'ai trouvé 0.73Mohm et 1Mohm (Méga !) en prenant les fils 1&2 pour une phase et 3&4 pour la deuxième, sinon j'ai 8ohm entre 1&3 et 2&4
4  International / Français / Re: Moteur pas à pas - Lib Stepper on: February 10, 2014, 07:10:28 am
Bien vu, cependant à mes bons souvenir le L293D supporte des picks de l'ordre de 1A, le problème pourrait quand même venir du driver ?
J'ai essayé avec un autre moteur pap beaucoup plus petit (qui était aussi dans l'imprimante), le problème est le même
5  International / Français / Moteur pas à pas - Lib Stepper on: February 10, 2014, 06:43:19 am
Bonjour à tous,

Dans le cadre d'un nouveau projet, j'ai besoin de déplacer un chariot  en un mouvement de translation, j'ai donc retenu comme choix, un moteur pas à pas et une crémaillère.
J'ai récupéré un moteur dans une imprimante EPSON, le moteur est du type EM-257,  n'ayant jamais utilisé de moteur pap, j'ai suivis des tutoriels utilisant la lib stepper et un CI L293D.
Cependant lors du fonctionnement, le moteur à plus tendance à trembler qu'à tourner, ou alors tourne légèrement et s'arrête, redémarre si on l'aide avec le doigt, et n'est pas capable de se déplacer de lui même si on le tiens par l'axe.
J'alimente celui ci en 7v- 1A , le CI chauffe pas mal, j'ai essayé différentes combinaisons de branchement afin de vérifier qu'une patte n'était pas inverser, et toujours pareil.
Si quelqu'un pourrait m'aiguiller à faire fonctionner ce moteur, j'en serais reconnaissant

Merci
6  International / Français / Re: Trop if / else if ? on: September 05, 2013, 12:15:46 pm
Oulà, les struct j'ai appris à en faire mais je m'en suis jamais servi pour le moment j'ai ça:

Code:
struct IrCommand {
  int ircode;
  char command[16];
};

struct IrCommand irCmdTable[21];

irCmdTable[1].ircode = 1;
irCmdTable[1].command = "on";

mais ça fonctionne pas, pourtant d'après les exemples ça correspond mais je trouve pas ou est le problème, ircode contient bien un numéro de commande et non pas un tableau de int contenant les pulsations Ir ?
7  International / Français / Re: Trop if / else if ? on: September 04, 2013, 04:15:17 pm
C'est pas mes premières heures de dev en C/ arduino pourtant c'est vrai que j'arrive pas à me mettre en tête une solution plus light
Le tableau de char + la boucle ça je saurais faire, mais quand la boucle correspond comment faire ?

Code:
int on_key[]={8960,4380,600,520,580,520,580,520,580,520,580,520,580,520,580,520,580,520,580,1620,600,1600,600,1620,580,1620,600,1600,600,1620,580,540,560,1620,600,520,580,520,580,520,560,540,560,540,560,540,560,540,560,540,560,1620,600,1600,600,1620,580,1620,580,1620,600,1600,600,1620,600,1600,600,40660,8940,2180,580};

void setup() {                
  pinMode(IRledPin, OUTPUT);   //Broche N°13 est une sortie.  
  Serial.begin(9600);          //Initialisation Serial Monitor.
  inputString.reserve(200);
}

void send_key(int sizeKey,int key[])
{
  for(int i = 0; sizeKey >= i; i++)
  {
    if ( (i % 2) == 0) {
       pulseIR(key[i]);
    } else {
      delayMicroseconds(key[i]);
    }
  }
}
Ce code contient la fonction d'envoi + un tableau de int qui défini la touche "on"

Le seul moyen serait des variables à nom dynamique mais c'est pas possible...
Je sais qu'il y a une astuce pour le faire, mais j'ai plus l'exemple en tête.
8  International / Français / Re: Trop if / else if ? on: September 04, 2013, 02:49:34 pm
Peut-être bien, mais le code est quand même aux "normes" non ? ça devrait fonctionner ?
J'vais utiliser une autre solution cependant j'aimerais quand même comprendre le problème vu que le compilo à toujours raison...

Quand vous parlez de tableaux de char c'est faire la même chose en utilisant des type char ?
9  International / Français / Re: Trop if / else if ? on: September 04, 2013, 08:01:30 am
Il n'y a pas de réponse via le debug, c'est le programme qui s'exécute mal, tout les if / else if ne sont pas fonctionnel si yen a trop...

Sinon j'ai essayé avec compareTo

Code:
    if(inputString.compareTo("on\n") == 0)
    {
      send_key(sizeof(on_key),on_key);
    }
    else if( inputString.compareTo("off\n") == 0)
    {
      send_key(sizeof(off_key),off_key);
    }
    else if( inputString.compareTo("reset\n") == 0)
    {
      send_key(sizeof(reset_key),reset_key);
    }
    else if( inputString.compareTo("time-\n") == 0)
    {
      send_key(sizeof(clock_left_key),clock_left_key);
    }
    else if( inputString.compareTo("time+\n") == 0)
    {
      send_key(sizeof(clock_right_key),clock_right_key);
    }
    else if( inputString.compareTo("run\n") == 0)
    {
      send_key(sizeof(run_key),run_key);
    }
    else if( inputString.compareTo("rgb\n") == 0)
    {
      send_key(sizeof(rgb_key),rgb_key);
    }
    else if( inputString.compareTo("dimmer-\n\n") == 0)
    {
      send_key(sizeof(dimmer_down_key),dimmer_down_key);
    }
    else if( inputString.compareTo("dimmer+\n\n") == 0)
    {
      send_key(sizeof(dimmer_up_key),dimmer_up_key);
    }
    /*else if( inputString.compareTo("r\n") == 0)
    {
      send_key(sizeof(r_key),r_key);
    } 
    else if( inputString.compareTo("g\n")== 0)
    {
      send_key(sizeof(g_key),g_key);
    }
    if( inputString.compareTo("b\n"))
    {
      send_key(sizeof(b_key),b_key);
    }
    if( inputString.compareTo("orange\n"))
    {
      send_key(sizeof(orange_key),orange_key);
    }
    if( inputString.compareTo("green\n"))
    {
      send_key(sizeof(green_key),green_key);
    }
    if( inputString.compareTo("blue\n"))
    {
      send_key(sizeof(blue_key),blue_key);
    }
    if( inputString.compareTo("rose\n"))
    {
      send_key(sizeof(rose_key),rose_key);
    }
    if( inputString.compareTo("yellow\n"))
    {
      send_key(sizeof(yellow_key),yellow_key);
    }
    if( inputString.compareTo("blue_light\n"))
    {
      send_key(sizeof(blue_light_key),blue_light_key);
    }
    if( inputString.compareTo("rose_light\n"))
    {
      send_key(sizeof(rose_light_key),rose_light_key);
    }
    if( inputString.compareTo("yellow_light\n"))
    {
      send_key(sizeof(yellow_light_key),yellow_light_key);
    }
    if( inputString.compareTo("blank\n"))
    {
      send_key(sizeof(blank_key),blank_key);
    }*/

J'ai la même chose, j'en décommente un de plus et ça fonctionne plus
10  International / Français / Trop if / else if ? on: September 03, 2013, 04:04:06 pm
Bonjour, je travail actuellement sur le développement d'un programme permettant de contrôler des leds RGB par infrarouge, j'ai donc fais ce programme cependant mes conditions ne font pas correctement quand je décommante toutes les touches, bug du compilo ?
Code:
//2.4 > Envoi d'un signal IR ON/OFF Téléviseur Philips.
 
int IRledPin =  13; //Variable IRledPin associée à broche n°13
String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete

/**** ICI je déclare mes int[] qui définissent les boutons (on_key,off_key,etc...).****/

void setup() {                
  pinMode(IRledPin, OUTPUT);   //Broche N°13 est une sortie.  
  Serial.begin(9600);          //Initialisation Serial Monitor.
  inputString.reserve(200);
}

void send_key(int sizeKey,int key[])
{
  for(int i = 0; sizeKey >= i; i++)
  {
    if ( (i % 2) == 0) {
       pulseIR(key[i]);
    } else {
      delayMicroseconds(key[i]);
    }
  }
}
 
void loop() {
   if (stringComplete) {
    Serial.println(inputString);
    if(inputString == "on\n")
    {
      send_key(sizeof(on_key),on_key);
    }
    if(inputString == "off\n")
    {
      send_key(sizeof(off_key),off_key);
    }
    if(inputString == "reset\n")
    {
      send_key(sizeof(reset_key),reset_key);
    }
    if(inputString == "time-\n")
    {
      send_key(sizeof(clock_left_key),clock_left_key);
    }
    if(inputString == "time+\n")
    {
      send_key(sizeof(clock_right_key),clock_right_key);
    }
    if(inputString == "run\n")
    {
      send_key(sizeof(run_key),run_key);
    }
    if(inputString == "rgb\n")
    {
      send_key(sizeof(rgb_key),rgb_key);
    }
    if(inputString == "dimmer-\n")
    {
      send_key(sizeof(dimmer_down_key),dimmer_down_key);
    }
    if(inputString == "dimmer+\n")
    {
      send_key(sizeof(dimmer_up_key),dimmer_up_key);
    }
    if(inputString == "r\n")
    {
      send_key(sizeof(r_key),r_key);
    }  
    if(inputString == "g\n")
    {
      send_key(sizeof(g_key),g_key);
    }
    /*if(inputString == "b\n")
    {
      send_key(sizeof(b_key),b_key);
    }
    if(inputString == "orange\n")
    {
      send_key(sizeof(orange_key),orange_key);
    }
    if(inputString == "green\n")
    {
      send_key(sizeof(green_key),green_key);
    }
    if(inputString == "blue\n")
    {
      send_key(sizeof(blue_key),blue_key);
    }
    if(inputString == "rose\n")
    {
      send_key(sizeof(rose_key),rose_key);
    }
    if(inputString == "yellow\n")
    {
      send_key(sizeof(yellow_key),yellow_key);
    }
    if(inputString == "blue_light\n")
    {
      send_key(sizeof(blue_light_key),blue_light_key);
    }
    if(inputString == "rose_light\n")
    {
      send_key(sizeof(rose_light_key),rose_light_key);
    }
    if(inputString == "yellow_light\n")
    {
      send_key(sizeof(yellow_light_key),yellow_light_key);
    }
    if(inputString == "blank\n")
    {
      send_key(sizeof(blank_key),blank_key);
    }*/
    
    // clear the string:
    inputString = "";
    stringComplete = false;
  }
}

void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag
    // so the main loop can do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}
 
// Cette fonction envoie une impulsion d'une fréquence de 38 kHz à la broche n°13.
void pulseIR(long microsecs) {

 
  cli();
 
  while (microsecs > 0) {
    // 38 kHz correspond environ à 13 microsecondes à l'état haut et 13 à l'état bas.
   digitalWrite(IRledPin, HIGH);  // Cette instruction met environ 3 microsecondes à s'effectuer.
   delayMicroseconds(10);         // On attend 10 microsecondes
   digitalWrite(IRledPin, LOW);   // Cette instruction met environ 3 microsecondes à s'effectuer.
   delayMicroseconds(10);         // On attend 10 microsecondes
 
   // En tout, cela met 26 microsecondes.
   microsecs -= 26;
  }
 
  sei();
}
 

lorsque je décommante les autres touches rien ne fonctionne, le simple faite d'ajouter UNE SEUL touche fais buger, comme s'il y avait une limite, que faire ?
Merci
11  International / Français / Contrôle lampe LED IR via Arduino on: August 31, 2013, 11:04:35 am
Bonjour à tous, je me lance dans un nouveau projet qui concerne l'éclairage d'un appartement, je souhaite utiliser pour chaque pièces une lampe led multiple couleur qui se pilote via une télécommande IR basique, je voudrais centraliser tout le système sur un ordinateur qui pourrait contrôler chacune de ses leds.
Cependant j'aimerais savoir si vous auriez des idées à me proposer pour la communication entre led et PC afin de réduire les couts, d'obtenir quelques chose de stable et facile à la mise en place.
J'ai tout d'abord pensé à des modules XBEE, mais le cout serait trop élevé (4-5leds au total donc...), ensuite des modules wireless (type NRF24L01) pas chère, j'en ai un de dispo mais je ne l'es jamais utilisé donc je ne sais pas si c'est possible d'avoir plusieurs récepteur à la fois normalement je pense que oui, mais cela imposerait d'avoir un boitier à coté de la led qui inclus:
-Un convertisseur 220v->12v
-La télécommande de la led
-Une arduino type Mini / Nano
-Le module RF

En sorte que, mon arduino maitre connecté au PC, envoi l'info à l'éméteur RF, sur le récepteur RF, l'arduino exclave récupère l'info et simule un appui de touche sur la télécommande.

Mais je trouve que ce système reviendrait assez chère et assez bordélique à mettre en place, j'attend donc vos proposition d'un point de vue économique et pratique.

Merci à vous
12  International / Français / Re: Utiliser serial converter avec Nano on: August 07, 2013, 05:34:43 pm
Les masses sont bien relié, j'ai fais un test de avec TX RX relié, si j'écris dans le terminal ça répète, et j'ai essayé les deux combinaisons, croisé ou non croisé.
edit: j'viens de charger un programme qui fait un serial.write depuis l'arduino avec un tempo, je lance un terminal sur le convertisseur et j'arrive à lire ce que j'envoi
edit2: J'viens de réussir à faire envoyer et recevoir depuis l'UNO à l'adaptateur, donc le problème vient bien du reset, mais à la limite pour mon application (qui ne demande pas de programmation à distance) je pourrais utiliser que ceux 3 fils ?
edit3: 3 fils GND TX RX sur 10m ça fonctionne en terminal, et normalement devrait fonctionner pour mon application PC, je cable tout, et je vous dit ça smiley

edit 4: Communication effectué sur 10m à 9600bauds, je vous remercie de m'avoir aidé, pour ceux que ça intéresse, j'ai confectionné un laser de spectacle, et j'ai inclus un système embarqué avec une arduino afin de contrôler les ventilateurs (Ventilo PWM PC), prendre les températures des éléments à risque, et couper la projection au cas ou.
Le but de la liaison série et d'envoyer toutes ses informations sur une application que j'ai développé afin de contrôler tout ça,
une petites vidéos du laser en fonctionnement durant un essai:


Encore une fois merci, tchao
13  International / Français / Re: Utiliser serial converter avec Nano on: August 07, 2013, 11:46:17 am
J'viens de test avec une uno avec une platine de proto (sans le cable 10m),
J'ai donc GND <----> GND
            TX    <----> RX
            RX    <----> TX
            DTR <--Condo ( 1j100 ) -- > RESET

Que dal, quand je transfère les leds TX / RX ne s'allument pas.
14  International / Français / Re: Utiliser serial converter avec Nano on: August 07, 2013, 08:38:57 am
J'avais directement connecté DTR à RST,
Le câble de transmission est un câble DB9 pour RS232 10M (et j'ai soudé les fils sur des cosses DB9).
15  International / Français / Re: Utiliser serial converter avec Nano on: August 07, 2013, 06:04:43 am
RS422 c'est arduino <=> arduino ?
Pages: [1] 2 3 ... 5