Fraiseuse Motorisée

Bonjour

une petite présentation d'un de mes projets, terminé, fonctionnel et évolutif qui peut aussi servir de base a certains, en privilégiant simplicité et rapidité de la machine, sans PC, sans modification structurelle de la fraiseuse (Vis d'origine etc...)

Le but n'était pas d'en faire une CNC car j'en ai déjà une mais de motoriser les axes pour les pièces assez importantes ou pour les ébauches a finir sur la CN.
Gestion Arduino sur Mega2560 / Accelstepper.

Machine Weiss WBM45L :Grande table et visu, Fraiseuse de gamme supérieure pour un atelier indépendant- de bricoleur comme moi :slight_smile:
Motorisation des axes : PAP 6Nm Xet Y, 12 Nm pour le Z , surmultiplication poulie et courroie 1/3 pour concilier vitesse encombrement et couple.
Manque un peu de silicone autour des toles pour eviter les vibrations sur les vidéos.

Photo machine :

Mise en route :
Mise en route

Deux curseur pour chaque axes un pour la vitesse, l'autre pour la distance a parcourir
interruption par bouton stop (rouge) avec décélération.
Mise a zero des axes par bouton rouge si tous les curseurs sont a Zero (A venir installation de FDC pour faire les POM)

Deplacement : Deplacement A vide

Ce n'est pas une CN donc pas de recherche de rapidité extrême surtout sur queue d'aronde
Je limite la vitesse des axes ils peuvent aller beaucoup plus vite mais au risque de perte de pas et cela n'aurait pas grande utilité pour mon utilisation.

Usinage :

Le premier depuis la modif , le contour alu de l'ecran du boitier.
Usinage contour ecran

Les axes se deplacent de 1/100 eme de millimètres jusqu'a 50 cm donc on peut travailler avec precision.

Le code (sans prétention car très amateur !!! mais fonctionnel, utilisation abusive des variables globales, des if a la place des case etc etc ) encore a developper pour la répétitivité des mouvements ou la création de points.


/*
Motorissation fraiseuse WBM45L

*/

#include <Stepper.h>
#include <LiquidCrystal_I2C.h>
#include <AccelStepper.h>
#include <SoftwareSerial.h>

SoftwareSerial maConnection(10, 11);  //RX|TX
LiquidCrystal_I2C lcd(0x27, 20, 4);

long PosX;
const double PosXMax = 69420;
double PosXMin = 0;
double PasAFaireX = 0;
int SpeedX = 2500;
int AccelX = 300;
int SpeedXMax = 2500;
int ManuelX;
long PosXToGo = 0;
double PosXV;
long PosY;
const double PosYMax = 29370;
double PosYMin = 0;
double PasAFaireY = 0;
int Ytemp;
int SpeedY = 3000;
int AccelY = 3000;
int SpeedYMax = 300;
int ManuelY;
long PosYToGo = 0;
String PasLcdY;
String PasLcdZ;
String PasLcdX;
String PasLcdYOld;
String PasLcdZOld;
String PasLcdXOld;
int VitLcdY;
int VitLcdZ;
int VitLcdX;
int VitLcdYOld;
int VitLcdXOld;
int VitLcdZOld;
int Cote;
double PosYV;
long PosZ;
const double PosZMax = 69420;
double PosZMin = 0;
double PasAFaireZ = 0;
int SpeedZ = 2000;
int AccelZ = 1000;
int SpeedZMax = 2000;
int ManuelZ;
double PosZToGo = 0;

double PosZV;

String XLong;


//variables Joy

const int JoyGH = A10;
int VJoyGH;
const int JoyGB = A11;
int VJoyGB;
const int JoyGG = A15;
int VJoyGG;
const int JoyGD = A9;
int VJoyGD;

const int JoyDH = A14;
int VJoyDH;
const int JoyDB = A12;
int VJoyDB;
const int JoyDG = A13;
int VJoyDG;
const int JoyDD = A8;
int VJoyDD;


const int Cur1 = A7;
int VCur1;
const int Cur2 = A6;
int VCur2;
const int Cur3 = A5;
int VCur3;
const int Cur4 = A3;
int VCur4;
const int Cur5 = A2;
int VCur5;
const int Cur6 = A1;
int VCur6;

const int VarD = A4;
int VVarD;
const int VarG = A0;
int VVarG;

