Aller au contenu

Filament ABS

Janpolanton

cartes additionnelles Projet d'un Module Power Failure Rescue

Messages recommandés

Bonjour à tous,

La nouvelle version de Marlin 1.1.9 propose une option de reprise de l'impression suite à une coupure de courant.

Cette option existe déjà sur la Prusa par exemple.

Le module détecte la disparition du secteur 230v et envoie l'information à la CM sous la forme d'un signal 0 ou 5V.

Ci-dessous le schéma de la simulation et les graphes correspondants à la présence ou à l'absence secteur (présence en bleu et disparition en vert).

Volontairement, il n'y a aucune référence ni valeur de composant. V2 représente l'alimentation 12V ou 24V principale. 

Je vais câbler un prototype pour valider le fonctionnement de la simulation.

image.thumb.png.6dbb58b29b5d5b5f42b9d8b201edd177.png

Un prototype câblé basé sur un principe différent (détection de la chute de tension sur le 12V (ou le 24V) de l'alimentation principale est déjà en cours d'essais.

A bientôt pour d'autres news...

JP

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Des quelques docs que j'ai trouvé dessus il faut détecter l'absence de courant en amont de l'alimentation pour ne pas être troubler voir profiter des quelques ms qu'offrent les condensateurs de celle çi. Pour les Prusa MK3, d'après @Djam sur un autre forum:

Citation

le Power Panic en fait avec un relais qui est en // avec l'alim 230V et qui coupe quand y'a plus de jus  

Edit: c'est bien ce qui est fait, désolé j'ai lu un peu vite 😞

En tout cas c'est un sujet qui va beaucoup m'intéresser surtout si tu arrives à fournir l'alimentation nécessaire au "park head" (M125 intégré à M24) et alimenter le ventilateur coldend pendant 1/2min après la coupure (sans forcément passer par la carte de l'imprimante).

Modifié (le) par Tircown

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 9 minutes, Tircown a dit :

En tout cas c'est un sujet qui va beaucoup m'intéresser surtout si tu arrives à fournir l'alimentation nécessaire au "park head" (M125 intégré à M24) et alimenter le ventilateur coldend pendant 1/2min après la coupure (sans forcément passer par la carte de l'imprimante).

Le park head je pense, mais il ne restera rien pour alimenter le fan coolend, et tu souléves donc une bonne interrogation !!

@Janpolanton tu peux déja m'en mettre trois en commande ^^

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 46 minutes, Tircown a dit :

En tout cas c'est un sujet qui va beaucoup m'intéresser surtout si tu arrives à fournir l'alimentation nécessaire au "park head" (M125 intégré à M24) et alimenter le ventilateur coldend pendant 1/2min après la coupure (sans forcément passer par la carte de l'imprimante).

C'est relativement faisable avec un super condensateur de quelques farads mais en 12V, ça ne court pas les rues.

Ce sera un calcul à faire

Après, le prix de revient s'en ressentira fortement...

Un lien ici pour un pack de super condensateurs 12V / 16.2F

Modifié (le) par Janpolanton

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai passé la soirée à faire des calculs pour estimer le temps disponible en utilisant des super condensateurs.

