DivNum réponse a l'ordre Serial.print()

  • Auteur de la discussion JLBCS
  • Date de début
J

JLBCS

Nouveau
Les discussions sur ce sujet que j'ai parcourues n'ont pas répondu à mes préoccupations sur le positionnement angulaire de chaque dent.
Pour faire simple il y a plusieurs méthodes:
  1. un plateau diviseur qui comporte les rangées de trous correspondant chacune à un certains nombre de divisions
  2. un plateau diviseur qui commande une vis sans fin solidaire de l'axe de rotation du pignon (style tour Schaublin)
  3. une vis sans fin solidaire de l'axe de rotation actionnée par un moteur pas à pas
Chaque méthode a ses avantages et ses inconvénients en terme de cout et de facilité d'utilisation. Plus il y a de cercle sur le plateau 1 plus c'est cher mais on se trompe beaucoup moins facilement que sur le système 2. La méthode 3 combine de la logique et de la mécanique et les ingrédients sont abordables de nos jours.
Voir la description du projet dans le fichier joint. Voir aussi mon profile pour comprendre et accepter les contraintes que je m'impose.
Actuellement, je peux transmettre de mon PC vers l'Arduino les ordres que je souhaite:
  • libérer l'axe
  • bloquer l'axe
  • avancer de x steps
  • avancer d'un step
  • revenir au point de départ
Cependant, je n'arrive pas à recevoir la réponse de l'Arduino dans mon programme.
Il manque quelque chose dans le système de mon PC pour supporter pleinement le dialogue entre ces deux composants.
Hors, je vois parfaitement les réponse lorsque j'utilise le moniteur série ou le programme Termite. De même j'ai entre-aperçu une interface Excel Arduino.
Ma question est donc : comment recevoir dans un programme (de haut niveau) les réponse a l'ordre Serial.print()
Par ailleurs, je m’étonne que ce besoin de communication dans les deux sens n'ait pas été ressenti.
Merci de votre aide.
 

Fichiers joints

  • Arduino_project.pdf
    2.9 Mo · Affichages: 128
L

Leal

Apprenti
et je suppose que la vis sans fin est monté sur le moteur pas à pas et la roue dentée sur l'axe du diviseur plutôt que l'inverse non ?
 
J

JLBCS

Nouveau
Merci Leal mais Processing ne m'inspire pas beaucoup.
Oui l'axe de rotation est solidaire de la roue dentée, roue qui est entrainée par la vis sans fin mue par le steppeur.
Par ailleurs, j'ai un compteur USB qui fonctionne tres bien avec des ordre LINEIN et LINEOUT (REXX) ce qui me conviendrait parfaitement avec ce processeur Arduino.
 
L

Leal

Apprenti
Si tu n’as pas envie de travailler avec processing, il y a la solution de travailler avec le framework Qt qui intègre la librairie QtSerial qui permet de communiquer via le port série avec l’arduino en faisant un programme en C++ mais du coup c’est assez bas niveau par rapport à ce que tu cherche
 
J

JCS

Compagnon
@JLBCS,

J'ai des diviseurs numériques que j'ai fabriqués il y a déjà longtemps et qui donnent d'excellents résultats.
Ici le dernier né : http://www.sulka.fr/diviseur_numerique/cn.pdf

http://www.sulka.fr/lrb

Je commande ma machine à tailler avec un vieux PC sous XP et via le port série par l'intermédiaire d'une interface à PIC 16F84.

Le programme sur le PC, qui dialogue avec le PIC est en QBasic. Je voudrais bien me passer de mon PC et de faire quelque chose
avec un Arduino ou un Raspberry, mais cela me paraît beaucoup trop compliqué pour moi !

@+
JC.
 
L

Leal

Apprenti
Vu les commandes que tu as à faire :
Grosso modo, réglage du nombre de division
Puis un bouton pour avancer(ou reculer) d’une division.
Je pense qu’il est possible de faire ça très simplement avec une arduino et un écran lcd sachant que la commande des moteur pas à pas et de l’affichage sur écran lcd est très très bien documenté par la communauté et qu’il existe de nombreux tutoriels
 
S

serge 91

Lexique
Bonsoir,
La partie "programmation" c'est une chose (pas mon truc)
Mais c'est pour usiner quoi ? Çà a quand même une certaine importance (savoir ce qu'on commande)
 
J

jdg

Compagnon
Bonjour à tous

Pour information tout cela existe chez "Sherline" si vous n'avez pas les capacités de JCS.

Cordialement