const int BtnStop = 23;
int VBtnStop;
int VBtnStopOld;
const int Rien2 = 25;  //jaune
const int LedJD = 27;  //Bleu
const int LedRD = 29;  //noir
const int LedVD = 31;  //blanc
const int LedRG = 33;  //Rouge
const int LedVG = 35;  //vert
const int LedJG = 37;  //jaune

byte StepperXDir = 28;
byte StepperXPul = 26;

byte StepperYDir = 32;
byte StepperYPul = 30;

byte StepperZDir = 38;
byte StepperZPul = 36;

AccelStepper StepperX(1, 26, 28);
AccelStepper StepperY(1, 30, 32);
AccelStepper StepperZ(1, 36, 38);






int Potard;
int Vit = 801;
//Diverse

char msg = ' ';
char key;
int CodeCh;
int Compteur = 1;


int stepCount = 0;  
void PotardSelect() {
  Potard = analogRead(A0);
  if (Potard < 20) { Vit = 1; }
  if (Potard < 50) { Vit = 10; }
  if (Potard < 80) { Vit = 100; }
  if (Potard < 100) { Vit = 1000; }
  if (Potard < 110) { Vit = 1500; }
  if (Potard < 100) { Vit = 2000; }
}
void setup() {
  // Init Joystick Physique
  pinMode(JoyGH, INPUT_PULLUP);
  pinMode(JoyGB, INPUT_PULLUP);
  pinMode(JoyGG, INPUT_PULLUP);
  pinMode(JoyGD, INPUT_PULLUP);
  pinMode(JoyDH, INPUT_PULLUP);
  pinMode(JoyDB, INPUT_PULLUP);
  pinMode(JoyDG, INPUT_PULLUP);
  pinMode(JoyDD, INPUT_PULLUP);
  pinMode(23, OUTPUT);
  digitalWrite(BtnStop, HIGH);
  pinMode(25, OUTPUT);
  pinMode(27, OUTPUT);
  pinMode(29, OUTPUT);
  pinMode(31, OUTPUT);
  pinMode(33, OUTPUT);
  pinMode(35, OUTPUT);
  pinMode(37, OUTPUT);
  pinMode(36, OUTPUT);
  pinMode(38, OUTPUT);
  Serial.begin(9600);  // default baud rate
  //initialise LCD
  lcd.begin(16, 2);
  lcd.init();  // initialisation de l'afficheur
  lcd.backlight();
}
void MoteurXD() {

  StepperX.setMaxSpeed(SpeedX);
  StepperX.setAcceleration(SpeedX / 5);
  PosXToGo = PosX + (PasAFaireX);
  if (PosXToGo > PosXMax) { PosXToGo = PosXMax; }
  StepperX.moveTo(PosXToGo);
  while (StepperX.isRunning() > 0) {
    StepperX.run();
    BoutonStop();
  }
  PosX = PosXToGo;
  StepperX.setCurrentPosition(PosXToGo);
  
  lcd.setCursor(5, 0);
  lcd.print("     ");
  lcd.setCursor(0, 0);
  lcd.print("VitX:");
  lcd.setCursor(5, 0);
  lcd.print(VitLcdX);
  lcd.setCursor(15, 0);
  lcd.print("     ");
  lcd.setCursor(10, 0);
  lcd.print("PasX:");
  lcd.setCursor(15, 0);
  lcd.print(PasLcdX);
  lcd.setCursor(0, 3);
  lcd.print("     ");
  lcd.setCursor(0, 3);
  lcd.print(PosX);
  return;
}
void MoteurXG() {
  StepperX.setMaxSpeed(SpeedX);
  StepperX.setAcceleration(SpeedX / 5);
  PosXToGo = PosX - PasAFaireX;
  if (PosXToGo < PosXMin) { PosXToGo = PosXMin; }
  StepperX.moveTo(PosXToGo);
  while (StepperX.isRunning() > 0) {
    StepperX.run();
    BoutonStop();
  }
  PosX = PosXToGo;
  StepperX.setCurrentPosition(PosXToGo);
 
  lcd.setCursor(5, 0);
  lcd.print("     ");
  lcd.setCursor(0, 0);
  lcd.print("VitX:");
  lcd.setCursor(5, 0);
  lcd.print(VitLcdX);
  lcd.setCursor(15, 0);
  lcd.print("     ");
  lcd.setCursor(10, 0);
  lcd.print("PasX:");
  lcd.setCursor(15, 0);
  lcd.print(PasLcdX);
  PosX = StepperX.currentPosition();
  lcd.setCursor(0, 3);
  lcd.print("     ");
  lcd.setCursor(0, 3);
  lcd.print(PosX);

  return;
}
void MoteurYAR() {

  StepperY.setMaxSpeed(SpeedY);
  StepperY.setAcceleration(SpeedY / 5);
  PosYToGo = PosY + (PasAFaireY);
  if (PosYToGo > PosYMax) { PosYToGo = PosYMax; }
  StepperY.moveTo(PosYToGo);
  while (StepperY.isRunning() > 0) {
    StepperY.run();
    BoutonStop();
  }
  PosY = PosYToGo;
  StepperY.setCurrentPosition(PosYToGo);
 
  lcd.setCursor(5, 1);
  lcd.print("     ");
  lcd.setCursor(0, 1);
  lcd.print("VitY:");
  lcd.setCursor(5, 1);
  lcd.print(VitLcdY);
  lcd.setCursor(15, 1);
  lcd.print("     ");
  lcd.setCursor(10, 1);
  lcd.print("PasY:");
  lcd.setCursor(15, 1);
  lcd.print(PasLcdY);
  lcd.setCursor(7, 3);
  lcd.print("     ");
  lcd.setCursor(7, 3);
  lcd.print(PosY);
  return;
}
void MoteurYAV() {
  StepperY.setMaxSpeed(SpeedY);
  StepperY.setAcceleration(SpeedY / 5);
  PosYToGo = PosY - PasAFaireY;
  if (PosYToGo < PosYMin) { PosYToGo = PosYMin; }
  StepperY.moveTo(PosYToGo);
  while (StepperY.isRunning() > 0) {
    StepperY.run();
    BoutonStop();
  }
  PosY = PosYToGo;
  StepperY.setCurrentPosition(PosYToGo);
 
  lcd.setCursor(5, 1);
  lcd.print("     ");
  lcd.setCursor(0, 1);
  lcd.print("VitY:");
  lcd.setCursor(5, 1);
  lcd.print(VitLcdY);
  lcd.setCursor(15, 1);
  lcd.print("     ");
  lcd.setCursor(10, 1);
  lcd.print("PasY:");
  lcd.setCursor(15, 1);
  lcd.print(PasLcdY);
  PosY = StepperY.currentPosition();
  lcd.setCursor(7, 3);
  lcd.print("     ");
  lcd.setCursor(7, 3);
  lcd.print(PosY);

  return;
}
void MoteurZH() {

  StepperZ.setMaxSpeed(SpeedZ);
  StepperZ.setAcceleration(SpeedZ / 5);
  PosZToGo = PosZ + (PasAFaireZ);  
  StepperZ.moveTo(PosZToGo);
  while (StepperZ.isRunning() > 0) {
    StepperZ.run();
    BoutonStop();
  }
  PosZ = PosZToGo;
  StepperZ.setCurrentPosition(PosZToGo);

  lcd.setCursor(5, 2);
  lcd.print("     ");
  lcd.setCursor(0, 2);
  lcd.print("VitZ:");
  lcd.setCursor(5, 2);
  lcd.print(VitLcdZ);
  lcd.setCursor(15, 2);
  lcd.print("     ");
  lcd.setCursor(10, 2);
  lcd.print("PasZ:");
  lcd.setCursor(15, 2);
  lcd.print(PasLcdZ);
  lcd.setCursor(13, 3);
  lcd.print("     ");
  lcd.setCursor(15, 3);
  lcd.print(PosZ);
  return;
}
void MoteurZB() {
  StepperZ.setMaxSpeed(SpeedZ);
  StepperZ.setAcceleration(SpeedZ / 5);
  PosZToGo = PosZ - PasAFaireZ;
  if (PosZToGo < PosZMin) { PosZToGo = PosZMin; }
  StepperZ.moveTo(PosZToGo);
  while (StepperZ.isRunning() > 0) {
    StepperZ.run();
    BoutonStop();
  }
  PosZ = PosZToGo;
  StepperZ.setCurrentPosition(PosZToGo);
  lcd.setCursor(5, 2);
  lcd.print("     ");
  lcd.setCursor(0, 2);
  lcd.print("VitZ:");
  lcd.setCursor(5, 2);
  lcd.print(VitLcdZ);
  lcd.setCursor(15, 2);
  lcd.print("     ");
  lcd.setCursor(10, 2);
  lcd.print("PasZ:");
  lcd.setCursor(15, 2);
  lcd.print(PasLcdZ);
  lcd.setCursor(15, 3);
  lcd.print("     ");
  lcd.setCursor(15, 3);
  lcd.print(PosZ);

  return;
}

