Générateur de pulses pour PAP

  • Auteur de la discussion vibram
  • Date de début
W

wika58

Compagnon
Un exemple de petit cycle
- avance à 800 RPM pour 10000 pulses
- pause 2 sec,
- retour à la position initiale à 3000 RPM



Et là montée à 9000 RPM avec rampe d'accélération de 5% de la vitesse de consigne...
Et arrêt avec rampe...


Ou pas...



Bon, bien entendu sans charge...

Je vais essayer de faire des essais sur la BF28... même si le driver sera un peu limite...mais pour 1 ou 2 A/R ca devrait le faire avec les 4 A.
 
Dernière édition:
W

wika58

Compagnon
Le gars des vidéos sur Y-Tube a fait une nouvelle vidéo sur la commande par les pins du PCB et le paramétrage par la liaison série (depuis un Arduino) comme je lui avait demandé dans un commentaire...:roxxx:


Et il donne les librairies et son programme en commentaire...

Ca ouvre des possibilités...

Je suis bien conscient que si on a un Arduino, on peut aussi tout gérer depuis l'Arduino... mais une solution mixte pourrait être utile pour certaines applications...
 
Dernière édition:
W

wika58

Compagnon
Ce petit GI serait très bien pour faire des avances automatiques toutes simples.

Le paramétrage est très simple... il gère les rampes d'accélération/décélération...

Mais pour nos avances, il est interssant d'avoir une PV (réglée pour l'usinage en cours) et une GV (pour des déplacements rapides d'un point à un autre sans modifier la vitesse d'usinage actuelle).

Le problème du GI dont on parle pour le moment est qu'il n'a qu'un canal... et que il faut vraiment faire bcp de tour de l'encodeur rotatif pour passer d'une PV à une GV.

J'ai une idée...

Le module dispose aussi d'une liaison série.
Je verrai bien un tout petit Arduino (Tiny85, ...) avec une entrée Digi ( Le BP GV) et relié a la liaison série du GI.
A l'appui du BP, le uC lit la valeur de la PV actuelle dans le registre du GI, il la mémorise et charge dans le registre la valeur de la GV (qu'il aurait qqpart en mémoire).
Quand on relache le BP, il remet dans le registre du GI la PV précédente...

Et vu la taille d'un Tiny on pourrait l'integer dans le boitier du GI...

Le gars des vidéos a fait l'essai de changement de paramètres dans le GI depuis un Arduino.

J'ai un GI et des Arduino (Nano, Mini, Tiny) pour faire des essais... mais mes compétences en programmation Arduino sont en cours d'acquisition...


La librairie pour le Protocole Modbus utilisé pour le dialogue avec le GI
Et le programme du gars qui a fait les tests avec un Nano

Le registre où il y a la vitesse d'avance est le paramètre F-03 adresse 0002H...

Mais le gars explique qu'il y a des erreurs dans la notice au niveau des adresses de registre... il faut que je reecoute la vidéo...

Qqun pour m'aider ?
 
Dernière édition:
V

vibram

Compagnon
Salut,

Ca va pas forcément dans ton sens mais cela me semble bien complexe pour l'usage.
Tu n'aurais pas intérêt à repartir de 0 ?
Un peu plus de travail au début mais au moins tu gères tout de À à Z et tu sais comment le bouzin fonctionne. Car si en plus la doc n'est pas bonne, sans même parler de la complexité de l'ensemble...

Je me suis fait un petit générateur de pulse basique, avec l'aide de l intelligence artificielle ça s'est fait presque tout seul,enfin avec un effort modéré disons
 
W

wika58

Compagnon
Tout a fait d'accord et c'est mon objectif final pour MES machines... une commande par Arduino...

Mais pour le moment je ne suis pas encore capable de le faire...Formation en cours.

Et donc, pour moi, sur ma fraiseuse, ce serait une solution intermediaire... comme j'ai dejà en service depuis de trop nombreuses années sur ma BF28...

Mais je me dis, que pour qqun qui ne veut pas se mettre à la programmation d'Arduino, ca pourrait être une solution...
Juste un petit Tuto pour telecharger une fois le programme avec sa GV...et puis roulez jeunesse...

C'est une idée qui m'est venue avec cette liaison serie disponible et les fonctionnalités existantes sur ce module (CW speed et CCW speed, distances programmables, petits cycles, ...).

Je suis aussi en train de commencer un diviseur numerique (ici) qui sera normalement au final un DNU sous Arduino...
Mais làaussi je vais passer par une V 1.0 qui sera avec ce petit module GI...qui devrait déjà me permettre de faire 6 trous à 60° ou d'usiner un secteur circulaire de 30° en attendant la version 2.0 sous Arduino...

Et qui me permettra de valider aussi la solution diviseur + MPAP car il y a qq REX negatifs sur le forum...
 
V

vibram

Compagnon
C'est comme tu le sens mais si tu commences à parler de modbus etc ça me semble tellement plus compliqué que de partir de 0.

