Aller au contenu

GO Print

Rétrofit d'une fraiseuse 4 axes de 2006


bracame

Messages recommandés

Et bien mon potar est une récup aussi... tu peux placer un condo 10 à 100 nF entre la masse et le point de mesure..

Et oui ; C'est une modif "indispensable" pour moi : Gérer l'avance est le principal boulot d'une fraiseur. La : Ont peut le faire.

Lien vers le commentaire
Partager sur d’autres sites

Voici des copies d'écran pour comparer ou j'ai placé mes modifs ! (Il y en a une en trop, mais j'arrive pas à faire le ménage .. Dsl

La led :led.thumb.jpg.63714638056a2c9d175db8e8d345c6ef.jpg

Le potar

pot.thumb.jpg.03d455ad44e48c71b0a70f70eded02a1.jpg

Cela devrait aider ;-)/

pot.jpg

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

j'ai déjà testé avec un 100nf c'est la première chose que j'ai faite après mon dernier message c'est vrai que ça améliore bien la chose

j'ai aussi un doute sur la valeur du condo monté sur AREF sur la carte MKS GenL car après avoir posé un 100nf en parallèle dessus ça améliore aussi la chose  

EDIT : j'écrivais pendant que tu as répondu

merci pour les capture d'écran je contrôlerais mais a première vu j'avais trouvé en faisant une recherche avec notepad++ comme tu me l'a indiqué

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

salut @bracame 

vu que la fonction feed_rate _pot fonctionne bien je me suis dit que faire varier la vitesse de la broche de la même façon serait bien aussi

 j'ai donc écrit un fichier spindle_pot.h et un fichier spindle_pot.c (en copiant honteusement ce que tu as écrit pour le feed rate mais en essayant de comprendre un peu quand même !!)
 

spindle_pot.h :

#ifndef spindle_pot_h
#define spindle_pot_h

uint8_t spindlePotValue;

void InitSpindlePot();
void UpdateSpindlePotValue();

#endif // spindle_pot_h

 

spindle_pot.c :

#include "grbl.h"

#define ADC_VREF_TYPE (1 << REFS0) // AVCC (5V) with external capacitor at AREF pin

void InitSpindlePot()
{
  SPINDLE_POT_DDR &= ~(SPINDLE_POT_PIN); // Configure as input pin
  SPINDLE_POT_PORT &= ~(SPINDLE_POT_PIN); // Configure no pullup
  ADMUX = ADC_VREF_TYPE | bit(MUX0); // 5V reference + AIN5
  ADCSRA = bit(ADEN) | bit(ADPS2) | bit(ADPS1) | bit(ADPS0); // ADC enabled, pre-scaler division=128.
  ADCSRB = bit(MUX5); // AIN9 to AIN15
  ADMUX = SPINDLE_POT_INPUT|ADC_VREF_TYPE; // select input
  ADCSRA |= (1 << ADSC); // Start first AD conversion
}

void UpdateSpindlePotValue()
{
  static uint8_t spindlePotValueMem;

  if (bit_is_clear(ADCSRA,ADSC)) // If the AD conversion is complete
    {
      uint8_t spindlePotValue = ADC>>2; // Update value/4 -> (0 - 255)    
 
      if (spindlePotValue < MIN_SPINDLE_SPEED_OVERRIDE) {spindlePotValue = 100;} // ajout perso, supprime fictivement le potar lorsqu'il est au mini
          
      
      ADCSRA |= (1 << ADSC);     // Start another AD conversion

      if (spindlePotValueMem != spindlePotValue)
        {
          spindlePotValueMem = spindlePotValue;
          sys.spindle_speed_ovr = spindlePotValue;

          sys.report_ovr_counter = 0; // Set to report change immediately

        }
    }
}

 

j'ai aussi fait les ajouts nécessaires dans cpu_map.h , main.c , protocol.c 

alors ça donne quoi ?

chaque fonction compilée séparément fonctionne très bien mais dès que je compile les 2 ensemble ça ne fonctionne plus : un seul des 2 potars commande les 2 fonctions !!!

je ne pense pas m'être trompé dans les definitions du 2ème ADC vu que ça fonctionne séparément mais pas sûr  // feed rate pot port F5 , spindle pot : port K1  

ou alors c'est la méthode d'acquisition des 2 ADC qui n'est pas bonne , je suis un peux perdu là , si tu as une idée 

 

PS: j'ai quand même ajouter un détail tu l'auras surement remarqué :

