Aide Programmation compteur vis mère

Andoche
Andoche
Compagnon
Bonjour
En avril 2019, suite à une réalisation de PUSSY, j’avais commencé à réaliser le même dispositif que lui. (1) Plans - appareil à retomber dans le pas revisité. | Usinages
Un ami électronicien m’a déconseillé de suivre cette voie.
Il m’a fourni un Arduino, il est resté environ 15mn pour me le mettre en route, puis plus rien.
Bref j’ai galéré plusieurs mois pour pondre un programme (qu’il a fallu commencé par apprendre).
Ce programme me paraissait très bien fonctionner pour les quelques 1er filetages fait rapidement pour essais.
Après avoir fait un montage de simulation, je me suis aperçu que le programme avait des disfonctionnements, après un grand nombre de cycles, et peut être aussi, un long temps de de l’Arduino sous tension ??????
Mon ami devait venir tester électronique, pour éliminer une source de défaut, je l’attend toujours.
Pour essayer de faire simple :
On veut envoyer un signal tous les X tours, de vis mère, pour embrayer un chariot sur une vis mère, en vue de faire un filetage au tour.
La vis mère ne s’arrête jamais de tourner.
Le chariot est, au départ, positionné contre un contact fixe à droite du tour « InterButee ».
Au départ on rentre la valeur du nombre de tours, de la vis mère désirés, dans une mémoire de référence « VRCVM » dans notre cas.
Un disque, de 10 trous tourne, devant un capteur optique qui décompte le nombre de trous de 10 vers 0 dans un compteur « CT » ce qui est égale à un tour de vis (disque fixe sur la vis mère).
Arrivée à Zéro le compteur « CT » fait -1 au compteur évolutif « VM » (nombre tours de vis mère qui est entré au départ dans la valeur de référence « VRCVM »
Ensuite « CT » se recharge à 10.
Et c’est parti pour un autre tour .
Quand la valeur du compteur évolutif « VM » arrive à zéro, il se recharge avec le contenu de « VRCVM ».
Dans le dernier tour du compteur « VM » j’active un chenillard (de 9 vers 0) qui simule les trous du disque à trous, arrivé à la fin du chenillard, j’embraye le chariot sur la vis mère.
Arrivée en fin de filetage je débraye la vis mère et je ramène le chariot à droite contre la butée « InterButee ».
Il suffit ensuite d’attendre la fin du compteur « VM » et du chenillard pour embrayer le chariot sur la vis mère pour une nouvelle passe du filetage.
Au début tout fonctionne impeccable.
Quand je fais un grand nombre de tours du disque de 10 trous et que l’Arduino est allumé depuis pas mal de temps, tout par en brioche.
En plus les valeurs des compteurs ne s'affichent plus?
Il y a des écritures bizarre qui s'affichent sur l'ordinateur.

Des valeurs du compteur trous « CT » défilent 2 par 2 ex : de 7 à 5 de temps en temps????
Mieux même, il arrive que tout le processus se déroule sans que le disque à trous tourne.
C’est comme si, les données mettaient un réservoir sous pression et que tout s’écoulait ensuite.
Si une personne pouvait me dire ce qui ne marche pas dans mon programme je la remercie par avance.

Nota : je voulais aller dans un Fablab, mais une personne qui m’est très chère étant très gravement malade, je ne peux pas prendre de risque avec le covid.
Merci et bonne soirée

Arduino003.jpg


Capture d'écran (1126).jpg


Capture d'écran (1127).jpg


Capture d'écran (1177).jpg


Capture d'écran (1186).jpg
 
Fichiers joints
  • VisMereSeuleJS35.rar
    4 KB · Affichages: 20
Dernière édition:
mvt
mvt
Compagnon
Bonsoir Andoche,

Tout d'abord bravo, je suis toujours avec attention tes inventions. Pas de réponse à apporter pour le moment. Je vais télécharger le code pour comprendre un peux mieux le problème.
Ce qui me vient à l'esprit de prime abord, ce serait une variable mal réinitialisée, un effet de bord (2 variables utilisées différemment mais avec le même nom) ou un dépassement de capacité.
Qu'est-ce que tu entends par des écritures bizarres ? Peux tu mettre ici un bout de log ? (les truc bizarres qui s'affichent dans la console de l'IDE de l'Arduino)
Je n'avais pas bien regardé. Ta variable contient des valeurs erronées. Défaut de réinitialisation ou effet de bord.
Il faudrait afficher les valeurs courantes en face de chaque variables.
Pour t'éviter un println vide après chaque ligne, tu peux ajouter un \n à la fin de chaque println
Serial.println("blablabla \n")

