Aller au contenu


cook

Inscrit(e) (le) 25 mars 2020
Déconnecté Dernière activité mars 17 2024 11:08
-----

#117304 Débrancher son driver et son moteur

Posté par cook - 22 novembre 2022 - 08:30

Oui oui je te rejoint . Apres mesure ca colle avec ce que tu décris . C'était de la curiosité mais finalement ca me différencie bien le travail de l'Arduino et du driver  . Pour le bouton, c'est de l'urgence. je fait des essais avec du fil de pêche !  C'est important que l'AU marche . Et ca marche.

A bientôt 




#117269 Débrancher son driver et son moteur

Posté par cook - 20 novembre 2022 - 06:32

J'ai trouvé cette solution toute bête . Ce doit être cela l'explication qui est décrite plus haut . Cela arrête le moteur direct  .

 

Quelqu'un peut me confirmer que une fois l'arrêt d'urgence enclenché je peux débrancher la prise 240V  de ma machine sans risque de détériorer l'électronique ?

Image(s) jointe(s)

  • TB 6600.png



#116227 Débrancher son driver et son moteur

Posté par cook - 10 juillet 2022 - 11:44

Bonjour à tous,

 

J'ai mis en route un moteur Nema 17 avec son driver TB 6600 , un Arduino uno et une alimention à découpage en  24 Vdc .

Dès le branchement de  l' alim sur la prise 220v et du l'USB à l'Arduino le moteur se met en route et fait ses aller retour grâce au code BOUNCE de https://www.airspayce.com/.

 

Jusqu'à là tout va bien mais je me souviens plus comment débrancher sans rien abimer ! Il me semble avoir entendu qu'une mauvaise manipulation entrainait une détérioration du matériel . 

 

Faut t'il débrancher l'alim 220 v qui alimente le driver en premier ou l'USB qui alimente l'Arduino ? 

Est 'il mieux de le débrancher le moins possible ?

 

Tous avis sera le bienvenue . Merci pour votre aide.




#110152 Guide linéaire motorisé

Posté par cook - 09 juin 2020 - 09:00

Fichier joint  17HS19-1684S-PG27_Torque_Curve.pdf   166,24 Ko   152 téléchargement(s)

 

 

Bonjour Forthman ,

La doc m'aide pas vraiment sur le fonctionnement du couple moteur avec un réducteur . .

Je sais pas ou est le rapport entre le moteur et le reducteur . 

Je doit comprendre qu' au moment ou le moteur donne 52Ncm en sortie moteur , le couple maxi serai de 3 Nm en sortie réducteur ?




#110025 Guide linéaire motorisé

Posté par cook - 31 mai 2020 - 10:47

 
Voila tout fonctionne . J'en reviens pas . Je vais réessayé !
 

#include <AccelStepper.h>
AccelStepper stepper (1, 9, 8);
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int PinBoutonInit = A0; //Bouton qui déplacera le chariot vers la buté à 30 cm
const int PinContactBute = A1;// Contact qui stope le chariot à 30 cm
const int PinBoutonReglageDistanceCm = A2;//Bouton de reglage distance en Cm
const int PinBoutonReglageDistanceMm = A3;//Bouton de reglage distance en Mm
const int PinBoutonReglageDistancePlus5Mm = A4;//Bouton de reglage distance + 5 Mm
const int PinBoutonReglageDistanceMoins5Mm = A5;//Bouton de reglage distance - 5 Mm
const int PinBoutonConfigurationPlateau = 6;//Bouton configuration Plateau à la distance écrite sur écran LCD
const int LED = 10;


float  ReglageAffichageDistance   (float NouvelleDistance)  {

  while (digitalRead(PinBoutonReglageDistancePlus5Mm) == 0) {// Bouton + 5 mm
    NouvelleDistance = NouvelleDistance + 0.5 ;
    if (NouvelleDistance > 290) {
      NouvelleDistance = 30;
    }
    attendreMs(300);
    Serial.println(NouvelleDistance);
    AfficherLaDistance(NouvelleDistance);
    AfficherLaDistancePouce(NouvelleDistance);
  }

  while (digitalRead(PinBoutonReglageDistanceMoins5Mm) == 0)  { // Bouton - 5 mm
    NouvelleDistance = NouvelleDistance - 0.5 ;
    if (NouvelleDistance < 30) {
      NouvelleDistance = 290;
    }
    attendreMs(300);
    Serial.println(NouvelleDistance);
    AfficherLaDistance(NouvelleDistance);
    AfficherLaDistancePouce(NouvelleDistance);
  }


  while (digitalRead(PinBoutonReglageDistanceMm) == 0) { // Bouton réglage des millimetres
    NouvelleDistance = NouvelleDistance + 0.01 ;
    if (NouvelleDistance > 290) {
      NouvelleDistance = 30;
    }
    attendreMs(100);
    Serial.println(NouvelleDistance);
    AfficherLaDistance(NouvelleDistance);
    AfficherLaDistancePouce(NouvelleDistance);
  }

  while (digitalRead(PinBoutonReglageDistanceCm ) == 0) { // Bouton réglage des cm

    NouvelleDistance = NouvelleDistance + 1 ;   // Le compteur s'incrémente de 1 cm
    if (NouvelleDistance > 290) {
      NouvelleDistance = 30;
    }
    attendreMs(200);                            // on attend 500 ms sans utiliser la fonction delay()
    Serial.println(NouvelleDistance);
    AfficherLaDistance(NouvelleDistance);
    AfficherLaDistancePouce(NouvelleDistance);
  }
  return NouvelleDistance;       // quand on a fini d'incrémenter on retourne la valeur au reste du programme
}

