Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=signup Les demandes d'inscription sont révisées quotidiennement.

Menu principal
Menu

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Voir les contributions Menu

Messages - maximeh

#1
Bonjour,

j'utilise cettedécoupeuse depuis  23 oct. 2019

j'ai mis un isolateur pour le câble anode du tube



j'ai juste voulu changer de carte pour me permettre d'éviter les sons des moteurs pas a pas

donc pas une histoire d'isolation, juste un parasite, le son est déjà pas l'électrique, non je vais brancher tout ca et on verra si c'est l'alimentation qui était a l'origine du problème
#2
Bonjour,

Je suis totalement rassuré.

Je m'y attendais pas mais j'ai reçu très rapidement une nouvelle alimentation  vevor 50w qui as les même connectique que l'alimentation 40w de K40.
J'ai plusieurs cartes car je veux avoir mes tmc2209 pour éviter les vibrations des steppers qui au final perturbent la découpe.
Avec  la stm32 pour k40 Mini Gerbil v3m j'ai réussi a avoir une découpeuse qui ne faisait presque aucun bruit car j'ai tout fait pour limiter le bruit, changement de ventilateurs et système d'évacuation optimisé.

Mais après un certain temps un son parasite comme le son que fait un robinet quand l'eau sort avec un certain débit phonétiquement un chhhhhhhhhh qui avait comme conséquence une perte de puissance qui limitait a 10ma même si je demandais à 20 ou 25.
Au tout début avec cette carte j'avais exactement ce son et ca conséquence, mais un jour j'ai trouvé l'origine qui était le câble usb qui touchait les câbles du secteur.
On peut donc penser que c'est  soucis d'isolation.
Grace a la nouvelle alimentation je vais découvrir plus de données pour isoler le problème.
Je vous tiens au courant, merci encore pour vos réponses rapide.





#3
Je vous remercie pour votre réponse si rapide.

Si j'ose, avez vous déjà utilisé une alimentation de machine c02 c'est a dire 20kv-25kv?

merci d'avance
#4
Bonjour,

Voici l'alimentation :
https://www.mycloud.ch/l/L005597B693DA1C21CBD759121F38A4FC946D70C6E5778DC99559949C11925C8B

j'utilise comme carte de control un nano avec Shield pour grbl

Depuis la pin du Shield z- un signal pwm est envoyé chaque fois que le laser doit découper ou graver.

Je n'ai pas besoin du pwm, il me faut juste avoir un signal pour que je puisse faire basculer le 5v à GND donc.

en électronique quel est pour vous la solution la  plus simple et le plus rapide.

petite question, je n'ai pas trouvé la solution pour insérer une image dans mon post, j'ai bien upload l'image je trouve bien la balise "insérer une image" mais ensuite que faut il faire

Merci d'avance








#5
Bonjour,

Merci pour votre réponse.

Pour répondre il faut commencer par analyser le point 14 du datasheet page 67, et me dire ce que vous en pensez !
#6
Bonjour, bonne année, j'ai besoin d'aide pour extraire des fonctions qui se trouvent dans le datasheet de tmc2209, il y a qu'une librairie disponible et selon moi elle est totalement a coté de la plaque.

datasheet https://www.analog.com/media/en/technical-documentation/data-sheets/TMC2209_datasheet_rev1.09.pdf
gthub https://github.com/janelia-arduino/TMC2209

Selon moi ce driver de stepper est une vrai avancée dans le monde des stepper.
#7
Ouf je ne comprenais pas pourquoi 7 quand 6 digit pour remove et substring

en fait le string est réceptionné par un http.request et a cause de ca il y a en plus du string 1 espace au début et à  la fin donc j'ai juste fait str.remove(0,1); str.remove(str.length() -1 ,str.length()); et maintenant les remove et substring sont bien 6 et plus 7

dernière modification..
au final a la place de mettre par exemple 002000 je mets __2000 c'est a cause de -02000 car avec _ ca donne _-2000, beaucoup plus claire, dans le code c'est bien entendu traité par la fonction replace(). inputString.replace("_", "");

pour les modérateurs ? j'ai pas mal de questions a poser lié à  des problèmes comme ca,  plus algorithmique que électronique mais c'est quand même sur des microcontrôleurs donc il me semble que c'est  lié du coup ou dois je les poster sur ce forum? aussi j'ai appris dans ce post que je vais prendre une grande attention aux questions et répondre a toutes.

#8
Ca ne correspond pas au message dans ton premier post. Chaque champ avait un nombre de digits variable.

réponse : comme expliqué, j'ai cherché une solution après avoir posé la question et après réflexion j'ai compris que j'avais besoin de 6 digit, avec 3600 pas ils font 201.34 mm

Tu es sur que ça compile?
En supposant que arrastring[titi] contient bien la bonne chaîne de caractère, la bonne formulation serait

réponse : ce code fonctionne à  merveille.je peux maintenant envoyer le nombre de positions des 2 moteurs comme je veux. plus limité a 64 charactères.
               arraystring[titi]; est int   j'ai laissé string dans le nom mais c'est int
               converti dans void serialEvent
                if (inputString.length() == 7) {
                 arraystring[toto] = inputString.toInt();
                 inputString.remove(0,7);
                 toto++;
    }

#9
Hello Kamill

Merci pour tes questions.

Pourquoi 50, je peux te répondre pourquoi pas 200 ou plus.