void BoutonStop() {

  if (digitalRead(BtnStop) == LOW) {
    StepperX.stop();
    StepperY.stop();
    StepperZ.stop();
  }
}
void EffaceLcd() {

  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("                    ");
  lcd.setCursor(0, 1);
  lcd.print("                    ");
  lcd.setCursor(0, 2);
  lcd.print("                    ");
  lcd.setCursor(0, 3);
  lcd.print("                    ");
}
void loop() {
  //EffaceLcd();


  if (Serial.available()) { msg = Serial.read(); }

  VJoyDH = analogRead(JoyDH);
  VJoyDB = analogRead(JoyDB);
  VJoyDG = analogRead(JoyDG);
  VJoyDD = analogRead(JoyDD);
  VJoyGH = analogRead(JoyGH);
  VJoyGB = analogRead(JoyGB);
  VJoyGG = analogRead(JoyGG);
  VJoyGD = analogRead(JoyGD);
  VBtnStop = digitalRead(BtnStop);


  //remise a 10000
  if (VBtnStop == 0 && PasAFaireX > 500 && SpeedX > 500) {
    PosXMin = -30000;
    PosYMin = -30000;
    PosZMin = -30000;
    digitalWrite(27, HIGH);
    digitalWrite(29, HIGH);
    digitalWrite(31, HIGH);
    digitalWrite(33, HIGH);
    digitalWrite(35, HIGH);
    digitalWrite(37, HIGH);
    delay(1000);
    digitalWrite(27, LOW);
    digitalWrite(29, LOW);
    digitalWrite(31, LOW);
    digitalWrite(33, LOW);
    digitalWrite(35, LOW);
    digitalWrite(37, LOW);
    lcd.setCursor(0, 3);
    lcd.print("     ");
    lcd.setCursor(0, 3);
    lcd.print(PosX);
    lcd.setCursor(7, 3);
    lcd.print("     ");
    lcd.setCursor(7, 3);
    lcd.print(PosY);
    lcd.setCursor(14, 3);
    lcd.print("     ");
    lcd.setCursor(14, 3);
    lcd.print(PosZ);
  }
  //remise a 0
  if (VBtnStop == 0 && PasAFaireX < 500 && SpeedX < 500) {
    PosX = 0;
    PosY = 0;
    PosZ = 0;
    PosXMin = 0;
    PosYMin = 0;
    PosZMin = 0;
    digitalWrite(27, HIGH);
    digitalWrite(29, HIGH);
    digitalWrite(31, HIGH);
    digitalWrite(33, HIGH);
    digitalWrite(35, HIGH);
    digitalWrite(37, HIGH);
    delay(1000);
    digitalWrite(27, LOW);
    digitalWrite(29, LOW);
    digitalWrite(31, LOW);
    digitalWrite(33, LOW);
    digitalWrite(35, LOW);
    digitalWrite(37, LOW);
    lcd.setCursor(0, 3);
    lcd.print("     ");
    lcd.setCursor(0, 3);
    lcd.print(PosX);
    lcd.setCursor(7, 3);
    lcd.print("     ");
    lcd.setCursor(7, 3);
    lcd.print(PosY);
    lcd.setCursor(14, 3);
    lcd.print("     ");
    lcd.setCursor(14, 3);
    lcd.print(PosZ);
  }



  //ZoneX
  if (VJoyDG < 300) {
    digitalWrite(35, HIGH);
    MoteurXG();
  }
  if (VJoyDD < 300) {
    digitalWrite(31, HIGH);
    MoteurXD();
  }
  digitalWrite(31, LOW);
  digitalWrite(35, LOW);  //MoteurX desactivé

  VCur6 = analogRead(Cur6);
  if (VCur6 < 50) {
    PasAFaireX = 1;
    PasLcdX = "1 CEN";
  }
  if (VCur6 > 51 && VCur6 < 150) {
    PasAFaireX = 12;
    PasLcdX = "1 DIX";
  }
  if (VCur6 > 151 && VCur6 < 300) {
    PasAFaireX = 135;
    PasLcdX = "1 MM";
  }
  if (VCur6 > 301 && VCur6 < 450) {
    PasAFaireX = 1335;
    PasLcdX = "1 CM";
  }
  if (VCur6 > 451 && VCur6 < 600) {
    PasAFaireX = 6675;
    PasLcdX = "5 CM";
  }
  if (VCur6 > 601 && VCur6 < 750) {
    PasAFaireX = 13350;
    PasLcdX = "10 CM";
  }
  if (VCur6 > 751 && VCur6 < 900) {
    PasAFaireX = 26700;
    PasLcdX = "20 CM";
  }
  if (VCur6 > 901 && VCur6 < 1030) {
    PasAFaireX = 66750;
    PasLcdX = "50 CM";
  }

  VCur5 = analogRead(Cur5);
  if (VCur5 < 50) {
    SpeedX = 1;
    VitLcdX = 1;
  }
  if (VCur5 > 50 && VCur5 < 199) {
    SpeedX = 10;
    VitLcdX = 10;
  }
  if (VCur5 > 200 && VCur5 < 399) {
    SpeedX = 100;
    VitLcdX = 100;
  }
  if (VCur5 > 400 && VCur5 < 599) {
    SpeedX = 500;
    VitLcdX = 500;
  }
  if (VCur5 > 600 && VCur5 < 799) {
    SpeedX = 1000;
    VitLcdX = 1000;
  }
  if (VCur5 > 800 && VCur5 < 999) {
    SpeedX = 1500;
    VitLcdX = 1500;
  }
  if (VCur5 > 1000) {
    SpeedX = 2800;
    VitLcdX = 2800;
  }
  //ZoneY2
  if (VJoyDH < 300) {
    digitalWrite(37, HIGH);
    MoteurYAR();
  }
  if (VJoyDB < 300) {
    digitalWrite(27, HIGH);
    MoteurYAV();
  }
  digitalWrite(27, LOW);
  digitalWrite(37, LOW);  //Moteur Y desactivé
                          //Dplacement Y
  VCur2 = analogRead(Cur2);
  if (VCur2 < 50) {
    PasAFaireY = 1;
    PasLcdY = "1 CEN";
  }
  if (VCur2 > 51 && VCur2 < 150) {
    PasAFaireY = 12;
    PasLcdY = "1 DIY";
  }
  if (VCur2 > 151 && VCur2 < 300) {
    PasAFaireY = 135;
    PasLcdY = "1 MM";
  }
  if (VCur2 > 301 && VCur2 < 450) {
    PasAFaireY = 1335;
    PasLcdY = "1 CM";
  }
  if (VCur2 > 451 && VCur2 < 600) {
    PasAFaireY = 6675;
    PasLcdY = "5 CM";
  }
  if (VCur2 > 601 && VCur2 < 750) {
    PasAFaireY = 13350;
    PasLcdY = "10 CM";
  }
  if (VCur2 > 751 && VCur2 < 900) {
    PasAFaireY = 26700;
    PasLcdY = "20 CM";
  }
  if (VCur2 > 901 && VCur2 < 1030) {
    PasAFaireY = 66750;
    PasLcdY = "50 CM";
  }
  //Vitesse Y
  VCur1 = analogRead(Cur1);
  if (VCur1 < 50) {
    SpeedY = 1;
    VitLcdY = 1;
  }
  if (VCur1 > 50 && VCur1 < 199) {
    SpeedY = 10;
    VitLcdY = 10;
  }
  if (VCur1 > 200 && VCur1 < 299) {
    SpeedY = 100;
    VitLcdY = 100;
  }
  if (VCur1 > 300 && VCur1 < 399) {
    SpeedY = 500;
    VitLcdY = 500;
  }
  if (VCur1 > 400 && VCur1 < 499) {
    SpeedY = 1000;
    VitLcdY = 1000;
  }
  if (VCur1 > 500 && VCur1 < 599) {
    SpeedY = 1500;
    VitLcdY = 1500;
  }
  if (VCur1 > 600) {
    SpeedY = 2000;
    VitLcdY = 2000;
  }
  //
  //ZoneZ
  if (VJoyGH < 300) {
    digitalWrite(29, HIGH);
    MoteurZH();
  }
  if (VJoyGB < 300) {
    digitalWrite(33, HIGH);
    MoteurZB();
  }
  digitalWrite(29, LOW);
  digitalWrite(33, LOW);  //Moteur Z desactivé



  VCur4 = analogRead(Cur4);
  if (VCur4 < 50) {
    PasAFaireZ = 1;
    PasLcdZ = "1 CENT";
  }
  if (VCur4 > 51 && VCur4 < 100) {
    PasAFaireZ = 10;
    PasLcdZ = "1 DIX";
  }
  if (VCur4 > 101 && VCur4 < 200) {
    PasAFaireZ = 139;
    PasLcdZ = "1 MM";
  }
  if (VCur4 > 201 && VCur4 < 400) {
    PasAFaireZ = 1390;
    PasLcdZ = "1 CM";
  }
  if (VCur4 > 401 && VCur4 < 600) {
    PasAFaireZ = 13900;
    PasLcdZ = "10 CM";
  }
  if (VCur4 > 601 && VCur4 < 800) {
    PasAFaireZ = 27800;
    PasLcdZ = "20 CM";
  }
  if (VCur4 > 801 && VCur4 < 1000) {
    PasAFaireZ = 69700;
    PasLcdZ = "50 CM";
  }
  if (VCur4 > 1000) {
    PasAFaireZ = 50000;
    PasLcdZ = 75000;
  }

  VCur3 = analogRead(Cur3);
  if (VCur3 < 50) {
    SpeedZ = 1;
    VitLcdZ = 1;
  }
  if (VCur3 > 50 && VCur3 < 200) {
    SpeedZ = 100;
    VitLcdZ = 10;
  }
  if (VCur3 > 200 && VCur3 < 400) {
    SpeedZ = 500;
    VitLcdZ = 100;
  }
  if (VCur3 > 400 && VCur3 < 600) {
    SpeedZ = 1000;
    VitLcdZ = 500;
  }
  if (VCur3 > 600 && VCur3 < 800) {
    SpeedZ = 1500;
    VitLcdZ = 1500;
  }
  if (VCur3 > 800 && VCur3 < 1000) {
    SpeedZ = 2000;
    VitLcdZ = 2000;
  }
  if (VCur3 > 1000) {
    SpeedZ = 2500;
    VitLcdZ = 2500;
    VitLcdZ = 2500;
  }


  if (VitLcdXOld != VitLcdX) {
    lcd.setCursor(5, 0);
    lcd.print("     ");
    lcd.setCursor(0, 0);
    lcd.print("VitX:");
    lcd.setCursor(5, 0);
    lcd.print(VitLcdX);
    VitLcdXOld = VitLcdX;
  }
  if (PasLcdXOld != PasLcdX) {
    lcd.setCursor(15, 0);
    lcd.print("     ");
    lcd.setCursor(10, 0);
    lcd.print("PasX:");
    lcd.setCursor(15, 0);
    lcd.print(PasLcdX);
    lcd.print(XLong);
    PasLcdXOld = PasLcdX;
  }
  if (VitLcdYOld != VitLcdY) {
    lcd.setCursor(5, 1);
    lcd.print("     ");
    lcd.setCursor(0, 1);
    lcd.print("VitY:");
    lcd.setCursor(5, 1);
    lcd.print(VitLcdY);
    VitLcdYOld = VitLcdY;
  }
  if (PasLcdYOld != PasLcdY) {
    lcd.setCursor(15, 1);
    lcd.print("     ");
    lcd.setCursor(10, 1);
    lcd.print("PasY:");
    lcd.setCursor(15, 1);
    lcd.print(PasLcdY);
    PasLcdYOld = PasLcdY;
  }
  if (VitLcdZOld != VitLcdZ) {
    lcd.setCursor(5, 2);
    lcd.print("     ");
    lcd.setCursor(0, 2);
    lcd.print("VitZ:");
    lcd.setCursor(5, 2);
    lcd.print(VitLcdZ);
    VitLcdZOld = VitLcdZ;
  }
  if (PasLcdZOld != PasLcdZ) {
    lcd.setCursor(15, 2);
    lcd.print("     ");
    lcd.setCursor(10, 2);
    lcd.print("PasZ:");
    lcd.setCursor(15, 2);
    lcd.print(PasLcdZ);
    PasLcdZOld = PasLcdZ;
  }
  // if (VBtnStop!=VBtnStopOld){lcd.setCursor (5, 3);lcd.print("     ");lcd.setCursor (0, 3); lcd.print("BtnS:");  lcd.setCursor (5, 3);lcd.print(VBtnStop);VBtnStopOld=VBtnStop;}

  msg = "";
}