si je positionne le potard au mini je reviens avec le même fonctionnement que sans potar et je peux faire l'override avec les boutons de CNCjs , en fait avant de faire cette modif quand le potar était au mini les lignes F et R de l'onglet grbl deCNCjs disparaissaient !! en cherchant a comprendre pourquoi j'ai découvert ça (un peu par hasard) j'avais mis  spindlePotValue = 1 et j'ai essayer avec spindlePotValue = 100 pour tester et j'ai vu que les boutons de CNCjs étaient de nouveau actifs

en mettant un inter entre masse et signal du potar on peut passer d'un mode à l'autre !!!

Modifié (le) par supernono
orthographe
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Bonjour @supernono,

Bonne idée de faire varier la broche aussi ;-).

Je vais te mettre sur la voie : ADMUX permet (entre autre) de sélectionner sur quelle entrée ana on va faire la conversion.

 Le résultat de cette conversion sera toujours retournée par le registre ADC (Que je divise par 4 pour obtenir une variation 0 - 254 %).

Donc pour ne pas ralentir le code, définis une variable uint8_t PingPong = false ; par exemple et sert t'en pour faire la conversion sur AIN5 -Ping- (avances) puis au cycle suivant sur AIN1 -Pong- (broche) en redéfinissant ADMUX à chaque fois ....

Espérant être à peut près clair .... 🙃

Le mieux serait donc de gérer les deux dans le même fichier pour éviter les doublons (erreurs) lors de l'init. Cela simplifiera la lecture du code aussi.

Si tu y arrive pas, je te le ferai ... Plus tard.

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

ok cool merci , je vois ce que tu veux dire je vais essayer (qui ne tente rien n'a rien et pour apprendre y'a pas mieux )

je suis beaucoup plus a l'aise avec le basic (et oui ZX 81 / TO7 / MO5 / EXEL100 / ... furent mes premières expériences informatique !!!!!)

3heures plus tard ...

j'ai essayé de faire ce que tu m'a dit  un fichier multi_pot.h et un multi_pot.c 

multi_pot.h :

#ifndef multi_pot_h
#define multi_pot_h

uint8_t feedratePotValue;
uint8_t spindlePotValue;

void InitMultiPot();

void UpdateMultiPotValue();

#endif // multi_pot_h

multi_pot.c :

#include "grbl.h"

#define ADC_VREF_TYPE (1 << REFS0) // AVCC (5V) with external capacitor at AREF pin

void InitMultiPot()
{
  FEED_RATE_POT_DDR &= ~(FEED_RATE_POT_PIN); // Configure as input pin
  FEED_RATE_POT_PORT &= ~(FEED_RATE_POT_PIN); // Configure no pullup
  
  SPINDLE_POT_DDR &= ~(SPINDLE_POT_PIN); // Configure as input pin
  SPINDLE_POT_PORT &= ~(SPINDLE_POT_PIN); // Configure no pullup
  
  ADCSRA = bit(ADEN) | bit(ADPS2) | bit(ADPS1) | bit(ADPS0); // ADC enabled, pre-scaler division=128.
}