Désolé mais en même temps que je pose une question je recherche la solution, j'ai justement indiqué que j'avais aussi pensé a un moment découper le string et les envoyer séparément afin de ne pas atteindre les 64 caractères maximum apparemment.

Pourquoi 7 ben c'est en fait 6 digits car dans la fonction remove() tu dois faire nombre de caractères +1 donc 7 c'est en fait le nombre de pas de deux stepper sur un véhicule ROV, donc de -99999 à  999999.

Si j'ai fait ces 3 Serial-print c'est juste pour me démontrer que ca fonctionne. maintenant c'est ca :

if (stringComplete) {
   

long positions[2];

  stepper_driver.initialize();
  int titi = 0;
  for (int i = 0; i < toto /2; ++i) {
  positions[0] = arraystring[titi];
  titi++;
  positions[1] = arraystring[titi];
  titi++;

  steppers.moveTo(positions);
  steppers.runSpeedToPosition();
  stepper1.setCurrentPosition(0);
  stepper2.setCurrentPosition(0);

}
    inputString = "";
    toto = 0;
    stringComplete = false;
}}



Vraiment désolé de ne pas vous donner tout le code, c'est pas pour une histoire que je veux pas partager mais les autres paramètres n'ont aucune influence sur ce problème que j'avais.

Je te remercie infiniment pour "inputString=Serial.readStringUntil('\n');"

Quels sont tes langages que tu maitrises?

#10
et pour finir j'ai modifié pour ne pas être limité au niveau de la taille max d'un string en mettant dans un tableau

String inputString = "";         // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete
int toto = 0;
String arraystring[50];
void setup() {
  // initialize serial:
  Serial.begin(9600);
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);
}

void loop() {
  // print the string when a newline arrives:
  if (stringComplete) {
   
    Serial.println(arraystring[1]);
    Serial.println(arraystring[2]);
    Serial.println(arraystring[3]);
    inputString = "";
    toto = 0;
    stringComplete = false;
  }
}

/*
  SerialEvent occurs whenever a new data comes in the hardware serial RX. This
  routine is run between each time loop() runs, so using delay inside loop can
  delay response. Multiple bytes of data may be available.
*/
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 (inputString.length() == 7) {
      arraystring[toto] = inputString;
      inputString.remove(0,7);
      toto++;
    }
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}
#11
Un grand merci pour vos réponses.
J'ai pensé effectivement de couper le string et d'envoyer l'un après l'autre.

j'envois comme ça;

String myArrayStr[50];

void setup()
{
  Serial.begin(9600);
  pinMode(4, INPUT_PULLUP); 


void loop()
{
if (digitalRead(4) == LOW) {
    String str1 ="123422125472";
    int nb_order = str1.length() /6 ;
    for (int i = 0; i < nb_order; ++i) {
    myArrayStr = str1.substring(0 ,7);
    Serial.print(myArrayStr);
    str1.remove(0,7);
    delay(400); 
    }}}
 

mais le problème c'est au niveau de la réception

void setup()
{
  Serial.begin(9600); 


void loop() { 
if (Serial.available() > 0) 
  {   
    String recData = " "; 
    while(Serial.available())
    {
      char c = Serial.read();
        recData += c;   
      delay(10);     
    } 
    Serial.println(recData);
}}

c'est idiot, j'ai trouvé la olution dans l'exemple serial event dans arduino

String inputString = "";         // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete

void setup() {
  // initialize serial:
  Serial.begin(9600);
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);
}

void loop() {
  // print the string when a newline arrives:
  if (stringComplete) {
    Serial.println(inputString);
    // clear the string:
    inputString = "";
    stringComplete = false;
  }
}

/*
  SerialEvent occurs whenever a new data comes in the hardware serial RX. This
  routine is run between each time loop() runs, so using delay inside loop can
  delay response. Multiple bytes of data may be available.
*/
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;
    }
  }
}

il faut juste que j'envoi un Serial.println(); a la fin de mon envoi pour que le receveur sache que j'ai fini.

un grand merci encore de votre attention.


#12
J'ai besoin de transférer par serial entre un esp01s et un Arduino nano une message comme celui ci :2300_1111_3400_5012_4500_8913_5600_12814_6700_16715_7800_20616_8900_24517_10000_28418_11100_32319_12200_36220_13300_40121_11.
il peut être indéfiniment plus long ou plus petit.

avec la façon standard ci dessous c'est limité a 64, du coup comment faire pour que je puisse envoyer un tel message par serial? un grand merci d'avance

if (Serial.available() > 0) 
{
 
   
   String recData = " ";
    String recData2 = " ";

   while(Serial.available())
   {
     char c = Serial.read();
     if (Serial.available() > 0)
     {
       
     recData += c;
       
     delay(10);
     
   }
#13
comme pour la sd une clé usb pour y mettre les fichier pour l'impression
#14
Vos projets et Montages d'Électronique / De sd to USB
Octobre 26, 2022, 02:19:25 AM
Bonjour,

J'ai une imprimante résine sla laser. Elle a seulement une sortie sd pour les fichiers contenant les gcodes, j'aimerai convertir par une sortie usb. Quelle solution imaginez vous?
merci d'avance
#15
Bonjour,

Je n'arrive pas a trouvé un bin compatible pour installer Circuit python sur mon esp32s. Pas de soucis avec micropython je trouve un generic qui fonctionne parfaitement mais j'ai besoin de circuitpython
On trouve des bin pour S2 S3 et esp8266 mais pas S.
Une idée

merci d'avance