Aller au contenu

GO Print

[Dev] MMU2 sur Alfawise U20+Marlin


narfight

Messages recommandés

C'est pour le connecteur TPFE fournis avec les kits de montage MMU2. la cote externe du pas de vis est de 4,75mm. Attention que le modèle est à imprimer à 10% de sa taille.

 

Au niveau montage, c'est fini depuis 2 semaines mais carte principale HS et maintenant mon fer à souder, j'attends des diodes et condensateur pour le réparer.

Pour ma carte, je suis en discussion avec mon fournisseur si elle peut passer en garantie.

Lien vers le commentaire
Partager sur d’autres sites

j'ai besoin de repiquer du 3.3V sur la CM v07 et V0G, y a t-il un point de connexion plus simplet ?
je doit m'en servir pour alimenter en continue le reset du MMU, je ne sais pas si le 5v ferai l'affaire, j'ai peur de cramer la carte coté MMU.

nos sortie Ymax Ymin ... sont en 3.3 par défaut, si j'ai besoin d'un signal en 5 volt, c'est possible ?

Modifié (le) par lolvince
Lien vers le commentaire
Partager sur d’autres sites

bon en recherchant sur le net, la carte utilisé nativement (Einsy Rambo 1.1) utilise bien le 5v pour tout.

la connexion Série semble fonctionner pourtant correctement, mais le reset Hard me pose un problème, le 3.3v ne semble pas lui convenir.

le reset se déclenche sur un signal haut (5v donc),  du moins tant qu'il est bas (gnd), celui-ci ne se déclenche pas...

Modifié (le) par lolvince
Lien vers le commentaire
Partager sur d’autres sites

Il y a 9 heures, lolvince a dit :

j'ai besoin de repiquer du 3.3V sur la CM v07 et V0G, y a t-il un point de connexion plus simplet ?
je doit m'en servir pour alimenter en continue le reset du MMU, je ne sais pas si le 5v ferai l'affaire, j'ai peur de cramer la carte coté MMU.

nos sortie Ymax Ymin ... sont en 3.3 par défaut, si j'ai besoin d'un signal en 5 volt, c'est possible ?

Voici comment j'ai fait de mon coté. Directement sur un régulateur de la carte. Il a mieux mais cela fonctionnait sans devoir branché l'USB

IMG_20191015_173109055.jpg

Lien vers le commentaire
Partager sur d’autres sites

puis-je utiliser le port série 2 en UART ?

j'aimerai intégrer ces 2 fichiers la dans notre config afin de dialoguer avec le mmu :

//uart2.h
#ifndef _UART2_H
#define _UART2_H

#define USART2_BAUDRATE  38400UL
#define MMU_F_CPU       16000000UL
#define BAUD_PRESCALE (((MMU_F_CPU / (USART2_BAUDRATE * 16UL))) - 1)
#define BLK                0x2D    // Blank data filler "-"

#include <inttypes.h>
#include <stdio.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "mmu.h"
#include "Arduino.h"

extern volatile unsigned char rxData1, rxData2, rxData3, rxData4, rxData5, rxFINDA;
extern volatile bool confirmedPayload, confirmedFINDA, atomic_MMU_IRSENS;

extern void uart2_txPayload(unsigned char*);

extern void uart2_init(void);

#endif //_UART2_H

et

//uart2.cpp

/**
 * Robert McKenzie 7 byte payload comms protol with 0x7F as start byte
 * and 0xF7 as finish bytes.
 * ACK is with 0x06
 * NACK is 0x15
 */

#include "uart2.h"
#include "system_timer.h"

volatile unsigned char readRxBuffer, rxData1 = 0, rxData2 = 0, rxData3 = 0,
                                     rxData4 = 0, rxData5 = 0, rxFINDA = 0;
volatile bool confirmedPayload = false, confirmedFINDA = false, atomic_MMU_IRSENS = false;
volatile long rxTimeout = _micros();
enum class rx
{
    Idle,
    Data1,
    Data2,
    Data3,
    Data4,
    Data5,
    End,
    FINDA,
    EndFINDA
};
rx rxCount = rx::Idle;

inline rx& operator++(rx& byte, int)
{
    const int i = static_cast<int>(byte) + 1;
    byte = static_cast<rx>((i) % 9);
    return byte;
}

void uart2_init(void)
{
    UCSR2A = (0 << U2X2); // baudrate multiplier
    UCSR2B = (1 << RXEN2) | (1 << TXEN2) | (0 << UCSZ22); // enable receiver and transmitter
    UCSR2C = (0 << UMSEL21) | (0 << UMSEL20) | (0 << UPM21) |
             (0 << UPM20) | (1 << USBS2) |(1 << UCSZ21) | (1 << UCSZ20); // Use 8-bit character sizes
    UBRR2H = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register
    UBRR2L = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
    UCSR2B |= (1 << RXCIE2); // enable rx interrupt
}

