Show Posts
Pages: [1] 2 3
1  International / Français / Re: [Moteurs PAP] un code qui marche? on: October 24, 2013, 06:58:58 am
Salut,

J'ai bidouillé un code pour gérer 3 moteurs pour un robot "delta" avec une rampe linéaire pour éviter de sauter des pas au démarrage en charge, ça marche très bien chez moi, j'ai utilisé  l'algorithme de Bresenham.

voila un bout de code:

Code:
  if(val[0]-prev[0]>0){digitalWrite(3,HIGH);}else{digitalWrite(3,LOW);} //determination du sens
     if(val[1]-prev[1]>0){digitalWrite(6,HIGH);}else{digitalWrite(6,LOW);}
     if(val[2]-prev[2]>0){digitalWrite(9,HIGH);}else{digitalWrite(9,LOW);}

     for(int i=0;i<3;i++){d[i] = val[i] - prev[i];}  //calcul de la course a parcourir   

     long m= max(max(abs(d[0]),abs(d[1])),abs(d[2])); // identifier distance maxi pour denominateur:

     for(int i=0;i<3;i++){r[i]=(float)abs(d[i]) / (float) m;a[i]=0;} // debut de calcul des ratios, le plus grand sera égal à 1
     
      float v=m*1/Rampe;     // defini la plage d'acceleration et de deceleration (10% de la course en acceleration et 10% en deceleration, 80% en vitesse max);
      float w=m-v;
     
     
     for(float n=0;n<m;n++){ //debut boucle de mouvement
       float CoefSpeed=1.00; // par defaut coef de vitesse au max(ni acceleration ni deceleration)
         if (n<v){CoefSpeed=map(CoefSpeed,n,v,1.70,1.00);}
         if (n>w){CoefSpeed=map(CoefSpeed,n,w,1.00,1.70);}

     
        for(int i=0;i<3;i++){a[i]=a[i]+r[i];} // on incrémente:
   
    //si erreur >=1 on fait une step, puis on decremente l'erreur
    //les stepX... juste pour info du nombre réel de steps effectué
    if(a[0]>=1.00){a[0]--;reel[0]++;digitalWrite(2, HIGH);delayMicroseconds(delayUs);digitalWrite(2, LOW);}
    if(a[1]>=1.00){a[1]--;reel[1]++;digitalWrite(5, HIGH);delayMicroseconds(delayUs);digitalWrite(5, LOW);}
    if(a[2]>=1.00){a[2]--;reel[2]++;digitalWrite(8, HIGH);delayMicroseconds(delayUs);digitalWrite(8, LOW);}   
    delayMicroseconds(Speed*CoefSpeed);
 
 } //vitesse globale des moteurs à définir suivant installation
 
  while(1){
   
    boolean rattrapageOK = true;
  if(reel[0] < abs(d[0])){reel[0]++;digitalWrite(2, HIGH);delayMicroseconds(delayUs);digitalWrite(2, LOW);rattrapageOK = false;}
  if(reel[1] < abs(d[1])){reel[1]++;digitalWrite(5, HIGH);delayMicroseconds(delayUs);digitalWrite(5, LOW);rattrapageOK = false;}
  if(reel[2] < abs(d[2])){reel[2]++;digitalWrite(8, HIGH);delayMicroseconds(delayUs);digitalWrite(8, LOW);rattrapageOK = false;}
  delayMicroseconds(Speed);
  if(rattrapageOK = true){break;}
  }
 
    // RAZ DELTA CAR MOUVEMENT EFFECTUE
    for(int i=0;i<3;i++){prev[i] = val[i];prevt[i] = t[i];reel[i]=0;}
} // if error ==0
  return(error);
2  International / Français / Re: code moteur servo DIY on: July 07, 2013, 12:45:40 pm
oui tu as raison, c'est juste un peu plus délicat à mettre en place, je proposais une étape intermédiaire smiley-wink
3  International / Français / Re: code moteur servo DIY on: July 07, 2013, 08:45:17 am
Bonjour,

il faudrait que tu gère la vitesse en fonction de la distance que tu as à parcourir, plus la distance est grande, plus tu augmente la vitesse.

tu calcule la course à parcourir = abs ((val2 - (val - hyseteris))), tu détermine une vitesse mini et maxi en fonction de tes courses mini et maxi,
ça devrait rouler.



4  International / Français / Re: Interfaçage 24V dc on: December 27, 2012, 02:33:13 pm
merci, je vais regarder ça !!

