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.


Messages - gaston

Pages: [1] 2 3 ... 7
1
Géneral / Global / Re : Assemblage Smartalu
« le: 18 mai, 2017, 10:17:49 pm »
D'un autre coté, si ça merde au point de cramer ou autre, on est pas à un débouchage de tête près non ? (sauf si insert ptfe dans la tête et que l'on imprime de l'ABS)
Perso, mon ARU coupe la commande 5V de mon alim xbox 360 donc tous les ventilos. Je ré-arme après coupure, ça relance l'arduino, efface les commandes en cours, relance les ventilos et laisse la tête refroidir tranquillement

2
Resolved/Résolu / Re : [RESOLU] Fuite de PLA
« le: 06 avril, 2017, 08:25:38 pm »
Elo,

essais aussi de ne pas monter la t√™te  √† plus de 240¬įC car le PTFE commence √† se d√©former et d√©gager des gaz toxiques.

3
Elo,

je n'ai pas testé personnellement mais je pense que ce genre de "truc" peut aider ;)

https://github.com/Rhoban/Plater

4
Prints / Impressions / Re : Alien Facehugger
« le: 29 octobre, 2016, 10:02:18 pm »
Bravo :)

"Belle bête" :p

5
Géneral / Global / Re : Premiers pas en smartrapcore
« le: 03 octobre, 2016, 10:14:31 pm »
le plus simple pour se rendre compte serait de poster un photo du montage et du résultat de l'impression non ?

6
De mémoire, ce n'est pas possible ;)
Mais bonne idée le département visible directement (pourtant dans le profil, il y a déjà un onglet "location" ... dommage de rajouter ce champ)

7
Bonjour

Afin de faciliter la recherche dans cette section, je vous demande, lors de la création d'un nouveau Post, de mettre un [tag] dans le sujet en fonction de la machine concernée.

Exemples:
- un sujet pour un problème sur l'axe Z se présentera sous ce genre: [XL300] Axe Z ne monte pas. Ou bien [Core bois] Axe ... (En effet, la différence entre les deux machines est "flagrante" au niveau du Z, on attaque la lecture du sujet en sachant de quoi ça parle).

- un sujet sur la chauffe de la hotend sera: [ALL] Pas de chauffe de la hotend. (all=tout) Car cela concerne tout type de machines.

Gaston


Ce post est, pour le moment, ouvert aux commentaires (et sujet à modifications) afin de m'aider à connaitre vos besoins et de cibler "quoi faire" ;)

8
Géneral / Global / Re : smartcore alu ou XL300?
« le: 19 septembre, 2016, 11:27:15 pm »
En effet, il y a pas mal de problèmes d'apro pour la XL (forcement, le dernier modèle)
Pour le fonctionnement, on a pas beaucoup de retours sur les impressions de la XL par les membres du forum  (appel pour remplir la section PRINT ;) ) re (si, je suis sur qu'il y'a a qui tournent ;) )
Mais √† mon avis, plus c'est grand, plus √ßa se complique, 300mm est il la limite ???  (no s√© ....)