Prends bien soin de toi.
 
Andoche
Andoche
Compagnon
Bonjour « mvt »

Merci pour ton petit mot qui m’a fait du bien au morale.
Tu es toujours aussi gentil.
J’ai modifié la programmation, comme tu me l’as indiqué, mais il ne veut toujours pas afficher, ce que contiennent les compteurs, alors qu’il y a 2/3 jours c’était affiché ?
Je ne comprends pas ce qui empêche l’affichage du contenu des compteurs ?
Il y a 3 jours, j’avais déplacé toute la programmation (incréments/décréments) des compteurs dans la boucle du contact impulsionnel montant.
Pour éviter, les éventuelles, écritures dans les compteurs à chaque cycle Arduino.
Pour le moment je ne vois pas ce qui pourrait créer des impulsions non commandées aux compteurs ? (Enfin avec mon raisonnement, mais entre ce que je crois et ce que fait le logiciel :smt017:smt017)
Aujourd’hui j’ai refait tourner le système sur mon montage de simulation.
Cette fois tout à bien marché au niveau des compteurs.
La semaine dernière j’avais aussi refait le disque à trous dans du plastique noir, pour éviter les éventuels reflets sur l’alu.
Il faudra que je reface des essais, dans les jours qui viennent, et ensuite sur le tour.
Je vais attendre de savoir si toi tu vois une anomalie dans l’écriture de mon programme.
Tu m’épateras toujours, je vois que tu es bon même en programmation.
Merci encore et bonne soirée.

Capture d'écran (1187).jpg
 
mvt
mvt
Compagnon
Bonsoir Andoche,

J'ai regardé assez rapidement et repris les indentations pour comprendre le début et la fin des procédures.
J'ai ajouté dans les Serial.println tes variables pour pouvoir les afficher à chaque itérations.
Je vois que sur la console, il y a toujours des soucis d'affichage par moment.
Par contre, je n'ai pas le matériel pour faire un test par moi-même et, malheureusement pour moi, la Drôme est un peu lointaine...
Je regarde dès que possible.

Pour l'indentation du code, il y a un petit programme externe tout simple d'utilisation qui s'appelle UniversalIndentGUI
Il s'utilise sans installation, juste dézipper (décompresser) le fichier dans le répertoire idoine. Lancer le programme, ouvrir le fichier .ino et cliquer sur "prévisualisation "temps réel"" (la case à cocher à gauche du texte.
Beaucoup de paramètres sont modifiables.
 
5
59JAG
Apprenti
Bonjour
comprend pas trop le analogread pour la lecture du capteur a fourche.
Il aurait mieux de programmé un compteur hardware de l arduino pour gérer le comptage des trous
 
albatros_del_sur
albatros_del_sur
Compagnon
Bonjour
Je n’ai pas tout suivi, mais je vois sur la fin de la discussion que c’est un capteur à fourche et qu’il entre comme une entrée analogique.
Déjà sur un tour ce type de capteur doit être bien abrité car les projections sont susceptibles de troubler son fonctionnement. Une mise en forme du signal peut être nécessaire est-elle prévue dans le script Arduino ? Le signal a-t-il un niveau constant quand la vitesse du disque varie ? Sans oscilloscope ça va être difficile à mettre au point.
 
mvt
mvt
Compagnon
Bonjour,

@jpbbricole Merci, je n'ai pas encore fait le tour de l'IDE.
Je me suis posé la même question sur le capteur. Celui que j'ai testé est un capteur "plat" (compte-tour façon jpbbricole), mais utilisé sur une entrée numérique, pas analogique.
 