salut, merci pour ce partage.

dis donc cette grande armoire c'est une toute petite carte arduino qui commande tout ça? j'avoue que l'échelle m'empêche vraiment de l'imaginer cachée dans cette boite!

tranquille pour le code, il vaut mieux un codage amateur qu'un héros mort (non c'est pas ça :thinking:).
je commence souvent par un code très ambitieux pour revenir assez vite aux fondamentaux (et la led finit par clignoter....). et je n'ai JAMAIS utilisé les switch/case, toujours les if. après tout, le résultat est le même sous réserve que tu ais bien paramétré tes bornes de tests.

par contre je me sens un peu perdu par l'usage lui même de la machine (assez éloigné de mon domaine, alors ça titille ma curiosité). tu as sous la main un ou deux travaux fait avec que je me fasse une idée?

Realisé entièrement avec celle ci pour les grosses pièces le robot de cave deja publié dans projet terminé : robot de cave maintenant la cave contient 800 bouteilles :rofl:

J'ai une fraiseuse CN et un tour, je fabrique un peu tout ce dont j'ai besoin, mais ce n'est pas du tout mon metier, ni l'usinage, ni la programmation, c'est plutot mes délires :rofl:

ou un jour j'ai besoin d'un support de téléphone pour la moto j'en usine un FIABLE en alu