void UpdateMultiPotValue()
{
  static uint8_t feedratePotValueMem;
  static uint8_t spindlePotValueMem;
  uint8_t PingPong ;
  
  if (PingPong == false);
    {
      ADMUX = ADC_VREF_TYPE | bit(MUX2) | bit(MUX0); // 5V reference + AIN5
      //ADCSRA = bit(ADEN) | bit(ADPS2) | bit(ADPS1) | bit(ADPS0); // ADC enabled, pre-scaler division=128.
      ADCSRB = 0; // AIN0 to AIN7
      ADMUX = FEED_RATE_POT_INPUT|ADC_VREF_TYPE; // select input
      ADCSRA |= (1 << ADSC); // Start AD conversion
     
      if (bit_is_clear(ADCSRA,ADSC)) // If the AD conversion is complete
        {
          uint8_t feedratePotValue = ADC>>2; // Update value/4 -> (0 - 255)    
          PingPong = true;
          if (feedratePotValue < MIN_FEED_RATE_OVERRIDE) {feedratePotValue = 100;}    

          if (feedratePotValueMem != feedratePotValue)
            {
              feedratePotValueMem = feedratePotValue;
              sys.f_override = feedratePotValue;
              // Rapid must don't exced DEFAULT_RAPID_OVERRIDE
              if (feedratePotValue > DEFAULT_RAPID_OVERRIDE) {feedratePotValue = DEFAULT_RAPID_OVERRIDE;}
              sys.r_override = feedratePotValue;
              sys.report_ovr_counter = 0; // Set to report change immediately
              plan_update_velocity_profile_parameters();
              plan_cycle_reinitialize();
            }
         
        }
    }    
    
  if (PingPong == true);    
    {
      ADMUX = ADC_VREF_TYPE | bit(MUX0); // 5V reference + AIN5
      //ADCSRA = bit(ADEN) | bit(ADPS2) | bit(ADPS1) | bit(ADPS0); // ADC enabled, pre-scaler division=128.
      ADCSRB = bit(MUX5); // AIN9 to AIN15
      ADMUX = SPINDLE_POT_INPUT|ADC_VREF_TYPE; // select input
      ADCSRA |= (1 << ADSC); // Start AD conversion

      if (bit_is_clear(ADCSRA,ADSC)) // If the AD conversion is complete
        {
          uint8_t spindlePotValue = ADC>>2; // Update value/4 -> (0 - 255)    
          PingPong = false;
          if (spindlePotValue < MIN_SPINDLE_SPEED_OVERRIDE) {spindlePotValue = 100;}
          
          if (spindlePotValueMem != spindlePotValue)
            {
              spindlePotValueMem = spindlePotValue;
              sys.spindle_speed_ovr = spindlePotValue;
              sys.report_ovr_counter = 0; // Set to report change immediately
            }
         
        }
  
    }
}


c'est pareil un seul potar gère les 2 fonctions , mais le pingpong doit fonctionner car lors d'une variation le feed rate change et peu après le spindle change a son tour 

ils prennent la même valeur mais pas en même temps alors que pour la version précedente ils changaient simultanément 

doit y avoir une merdouille dans mes déclarations  d'ADC mais je ne la voie pas ,je l'ai pourtant fait a l'aide de la bible atmel 

  


 

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

Bonjour,

Si tes entrées sont bien sur AIN1 et AIN5 (sur le même port) , cela devrait donner un truc du genre :

#include "grbl.h"

#define ADC_VREF_TYPE (1 << REFS0) // AVCC (5V) with external capacitor at AREF pin

void InitMultiPot()
{
  FEED_RATE_POT_DDR &= ~(FEED_RATE_POT_PIN); // Configure as input pin
  FEED_RATE_POT_PORT &= ~(FEED_RATE_POT_PIN); // Configure no pullup
  
  SPINDLE_POT_DDR &= ~(SPINDLE_POT_PIN); // Configure as input pin
  SPINDLE_POT_PORT &= ~(SPINDLE_POT_PIN); // Configure no pullup
  
  ADMUX = ADC_VREF_TYPE | FEED_RATE_POT_NUM; // 5V reference + Feed Rate input selected
  ADCSRA = bit(ADEN) | bit(ADPS2) | bit(ADPS1) | bit(ADPS0); // ADC enabled, pre-scaler division=128.
  ADCSRB = 0; // AIN0 to AIN7
  ADCSRA |= (1 << ADSC); // Start first AD conversion
}

void UpdateMultiPotValue()
{
  static uint8_t feedratePotValueMem;
  static uint8_t spindlePotValueMem;
  uint8_t PingPong = false;
  
  if (PingPong == false) // Read feedrate pot and start spindle pot conversion
    {
      if (bit_is_clear(ADCSRA,ADSC)) // If the AD conversion is complete
        {
          uint8_t feedratePotValue = ADC>>2; // Update value/4 -> (0 - 255)    
          if (feedratePotValue < MIN_FEED_RATE_OVERRIDE) {feedratePotValue = 100;}    

          if (feedratePotValueMem != feedratePotValue)
            {
              feedratePotValueMem = feedratePotValue;
              sys.f_override = feedratePotValue;
              // Rapid must don't exced DEFAULT_RAPID_OVERRIDE
              if (feedratePotValue > DEFAULT_RAPID_OVERRIDE) {feedratePotValue = DEFAULT_RAPID_OVERRIDE;}
              sys.r_override = feedratePotValue;
              sys.report_ovr_counter = 0; // Set to report change immediately
              plan_update_velocity_profile_parameters();
              plan_cycle_reinitialize();
            }
        }
      ADMUX = ADC_VREF_TYPE | SPINDLE_POT_NUM; // 5V reference + Spindle input selected
      ADCSRA |= (1 << ADSC); // Start AD conversion
      PingPong = true;
    }    
    
  else  // Read spindle pot and start feddrate pot conversion    
    {
      if (bit_is_clear(ADCSRA,ADSC)) // If the AD conversion is complete
        {
          uint8_t spindlePotValue = ADC>>2; // Update value/4 -> (0 - 255)    
          if (spindlePotValue < MIN_SPINDLE_SPEED_OVERRIDE) {spindlePotValue = 100;}
          
          if (spindlePotValueMem != spindlePotValue)
            {
              spindlePotValueMem = spindlePotValue;
              sys.spindle_speed_ovr = spindlePotValue;
              sys.report_ovr_counter = 0; // Set to report change immediately
            }
        }
      ADMUX = ADC_VREF_TYPE | FEED_RATE_POT_NUM; // 5V reference + Spindle input selected
      ADCSRA |= (1 << ADSC); // Start AD conversion
      PingPong = false;
    }
}

 