Si je ne me suis pas trompé dans les dérivées et les intégrales, avec une batterie de 6 condos  de 10F/2.7V on arrive à 44 secondes en faisant débiter 125mA (soit la puissance moyenne d'un ventilateur de 1.5W).

C'est prometteur car on va pouvoir parquer la tête d'impression, faire un peu de rétractation et garder le ventilo en marche quelques secondes...

Le tableau des résultats ci-dessous (en franglais...)😎

 

image.thumb.png.64219933004458d1d8f1e74d12341f10.png

Modifié (le) par Janpolanton
  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, Janpolanton a dit :

J'ai passé la soirée à faire des calculs pour estimer le temps disponible en utilisant des super condensateurs.

Vu qu'on 'consomme tout de suite' le courant, qu'apporterait des super/ultra condensateurs....

Pour un tarif similaire sur ali, j'ai trouvé
un pack de 5 condos de 22000µF/25V  mis en parallèle, ça fait 110F 
un lot de 25 condos 15000µF/16V on arriverait à 375 Farads (mais limité au 12V, 14V grand max)


Il y aurait peut-être de quoi faire un Z+10 E-5 et encore ventiler assez... voir supporter une coupure d'un fraction de secondes...

Une inconnue pour moi... autant la buse/plateau pourraient parfaitement supporter une coupure d'une grosse seconde sans que ça soit très critique, mais à quelle tension mini les drivers des stepper vont continuer à être capable de bouger....? 11V, 10V...?

Ça imposerait peut-être des "modif" hardware (quoi qu'avec des mosfet de chauffe déportée, c'est pas grand chose *), mais si il y a assez de sauce pour les stepper, ce qui serait assez ultime ça serait :
Coupure
poursuite de l'impression 1 seconde (ou 2, ou 3...) sans chauffe
si le courant n'est pas revenu, éloignement de la tête + rétractation
ventilation de la hotend (quitte à envisager un ventilo 5V pour pouvoir tenir plus longtemps)

 

*sur ma MB, j'ai deux alims... une '5A' et une '11A' (trigorilla), je sais pas si la 5A alimente aussi les stepper et la 11A que la chauffe, mais ça serait nickel pour cette application !

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 6 heures, .AleX. a dit :

Vu qu'on 'consomme tout de suite' le courant, qu'apporterait des super/ultra condensateurs....

Salut,

Que nenni!

Il y a 13 heures, Tircown a dit :

surtout si tu arrives à fournir l'alimentation nécessaire au "park head" (M125 intégré à M24) et alimenter le ventilateur coldend pendant 1/2min après la coupure

@Tircown était intéressé par le fonctionnement du fan coldend pendant 30s. J'ai basé mes calculs sur un fan consommant 120mA sous 12V en conditions réelles.

Ce n'est pas tout à fait vrai, la décharge des condos étant exponentielle, j'ai extrapolé pour un fonctionnement du fan jusquà épuisement de la tension suffisante (estimation à 5V).

Il y a 6 heures, .AleX. a dit :

Pour un tarif similaire sur ali, j'ai trouvé
un pack de 5 condos de 22000µF/25V  mis en parallèle, ça fait 110F 
un lot de 25 condos 15000µF/16V on arriverait à 375 Farads (mais limité au 12V, 14V grand max)

Désolé de te contredire, il faut revoir tes calculs à la baisse. Tu t'es trompé d'un facteur 10 puissance 3

5 x 22000 µF font 110000 µF soit 110000 * 1e-6 F (0.11 F)

Idem 15000 µF * 25 = 375000 µF soit 375000 * 1e-6 F (0.375 F)

JP

Edité

Une power bank de condos pas très chère remplissant parfaitement les conditions de mes calculs : (les chinois sont un peu beaucoup pessimistes, en réalité la capacité résultante n'est pas de 2 F comme ils l'indiquent mais de 1.67 F +/- 20%, (soit une valeur comprise entre 1.33 F et 2.0 F)

Power Bank

Modifié (le) par Janpolanton

Partager ce message


Lien à poster
Partager sur d’autres sites

Potentiellement intéressé par la version 12V, en fonction de la taille et de mes compétences a passé sous marlin

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 1 minute, Andréa a dit :

Potentiellement intéressé par la version 12V, en fonction de la taille et de mes compétences a passé sous marlin

Bonjour @Andréa

Le problème, - et j'en ai déjà parlé - avec la A8 c'est la disponibilité d'une entrée digitale libre sur l'Atmega1284...pour remplacer la pin 44 utilisée par Marlin sur l'Atmega2560

Je ne suis pas spécialiste en µC mais peut-être que quelqu'un aura la réponse...

Peut-on utiliser TX1 ou RX1 sur J3 (respectivement broches 1 et 2) ?,

TX0 et RX0 (pins 10 et 9) ne semblent pas câblées...

image.thumb.png.9dd914d875bf83de551708d70729e2dc.png

  • Merci ! 1

Partager ce message


Lien à poster
Partager sur d’autres sites

moi qui voyait ça comme un "onduleur" a branché entre l'alimentation et la CM, j'aurais du mieux me renseigner avant de poster.

Merci @Janpolanton de m'avoir prévenue, car tu aurais pu faire le mec qui veut juste vendre sans s'occuper de la compatibilité du produit avec le client.

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 16 minutes, Andréa a dit :

.../...

Merci @Janpolanton de m'avoir prévenue, car tu aurais pu faire le mec qui veut juste vendre sans s'occuper de la compatibilité du produit avec le client.

Je ne vends pas pour me faire de l'argent mais pour rendre service à la communauté.😎

Les chinois font ça bien mieux et moins cher que moi, n'ont pas à subir les tarifs de la Poste mais à ma différence n'assurent pas le conseil et le  SAV.

Et si je retire 1 ou 2 € d'un module vendu, c'est le bout du monde eu égard aux problèmes d'intendance et de gestion que ça génère.🤑

Cet argent me sert à l'achat de composants et à la gravure de PCB prototypes pour de futurs modules.

D'ailleurs, je ne vends pas à tout le monde si je sens la future embrouille arriver...

Voilà pour la petite mise au point 😉

Modifié (le) par Janpolanton
  • J'aime 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @ tous (et @ toutes, aussi)

Ce sujet m'interpelle autant qu'il me perplexise.

J'ai vu de mes yeux le démonstrateur Prusa tirer la prise et la machine repartir comme si de rien n'était une fois rebranchée : je sais donc que ça marche....

Bien qu'étant "à l'estive" >>> et loin de sa bécane, le mécano que je suis se pose quelques questions rhétoriques à propos de la "reprise d'impression après coupure" :

1) on ne sait pas redémarrer sans faire les POM, right ?

2) quand le bed refroidit, la pièce se décolle, right ?