L'atelier c'est ma zone de loisir, je fais aussi des peintures motos car je collectionne les anciennes:
Peinture Jean

Le résultat est complétement différent, puisque l'un est lisible, l'autre pas :slight_smile:

Ha tu as cette "petite" machine dans ton garage :astonished:

oui et aussi quelques autres :grimacing: j'ai honte juste pour bricoler



en fait c'est le plaisir de faire, si je fais la somme de mon outillage je pourrais faire usiner les pièces chez un tiers et peindre mes motos chez un peintre !!!!
Pour les peintures si tu regardes le lien au dessus, je fais que des trucs complexe, ;comme la ducati 999 nacre diamant avec 6 couches de vernis :crazy_face: j'adore

ah oui le gars est bien équipé :grin:

Pourquoi honte, c'est super!!!

Dans mon garage, je doit pouvoir y mettre une perceuse à main, pas plus :frowning:

c'est un reve de gosse mon atelier, j'adore bricoler. Je reconnais que j'abuse un peu parfois dans le matériel :thinking:

oui c'est clair que je peux y caser une mega !! non la boite est grande c'est juste pour l'ergnomie. Pour usiner je trouve que c'est mieux des grosses commandes, des joysticks etc, ca permet d'avoir les yeux sur ce qui se passe sur la machine et une main sur le boitier