ISR(USART2_RX_vect)
{
    readRxBuffer = UDR2;
    if (rxTimeout + 1855 < _micros()) rxCount = rx::Idle;
    switch (rxCount) {
    case rx::Idle:
        if (readRxBuffer == 0x7F) { rxCount++; rxTimeout = _micros(); }
        if (readRxBuffer == 0x06) { rxCount = rx::FINDA; rxTimeout = _micros(); }
        break;
    case rx::Data1:
        rxData1 = readRxBuffer;
        rxCount++;
        break;
    case rx::Data2:
        rxData2 = readRxBuffer;
        rxCount++;
        break;
    case rx::Data3:
        rxData3 = readRxBuffer;
        rxCount++;
        break;
    case rx::Data4:
        rxData4 = readRxBuffer;
        rxCount++;
        break;
    case rx::Data5:
        rxData5 = readRxBuffer;
        rxCount++;
        break;
    case rx::End:
        if (readRxBuffer == 0xF7) {
            if (rxData1 == 'I' && rxData2 == 'R' && rxData3 == 'S' && rxData4 == 'E' && rxData5 == 'N') atomic_MMU_IRSENS = true;
            else confirmedPayload = true;
        }
        rxCount = rx::Idle;
        break;
    case rx::FINDA:
        rxFINDA = readRxBuffer;
        rxCount++;
        break;
    case rx::EndFINDA:
        if (readRxBuffer == 0xF7) confirmedFINDA = true;
        rxCount = rx::Idle;
        break;
    }
}

void uart2_txPayload(unsigned char payload[])
{
#ifdef MMU_DEBUG
    printf_P(PSTR("\nUART2 TX 0x%2X %2X %2X\n"), payload[0], payload[1], payload[2]);
#endif //MMU_DEBUG
    mmu_last_request = _millis();
    loop_until_bit_is_set(UCSR2A, UDRE2);     // Do nothing until UDR is ready for more data to be written to it
    UDR2 = 0x7F;
    for (uint8_t i = 0; i < 5; i++) {
        loop_until_bit_is_set(UCSR2A, UDRE2); // Do nothing until UDR is ready for more data to be written to it
        UDR2 = (0xFF & (int)payload[i]);
    }
    loop_until_bit_is_set(UCSR2A, UDRE2);     // Do nothing until UDR is ready for more data to be written to it
    UDR2 = 0xF7;
}

 

si quelqu'un est à l'aise avec marlin je suis preneur 😉

Modifié (le) par lolvince
Lien vers le commentaire
Partager sur d’autres sites

j'avance tranquillement sur la personnalisation du firmware coté MMU2 et Marlin.

il y a un gros travail d'intégration sur nos sources existante. je ne suis pas expert en GIT, il va mettre compliqué de créer un fork impliquant mes modifications.

j'ai donc mes sources de mon coté que je modifie directement pour le moment car on plus sur le L'alpha qu'autre chose.

DeamonCrack M'aide sur la partie conception 3D via fusion360.

Hobi sur la partie Electronique.

pour le moment je regroupe toutes les infos sur le MMU2, et j'essaye d'intégrer le meilleur fonctionnement possible par rapport à notre configuration actuelle.

j'avance jour après jour, il me reste un gros travail d'intégration, donc si quelqu'un à un peu temps à perdre sur cette partie et voudrait me faire avancer ça serait avec grand plaisir.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 months later...
Le 30/09/2019 at 21:16, narfight a dit :

Bonjour à tous,

**  Modération : Comme vu sur le topic Dev Marlin, et pour bien resté cadré, ce sujet doit être consacré au dev du MMU UNIQUEMENT. Tout post hors de propos sera nettoyé. **

Nous sommes plusieurs à vouloirs brancher le MMU2 sur nos machines et je propose de centraliser les informations. J'ai actuellement de mon coté le MMU2 monté et une Alfawise U20 avec un Marlin dessus.

Actuellement, je compile et le menu MMU2 est bien visible sur l'écran mais le port série ne communique pas encore correctement. Prochaine étape sera de mettre en place la PIN du reset du module (ce sera rapide).

J'ai déjà créé la pièce pour modifier le détecteur de filament de l'imprimante afin d'ajouter le connecteur du tube PTFE : https://www.thingiverse.com/thing:3889379

J’espère pouvoir avancé cette semaine. Un fork du Marlin est dispo sur mon Github et je vais y mettre mes modifications et tenté de le gardé synchronisé (je suis pas encore alaise avec le GIT).

Au niveau câblage (source de @Tomspace32:
board_1.PNG
Le port série n°2 est disponible et le "NC E2" sera utilisé pour le reset.

Cordialement,
Narfight

Bonjour, 

Je souhaiterais implanter un esp32cam sur ma board VO8.

Comment a tu définis les pin tx rx du serial 2 et surtout sont telles utilisables pour piloté l' imprimante via le wifi.

Merci d' avance

Modifié (le) par fIlou63430
Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

Salut !

un petit retour après tout ce temps. je n'ai pas pu mettre le nez dans mon montage pendant plus d'un an, mais j'ai fini par m'y replonger dernièrement.

donc pour faire un point, j'ai flashé mon U20+ avec le dernier marlin 2.9.0.1 avec les sources de Tpruvot (https://github.com/tpruvot/Marlin).

 j'ai donc intégré mon MMU2 après avoir pu recompiler son firmware d'origine 1.0.6 (qui n'a pas changé depuis tout ce temps.) j'ai donc du modifier la longueur MAX admissible entre le MMU2 et mon extrudeur.

je n'utilise pas de détecteur de filament juste avant l'extrudeur, pour autant j'en ai prévu un au cas ou qui utilisera le câble prévu pour mon détecteur de fin de course sur Z, car j'ai installé mon 3Dtouch, il ne sert plus.

maintenant le tout fonctionne, la communication avec la carte mère d'origine est OK, le reset et transmis via le port COM et non par une sortie physique.

il me reste donc qu'a tester tout cela en pratique, une fois que j'aurai réglé mon MMU2...

Lien vers le commentaire
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
×
×
  • Créer...