Machine à un axe, mesure niveau liquide

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

jpbbricole

Compagnon
Bonjour Greg

Quelle est le débattement, en mm du système?

A+
jpbbricole
 
G

greg_elec

Compagnon
environ 900 mm La VAB fait 1000 mais il y a la taille du chariot à retrancher
 
J

jpbbricole

Compagnon
Bonjour Greg

Je me suis, aussi, "amusé" à l'exercice, je te livrerai, ce week-end, une version entièrement commandable depuis un PC et ou avec des boutons.
Tout les paramètres sont modifiables depuis le PC ou par la console de l'IDE Arduino. Ces paramètres sont sauvés de façon permanente en mémoire EEPROM.

A+
Cordialement
jpbbricole
 
G

greg_elec

Compagnon
Merci cela me donnera un exemple concret qui me donnera envie de faire plus
 
G

greg_elec

Compagnon
Alors quoi on ne peut plus compter sur les retraités du forum ! c'est un scandale !!!

Je plaisante bien sur, prends le temps qu'il te faut déjà cela fait le job bien mieux qu'avant .

Cela m'a permis de cerner mes besoins c'est déjà top
 
J

jpbbricole

Compagnon
Salut Greg

Le retraité :smileyvieux: s'est remis en route :lol::lol::wink:

Voilà un « premier jet » du programme.
Le but est d’enregistrer une valeur de déplacement (POSMM+ ou POSPAS+) et de répéter ce déplacement, à chaque pression d’un bouton poussoir (BP) GO ou d'une commande GO. Au début d'un déplacement GO, la sortie mesureStartPin est désactivée, à la fin du déplacement, elle est activée.
Il y a aussi un BP RAZ qui indique au programme que la position actuelle est la position de départ (0) et un BP HOME qui repositionne le système au départ.
Ces 3 boutons sont « doublés » de commandes, définies plus loin.

Ce système peut entièrement se piloter depuis un PC, via la console de l’IDE Arduino ou par n’importe quel émulateur de terminal comme Terminal , le tout à 115 200. Il serait même possible, avec l’adjonction d’une interface Bluetooth, de commander ce système avec un smartphone.

Tout les paramètres nécessaires au fonctionnement, sont sauvés en mémoire EEPROM et restitués à chaque redémarrage du programme, exception faite de 2 paramètres :
Les commandes envoyées doivent se terminer par un caractère nouvelle ligne (nl ou ascii 10 ou \n)
1620657126831.png


Si la commande nécessite des paramètres, la syntaxe est :
PosMM+=2.3
Les commandes ne sont pas sensibles majuscule/minuscule.

Voici la liste des commandes : (Commande ?)
Les commandes débutant avec un $ sont des modifications de paramètres de fonctionnement, tous sauvés en mémoire EEEPROM (Permanente).

---------------------------------------------------------
Liste des commandes vers. 0.1
---------------------------------------------------------
? Lister les commandes
RAZ ou BP RAZ, Position de départ (0)
HOME ou BP HOME, retour au départ
GO ou BP GO, déplacement défini par les commandes POSMM+ ou POSPAS+
POSMM Aller à la position nnn Millimètres
POSMM+ Valeur de déplacement en Millimètres pour la commande GO
POSPAS Aller à la position nnn pas
POSPAS+ Valeur de déplacement en pas pour la commande GO
$MPAPON Activer ou désactiver le MPAP (mode essais à vide) (1 ou 0)
$MPAPMICROSPAS Micros pas du MPAP (1, 2, 4, 8, 16, 32) nécessite un redémarrage
$MPAPRPM
Vitesse du MPAP en tours/minute
$VABMMPAS Nombre de MM par pas de la VAB
$VABLONGMM Longueur de la VAB en MM
$FACTORYSET Mise aux valeurs par défaut du programme.


A chaque commande avec paramètre, si nécessaire, ce paramètre sera sauvé en EEPROM et les paramètres mis à jour et affichés.
---------------------------------------------------------
Liste des Parametres
---------------------------------------------------------
MPAP actif = NON
MPAP pas/tour = 200
$MPAPMICROSPAS = 1
$MPAPRPM = 150
MPAPmm10000pas = 100.00
MPAPpasMax = 30000
POSMM+ = 2.00
$VABMMPAS = 2.00
$VABLONGMM = 300.00


Les paramètres ci-dessus, sont ceux définis par la commande $FACTORYSET.

Les 3 BP sont connectés ainsi :
dans l’ordre RAZ, HOME et GO
const int btnPin[] = {9, 10, 11};

Tout ces BP sont définis en entrée PULL_UP, donc actifs à 0
#define btnEtatActif LOW // Etat quand bouton poussoir pressé


La connexion du driver du MPAP :
#define mpapDirPin 5 // Driver DIR
#define mpapStepPin 6 // Driver STEP
#define mpapEnaPin 7 // Driver ENA



Le signal du début de mesure:
#define mesureStartPin 8 // Sortie activée quand déplacement terminé


Après téléchargement du programme, en premier lieu, faire la commande $FACTORYSET afin d’enregistrer les paramètres par défaut et redémarrer l’Arduino. Ensuite il est possible de les ajuster.