juste parce qu'il ya des pros qui rament et aimerait avoir autant de matos que moi je sous utilise

J'ai beaucoup de matos mais en tout cas sur ce forum il y a des personnes comme vous @terwal @GrandPete ou @hbachetti @jpbbricole @J-M-L @dfgh (je cites les quelques uns qui me viennent a l'esprit désolé pour ceux que j'oublie) qui apportent un soutien incroyable, félicitations et merci a tous , car on peut avoir tout le matériel du monde , sans la connaissance on ne sait rien en faire.

Ouai, moi je le vois plutôt dans l'autre sens, tu as les moyens et la place, donc pourquoi se priver.
C'est pas parce que tu ne le ferais pas, qu'il aurait plus de moyen :slight_smile:
A la limite monte un fablab dans ton coin pour en faire profiter les autres :rofl:

si vous avez des potes bricoleurs ça peut être sympa de partager des projets (et les coûts d'usage)

Mais il ne faut pas créer une structure car sinon ça rentre sous les loi de lieu accueillant du public et possible changement de destination juridique du local, il y a des règles de sécurité et faut voir avec son assurance qui est responsable si un bricoleur externe se blesse ou casse une machine.... ça devient vite Kafkaïen

c est le problème avec les machines outils, celui qui n’a pas l’habitude peut vite se faire mal. avec le tour ou la grosse fraiseuse la moindre erreur peut faire de gros dégâts.
De plus pour moi l’atelier c’est un anti dépresseur, mes moments solos a me vider l’esprit.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.