Concernant le (1) le problème s’aggrave quand un xxx-touch est monté, que la prise de Zref se fait en plein milieu de la course XY et donc dans la pièce. (ça encore c'est pas grave, on peut l'obliger à se faire au point d'origine XY) mais que deviennent alors les éventuelles corrections apportées par l'auto-bed-levelling ?

Concernant le (2) je ne vois pas.... peut-être bloquer la pièce avec de la Patafix avant qu'elle ne bouge.... (bon, ok, ça c'est l'aspect le plus trivial de l'affaire)

Pour retrouver le point exact où a eu lieu l'interruption, et savoir y reviendre, il faudrait pouvoir disposer dans Marlin d'un set de variables dont les noms pourraient être du style :

X_current_pos

Y_current_pos

Z_current_pos

Encore faudrait-il que ces variables soient écrites au bon moment et quelque-part à un endroit qui résisterait au power-off

Ça existe en Commande Numérique "traditionnelle", je m'en suis servi pendant des années. Mais quid dans nos brêles à deux balles.... ?

J'ai déjà interrogé notre Marlin-Doctor @hidiuspour voir s'il avait une idée à ce propos, voici sa réponse :

Le 27/07/2018 at 12:42, hidius a dit :

.. /.. Pour les variables faut sûrement remonter dans le code et le modifier pour y avoir accès en exploitation. Creality s'en sert aussi pour leur système de reprise après coupure de courant, ça stocke les données en temps réel sur la carte SD. Ça doit pas être simple a mettre en place 😄

Voilà voilà, c'était mes réflexions matutinales, si y'en a des qui ont des réponses, elles seront les bienvenutes, mais quoi qu'il en fût, tout ça est complémentaire sinon indispensable à l'aspect "Janpolantonien" du problème....

Bonne journée à tous, je pars battre la campagne.... >>

Modifié (le) par Jean-Claude Garnier

Partager ce message


Lien à poster
Partager sur d’autres sites

hello @Jean-Claude Garnier

Je vois que tu es en forme et que l'air de la campagne aère bien tes neurones.😂

Pour ma part, je ne m'intéresse qu'à la partie hardware du problème et je n'ai pas décortiqué le code Marlin pour connaître le pourquoi du comment (et j'en suis fichtrement incapable).

Marlin a manifestement besoin d'un changement d'état le plus tôt possible sur la pin dédiée au Power loss recovery et je suppose qu'il traite ce signal avec une interruption.

D'autres pourraient se charger de cette analyse du programme.

Partager ce message


Lien à poster
Partager sur d’autres sites

Marlin intègre le système développé par creality3D.

Autrement dit, à chaque changement de couche, il stocke l'information de positionnement du fichier sur la carte SD.

Et en cas de coupure, les informations de reprise.