Mon code n'est pas parfait mais il doit faire à peine 150 ou 200 lignes, aucune librairie tordue. Bref à toi de voir chacun ses envies c'est tout à ton honneur
 
W

wika58

Compagnon
Je suis peut-être encore une fois trop rêveur/utopiste (comme pour le DNU communautaire)... mais on ne me changera plus à mon âge...

Je parlais justement hier avec un ami du forum de ce petit module et lui ne voulait pas toucher à de la programmation Arduino.
Pouvoir faire un petit PCB qui se monte dans le boitier du GI et le paramétré pour un ami me plait bien...

Pour le Modbus, il n'y a AMHA rien à comprendre, c'est juste une librairie à inclure et il y a l'exemple du gars qui a donné son code...
Je viens même de lui poster un msg sur Y-Tube, pour voir s'il ferait un essai... :oops: Il avait bien fait la 3° vidéo suite à une demande de ma part...:wink:

A suivre...
 
W

wika58

Compagnon
Je ne suis pas encore familier avec Gitlab & Co...
Le monsieur y a mis son code en main.cpp... Ca je crois comprendre que c'est pcq il développe sous Visual Studio...

Comme est-ce que je fais pour le récupérer et l'ouvrir avec l'IDE d'Arduino... ? :smt100
 
V

vibram

Compagnon
C'est du c++
Ouvre avec un éditeur de texte pour voir
 
W

wika58

Compagnon
OK merci...

Je peux l'ouvrir avec Notepad++

Donc après je copie/colle dans l'IDE Arduino ?
 
Dernière édition:
V

vibram

Compagnon
Ça dépend...
Copie colle le code ici on va vite voir
 
W

wika58

Compagnon
Voici le code de son essai...



Vu mon niveau Arduino actuel, c'est encore bcp du "Chinois" (Coréan ou Indien)... mais ca n'a pas l'air hyper long...

Et en plus dans son essai, il y a aussi une partie où l'Arduino pilote les E TOR du module pour faire bouger le MPAP...
Partie qui ne serait pas utilisée dans mon idée...


Et il explique le fonctionnement du code dans la deuxième partie de la dernière vidéo...
 
Dernière édition:
V

vibram

Compagnon
Oui c'est bon tu peux copier directement.
Il faut bien installer les librairies mentionnées au début

Au risque de me répéter tu peux coller le code dans chatgpt qui va en partie te l expliquer
 
W

wika58

Compagnon
Ca il faudra peut-être que je fasse le pas un jour... mais pour le moment avec le cours MOOC uControleurs ca fait bcp pour mes vieux neurones...



Une question pour le librairies, je sais que c'est critique l'endroit où elle sont sur le DD du PC... pour que l'IDE y accède lors de la compilation...

Mes exemples, applications, Cours MOOC son dans un répertoire Arduino de 'Mes documents' (C:\Users\patdu_7pktkfb\Documents\Arduino)
Mais le programme IDE se trouve sur C:\Users\patdu_7pktkfb\.arduinoIDE

Où dois-je mettre les librairies que je télécharge du Net ?
 
Dernière édition:
V

vibram

Compagnon
Installe la librairie via la bibliothèque de lib de arduino, normalement tout va se faire automatiquement.

Pour chatgpt, il s'agit juste de créer un compte et de faire un copier coller, c'est à la portée même des anciens. Et même si ça n'a pas réponse à tout, tu peux lui demander d'expliquer tout ou partie d'un code, et même de reformuler si ce n'est pas clair. Et tout ça en français. Je vais te faire l'exemple au dessus
Je lui ai juste copié ton code en disant explique moi ce code arduino.
Voici la réponse


Ce code Arduino utilise la bibliothèque ModbusMaster pour communiquer avec un esclave Modbus en vue de contrôler un moteur. Le protocole Modbus est un protocole de communication série largement utilisé dans l'industrie pour relier des automates programmables et divers équipements. Voici une explication détaillée de chaque partie du code :

### Initialisation et Configuration

- **Inclusion des bibliothèques :** `Arduino.h` pour les fonctions Arduino de base et `ModbusMaster.h` pour la communication Modbus.
- **Création de l'objet ModbusMaster :** `ModbusMaster node;` crée une instance de l'objet pour communiquer avec un esclave Modbus.
- **Définition des constantes :** `FORWARD`, `BACKWARD`, et `LED` sont définies avec des numéros de broches pour contrôler le moteur et une LED.

### Fonction `setup()`
- **Initialisation de la communication série :** `Serial.begin(9600);` initialise la communication série à 9600 bauds.
- **Initialisation de la communication Modbus :** `node.begin(1, Serial);` configure l'objet `node` pour communiquer avec l'esclave Modbus d'ID 1 via la communication série.
- **Configuration des broches :** Les broches FORWARD et BACKWARD sont configurées en entrée (`INPUT`), et la broche LED est configurée en sortie (`OUTPUT`).