void  ConfigurationPlateau (float Distance) {

  if (digitalRead(PinBoutonConfigurationPlateau) == 0)  {

    stepper. moveTo (- Distance * 3905.4 ) ;// 1tour = 11cm = 42960 pas soit 390.54 pas pour 1 mm .
    stepper. runToPosition () ;
    Serial.println(Distance * 3905.4); 
    delay(100);

  }
  else {
     stepper.stop();
  }
}


void attendreMs (unsigned int attente) {
  unsigned long InstantouJappuis = millis();           // Variable qui enregistre le déroulement du temps qui passe depuis l'appuis
  while (millis() - InstantouJappuis <  attente ) { // décompte de 500ms en cours
  }
}



void  AfficherLaDistance  (float Distance) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print (  " BUTEE " );
  lcd.setCursor(7, 0);
  lcd.print (  Distance  );
  lcd.setCursor(13, 0);
  lcd.print (  " cm "   );
}

void  AfficherLaDistancePouce  (float Distance) {

  lcd.setCursor(1, 1);
  lcd.print (  Distance / 2.54  );
  lcd.setCursor(11, 1);
  lcd.print (  " inch "   );
}



void  AfficherInitTermine () {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print (" Initialisation  "  );
  lcd.setCursor(0, 1 );
  lcd.print (" terminée "  );
  Serial.println ("Initialisation terminée " );
}

void  AfficherInitEnCours () {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print (" Initialisation  "  );
  lcd.setCursor(0, 1 );
  lcd.print (" en cours "  );
  Serial.println (" Initialisation en cours "  );

}
float initMoteur (float InitDistance ) {


  if (digitalRead(PinBoutonInit) == 0) {
    AfficherInitEnCours ();
    stepper.setSpeed(3900);

    while (digitalRead(PinContactBute) == 1) {
      stepper.runSpeed();
       digitalWrite(10, LOW); // initialisation non réalisé
      // on attends la buté
    }
    stepper.stop(); // On remet à 0 les consignes de vitesse ...
   digitalWrite(10, HIGH);  // initialisation  réalisé

    InitDistance  = 30.0;
    stepper. setCurrentPosition ( -117162 ) ;// Permet de mettre le moteur à sa position cible de 30 cm à la butée

    Serial.println (InitDistance);

    AfficherInitTermine ();
    delay(1000);
    AfficherLaDistance(InitDistance) ;
  }
  return InitDistance;   // quand on a fini d'initialisé on retourne la valeur au reste du programme
}

void setup() {

  Serial.begin(9600);
  pinMode(A0, INPUT_PULLUP); //  pour le mettre en INPUT_PULLUP
  pinMode(A1, INPUT_PULLUP); //  pour le mettre en INPUT_PULLUP
  pinMode(A2, INPUT_PULLUP); //  pour le mettre en INPUT_PULLUP
  pinMode(A3, INPUT_PULLUP); //  pour le mettre en INPUT_PULLUP
  pinMode(A4, INPUT_PULLUP); //  pour le mettre en INPUT_PULLUP
  pinMode(A5, INPUT_PULLUP); //  pour le mettre en INPUT_PULLUP
  pinMode( 6, INPUT_PULLUP); //  pour le mettre en INPUT_PULLUP
  pinMode(10, OUTPUT);
  stepper.setMaxSpeed(4000);
  stepper. setAcceleration ( 500 ) ;
  lcd.begin(16, 2);
  lcd.print("START PRESS INIT");
}

void loop() {

  static float maDistance = 29; // Variable qui va stocker la distance de consigne
  maDistance = initMoteur (maDistance);  // Permet d'initialisé ma distance sur 30 cm
  maDistance = ReglageAffichageDistance (maDistance); // réglage de la distance de 30 à 290 cm
  Serial.println (maDistance );
  ConfigurationPlateau (maDistance) ;

}



#109162 Guide linéaire motorisé

Posté par cook - 29 avril 2020 - 08:53

 Le but est d'afficher une nouvelle distance sur l’écran LCD . ( qui est sur 30 cm du fait de l'initialisation )

 

Réglage des centimètre avec un premier bouton

je reste appuyé et les centimètre se déroule de 30.0 à 190,0 cm en boucle . Environ 1 cm  par seconde ( réglable serai bien , des fois que  1 cm par seconde soit trop rapide ou inversement )   .  Je relâche le bouton le compteur s’arrête .

 

 

Réglage des millimètres avec un second bouton

Pour les millimètres c'est un peut différent . Je fait un simple appuis , (donc j'appuis et je relâche) une impulsion en fait ! les millimètres s’incrémentent de 1 mm . 

Pour exemple le compteur est sur 30.0 après la réinitialisation . Je fait un appuis et le compteur passe à 30.1 cm .

Autre cas de figure , le compteur est réglé sur 30.9 et je fait un appuis. Le compteur passe à 30.0

.

 

Avec le troisième boutons , je valide . Donc le moteur se déplace à la mesure affichée sur l'écran .

 

J’espère que l'explication est plus précise . C'est pas facile à expliquer .