C'est tout ! Donc, point numéro 1 ->  pas de carte SD, ou plutôt si on imprime pas via SD, pas de reprise possible.

Le système est loin d'être parfait : si la coupure se fait sur un infill, ça devrait (normalement)  le faire sans dégâts apparents. Si ça le fait sur le contour extérieur, il y aura des manques du fait de la reprise sur le G-code suivant.

Je ne sais pas comment fonctionne le système Prusa, mais ceux qui ont des Créality3D avec le système de reprise, bah c'est le même système.

C'est loin d'être parfait, il y a des contraintes liées à la carte SD, mais ça peut parfois sauver une impression.

Modifié (le) par biostrike

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 7 minutes, biostrike a dit :

C'est loin d'être parfait, il y a des contraintes liées à la carte SD, mais ça peut parfois sauver une impression.

Salut Thierry,

Rien n'est parfait mais tout est perfectible en faisant une association de neurones...

PS : je t'ai envoyé un email privé

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut par ici, @biostrike c'est pas clair pour moi sur le fait que se soit à chaque début de layer que la save se fasse (donc reprise de l'intégralité de la couche),  à la suite de l'ordre donné par la carte power panic et donc la commande en cours (donc reprise à l'endroit N-1 de l'arrét), ou encore à chaque commande...

Alors soit on à la choix entre les trois propal plus haut avec ça:

Ordre donné pour save l'emplacement ?

   //#define POWER_LOSS_RECOVERY
+  #if ENABLED(POWER_LOSS_RECOVERY)
+    //#define POWER_LOSS_PIN   44     // Pin to detect power loss
+    //#define POWER_LOSS_STATE HIGH   // State of pin indicating power loss
+  #endif

Sauvegarde à chaque commande G-code ?

#define SAVE_EACH_CMD_MODE

https://github.com/MarlinFirmware/Marlin/issues/2085#issuecomment-405809805

Bref c'est pas vraiment clair!

Pour ce qui est de la vidéo ça donne pas envie de le mettre en fonction si le homing se fait pas, ça risque d'engendrer plus de m*** qu'autre chose.

@Janpolanton pour l'anet il y un pin dispo sur le connecteur LCD anet LCD.3 :

 *   Anet V1.0 controller           | ZONESTAR_LCD      | ANET_FULL_      | RepRapDiscount Full      | Thingiverse RepRap wiring
 *   physical   logical   alt       |                   | GRAPHICS_LCD    | Graphics Display Wiring  | http://www.thingiverse
 *     pin        pin     functions |                   |                 |                          | .com/thing:2103748
 *------------------------------------------------------------------------------------------------------------------------
 *   ANET-J3.1    8 ***             | N/A               | J3_TX ***       |                          |
 *   ANET-J3.2    9 ***             | N/A               | J3_RX ***       |                          |
 *   ANET-J3.3    6       MISO      | N/A               | MISO ***        | EXP2.1   MISO            | EXP2.1   MISO
 *   ANET-J3.4    +5V               | N/A               | +5V             |                          |
 *   ANET-J3.5    7       SCK       | N/A               | SCK ***         | EXP2.2   SCK             | EXP2.2   SCK
 *   ANET-J3.6    5       MOSI      | N/A               | MOSI ***        | EXP2.6   MOSI            | EXP2.6   MOSI
 *   ANET-J3.7    !RESET            | N/A               | button          | EXP2.8   panel button    | EXP2.8   panel button
 *   ANET-J3.8    GND               | N/A               | GND             | EXP2.9   GND             | EXP2.9   GND
 *   ANET-J3.9    4       Don't use | N/A               | N/C             |                          |
 *   ANET-J3.10   +3.3V             | N/A               | +3.3V ***       |                          |
 *                                  |                   |                 |                          |
 *                                  |                   |                 |                          |
 *   ANET-LCD.1   GND               | GND               | GND             | EXP1.9   GND             | EXP1.9   GND
 *   ANET-LCD.2   +5V               | +5V               | +5V             | EXP1.10  +5V             | EXP1.10  +5V
 *   ANET-LCD.3   27      A4        | N/C *             | LCD_PINS_RS     | EXP1.4   LCD_PINS_RS     | EXP2.4   SDSS or N/C *
 *   ANET-LCD.4   10                | LCD_PINS_D4       | BTN_EN2         | EXP2.3   BTN_EN2         | EXP2.3   BTN_EN2
 *   ANET-LCD.5   28      A3        | LCD_PINS_RS       | LCD_PINS_ENABLE | EXP1.3   LCD_PINS_ENABLE | EXP1.1   BEEPER_PIN
 *   ANET-LCD.6   11                | LCD_PINS_D5       | BTN_EN1         | EXP2.5   BTN_EN1         | EXP2.5   BTN_EN1
 *   ANET-LCD.7   29      A2        | LCD_PINS_ENABLE   | N/C *           | EXP2.4   SDSS or N/C *   | EXP1.3   LCD_PINS_ENABLE
 *   ANET-LCD.8   16      SCL       | LCD_PINS_D6       | BTN_ENC         | EXP1.2   BTN_ENC         | EXP1.2   BTN_ENC
 *   ANET-LCD.9   30      A1        | ADC_KEYPAD_PIN ** | LCD_PINS_D4     | EXP1.5   LCD_PINS_D4     | EXP1.4   LCD_PINS_RS
 *   ANET-LCD.10  17      SDA       | LCD_PINS_D7       | BEEPER_PIN      | EXP1.1   BEEPER_PIN      | EXP1.5   LCD_PINS_D4