9
Géneral / Global / Re : Premiers pas en smartrapcore
« le: 13 septembre, 2016, 08:15:13 pm »
Si vous imprimez de l'ABS: NE SURTOUT PAS D√ČPASSER 250¬įC => destruction de l'insert en teflon √† l‚Äôint√©rieur de la hotend (d'origine) et apr√®s, √ßa bouche...

10
Accessories/Accessoires / un oscilloscope "pas chère" ?
« le: 02 septembre, 2016, 12:36:46 am »
Coucou,

si vous avez besoin de mesurer un signal (en courant continu et <5V) et que vous avez un combo "RAMPS Arduino et grand ecran LCD"
Vous avez ce qu'il faut ;)

Vous devez retirer les pololus, les cavaliers, les diff√©rentes sonde et les endstop  (le plus simple est d'avoir une Ramps + Arduino d'avance :p )
Ensuite, on ouvre un nouveau projet Arduino, et on colle le code suivant:

#include "U8glib.h"
#include <EEPROM.h>

// Variables you might want to play with
byte useThreshold = 1;                  // 0 = Off, 1 = Rising, 2 = Falling
byte theThreshold = 128;                // 0-255, Multiplied by voltageConst
unsigned int timePeriod = 200;          // 0-65535, us or ms per measurement (max 0.065s or 65.535s)
byte voltageRange = 1;                  // 1 = 0-3.3V, 2 = 0-1.65V, 3 = 0-0.825V
byte ledBacklight = 100;

boolean autoHScale = true;             // Automatic horizontal (time) scaling
boolean linesNotDots = true;            // Draw lines between data points

// Variables that can probably be left alone
const byte vTextShift = 3;              // Vertical text shift (to vertically align info)
const byte numOfSamples = 100;          // Leave at 100 for 128x64 pixel display
unsigned int HQadcReadings[numOfSamples];
byte adcReadings[numOfSamples];
byte thresLocation = 0;                 // Threshold bar location
float voltageConst = 0.052381;          // Scaling factor for converting 0-63 to V
float avgV = 0.0;   
float maxV = 0.0;
float minV = 0.0;
float ptopV = 0.0;
float theFreq = 0;

const byte theAnalogPin = A0;             // Data read pin

const byte lcdLED = 6;                   // LED Backlight
const byte lcdA0 = A0;                    // pin "X Stepper" on RAMPS for A0 (probe)
const byte lcdRESET = 8;                 // Low reset /
const byte lcdCS = 9;                    // SPI Chip Select (internally pulled up), active low /overide for RAMPS
const byte lcdMOSI = 11;                 // SPI Data transmission /overide for RAMPS
const byte lcdSCK = 13;                  // SPI Serial Clock /overide for RAMPS

// SW SPI:
//U8GLIB_MINI12864_2X u8g(lcdSCK, lcdMOSI, lcdCS, lcdA0, lcdRESET);
// HW SPI:
U8GLIB_ST7920_128X64_4X u8g(23, 17, 16); // Replace for RAMPS, original values:  SCK =13, MOSI = 11, CS =  11

// High speed ADC code
// From: http://forum.arduino.cc/index.php?PHPSESSID=e21f9a71b887039092c91a516f9b0f36&topic=6549.15
#define FASTADC 1
// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void collectData(void) {
  unsigned int tempThres = 0;
  unsigned int i = 0;

  if (autoHScale == true) {
    // With automatic horizontal (time) scaling enabled,
    // scale quickly if the threshold location is far, then slow down
    if (thresLocation > 5*numOfSamples/8) {
      timePeriod = timePeriod + 10;
    } else if (thresLocation < 3*numOfSamples/8) {
      timePeriod = timePeriod - 10;
    } else if (thresLocation > numOfSamples/2) {
      timePeriod = timePeriod + 2;
    } else if (thresLocation < numOfSamples/2) {
      timePeriod = timePeriod - 2;
    }
  }
  // Enforce minimum time periods
  if (timePeriod < 35) {
    timePeriod = 35;
  }
 
  // Adjust voltage constant to fit the voltage range
  if (voltageRange == 1) {
//    voltageConst = 0.0523810; // 0-3.30V
      voltageConst = 0.1024; // 0-5V
  } else if (voltageRange == 2) {
    voltageConst = 0.0261905; // 0-1.65V
  } else if (voltageRange == 3) {
    voltageConst = 0.0130952; //0-0.825V
  }
 
  // If using threshold, wait until it has been reached
  if (voltageRange == 1) tempThres = theThreshold << 2;
  else if (voltageRange == 2) tempThres = theThreshold << 1;
  else if (voltageRange == 3) tempThres = theThreshold;
  if (useThreshold == 1) {
     i = 0; while ((analogRead(theAnalogPin)>tempThres) && (i<32768)) i++;
     i = 0; while ((analogRead(theAnalogPin)<tempThres) && (i<32768)) i++;
  }
  else if (useThreshold == 2) {
     i = 0; while ((analogRead(theAnalogPin)<tempThres) && (i<32768)) i++;
     i = 0; while ((analogRead(theAnalogPin)>tempThres) && (i<32768)) i++;
  }

  // Collect ADC readings
  for (i=0; i<numOfSamples; i++) {
    // Takes 35 us with high speed ADC setting
    HQadcReadings[i] = analogRead(theAnalogPin);
    if (timePeriod > 35)
      delayMicroseconds(timePeriod-35);
  }
  for (i=0; i<numOfSamples; i++) {
    // Scale the readings to 0-63 and clip to 63 if they are out of range.
    if (voltageRange == 1) {
      if (HQadcReadings[i]>>4 < 0b111111) adcReadings[i] = HQadcReadings[i]>>4 & 0b111111;
      else adcReadings[i] = 0b111111;
    } else if (voltageRange == 2) {
      if (HQadcReadings[i]>>3 < 0b111111) adcReadings[i] = HQadcReadings[i]>>3 & 0b111111;
      else adcReadings[i] = 0b111111;
    } else if (voltageRange == 3) {
      if (HQadcReadings[i]>>2 < 0b111111) adcReadings[i] = HQadcReadings[i]>>2 & 0b111111;
      else adcReadings[i] = 0b111111;
    }
    // Invert for display
    adcReadings[i] = 63-adcReadings[i];
  }
 
  // Calculate and display frequency of signal using zero crossing
  if (useThreshold != 0) {
     if (useThreshold == 1) {
        thresLocation = 1;
        while ((adcReadings[thresLocation]<(63-(theThreshold>>2))) && (thresLocation<numOfSamples-1)) (thresLocation++);
        thresLocation++;
        while ((adcReadings[thresLocation]>(63-(theThreshold>>2))) && (thresLocation<numOfSamples-1)) (thresLocation++);
     }
     else if (useThreshold == 2) {
        thresLocation = 1;
        while ((adcReadings[thresLocation]>(63-(theThreshold>>2))) && (thresLocation<numOfSamples-1)) (thresLocation++);
        thresLocation++;
        while ((adcReadings[thresLocation]<(63-(theThreshold>>2))) && (thresLocation<numOfSamples-1)) (thresLocation++);
     }

     theFreq = (float) 1000/(thresLocation * timePeriod) * 1000;
  }
 
  // Average Voltage
  avgV = 0;
  for (i=0; i<numOfSamples; i++)
     avgV = avgV + adcReadings[i];
  avgV = (63-(avgV / numOfSamples)) * voltageConst;

  // Maximum Voltage
  maxV = 63;
  for (i=0; i<numOfSamples; i++)
     if (adcReadings[i]<maxV) maxV = adcReadings[i];
  maxV = (63-maxV) * voltageConst;

  // Minimum Voltage
  minV = 0;
  for (i=0; i<numOfSamples; i++)
     if (adcReadings[i]>minV) minV = adcReadings[i];
  minV = (63-minV) * voltageConst;

  // Peak-to-Peak Voltage
  ptopV = maxV - minV;
}