Quand PingPong est à 0 : On lis le feedrate et on lance la conversion pour la broche et quand il est à 1 on lis la broche et on lance la conversion feedrate...

J'ai pas testé : Il y a peut être une ou deux "coquilles".

Edit : SPINDLE_POT_NUM et FEED_RATE_POT_NUM définissent le numéro de pin (1 et 5 dans ton cas ... Je crois 😉

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

salut @bracame 

merci pour ton aide j'ai testé ton code 

il y a du mieux mais c'est pas encore ça le potar spindle semble faire varier les 3 valeurs (Feed rate , Spindle & Rapid) mais le potar feed rate a quand même un effet mais l'affichage de la bonne valeur est fugitif et semble "écrasé" par la valeur du potar spindle 

j'ai fais une vidéo de l'affichage sous CNCjs ,  pour la première moitié de la vidéo feed rate est a 184% après je le passe a 239% et pour finir je le passe a 255% je ne touche pas au potar spindle il est réglé a 87% tout le long de la vidéo 

on voit les vraies valeurs du feed rate fugitives et en même temps on voit les valeurs sur la ligne R  passer à 100% (le maxi definit dans cofig.h #define DEFAULT_RAPID_OVERRIDE  100)

https://www.youtube.com/watch?v=ieAS0dNsFFg  

 

j'ai fais de nombreux essais l'affichage de la valeur fugitve est juste et varie bien en fonction du potar feed rate , potar au mini la valeur 100% s'affiche elle aussi comme défini dans le code que tu ma posté ce midi

je ne comprend pas d'où ce défaut d'affichage peut venir, je pense que ton code est bon puisque les valeurs sont bien prise en compte 

autre constatation :

  • j'ai du remplacer le  else par if (PingPong == true) sinon le le morceau de code du else n'est pas pris en compte  ????
  • si j'inverse le contenu de if (PingPong == false) et de if (PingPong == true) le défaut constaté au dessus s'inverse c'est l'affichage du spindle qui devient fugitif

sur le port F je n'ai  que F5 d'accessible les autres sont câblés en hard sur le pcb

j'ai voulu utiliser K1 & K2 mais je me demande si le problème ne viendrais pas de là  dans le cpu_map.h ou ma_machine.h pour toi  :

  // Define user-control CONTROLs (cycle start, reset, feed hold) input pins.
  // NOTE: All CONTROLs pins must be on the same port and not on a port with other input pins (limits).
  #define CONTROL_DDR       DDRK
  #define CONTROL_PIN       PINK
  #define CONTROL_PORT      PORTK
  #define CONTROL_RESET_BIT         5  //  MKS GenL AUX2 Analog Pin A13
  #define CONTROL_FEED_HOLD_BIT     3  //  MKS GenL AUX2 Analog Pin A11
  #define CONTROL_CYCLE_START_BIT   4  //  MKS GenL AUX2 Analog Pin A12 
  #define CONTROL_SAFETY_DOOR_BIT   6  //  MKS GenL AUX2 Analog Pin A14
  #define CONTROL_INT       PCIE2  // Pin change interrupt enable pin
  #define CONTROL_INT_vect  PCINT2_vect
  #define CONTROL_PCMSK     PCMSK2 // Pin change interrupt register
  #define CONTROL_MASK      ((1<<CONTROL_RESET_BIT)|(1<<CONTROL_FEED_HOLD_BIT)|(1<<CONTROL_CYCLE_START_BIT)|(1<<CONTROL_SAFETY_DOOR_BIT))


si c'est le cas je ne pourrais pas controler l'override du spindle par ce bias là

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

Ha ! dommage...

Pour être sur : Tu utilise bien PF1 et PF5 ? Si oui, t’embête pas avec les autres.

Et pour ce qui est du "else" modifié, je comprend pas bien le pourquoi mais essaye en laissant le code tel que "livré" 😉 de placer un "return;" après le "PingPong = true;" STP.

      PingPong = true;
      return;
    }    
    
  else  // Read spindle pot and start feddrate pot conversion    
    {

La, on sera sur que l'on sort de la fonction.

On va l'avoir .... Si besoin je testerai ici.

Avec ma Kress, la variation de vitesse de broche : Je le fait directement dessus car c'est pas pilotable facilement à distance. Donc j'ai pas implémenté cette fonction mais il est sur qu'elle est "nécessaire" quand elle est possible.

Lien vers le commentaire
Partager sur d’autres sites

ok je teste le return demain tout a l'heure 

par contre je n'ai que PF5 de disponible c'est pour cela que j'ai tenté avec PK1 & PK2 

Edit 10h30

j'ai fait le test return / else -> ça ne fonctionne pas 

ayant un arduino mega R2 dans un tiroir j'a fait des test avec celui ci ayant toutes les pin disponible (contrairement a la MKS GenL V1.0) je n'ai connecter que les potar dessus

  • en utilisant PK1 & PK2 même resultats qu'avec la MKS
  • en utilisant PF4 & PF5  même resultats qu'avec la MKS
Modifié (le) par supernono
Lien vers le commentaire
Partager sur d’autres sites

Ok,

Si tu es patient, je regarderais....

Hoaouuu !!!!!! Super ton nouvel Avatar : J'aaaadooore la "bête" : LE batteur du MuppetShow !!!!! CCCooooooooooooollllllllllll !!!

Je suis un gamin ... D'un demi siècle ....

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, bracame a dit :

Je suis un gamin ... D'un demi siècle ....

pareil, donc les même références; c'est" animal" son petit nom au batteur du muppet show

je te laisse regarder tranquillement , j'ai penser a un autre moyen mais je ne sais pas si c'est viable point de vue temps consommé dans le code de grbl 

j'ai monté 2 potentiomètres sur un arduino pro micro et écrit un bout de code dedans 

pour le moment si j'envoi la lettre "f" par le port serie de mon PC  l'arduino pro micro me répond la valeur relative au potar feed rate et si j'envoie la lettre "s" l'arduino pro micro me répond la valeur relative au potar spindle

après je ne sais pas si on peut remplacer le code du fichier multi_pot.c par un code qui ferais la demande "f" ou "s"  a l'arduino pro micro et qui recevrais les valeur en retour (j'ai aussi fait des tests avec 2 codeurs rotatif  ça fonctionne aussi très bien )

dans le cas ou ce soit possible j'ai les port PH1 (tx2) et PH0 (rx2) disponibles sur la carte MKS GenL

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

Oui : "Animal"-> Il transpire la joie à taper sur ses caisses ! Merci !!! j'adore.

Je vais regarder ton cas dans le détail mais il va me falloir peut être un peut de temps (car je vais tester avant) ... La reprise des activités pro va être dure ....et longue !!!!!

De quoi faire un film X ;-).