Modifié (le) par Djam

Partager ce message


Lien à poster
Partager sur d’autres sites

comme décrit

Citation

Au cours d'une impression SD, le micrologiciel écrit périodiquement dans un fichier SD (appelé "BIN"), enregistrant l'état actuel et la progression du travail d'impression. Lorsqu'une impression est terminée, ce fichier est supprimé.

Si la machine voit le fichier "BIN" au démarrage, il supposera que le dernier travail d'impression a été interrompu et il vous demande ensuite si vous souhaitez reprendre. Il utilise les données du fichier "BIN" pour continuer le travail.

Actuellement, il écrit dans le fichier "BIN" chaque fois que Z se déplace à un point plus élevé qu'auparavant, garantissant une seule écriture SD par couche. Pour des raisons historiques, il existe également une option pour mettre à jour "BIN" après chaque commande, mais ce n'est pas la meilleure option pour prolonger la durée de vie d'une carte SD.

En raison de son fonctionnement, les impressions sont susceptibles de reprendre à un point qui a déjà été imprimé, imprimant ainsi sur une partie du calque précédent. Le seul moyen d'éviter le problème est d'écrire plus souvent dans le fichier "BIN" ou, idéalement, d'ajouter un circuit qui détecte rapidement une perte d'alimentation et notifie le micrologiciel via une broche numérique ou ADC afin que le micrologiciel puisse écrire le "BIN". déposer et garer la buse.

Partager ce message


Lien à poster
Partager sur d’autres sites

@biostrike merci pour la trad mais je comprends un peu l'anglais....

Donc aprés étre allé voir dans le code power loss recovery:

 * Save the current machine state to the power-loss recovery file
 */
void save_job_recovery_info() {
  #if SAVE_INFO_INTERVAL_MS > 0
    static millis_t next_save_ms; // = 0;  // Init on reset
    millis_t ms = millis();
  #endif
  if (
    // Save on every command
    #if ENABLED(SAVE_EACH_CMD_MODE)
      true
    #else
      // Save if power loss pin is triggered
      #if PIN_EXISTS(POWER_LOSS)
        READ(POWER_LOSS_PIN) == POWER_LOSS_STATE ||
      #endif
      // Save if interval is elapsed
      #if SAVE_INFO_INTERVAL_MS > 0
        ELAPSED(ms, next_save_ms) ||
      #endif
      // Save on every new Z height
      (current_position[Z_AXIS] > 0 && current_position[Z_AXIS] > job_recovery_info.current_position[Z_AXIS])
    #endif
  ) {
    #if SAVE_INFO_INTERVAL_MS > 0
      next_save_ms = ms + SAVE_INFO_INTERVAL_MS;
#endif

Donc pour moi on a le choix, on a pas que la save de faite à chaque début de couche...

L'issue en lien date du début de la mise en service ça a du évoluer...

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • Sur cette page :   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×