void handleSerial(void) {
  char inByte;
  char dataByte;
  boolean exitLoop = false;
  do {
    // Clear out buffer
    do {
      inByte = Serial.read();
    } while (Serial.available() > 0);
 
    Serial.print("\nArduino LCD Oscilloscope\n");
    Serial.print(" 1 - Change threshold usage (currently: ");
      if (useThreshold == 0) Serial.print("Off)\n");
      else if (useThreshold == 1) Serial.print("Rise)\n");
      else if (useThreshold == 2) Serial.print("Fall)\n");
    Serial.print(" 2 - Change threshold value (currently: ");
      Serial.print(theThreshold, DEC); Serial.print(")\n");
    Serial.print(" 3 - Change sampling period (currently: ");
      Serial.print(timePeriod, DEC); Serial.print(")\n");
    Serial.print(" 4 - Change voltage range (currently: ");
      if (voltageRange == 1) Serial.print("0-3.3V)\n");
      else if (voltageRange == 2) Serial.print("0-1.65V)\n");
      else if (voltageRange == 3) Serial.print("0-0.825V)\n");
    Serial.print(" 5 - Toggle auto horizontal (time) scaling (currently: ");
      if (autoHScale == true) Serial.print("On)\n");
      else if (autoHScale == false) Serial.print("Off)\n");
    Serial.print(" 6 - Toggle line/dot display (currently: ");
      if (linesNotDots == true) Serial.print("Lines)\n");
      else if (linesNotDots == false) Serial.print("Dots)\n");
    Serial.print(" 8 - Exit\n");
   
    // Wait for input/response, refresh display while in menu
    do {
      collectData();
      // Picture Display Loop
      u8g.firstPage(); 
      do { draw(); } while( u8g.nextPage() );
    } while (Serial.available() == 0);
    inByte = Serial.read();
   
    if (inByte == '1') {
      Serial.print("Change threshold usage\n");
      Serial.print(" 0 - Off\n");
      Serial.print(" 1 - Rise\n");
      Serial.print(" 2 - Fall\n");
      do { } while (Serial.available() == 0);
      dataByte = Serial.read();
      if (dataByte == '0') useThreshold = 0;
      else if (dataByte == '1') useThreshold = 1;
      else if (dataByte == '2') useThreshold = 2;
    } else if (inByte == '2') {
      Serial.print("Change threshold value (thresholds for 0-3.3V,0-1.65V,0-0.825V ranges)\n");
      Serial.print(" 0 - 32 (0.41V, 0.21V, 0.10V)\n");
      Serial.print(" 1 - 80 (1.04V, 0.52V, 0.26V)\n");
      Serial.print(" 2 - 128 (1.66V, 0.83V, 0.41V)\n");
      Serial.print(" 3 - 176 (2.28V, 1.14V, 0.57V)\n");
      Serial.print(" 4 - 224 (2.90V, 1.45V, 0.72V)\n");
      do { } while (Serial.available() == 0);
      dataByte = Serial.read();
      if (dataByte == '0') theThreshold = 32;
      else if (dataByte == '1') theThreshold = 80;
      else if (dataByte == '2') theThreshold = 128;
      else if (dataByte == '3') theThreshold = 176;
      else if (dataByte == '4') theThreshold = 224;
    } else if (inByte == '3') {
      Serial.print("Change sampling frequency\n");
      Serial.print(" 0 - 28 kHz (35 us/sample)\n");
      Serial.print(" 1 - 20 kHz (50 us/sample)\n");
      Serial.print(" 2 - 10 kHz (100 us/sample)\n");
      Serial.print(" 3 - 5 kHz (200 us/sample)\n");
      Serial.print(" 4 - 2.5 kHz (400 us/sample)\n");
      do { } while (Serial.available() == 0);
      dataByte = Serial.read();
      if (dataByte == '0') timePeriod = 35;
      else if (dataByte == '1') timePeriod = 50;
      else if (dataByte == '2') timePeriod = 100;
      else if (dataByte == '3') timePeriod = 200;
      else if (dataByte == '4') timePeriod = 400;
    } else if (inByte == '4') {
      Serial.print("Change voltage range\n");
      Serial.print(" 1 - 0-3.3V\n");
      Serial.print(" 2 - 0-1.65V\n");
      Serial.print(" 3 - 0-0.825V\n");
      do { } while (Serial.available() == 0);
      dataByte = Serial.read();
      if (dataByte == '1') voltageRange = 1;
      else if (dataByte == '2') voltageRange = 2;
      else if (dataByte == '3') voltageRange = 3;
    } else if (inByte == '5') {
      Serial.print("Toggle auto horizontal (time) scaling\n");
      Serial.print(" 0 - Off\n");
      Serial.print(" 1 - On\n");
      do { } while (Serial.available() == 0);
      dataByte = Serial.read();
      if (dataByte == '0') autoHScale = false;
      else if (dataByte == '1') autoHScale = true;
    } else if (inByte == '6') {
      Serial.print("Toggle line/dot display\n");
      Serial.print(" 0 - Lines\n");
      Serial.print(" 1 - Dots\n");
      do { } while (Serial.available() == 0);
      dataByte = Serial.read();
      if (dataByte == '0') linesNotDots = true;
      else if (dataByte == '1') linesNotDots = false;
    } else if (inByte == '8') {
      Serial.print("Bye!\n");
      exitLoop = true;
    }
  } while (exitLoop == false);
}