bonne fin d'année à tous !
5  International / Français / Re: Interfaçage 24V dc on: December 23, 2012, 07:37:18 am
OK merci Christian_R  et bonnes fêtes à tous !
6  International / Français / Re: Interfaçage 24V dc on: December 23, 2012, 05:25:18 am
Bonjour à tous, je reviens avec quelques infos, j'ai trouvé un exemple de pont diviseur:

http://arduino103.blogspot.fr/2011/05/lecture-analogique-et-pont-diviseur-led.html

j'aimerai bien savoir si avec ces valeurs 1k et 3.8k l'entrée arduino ne risque rien en procédant ainsi....

quelqu'un pourrait-il me le confirmer avant de me lancer ?

merci d'avance !
7  International / Français / Re: Interfaçage 24V dc on: December 22, 2012, 08:01:24 am
Re, avec un peu de retard, alors oui ça sent bien le milieu industriel dans la mesure ou j'ai récupéré pas mal de matos, surtout des vieux automates et plein de capteurs...

Merci pour votre aide, donc pour piloter du 24v sans puissance (juste envoyer un signal vers un automate), un tip 122 serais la solution la plus simple?

Et pour récupérer une info de capteur sur une entrée arduino, il suffit juste de passer par un pont diviseur?
vu mon niveau en electronique, pourriez-vous m'aider un peu avec un petit bout de schema, car je ne voit pas vraiment comment faire, et faut-il une resistance de pulldown comme avec un simple inter ?

merci encore !
8  International / Français / Interfaçage 24V dc on: December 21, 2012, 07:45:22 am
Bonjour à tous !

Je reviens encore une fois vers vous pour une question purement électronique,

Je voudrai pourvoir utiliser des capteurs inductifs 3 fils (+, -, signal) qui fonctionnent en 24 Vdc sur des entrées d'une carte arduino, et aussi pouvoir piloter des entrées automate 24 Vdc avec des sorties arduino, jusque la je me suis débrouillé avec des relais mais j'aimerai bien trouver quelque chose de plus compacte qui pourrait se monter sur un shield.

En gros je voudrais travailler en 24 Vdc avec une carte arduino  smiley-roll

merci de votre aide !!

et par avance joyeux noël à tous !!
9  International / Français / Re: Servomoteur on: December 08, 2012, 04:29:59 am

teste:


Code:
for(pos = 1000; pos < 1500; pos += 1) {
    myservo.writeMicroseconds(pos);
    delay(20); // delay à ajuster
}
10  International / Français / Re: Servomoteur on: December 04, 2012, 03:14:59 pm
Salut, essaye avec la fonction  myservo.writeMicroseconds   de 1000 à 2000 avec un delay plus court
11  International / Français / Re: Déplacement axial avec moteur pas à pas. on: October 21, 2012, 01:34:05 pm
Salut,

Je dirais difficile de répondre sans savoir quelle charge tu as à déplacer, avec une simple poulie et courroie, tu auras une vitesse élevée, mais lors d'un démarrage ou arrêt, avec trop de charge tu risque de sauter des pas.

Le système tige filetée et écrou est un peu plus long à mettre en œuvre, mais tu pourras embarquer une grosse charge sans problème MAIS tu n'aura pas une grande vitesse.

Il faudrait plus d'info sur ce que tu veux déplacer et avec quelle vitesse et précision.

voilou!
12  International / Français / Re: Delta Robot on: June 13, 2012, 02:54:01 am
up ? des videos ?
13  International / Français / Re: Delta Robot on: June 11, 2012, 04:51:10 am
OK,  rien de grave alors !! 
J'attends avec impatience tes vidéos, tu as des bras de quelle longueur? (bras moteurs et bras secondaires?) juste pour avoir une idée de la taille de la bête? et tu as quoi au bout? pince, ventouse?



14  International / Français / Re: projet fini ? boitier et fixations on: June 11, 2012, 12:39:32 am
Salut,
tu pourrais mettre des inserts si ton boitier est assez epais.
regarde: http://radiospares-fr.rs-online.com/web/p/inserts-ecrous-a-sertir/0278534/
puis tu visse tes platines dedans.
15  International / Français / Re: Delta Robot on: June 10, 2012, 08:10:48 am
salut !

Je pense que tu devrais laisser un petit delay après avoir envoyé la commande a tes servos, et tu devrais utiliser la commande writeMicroseconds aussi, tu seras plus précis, surtout avec ce genre de calculs.

une petite question, ton "count" en entrée de boucle, ça correspond a ta distance max comme sur mon code?
tu pourrais poster tout le reste du code ce serait plus facile a comprendre.

et ne t'inquiete pas la UNO arrive parfaitement a gerer 3 servos ! (mon ancien delta etait comme ça).

tiens moi au courant .

Pages: [1] 2 3