- Robot Maker
- → Affichage d'un profil : Sujets: cook
Statistiques de la communauté
- Groupe Membres
- Messages 134
- Visites sur le profil 4 614
- Titre Membre occasionnel
- Âge Âge inconnu
- Date de naissance Anniversaire inconnu
-
Gender
Non spécifié
Sujets que j'ai initiés
tressage avec 2 moteurs pas à pas
13 janvier 2026 - 06:16
capteur de préssion
28 décembre 2025 - 08:08
Bonjour , je prépare un code ( que l'on va faire ensemble ) mais avant j'ai une question sur ce capteur de pression .
Puis je l'utiliser seul avec une carte arduino ou faut 'il que je m'équipe de l' accessoire modulaire qui est adapté selon le vendeur ( voir photo ) ?
moteur pas a pas
01 juillet 2024 - 08:54
Bonjour ,
voici un code avec lequel j'ai fait beaucoup d'essais . Il marchais très bien . Mais voila , je le remet en route, mais avec une carte méga 2560 et un nouveau écran LCD 1602A .
Le soucis c'est que le moteur pas a pas ne tourne pas .
Toutes les infos à l'écran s'affichent comme demandé dans le code . Ligne 182 , Start press init pour commencer . Ligne 141 , J'appuis sur le bouton init , l'écran affiche initiatisation en cour , mais le moteur ne tourne pas . Je simule la buté , la led s'allume . L'écran affiche butés à 30 cm comme prévu . tout vas bien coté commande . Tous les boutons et la led fonctionnent .
Mais le moteur ne tourne pas .
Pour info quand je rentre mon code dans la carte 2560 mega , le moteur tourne , pourquoi je sais pas, mais cela me fait dire que le pilote et moteur fonctionnent .
Le moniteur serie affiche les bonnes infos en fonction du code .
. Je suis perplexe , cela viendrai de la carte qui n'est plus une uno ?
Comment je peux savoir dans le moniteur serie se qui se passe quand j'appuis sur le bouton init en ce qui concerne le moteur ?
#include <AccelStepper.h>
AccelStepper stepper (1, 0, 1); // 1 pour dire je sais pas. 0 c'est le pul + sur l’arduino et 1 le dir +
#include <LiquidCrystal.h>
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
const int PinBoutonInit = 26; //Bouton qui déplacera le chariot vers la buté à 30 cm
const int PinContactBute = 42;// Contact qui stope le chariot à 30 cm
const int PinBoutonReglageDistanceCm = 28;//Bouton de reglage distance en Cm
const int PinBoutonReglageDistanceMm = 30;//Bouton de reglage distance en Mm
const int PinBoutonReglageDistancePlus5Mm = 32;//Bouton de reglage distance + 5 Mm
const int PinBoutonReglageDistanceMoins5Mm = 34;//Bouton de reglage distance - 5 Mm
const int PinBoutonConfigurationPlateau = 36;//Bouton pour envoyer les 4 Plateaux à la distance écrite sur écran LCD
const int LED = 37;// initialisation OK
const float distanceMin = 30.0 ; // reglage mécanique minimum de mon guide
const float distanceMax = 290.0 ; // reglage mécanique maximum de mon guide
//stepper.setPinsInverted(true, false, false);
float ReglageAffichageDistance (float NouvelleDistance) {
while (digitalRead(PinBoutonReglageDistancePlus5Mm) == 0) {// Bouton + 5 mm
NouvelleDistance = NouvelleDistance + 0.5 ;
if (NouvelleDistance > distanceMax ) {
NouvelleDistance = distanceMin ;
}
attendreMs(300);
Serial.println(NouvelleDistance);
AfficherLaDistance(NouvelleDistance);
AfficherLaDistancePouce(NouvelleDistance);
}
while (digitalRead(PinBoutonReglageDistanceMoins5Mm) == 0) { // Bouton - 5 mm
NouvelleDistance = NouvelleDistance - 0.5 ;
if (NouvelleDistance < distanceMin ) {
NouvelleDistance = distanceMax ;
}
attendreMs(300);
Serial.println(NouvelleDistance);
AfficherLaDistance(NouvelleDistance);
AfficherLaDistancePouce(NouvelleDistance);
}
while (digitalRead(PinBoutonReglageDistanceMm) == 0) { // Bouton réglage des millimetres
NouvelleDistance = NouvelleDistance + 0.01 ;
if (NouvelleDistance > distanceMax ) {
NouvelleDistance = distanceMin ;
}
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 > distanceMax) {
NouvelleDistance = distanceMin ;
}
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
}
int32_t ConversionDistanceCmEnPas (float DistanceEnCm) { // On met un type d'entier car le nombre de pas c'est un entier
int32_t DistanceEnPas = DistanceEnCm * 3905.4 ;// 1tour = 11cm = 42960 pas soit 390.54 pas pour 1 mm avec le signe - car inversion
Serial.println("C"); // print utile que pour du débug à commenter ou supprimer plus tard ...
Serial.println(DistanceEnPas); // idem
return DistanceEnPas ; // aprés la conversion, on retourne la valeur au reste du programme
}
void ConfigurationPlateau (float Distance) {
if (digitalRead(PinBoutonConfigurationPlateau) == 0) {
stepper.moveTo(ConversionDistanceCmEnPas(Distance));// move to prend en paramètre une distance en pas.
stepper.runToPosition () ;
attendreMs(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(-400);
while (digitalRead(PinContactBute) == 1) {
stepper.runSpeed();
digitalWrite(37, LOW); // initialisation non réalisé
// on attends la buté
}
stepper.stop(); // On remet à 0 les consignes de vitesse ...
digitalWrite(37, HIGH); // initialisation réalisé
InitDistance = distanceMin ;
stepper. setCurrentPosition (ConversionDistanceCmEnPas(distanceMin)) ;// Permet de mettre le moteur à sa position cible de 30 cm à la butée
Serial.println (InitDistance);
AfficherInitTermine ();
attendreMs(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(26, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP
pinMode(28, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP
pinMode(30, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP
pinMode(32, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP
pinMode(34, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP
pinMode(36, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP
pinMode(42, INPUT_PULLUP); // pour le mettre en INPUT_PULLUP
pinMode(37, OUTPUT);
stepper.setMaxSpeed(400);
stepper. setAcceleration (100 ) ;
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) ;
}
bonton marche arret pour moteur pas à pas
16 mars 2024 - 04:44
Bonjour ,
pour tester la partie mécanique de mon projet , il me faut faire mettre en marche et arrêter 2 moteurs pas à pas simultanément avec l'aide d'un bouton .
J'ai trouver la solution pour les faires démarrer avec 1 bouton , modifier leur vitesses et le nombre de pas en modifiant le code , mais cela ne marche qu'une fois après le téléchargement . Si j' appuis à nouveau , il ne se passe plus rien . J'ai essayé avec 2 boutons , rien y fait . Mélangé plusieurs codes et fait des essais et liens à tout vas . J'ai lu que la fonction est bloquante . je tourne en rond .
Avez vous une idée de ce qu'il faut faire ?
merci pour votre aide .
#include <AccelStepper.h>
#include <MultiStepper.h>
const int boutonmarche = 12;
const int boutonarret = 13;
int etatboutonmarche = 0;
int etatboutonarret = 0;
const int led = 8;
int etatboutonprecedent = 0;
int motors = 0;
//ccelStepper stepper2(AccelStepper::FULL4WIRE, 6, 7, 8, 9);
//AccelStepper stepper3(AccelStepper::FULL2WIRE, 10, 11);
AccelStepper stepper1(1, 2, 3); // 1 pour dire je sais pas. 2 c'est le pul + sur l’arduino et 3 le dir +
AccelStepper stepper2(1, 5, 6); // 1 pour dire je sais pas. 2 c'est le pul + sur l’arduino et 3 le dir +
void setup() {
// Serial.begin(9600);
pinMode(boutonmarche, INPUT_PULLUP);
pinMode(boutonarret, INPUT_PULLUP);
pinMode(8, OUTPUT);
}
void moteursMarche() {
stepper1.setMaxSpeed(1000);
stepper1.setAcceleration(400);
stepper1.moveTo(4000);
stepper2.setMaxSpeed(2000);
stepper2.setAcceleration(400);
stepper2.moveTo(800);
stepper1.run();
stepper2.run();
digitalWrite(8, HIGH);
}
void boutondecommande() {
etatboutonmarche = digitalRead(boutonmarche);
if ((etatboutonmarche == LOW) && (etatboutonprecedent == HIGH)) {
motors = 1 - motors ;
}
etatboutonprecedent = etatboutonmarche ;
if ( motors == 1) {
moteursMarche();
}
}
void loop() {
boutondecommande();
}
//Serial.println("avant");
//Serial.print(motors);
Débrancher son driver et son moteur
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.
- Robot Maker
- → Affichage d'un profil : Sujets: cook
- Privacy Policy


Mon contenu