@JCS Bonjour "double" Maître
 
J

JCS

Compagnon
Salut à tous,

Pour information tout cela existe chez "Sherline" si vous n'avez pas les capacités de JCS.

@JCS Bonjour "double" Maître

Merci JDG, mais je n'ai pas des capacités extraordinaires, j'ai bêtement assemblé des techniques simples, que je maîtrise bien, parce que je n'ai pas les moyens de me payer un Sherline, un Shaublin ou une machine à tailler Bergeon.
" Quand on a pas de pétrole, il faut avoir des idées".

@+
JC mètre 75.
 
J

JLBCS

Nouveau
Merci JCS d'avoir trouvé la formule politiquement correcte pour exprimer le fond de ma pensée. Je cherche de l'aide pour recevoir sur mon PC la réponse à une commande exécutée sur l'Arduino.
A ce jour et compte tenu de ma récente expérience, ce 'contrôleur à 3 sous' exécute (ou pas) la commande reçue et ne SAIS pas en rendre compte. Dans ces conditions, on ne peut pas parler de dialogue car c'est tout simplement un MONOLOGUE, ce qui impose de tout faire sur cette carte, dans un langage qui n'est pas nécessairement optimisé.
Un leitmotive : RENDRE COMPTE

Ceci dit j'ai réussi a développer un monologue de commande pour driver mon moteur pas à pas. Il reste la mécanique à concevoir et réaliser et ce n'est pas gagné.
 

Fichiers joints

  • Code_actif.txt
    6.5 KB · Affichages: 64
J

jpbbricole

Compagnon
Bonjour JLBC
Je cherche de l'aide pour recevoir sur mon PC la réponse à une commande exécutée sur l'Arduino.
J'ai "comis" ça qui est fait, au départ pour tailler des roues dentées puisque que c'est à l'instigation de @JCS que j'ai fait ce développement.
Pour ce qui est du dialogue Arduino-> PC, je suis un adepte d'Excel qui facilite énormément les choses et ce sans devoir du VBA.
Un exemple.
Le programme mentionné ci-dessus peut être entièrement piloté depuis "ma" feuille Excel.

Cordialement
jpbbricole
 
Dernière édition:
J

JLBCS

Nouveau
Merci jpbricole. Je n'arrive pas a ouvrir votre exemple. Pouvez-vous le mettre en txt ou équivalent. Merci je vais pouvoir progresser dans la dialogue.
 
J

jpbbricole

Compagnon
Je n'arrive pas a ouvrir votre exemple
Oupsss! j'ai corrigé le lien.
Il est à noter dans le sens Arduino PAC, c'est la valeur qui est transmise, dans l'autre sens c'est la feuille Excel qui allume la LED RGB à la couleur de la cellule centrale, sur le circuit. Quelques détails ici, une explication du principe ici.
Par rapport aux exemples, la feuille Excel a quelque peut évolué.

Cordialement
jpbbricole
 
J

JMe87

Apprenti
Bonjour a tous, bonjour JLBCS,

j'ai lu avec attention votre document pdf. Vous cherchez la complexite maximale. Pourquoi utuliser un PC pour commander un Arduino pour faire tourner un moteur pas-a-pas.

Un Arduino est capable de faire des calculs tres complexes en une fraction de seconde.

Pour resoudre votre probleme il suffit simplement de calculer la position ideale a chaque division et de faire un arrondi.

Voici le lien du message sur ce forum ou je donne toutes les explications pour realiser un systeme autonome.

https://www.usinages.com/threads/besoin-daide-pour-lire-une-carte-sd-avec-arduino.99927/page-2

A ta disposition pour tout renseignement complementaire dont tu pourrais avoir besoin.

Jacques
 
Dernière édition:
S

speedjf37

Compagnon
Ma question est donc : comment recevoir dans un programme (de haut niveau) les réponse a l'ordre Serial.print()

Bonjour,

Plus de détails sur le CDC svp !

Quel OS ?
Windows 7,8,9,10 xp
Linux
Mac

Quel type de prog voulez vous utiliser ?
Graphique , ligne de commande , plugin

Quel langage ?
'C' C++ C#
Visual C Basic

Quel environnement de dévellopement ?
Eclipse
Visual



La plupart des systèmes ont une librairie "serial"

JF
 
J

JLBCS