Andoche
Andoche
Compagnon
Bonjours à vous tous.
Merci de vous intéresser à mon problème.
Pour le capteur optique, voilà l’adresse du site.
KTIR0221DS Kingbright, Photo-interrupteur transmissif, Phototransistor Darlington, Traversant | Farnell FR
Adresse de la doc PDF: KTIR0221DS(Ver.7) (farnell.com)
Je suis plutôt mécanique.
Électronicien = Zéros
Programmateur 0,05/100
Connaissance langage Arduino cc++ , avant que mon collègue me branche sur l’Arduino = ZERO
Arduino pour moi, avant c’était = c’est quoi ce truc ?
Quand mon ami m’a branché sur l’Arduino je pensais qu’il savait le programmer, et bien pas du tout.
Bref, j’ais quand même continué, mais il est évident que ma programmation n’est pas bonne. (En plus j’ai 83 ans)
Mais j’aimerais bien que ça marche.
De tout ce que j’ai réalisé depuis ma retraite c’est le seul échec. :smt017
En avril 2017, j'ai travaillé plusieurs mois dessus pour faire le programme.
Je viens de le ressortir, j'essaye de comprendre ce que j'avais fait et de le corriger (j'ai oublié plein de trucs).
Je n’ais pas répondu tout de suite à vos messages.
A la suite de la correction que m’a envoyé « mvt » (que je remercie infiniment) je me suis aperçu que la variable « VRCVM » contenait des valeurs du type «y ?2Np ».
J’ai déduit que cela venait du fait qu’au 2eme cycle Arduino il devait attendre que je rentre de nouveau une valeur?
Actuellement sur le moniteur série.
« VRCVM » = 0 (" Valeur de référence") (Nb: tours que doit faire la vis mère avant d'embrayer pour retomber dans le pas)
Le compteur « VM » = 0 (contient la valeur de VRCVM au départ et fait -1 à chaque tour de vis mère, à zéro il se recharge avec VRCVM)
Mais sur l'Arduino VM revient bien à la 3 (si j'ai par exemple rentré cette valeur 3 au départ) et le cycle repart bien au début quand le compteur arrive à zéro.
Bref tout l’après midi j’ai cherché une solution pour donner du concret à « mvt ».
Je viens de voir tous vos messages, j’avoue que je suis perdu, vous êtes tous trop forts pour moi.
Je vais essayer de répondre mais ça ne va pas être facile.
De toutes façons, même si je n’arrive pas à répondre, je vous dis un grand merci.
Secrètement je pensais qu’un bon programmeur aurait peut-être corrigé mon programme ou m'aiguiller pour le faire fonctionner.
Bonne soirée
 
Andoche
Andoche
Compagnon
Bonsoir
Merci "mvt" pour les corrections que tu m'as fourni.
Il va falloir que je comprenne, ce que fait exactement Serial.println ("\n"); _("\n");_
Merci encore tu es très sympa.
Bonne soirée et mon bonjour à ta fille qui m'avait bien dépanné.
 
Andoche
Andoche
Compagnon
Bonjour
Je n’ai pas tout suivi,
Heu et bien :smt017, malheureusement je ne suis pas capable de répondre à cette question.
mvt a posté le programme Arduino avec une 1er correction, je ne sais pas si cela répond à la question?
Merci tout de même d'avoir prit la peine de regarder mon problème.
Bonne soirée.
 
Andoche
Andoche
Compagnon
Bonjour
comprend pas trop le analogread pour la lecture du capteur a fourche.
Il aurait mieux de programmé un compteur hardware de l arduino pour gérer le comptage des trous
Je ne savais même pas cela existait dans l'Arduino et où la trouver.
Quand je mets mon ordi en route et que je lance Arduino il me propose une mise à jour.
J'ai actuellement la version 1.8.6, est t'il conseillé d'installer cette nouvelle version?
Avec tous mes remerciements.
Bonne soirée.
 
jpbbricole
jpbbricole
Compagnon
Bonsoir Andoche
Des valeurs du compteur trous « CT » défilent 2 par 2 ex : de 7 à 5 de temps en temps????
Ca m'intrigue!
Dans ton programme tu as: const int codeur = 1, ta fourche est câblée sur la pin A1 ou sur D1?
Pour ça c'est mieux de noter const int codeur = A1 si c'est la pin analogique.

Pour ce qui est du schéma
1629137546090.png
je serait plus pour
1629137683567.png


Cordialement
jpbbricole
 
albatros_del_sur
albatros_del_sur
Compagnon
Pour les débutants ce site est très bien fait tout en Français il part de zéro jusqu'au haut niveau.
De plus il explique sur YouTube et il diffuse un E-bouquin gratuit qui récapitule tout ce qu'il a expliqué .
@Andoche ça devrait t'aider à décrypter le programme que tu as et te permettra de comprendre certaines de nos questions.
Le schéma que te propose @jpbbricole te délivre un signal 0 / 5 v C'est du numérique direct à mettre sur une entrée digitale.
 
Andoche
Andoche
Compagnon
Pour ça c'est mieux de noter const int codeur = A1 si c'est la pin analogique.
C'est fait: const int codeur = A1; // Codeur affecté à la pin analogique "A1"
Merci ça, c'est facile à comprendre.
Pour les débutants ce site est très bien fait tout en Français il part de zéro jusqu'au haut niveau.
Je vais aller sur le site pour voir.
Merci.
A votre avis demain, quand Arduino me proposera de faire la mise à jour, je me lance ou pas?
Merci et bonne soirée.
 
albatros_del_sur
albatros_del_sur
Compagnon
Il y a des mises à jour en ce moment . En général ils ajoutent des fonctions mais aussi corrigent quelques erreurs . Ne les refuses pas si elles te sont proposées.
 
mvt
mvt
Compagnon
Bonsoir Andoche,

La mise à jour, oui, tu peux la faire, c'est celle de "l'IDE", pas le célèbre poisson des mots croisés, mais l'Interface de DEveloppement :)
Pour le \n, je pensais te l'avoir expliqué. Cela te permet (sur la console par exemple) d'ajouter un "retour à la ligne" directement à la fin du texte pour ne pas avoir à faire un Serial.println(" ") après avoir affiché un texte par exemple.
Dans les modifications effectuées, outre l'alignement, j'avais initialisé toutes les variables qui ne l'étaient pas (du coup, dans ce cas là, elle contiennent de la m...), ajouté l'affichage des valeurs des variables dans la console, retouché un peu le switch - case et enlevé une instruction à la fin <= 1.
Du coup, je ne sais pas quel programme tu as utilisé dernièrement.
Excellente soirée
 
albatros_del_sur
albatros_del_sur
Compagnon
Mon problème est que je sais gérer mes programmes; date, version etc... ça c'est bien pour les retrouver dans l'ordinateur. Mais une fois téléchargé dans la carte, à moins de recharger la bonne version et être sûr de ce qu'il y a dedans. Si tu t'absentes, ou pour pour une raison X la carte est restée sur l'établi, je ne sais pas lire le programme chargé. Comme j'ai plusieurs cartes, je vais être obligé de les étiqueter pour éviter des erreurs. Savez vous lire le contenu de l'Arduino ?
 
Andoche
Andoche
Compagnon
Bonsoir
Quand je lis de nouveau vos messages, je vois beaucoup de choses que je n'avais pas intégré aux 1ere lectures.
Sans doute la vieillesse.
mvt, je travaille avec le programme que tu m'as envoyé.
Bonne nuit.
 
albatros_del_sur
albatros_del_sur
Compagnon
Bonjour
L’âge n’est pas un critère on peut apprendre tous les jours. C’est juste qu’il faut avoir la curiosité et le goût de la découverte. Ça se trouve plus chez les enfants, mais ne redevenons nous pas des enfants en vieillissant ?
 
MegaHertz
MegaHertz
Compagnon
Bonjour,

Ce que tu décris ressemble à un plantage du micro.

Sur la photo on voit le câble USB qui a sa propre masse et la pile avec son pole négatif.
Vaut mieux éviter de brancher les deux en même temps.

Pour que le micro puisse se relancer seul on programme quelquefois ce qu'on appelle un WatchDog.
C'est un compteur qu'on réinitialise par programmation et si le machin n'est pas réinitialisé le micro se relance parce que ça veut dire que le prog n'est plus parcouru et qu'il est planté.

Pourquoi est ce que ça plante ?
Probablement un problème de surchauffe
Faudrait peut être ajouter un petit radiateur et de la pâte thermique sur le micro et laisser de l'air passer, voir ajouter un petit ventilo.

Vérifies également les ports qui ne servent à rien : branches les à la masse.
 
Dernière édition:
J
JMe87
Apprenti
Mon problème est que je sais gérer mes programmes; date, version etc... ça c'est bien pour les retrouver dans l'ordinateur. Mais une fois téléchargé dans la carte, à moins de recharger la bonne version et être sûr de ce qu'il y a dedans. Si tu t'absentes, ou pour pour une raison X la carte est restée sur l'établi, je ne sais pas lire le programme chargé. Comme j'ai plusieurs cartes, je vais être obligé de les étiqueter pour éviter des erreurs. Savez vous lire le contenu de l'Arduino ?
Bonjour a tous,
non on ne sait pas lire le contenu de l'Arduino.
Ce que je faisais :
dans le setup, apres avoir configure la vitesse de la ligne serie," j'imprimais" la revision du programme, la date etc dans le "terminal".
C'est une contrainte de devoir modifier ce texte chaque fois que tu fais un changement mais je trouve que cela en vaut la peine.

Bonne journee.
Jacques
 
jpbbricole
jpbbricole
Compagnon
Bonjour Andoche
Le compteur « VM » = 0 (contient la valeur de VRCVM au départ et fait -1 à chaque tour de vis mère, à zéro il se recharge avec VRCVM)
As-tu réglé ce problème? Eventuellement appliquer cette solution.
Des valeurs du compteur trous « CT » défilent 2 par 2 ex : de 7 à 5 de temps en temps????
Je pense que c'est indispensable pour aller plus loin

Cordialement
jpbbricole
 
albatros_del_sur
albatros_del_sur
Compagnon
Sur la photo on voit le câble USB qui a sa propre masse et la pile avec son pole négatif.
Vaut mieux éviter de brancher les deux en même temps.
Bonjour
C’est carrément prohibé dans les notices !
Il faut choisir entre les 3 possibilités c’est un ou exclusif. Soit USB soit alim externe (il y a une broche spécifique) soit le jack
 
S
speedjf37
Compagnon
Bonjour,

Commencé a regarder le code et télécharger sur un UNO !


Premières observations:

1)Le Sérial.beguin ne doit être appelé qu' 1 seule fois dans le setup surtout pas dans la LOOP
Idem pour la ligne suivante.