Le programme:

Bons essais

A+
Cordialement
jpbbricole
 
G

greg_elec

Compagnon
Merci Beaucoup
Je teste demain.
Je vais bosser sur la partie commande par PC car je sais faire avec Autoit3 .Ce que j'aime avec ce système de dev c'est que cela compile direct un exe sans Dll donc pour passer d'un PC à un autre il suffit de copier le .exe
On peut incorporer une IDE et même une base de données SQLite .

Je publierais mes sources ...
 
G

greg_elec

Compagnon
Bon pour l'instant je patauge,
J'ai un problème de vitesse d'impulsions trop rapides et si je touche à $MPAPRPM cela me change tous les paramètres voir la console :

---------------------------------------------------------
Liste des Parametres
---------------------------------------------------------
MPAP actif = Oui
MPAP pas/tour = 3200
$MPAPMICROSPAS = 16
$MPAPRPM = 600
MPAPmm10000pas = 25.00
MPAPpasMax = 360000
POSMM+ = 160.00
$VABMMPAS = 8.00
$VABLONGMM = 900.00

Commande recue: $MPAPRPM parametre 6
Commande OK

MPAP Vitesse RPM

---------------------------------------------------------
Liste des Parametres
---------------------------------------------------------
MPAP actif = Oui
MPAP pas/tour = -1536
$MPAPMICROSPAS = 16
$MPAPRPM = 6
MPAPmm10000pas = -52.08
MPAPpasMax = -172800
POSMM+ = 160.00
$VABMMPAS = 8.00
$VABLONGMM = 900.00

Ah au fait j'ai ajouter la commande ?? pour avoir la liste des paramètres
 
J

jpbbricole

Compagnon
Bonsoir Greg

As-tu fait un $FACTORYSET au premier lancement du programme?

Ah au fait j'ai ajouter la commande ?? pour avoir la liste des paramètres
C'rst là que les grands esprits se rencontrent, j'ai aussi ajouté la même commande.
J'ai aussi ajouté la librairie Button afin d'assurer une bonne gestion des BP rt la gestion de l'accélération du MPAP.

A+
Cordialement
jpbbricole
 
J

jpbbricole

Compagnon
Rebonsoir Greg

Le paramètre $VABMMPAS=8 a l'air erroné il me semble que ce doit être $VABMMPAS=2 vu que ta VAB fait 2mm au tour.
Pour essayer de tout réinitialiser, essaies les commandes suivantes:

$FACTORYSET
$mpapon=1
$MPAPMICROSPAS=16
$MPAPRPM=150
$VABMMPAS=2
$VABLONGMM=900

A+
Cordialement
jpbbricole
 
J

jpbbricole

Compagnon
Bonsoir Greg

J'ai repris les paramètres et commandes de la réponse #40 et je n'arrive pas, comme toi, à des valeurs négatives!
As-tu changé l'attribut d'une variable.

Il y a un bug à l'affichage de
POSMM+ =nnn.nn

Je reprendrai ça demain.

Bonne soirée
jpbbricole
 
Dernière édition:
G

greg_elec

Compagnon
J'ai vu un truc dans le code qui me chagrine c'est à la lecture des paramètres dans l'eeprom

Si je met en commentaires (* stpPar.mpapMicroSteps) à la deuxieme ligne je relis bien les paramètres sinon ils sont mélangés

La variable " mpapPar.pasTour" est définie deux fois est-ce normal ?


 
Dernière édition:
J

jpbbricole

Compagnon
Bonjour Greg


Après une belle après-midi avec ballade le long du Rhône.:franck75:

Question, quel type de MPAP as-tu pour déclarer
#define mpapPasToursDef 4000 // Mpasp nombre de pas par tour

mpapPar.pasTour = mpapPasToursDef * stpPar.mpapMicroSteps;
est juste, pour moi, car pour un tour de MPAP comme le NEMA17 à 200 pas, driver réglé à micro-pas 16, il faut bien 16*200 pas pour faire un tour.

Le changement de vitesse par $MPAAPRPM=nnnn est immédiatement effectif.
Modification de cette ligne
#define mpapEnaLevel 1 // Pour broche enabled 1 pour TB6600, 0 pour A4988

J'avais oublié de mettre la gestion des micros pas avec mpap.!!! :smt021
mpap.setMicrostep(mpapPar.microPas);
Je me suis fait une installation avec micros pas pour essayer.

Avec cette nouvelle version pourrais-tu essayer avec micros-pas à 8 sur ton driver.
donc, télécharger le programme,(mpapPasToursDef est à 200)

Faire:
$factoryset
$MpapOn=1
$mpapmicrospas=8
redémarrer
posmm+=1

Et faire des essais.
Dans le programme #define mpapPasToursDef est à 200, dans taversion à 4000 ?.

Petit défaut que j'ai à corriger, quand on modifie les micros-pas par commande, après redémarrage, POSMM+ ne correspond plus à la réalité.
Si on avait un POSMM+=10, il faut retaper la commande.


A+
Cordialement
jpbbricole
 
G