Nouveau
Bonjour à tous et merci de vos conseils.
C'est vrai un Arduino est un puissant contrôleur mais un contrôleur qui ne sais pas communiquer, qui ne remonte pas les anomalies. Il envoie des commandes à un DRV8825 sans se soucier de savoir si la commande est exécutée correctement. Vers le haut, c.a.d. mon PC, aucun interface vers un langage de haut niveau, par exemple REXX.
Heureusement, mon pacemaker n'est pas fabriqué sur base Arduino.

En dépit de ces lacunes j'ai trouvé et réalisé une solution pour remplacer un plateau diviseur et tailler des engrenages dans un environnement d'amateur mais surtout pas de production.
Après mures réflexions, j'ai fait très simple :
1544700197215.png
1544700197215.png



Voilà pour la logique.

La liaison USB PC <==> Arduino sert à charger le programme dans le contrôleur et éventuellement à suivre le déroulement des opérations avec un moniteur série.

Le crash switch bloque la rotation de la broche quand la fraise est engagée.

Les communications homme-machine se font par 5 boutons poussoir :

  1. Marche le point zéro est enregistré et on peut tailler le premier espace inter-dent
  2. Avant avancer d'une dent
  3. Arrière reculer d'une dent
  4. Raz retour au point de départ
  5. Arrêt on a terminé.

Il y a deux programmes pour faire tourner cet ensemble :

  1. Sur le contrôleur, un croquis qui va interpréter les boutons poussoir pour gérer la broche. Ce croquis doit être personnalisé en fonction du nombre de dents à réaliser, à savoir, copier/coller de 2 lignes qui définissent la roue à tailler.
  2. Sur le PC, un programme de calcul et fabrication des 2 lignes de code Arduino pour des roues de 6 dents à 139 dents. La limite supérieure peut être modifiée. Les résultats sont stockés dans une bibliothèque, prêts pour le copier/coller.

Comme premier essai j'ai taillé une roue de 135 dents module 0,27 après avoir compilé le croquis personnalisé pour 135 dents :



int table[] = {222, 222, 222, 222, 223, 222, 222, 223, // 222, 222, 222, 223}; //step table

int Dents = 135 ; // nombre de dent



très compliqué ! Mais plus simple que de changer un plateau...



Lors de la taille en 3 passes, j'ai constaté que appuyer sur un bouton était beaucoup plus confortable et sûr que de passer à la dent suivante avec un alidade ou une manivelle (tour Schaublin).

Par ailleurs, avec la division numérique toutes les divisions sont possibles.

Durant cet essai, mon PC était connecté et un moniteur série était activé. Je n'ai pratiquement pas regardé l'écran.

Résultat brut avant ébavurage
1544700300242.png





Amélioration potentielles

La réduction mécanique dépend des divers roues qui entrent dans la construction. La réduction 'électronique' avec le DRV8825 permet d'utiliser des micro-step.

Pour les puristes, on peut calculer l'erreur maximum dues aux arrondis lors du calcul du nombre de step du moteur. Plus il y a de dents à tailler, plus l'erreur va croître.

Si cette erreur est trop grande aux yeux de l'utilisateur, il peut décider d'utiliser les micro-step de 2 à 32 en activant les pins MS0, MS1, MS2 et MS3 et fabriquer la table des steps dans ce sens.

Sur l'Arduino la somme des steps permet de calculer le niveau de micro-step et initialiser correctement les pin MS0 à MS3.

Dans la version actuelle de mon croquis et du générateur de saut, on peut travailler en full step ou demi step.



Point final
 
J

jpbbricole

Compagnon
Bonjour JLBCS
En dépit de ces lacunes j'ai trouvé et réalisé une solution pour remplacer un plateau diviseur et tailler des engrenages dans un environnement d'amateur mais surtout pas de production.

Belle réalisation, j'ai fais à peu près la même chose, c'est commandable depuis un PC, même depuis une feuille Excel (pas terminé) et, en plus, ça commande la machine qui usine (sous GRBL).

Cordialement
jpbbricole
 

Sujets similaires

V
Réponses
3
Affichages
1 034
vibram
V
P
Réponses
81
Affichages
11 264
Alex31
A
laurenttanguy
Réponses
0
Affichages
463
laurenttanguy
laurenttanguy
N
Réponses
27
Affichages
622
Jean 47
J
D
Réponses
32
Affichages
1 901
slouptoouut
slouptoouut
O
Réponses
7
Affichages
897
O
L
Réponses
77
Affichages
7 063
Lucuferus
L
K
Réponses
34
Affichages
1 270
deuche87
deuche87
Coyote94
Réponses
2
Affichages
23 071
Coyote94
Coyote94
Haut