Lien vers le commentaire
Partager sur d’autres sites

salut @bracame

que pense tu de l'idée de passer par le port série 2 du atmega 2560 {port PH1 (tx2) et PH0 (rx2)} pour recevoir les valeurs feed rate & spindle ? juste pour savoir je continu sur cette voie 

pour le moment j'ai créer un typon avec 2 codeurs avec bouton poussoir, 2 leds bicolore et l arduino pro micro (un codeur & une led pour feed rate et un codeur & une led pour spindle) la transmission serie se fait par les pins D0 tx & D1 rx (et non pas par l'USB) 

le programme associé agit comme ceci :

a l'initialisation les 2 leds sont verte et les valeurs feed rate & spindle sont a 0 , la rotation des codeurs ne change pas ces valeurs ce qui permettrais a grbl de faire comme si rien n'était connecté grâce au 2 ligne suivante dans le fichier multi_pot .h 

if (feedratePotValue < MIN_FEED_RATE_OVERRIDE) {feedratePotValue = 100;}

if (spindlePotValue < MIN_SPINDLE_SPEED_OVERRIDE) {spindlePotValue = 100;}

une pression sur le bouton poussoir d'un codeur fait passer sa led au rouge et la rotation du codeur permet de changer la valeur concerné feed rate ou spindle 