2)les accolades exemple:
{ //accol1
blablabla
} //accol2

Ne servent à rien !!!!

3)Les commandes Serial.println n'affichent que le nom des variables pas leur valeur

4)la ligne :
lcd.setCursor (0, 0);
peut être mise une seule fois en ICIIIIIIIIIIIIIIIIIIIIIIII


la gestion du capteur:
Trous = analogRead(codeur);//lit la pin Analogique A1 pour récupérer les impulsions des trous (capteur fourche)
avec un analogRead n'est pas une bonne idée cette instruction est lente.
Il faudrait utiliser un compteur intégré pour ne rien louper pendant les temps d'affichage LCD et serial port.

Cordialement JF
JF
 
albatros_del_sur
albatros_del_sur
Compagnon
3)Les commandes Serial.println n'affichent que le nom des variables pas leur valeur
Tel que c’est écrit oui mais :
Serial.Print(“Nom de la variable”) renvoie : Nom de la variable
Par contre
Serial.Print(Nom de la variable) renvoie sa valeur
D’où la rigueur de l’écriture car avec ou sans guillemets ça change tout !
 
S
speedjf37
Compagnon
Tel que c’est écrit oui mais :
Serial.Print(“Nom de la variable”) renvoie : Nom de la variable
Par contre
Serial.Print(Nom de la variable) renvoie sa valeur
D’où la rigueur de l’écriture car avec ou sans guillemets ça change tout !
je ne fais des commentaires que sur le code concerné !