### Fonction `loop()`
- **Écriture dans les registres Modbus :**
- La LED est éteinte (`LOW`).
- Le mode de contrôle du moteur est défini à 3 via `node.writeSingleRegister(0x00, 3);`.
- La vitesse de rotation pour l'avant et l'arrière est réglée à 2500 (équivalent à 250 RPM si le facteur de conversion est 10) via `node.writeSingleRegister` pour les registres `0x03` et `0x06`.
- **Activation du moteur :**
- La fonction `Motor_Enable_Disable` est appelée avec `FORWARD` ou `BACKWARD` pour activer le moteur dans la direction souhaitée, avec une alternance toutes les 2 secondes (2000 millisecondes de délai).
- Une boucle infinie (`while(1);`) arrête le programme après une séquence de démarrage et d'arrêt du moteur dans les deux directions.

### Fonction `Motor_Enable_Disable(int direction)`
- Cette fonction gère l'activation et la désactivation du moteur en simulant un interrupteur. Elle configure la broche spécifiée (`direction`) en sortie (`OUTPUT`), l'active (`HIGH`), attend 100 ms, puis la désactive (`LOW`) et attend à nouveau 100 ms. Finalement, elle reconfigure la broche en entrée (`INPUT`) pour mettre la broche en haute impédance, évitant ainsi tout courant résiduel qui pourrait influencer l'état de la broche.

Ce programme est destiné à contrôler un moteur via Modbus en alternant la direction de rotation entre avant et arrière à intervalles réguliers. La LED sert d'indicateur visuel de l'état de fonctionnement du programme, mais elle est immédiatement éteinte au début de la boucle principale. La fonction `Motor_Enable_Disable` simule une impulsion pour activer ou désactiver le moteur, ce qui pourrait être nécessaire pour certaines configurations de contrôle de moteur qui nécessitent une impulsion plutôt qu'un signal constant.
 
W

wika58

Compagnon
C'est vrai que ca à l'air tentant...

Mais me faire expliquer les choses par une machine est pour moi difficile... :oops:
Et il n'y a que le c.. qui ne change pas d'avis...
 
V

vibram

Compagnon
Je m'en sers plutôt pour me débloquer 'rapidement' et si je n'y arrive pas, j'attaque les forums etc. J'arrête le hors sujet ici
 
W

wika58

Compagnon
Je viens de vouloir créer un compte... mais ils demandent un n° de carte de crédit... Ce n'est pas pour me rassurer...

Je crois qu'il y a un post sur le forum sur ChatGPT qui fait de la programmation...
Je vais aller voir la-bas...
 
V

vibram

Compagnon
J'ai plus le détail en tête mais normalement tu as une formule gratuite, enfin c'est même certain.
 
V

vibram

Compagnon
 
G

gpaulhac

Apprenti
Je dois reconnaitre que c'est impressionnant... :smileJap:
Impressionnant, oui ... mais malheureusement (ou heureusement ! ) pas toujours fiable
ChatGPT a réponse à tout ... toujours dans une présentation très crédible ...
... mais c'est parfois complètement faux !
(pas étonnant quant on sait comment le système fonctionne !)
J'ai pu en faire l'expérience sur des sujets que je maitrise

Il faut donc toujours garder un œil très critique et surtout ne pas tout prendre pour argent comptant
Pour ce qui est d'écrire du code ... il y a aussi à boire et à manger ...
 
W

wika58

Compagnon
Oui je viens d'en faire l'expérience...

Et il y a un post sur le forum dedié à ChatGPT pour la programmation Arduino...
Alors on va essayer de limiter le HS sur ce post-ci...
 
J

junkdealer

Compagnon
hello

ah ben oui, gestion des accelerations, du coup j'ai changé mon panier :tumbsupe:
Bizarre, ces modules avec gestion ne sortent pas pas dans les suggestions de produits quand tu tombes sur un simple GI comme celui du sujet initial de 2021
je n'avais pas cherché sur le fofo si y'avait mieux, je suis tombé sur l'ancien sujet depuis le sujet du diviseur :jesors23:
Du coup le up malheureux du vieux sujet se termine par ta réponse qui pointe ici, c'est un mal pour un bien, la boucle est bouclée
 
W

wika58

Compagnon
Le Up n'etait pas malheureux... puisqu'il m'a rappelé que j'avais rédigé ce post...
Et que tu as trouver une solution avec gestion de rampe d'acceleration dans avoir à passer par des solutions Arduino...

N'hesites pas à poster ici tes retours sur ton utilisation de ce module...
 
J

junkdealer

Compagnon
hello

pas reçu le module, et ça va être dur de trouver du temps, mais c'est dans le to do bottin, j'ai arrêté la to do liste dès que j'ai du commencer a relier les feuilles entre elles pour pas les perdre :jedwouhor:
 

Sujets similaires

V
Réponses
11
Affichages
815
cr-_-
C
V
Réponses
3
Affichages
1 122
vibram
V
L
Réponses
29
Affichages
1 440
dh42
G
Réponses
16
Affichages
2 185
peponne30
P
R
Réponses
2
Affichages
733
Richard D
R
D
Réponses
11
Affichages
1 713
Dubois laurent
D
N
Réponses
27
Affichages
818
Jean 47
J
Haut