void draw(void) {
  int i;
  char buffer[16];
 
  u8g.setFont(u8g_font_micro);
 
  // Draw static text
  u8g.drawStr(0, 5+vTextShift, "Av");
  u8g.drawStr(0, 11+vTextShift, "Mx");
  u8g.drawStr(0, 17+vTextShift, "Mn");
  u8g.drawStr(0, 23+vTextShift, "PP");
  u8g.drawStr(0, 29+vTextShift, "Th");
  u8g.drawStr(24, 35+vTextShift, "V");
  u8g.drawStr(0, 41+vTextShift, "Tm");
  u8g.drawStr(4, 47+vTextShift, "ms/div");
  u8g.drawStr(20, 53+vTextShift, "Hz");
  u8g.drawStr(0, 59+vTextShift, "R");
 
  // Draw dynamic text
  if (autoHScale == true) u8g.drawStr(124, 5, "A");
  dtostrf(avgV, 3, 2, buffer);
  u8g.drawStr(12, 5+vTextShift, buffer);
  dtostrf(maxV, 3, 2, buffer);
  u8g.drawStr(12, 11+vTextShift, buffer);
  dtostrf(minV, 3, 2, buffer);
  u8g.drawStr(12, 17+vTextShift, buffer);
  dtostrf(ptopV, 3, 2, buffer);
  u8g.drawStr(12, 23+vTextShift, buffer);
  dtostrf(theFreq, 5, 0, buffer);
  u8g.drawStr(0, 53+vTextShift, buffer);
  if (useThreshold == 0) {
    u8g.drawStr(12, 29+vTextShift, "Off");
  } else if (useThreshold == 1) {
    u8g.drawStr(12, 29+vTextShift, "Rise");
    dtostrf((float) (theThreshold>>2) * voltageConst, 3, 2, buffer);
  } else if (useThreshold == 2) {
    u8g.drawStr(12, 29+vTextShift, "Fall");
    dtostrf((float) (theThreshold>>2) * voltageConst, 3, 2, buffer);
  }
  u8g.drawStr(8, 35+vTextShift, buffer);
  // Correctly format the text so that there are always 4 characters
  if (timePeriod < 400) {
    dtostrf((float) timePeriod/1000 * 25, 3, 2, buffer);
  } else if (timePeriod < 4000) {
    dtostrf((float) timePeriod/1000 * 25, 3, 1, buffer);
  } else if (timePeriod < 40000) {
    dtostrf((float) timePeriod/1000 * 25, 3, 0, buffer);
  } else { // Out of range
    dtostrf((float) 0.00, 3, 2, buffer);
  }
  u8g.drawStr(12, 41+vTextShift, buffer);
  if (voltageRange == 1) {
    u8g.drawStr(4, 59+vTextShift, "0-3.30");
  } else if (voltageRange == 2) {
    u8g.drawStr(4, 59+vTextShift, "0-1.65");
  } else if (voltageRange == 3) {
    u8g.drawStr(4, 59+vTextShift, "0-0.83");
  }
 
  // Display graph lines
  u8g.drawLine((128-numOfSamples),0,(128-numOfSamples),63);
  if (useThreshold != 0)
     for (i=29; i<127; i+=3)
        u8g.drawPixel(i,63-(theThreshold>>2));
  for (i=0; i<63; i+=5) {
     u8g.drawPixel(53,i);
     u8g.drawPixel(78,i);
     u8g.drawPixel(103,i);
     u8g.drawPixel(127,i);
  }
  // Threshold bar
  for (i=0; i<63; i+=3)
     u8g.drawPixel(thresLocation+(128-numOfSamples),i);
  // Draw ADC readings
  if (linesNotDots == true) {
    for (i=1; i<numOfSamples; i++) // Draw using lines
      u8g.drawLine(i+(128-numOfSamples)-1,adcReadings[i-1],i+(128-numOfSamples),adcReadings[i]);
  } else {
    for (i=2; i<numOfSamples; i++) // Draw using points
      u8g.drawPixel(i+(128-numOfSamples),adcReadings[i]);
  }
}