une nouvelle pression sur le bouton poussoir ramène a l'étape précédant (un peu comme une fonction AUTO / MANU )

là j'ai 2 options possibles 

  • le port série attend une requête (lettre "F" ou "S") de la part de l'atmega 2560 et renvoie la valeur souhaitée 
  • le port série envoie les valeur a chaque changement 

je pense que la première option est plus proche de ce que l'on souhaite faire pour l'instant avec les potars et les ADC 

le fichier multi_pot pourrait être similaire dans sa forme a ce que l'on a déja :

void UpdateMultiPotValue()
{
  static uint8_t feedratePotValueMem;
  static uint8_t spindlePotValueMem;
  uint8_t PingPong = false;
  
  if (PingPong == false) // Read feedrate pot and start spindle pot conversion
    {
      requête "F" 

          uint8_t feedratePotValue = valeur reçue; // (0 - 255)    
          if (feedratePotValue < MIN_FEED_RATE_OVERRIDE) {feedratePotValue = 100;}    

          if (feedratePotValueMem != feedratePotValue)
            {
              feedratePotValueMem = feedratePotValue;
              sys.f_override = feedratePotValue;
              // Rapid must don't exced DEFAULT_RAPID_OVERRIDE
              if (feedratePotValue > DEFAULT_RAPID_OVERRIDE) {feedratePotValue = DEFAULT_RAPID_OVERRIDE;}
              sys.r_override = feedratePotValue;
              sys.report_ovr_counter = 0; // Set to report change immediately
              plan_update_velocity_profile_parameters();
              plan_cycle_reinitialize();
            }
      PingPong = true;
    }    
    
  else  // Read spindle pot and start feddrate pot conversion    
    {
      
        
          uint8_t spindlePotValue = valeur reçue; // (0 - 255)    
          if (spindlePotValue < MIN_SPINDLE_SPEED_OVERRIDE) {spindlePotValue = 100;}
          
          if (spindlePotValueMem != spindlePotValue)
            {
              spindlePotValueMem = spindlePotValue;
              sys.spindle_speed_ovr = spindlePotValue;
              sys.report_ovr_counter = 0; // Set to report change immediately
            }

      PingPong = false;
    }
}

  j'attend ton retour pour tirer le circuit imprimé et m'attaquer au code pour le port série du 2560 en C  (et oui pour l'instant j'ai developper le soft de l'arduino pro micro en arduino et pas en C !!!)

 j'ai aussi fait une version avec deux potars le fonctionnement est identique 

EDIT:

image du pcb, l'entraxe des codeur est de 5 cm (l'arduino pro micro monté au dos du pcb  c'est pour cela que les écritures sont a l'envers)

platine.JPG

EDIT :

après retouche du code et du typon il est maintenant possible d'avoir 6 raccourcis clavier par le  port usb certaints logiciels comme CNCJs peuvent les utiliser 

 

platine V2.JPG

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

Bonsoir,

La , tu as envie de t'amuser !!

Au niveau utilisateur, c'est sympa mais cela demande pas mal de travail pour ne pas nuire aux performances de GRBL.

Je vais (bientôt) faire l’implémentation de la vitesse de broche en plus des avances : On verra. LE plus simple et le mieux.

Bon week end.

Lien vers le commentaire
Partager sur d’autres sites

OK si tu est intéressé par une carte dis le moi je ferais les deux circuit en même temps 

après je ne suis pas assez bon pour savoir si la lecture d'un port ADC et son traitement est plus long qu'une requête réponse sur le port série ou pas 

j'aime bien l'arduino pro micro il est tout petit il sait émuler un clavier une souris et un joystick 

petit HS le dernier joystick en cour de réalisation fait avec :  

DSC_0465.JPG

fonctionnel :

  • direction par capteur de gravité (acceleromètre XL335B)
  • poignée de gaz par capteur a effet hall  (avec un bras de tête de lecture + aimant HDD)
  • levier de frein AV par jauge de contrainte logé dans un étrier de frein de VTT shimano 

reste a faire :

  • sélecteur de vitesse c'est simple mais pas d'acces a l'atelier pour le moment
  • frein AR  comme le frein AV (j'ai le matériel mais je ne sais plus ou  !!!)
  • capteur de force latéral avec 2 jauge de contraintes a gauche et a droite du piètement pour mesurer le déhanchement ! (électronique fonctionnelle) 
Modifié (le) par supernono
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
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...