greg_elec

Compagnon
Grand Merci à toi
je teste demain car après 1/2 journées de courses pro et un après-midi à usiner du métal et 2 H de dessin technique, je suis un peu mou du bulbe . .
 
G

greg_elec

Compagnon
Bon j'ai testé et ça marche !!!
Enfin presque ....
J'explique

Le bouton RAZ --> ok
Le bouton GO --> ok
Le bouton HOME --> ok

Maintenant que j'ai bien fait joujou ma position 0 se retrouve au milieu de ma VAB !!!
Si je tape
POSPAS=9000
Le chariot se déplace en positif de 9000 ---> ok
Si je tape
POSPAS=-8000
pour me rapprocher du 0 de la course totale de la VAB et bien
Le chariot se déplace en négatif de 9000 -et s'arrête à la position Zéro défini par le RAZ ---> NOK

La commande POSMM
fonctionne de la même façon

c'est ballot !

Il faut que je puisse changer la position Home facilement car elle est différente pour chaque capteur .
Tu doit savoir quelle fonction s'occupe de gérer les débordements négatifs
 
J

jpbbricole

Compagnon
OK je regardes ça
Fais moi un ?? et passes-moi la liste de tes paramètres.

A+
jpbbricole
 
J

jpbbricole

Compagnon
Bonjour Greg

Tu ne peux pas faire ça, ça veut dire que tu veux aller au-delà du zéro (Home)
Tu dois faire POSPAS=1000.
POSPAS comme POSMM sont des déplacements absolus, contrairement à POSPAS+ et POSMM+ qui sont des déplacements relatifs, déclenchés par un GO.

A+
Cordialement
jpbbricole
 
G

greg_elec

Compagnon
Commande recue: ??
Commande OK


---------------------------------------------------------
Liste des Parametres
---------------------------------------------------------
MPAP actif = Oui
MPAP pas/tour = 1600
$MPAPMICROSPAS = 8
$MPAPRPM = 150
MPAPmm10000pas = 12.50
MPAPpasMax = 720000
POSMM+ = 1.00
$VABMMPAS = 2.00
$VABLONGMM = 900.00
 
G

greg_elec

Compagnon
Bonjour Greg


Tu ne peux pas faire ça, ça veut dire que tu veux aller au-delà du zéro (Home)
Tu dois faire POSPAS=1000.
POSPAS comme POSMM sont des déplacements absolus, contrairement à POSPAS+ et POSMM+ qui sont des déplacements relatifs, déclenchés par un GO.

A+
Cordialement
jpbbricole
D'accord ça je l'ai bien compris
Mais comment je fait pour positionner un home plus en retrait que celui défini par le bouton RAZ ?
Ex:
j'appuie sur RAZ
Le chariot est en zéro système mais à 50mm de la course du chariot
j'envoie POSMM =10
Le chariot se déplace en positif de 10 mm
J'appuie sur Home le chariot se déplace en négatif de 10 mm
j'envoie POSMM =10
Le chariot se déplace en positif de 10 mm
Zut j'appuie sur RAZ
Mon Home est maintenant à 60mm de la course du chariot
comment je fait pour le remettre à 50mm de la course du chariot?
L'idéal serait de pouvoir envoyer un commande qui accepte de dépasser le 0 système en négatif
 
J

jpbbricole

Compagnon
Enfin compris, je fais le nécessaire.

A+
Jpbbricole
 
J

jpbbricole

Compagnon
Bonjour Greg

Je te propose "d'étoffer" la commande/BP RAZ qui n'a, actuellement, pas de paramètre en lui en ajoutant un. Ainsi, on aurai RAZ=-2000 qui fixerai le zéro à -2000 pas depuis la position actuelle et déplacerai le système (HOME) à cette nouvelle position.
Ainsi, une pression du BP RAZ ferait un ZER=0.
Cette nouvelle fonction travaille en PAS, faut-il faire son pendant en MM?

A+
Cordialement
jpbbricole
 
J

jpbbricole

Compagnon
Question subsidiaire, est-ce-que ce déplacement doit être relatif RAZMM + ou RAZPAS + ou absolu RAZMM ou RAZPAS

A+
 
G

greg_elec

Compagnon
en absolu mais ce n'est pas cette commande qui fixe le Zero mais l'appui du bouton RAZ ou la commande RAZ , ces commandes servent à déplacer le chariot hors des bornes fixées dans les paramètres , ne t'inquiète pas pour la mécanique il y a des fin de courses pour ne pas tout peter.
 
J

jpbbricole

Compagnon
Bonjour Greg

Encore une question, au cas où un ordre dépasse la limites haut et bas, faut-il exécuter l'ordre jusqu''à la limite ou refuser l'ordre?

Bonne journée
Cordialement
jpbbricole
 

Sujets similaires

misty soul
Réponses
2
Affichages
841
paysan
P
G
Réponses
10
Affichages
1 272
gustavox
gustavox
B
Réponses
54
Affichages
1 956
thierry74
thierry74
S
Réponses
4
Affichages
670
greg_elec
G
stef1204
Réponses
8
Affichages
406
tyio
Haut