JF
 
Dernière édition:
jpbbricole
jpbbricole
Compagnon
Bonjour
C’est carrément prohibé dans les notices !
Il faut choisir entre les 3 possibilités c’est un ou exclusif. Soit USB soit alim externe (il y a une broche spécifique) soit le jack
Non, pas du tout, USB et Jack d'alimentation (7-12V) en même temps c'est possible,
1629210390487.png


C'est le couple U5A et T1 qui font l'aiguillage.
Le jack d'alimentation et Vin, c'est la même chose.
Il faut éviter d'alimenter en 5V sur la broche et Vin, en même temps.

Cordialement
jpbbrucole
 

Sujets similaires

DA l'Auvergnat
Réponses
6
Affichages
4 081
DA l'Auvergnat
DA l'Auvergnat
S
Réponses
2
Affichages
612
Shaft
S
S
Réponses
11
Affichages
794
Speedy70
S
L
Réponses
25
Affichages
1 863
L
M
Réponses
10
Affichages
735
Moi37
M
Plastik
Réponses
12
Affichages
2 393
Plastik
Plastik
Samail
Réponses
14
Affichages
693
Samail
Samail
G
Restauration Hobbymat MD65
Réponses
5
Affichages
879
G
Pervenche
Réponses
7
Affichages
682
Pervenche
Pervenche
Madman
Réponses
6
Affichages
913
Madman
Madman
Haut