void setup() {
  u8g.begin();
  Serial.begin(9600);
 
  // Turn on LED backlight
  analogWrite(lcdLED, ledBacklight);
 
  #if FASTADC
    // set prescale to 16
    sbi(ADCSRA,ADPS2) ;
    cbi(ADCSRA,ADPS1) ;
    cbi(ADCSRA,ADPS0) ;
  #endif
  delay(100);
}

void loop() {
  collectData();
  // Picture Display Loop
  u8g.firstPage(); 
  do { draw(); } while( u8g.nextPage() );

  // If user sends any serial data, show menu
  if (Serial.available() > 0) {
    handleSerial();
  }

  // rebuild the picture after some delay
  delay(100);
}


On importe la bibliothèque "U8glib.h"
On compile et on téléverse.
Et hop: :)



Et pour le branchement des sondes:



Je n'ai rien inventé / codé, j'ai juste adapté ce code trouvé sur le net: http://www.semifluid.com/2013/05/28/arduino-fio-lcd-oscilloscope/

ATTENTION: Ne pas inverser le GND et le + (destruction possible de l'Arduino)
ATTENTION: Ne pas dépasser 5V sur la borne A0 ( le +) (destruction possible de l'Arduino)
voir PONT DIVISEUR DE TENSION pour des tensions supérieurs

Have fun ;)

11
Tuto, Tips and References / Re : Plateau chauffant ne chauffe pas
« le: 30 aoŻt, 2016, 10:44:49 pm »
en gros, il faut alimenter les 2 alims de la ramps pour que le plateau  chauffe (ne pas faire attention au nombreux fils de ma photo ;) )


12
Tuto, Tips and References / Re : Plateau chauffant ne chauffe pas
« le: 30 aoŻt, 2016, 09:47:39 pm »
euh, de mémoire, il faut alimenter les 2 prises de la ramps, sinon, D8 ne bougera pas

13
Géneral / Global / Re : Recrutement de modérateurs/trises
« le: 28 aoŻt, 2016, 11:35:49 pm »
bon, en tant qu'ex admin du site ( ;) ), des problèmes de santé "réglés"....
Je postule, je pense avoir acquis quelques notions sur l'impression 3D (certes pas sur la taille exacte d'une XL300 mais je sais plus ou moins ou trouver l'info)
Si ça intéresse ;)

Ah vi, je suis souvent sur l'irc (truc de "vieux" :p ) irc://irc.freenode.net/#reprap-fr (http://webchat.freenode.net/?channels=reprap-fr)

14
My build / Mon montage a moi / Re : La Smartrapcore de Grami...
« le: 20 aoŻt, 2016, 08:22:41 pm »
Bravo Grami, elle est bien belle ta Core :)
Je vais surement percer la mienne car oui, ça fait du bruit :p

15
Possible que ça vienne du "start GCODE" qui s'ajoute au début de tout GCODE mais je doute...

Sinon, Bruno, je vais te faire gagner du temps en te disant de ne pas tester la dernière version de repetier host sous OSX ...
C'est la MEME version mais avec une interface au bords plus arrondis ... sinon, rien de plus ... (pas de CURA en slicer, le controle manuel est le meme... rien à voir avec la version windows...)
Mais comme toi, j'ai un PI et je tranche avec CURA ou Slic3r et je lance le GCODE sur le pi (top l'imprimante 3D "sans fil" ;) )

Pages: [1] 2 3 ... 7