Auteur Sujet: rampe accélération / décélération  (Lu 39774 fois)

PB

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
rampe accélération / décélération
« le: janvier 17, 2020, 07:28:48 pm »
Bonjour
Nouveau dans votre communauté, merci de m'accueillir

Evidemment je pratique le modélisme à l'échelle HO et je suis occupé a piloter le tout avec arduino.
Je réalise la traction avec un Arduino uno au travers d'une sortie PWM  et une consigne de vitesse avec un potar en entré analogique.

Mon soucis est que chaque demarrage et arret vont de 0 à la consigne un peu vite et donc pas trés réaliste.
Il serait souhaitable d'avoir une "rampe" réglable pour chacun des démarrage / arret quelque soit la consigne de vitesse.
Quelqu'un peut'il m'aider sur le sujet ?

Merci d'avance pour votre retour

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #1 le: janvier 17, 2020, 08:15:19 pm »
Bonsoir PB,

pour mon train de jardin en G (où la courbe de vitesse est encore plus vitale pour la mécanique) je sépare la vitesse demandée (par la position du potar) de la vitesse réelle (envoyée par le PWM. Entre les 2 je mets une boucle temporisée qui va faire monter ou descendre la vitesse à son rythme (paramétrable).
Essaye de partir dans cette optique pour régler ton problème. Si tu n'y arrive pas je tacherai de te faire un petit résumé de mon sketch.

Bonne soirée
Antoine

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #2 le: janvier 17, 2020, 08:26:45 pm »
Bonjour et bienvenue,

en confirmation du message d'Antoine, une boucle for, utilisant les millis devrait permettre de faire évoluer progressivement la valeur du PMW d'une valeur à un moment donné jusqu'au réglage de la consigne, donc simulant une inertie.
En prime, la fonction map : https://www.arduino.cc/reference/en/language/functions/math/map/ pour le seuil.
Pas évident de trouver des exemples sur le net.
Cordialement

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #3 le: janvier 17, 2020, 10:49:37 pm »
à PB,

peux-tu me préciser comment tu fais actuellement ton inversion de marche et si tu utilises la course complète du potar pour 1 seul sens de marche ou préfères-tu une version avec le stop au centre du potar, marche avant à droite et marche arrière à gauche ?

Antoine

PB

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #4 le: janvier 18, 2020, 09:42:56 am »
Bonjour Tony04 et  msport

Merci beaucoup pour vos reponses
J'ai omis de vous dire que je suis novice sur arduino; mon premier arduino uno n'a que 1 mois et donc il me faut un peu de temps pour "digérer" vos propositions.

Pour te repondre Tony : mon reseau comprend 2 boucles  avec chacun leurs sens de marche, je n'ai pour l'instant pas d'inversion du sens de marche des trains et je varie sur toute la course du potar dans 1 seul sens.
Ma sortie attaque un transistor de puissance; pour inversion il me faudrait un pont en " H "; je m'attacherai à cela un peu plus tard mais je trouve ton idée d'inversion de sens avec 50% de la course du potar géniale !!

Je vais etudier et testé vos propositions, néanmions il me vient une question:
j'ai bien compris qu'une temporisation devrait répondre a mes attentes, mais pendant ce temps es-ce que le programme continue ou s'arrete; auquel cas il risque de "rater" des opérations ?

PB

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #5 le: janvier 18, 2020, 10:06:55 am »
Bonjour,
tout le monde a débuté un jour, mais il faut commencer avec le playground d'Arduino et les exemples des bibliothèques.
Sans compter le site de reference d'arduino.cc et le site éditorial de Locoduino.
Toute la différence entre un test sur millis et delay, c'est que millis n'arrête pas le programme.
Cordialement

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #6 le: janvier 18, 2020, 10:41:26 am »
Bonjour PB (le prénom serait plus sympa),

voici en PJ une version épurée de mon sketch pour apporter une courbe d'accélération (ou décélération) à ta loco.
Je ne l'ai pas essayé mais avec les commentaires tu devrais arriver à le déboguer si nécessaire.
Cette version ne tient pas compte du sens de marche et utilise la course totale du potar. Si tu veux tester par la suite la version "point milieu" du potar (plus complexe) fais le moi savoir.

Merci de me tenir informé du résultat.

Bon WE
Antoine

PB

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #7 le: janvier 18, 2020, 11:30:11 am »
RE

Tu as raison, je suis resté discret sur ma présentation ne sachant ce qui se pratique dans les forums (c'est ma premiére inscription......)
J'ai 62 ans et je suis en retraite depuis 3 mois, mon véritable nom est Patrick BAILLEUL
J'ai repris le modélisme depuis ce temps, arreter depuis  plus de 20 ans par manque de moyens (place, budget, temps, etc.)
Pour etre un peu plus précis j'ai fais de la programmation industrielle au debut de ma carriere il y a bien longtemps: à l'époque des automates "PB" de chez Merlin Gerin pour ceux qui connaissent.
Je maitrise donc l'algebre de BOOLE et le GRAFCET, mais je ne decouvre ARDUINO que tout récemment.

Je te remercie pour ta contribution, je vais mettre en pratique ton programme  et je te tiens informer du résultat

Je serais absent quelque temps, mais je ne manquerai pas de revenir vous tenir au courant de mes avancements et/ou deboires
Merci beaucoup a vous 2
msport, je vais suivre tes conseils sur le site de reference et l'éditorial

PB

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #8 le: février 13, 2020, 07:24:57 pm »
Bonjour, de retour dans notre communauté apres quelques "déboires"

Je n'ai pas eu l'occassion d'essayer la rampe d'accélération pour le moment; je le ferai plus tard et je ne manquerai pas de vous tenir informé.
J'ai pour l'instant un autre probléme a resoudre: je programme l'automatisme du réseau avec du grafcet
Je souhaite simplement visualiser sur moniteur serie (mon PC) la valeur "vrai" ou "faux" de l'état de mes étapes.
Le "serial.print" me donne le numero d'étape mais pas sa valeur binaire
Quelqu'un peut'il me venir en aide.

Merci beaucoup
« Modifié: février 13, 2020, 08:51:11 pm par Dominique »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Re : rampe accélération / décélération
« Réponse #9 le: février 13, 2020, 08:55:54 pm »
Bonjour, de retour dans notre communauté apres quelques "déboires"


Le "serial.print" me donne le numero d'étape mais pas sa valeur binaire
Quelqu'un peut'il me venir en aide.

Merci beaucoup
Peut-être faut-il spécifier le format binaire (,BIN) dans le Serial.print.. mais pour quoi faire ?
Cordialement,
Dominique

PB

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #10 le: février 14, 2020, 11:11:22 am »
Bonjour
meme avec le format "BIN", j'ai le resultat = 2 ?
l'objectif est de savoir si les etapes de mon grafcet sont activés et lesqelles

PB

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #11 le: février 14, 2020, 11:17:02 am »
voici ma methode:

transitions [autorisation_circuler_G1] = etapes [arret] && circuler_G1;
    Serial.print ("; arret  = ");
    Serial.write(,BIN );
 
arret est mon etape
j'ai le meme pb avec les transitions

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #12 le: février 14, 2020, 11:24:57 am »
Serial.print(,BIN); ne suffit pas, il faut lui donner la variable à imprimer !
Cordialement,
Dominique

PB

  • Newbie
  • *
  • Messages: 30
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #13 le: février 14, 2020, 11:49:37 am »
ma variable est l'etape "arret";
j'ecris donc:

Serial.print (" arret =")
Serial.print (arret, BIN);

mais ca ne marche ps=as, j'ai le message suivant: no matching function for call to 'HardwareSerial::write(<unnamed enum>, int)

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : rampe accélération / décélération
« Réponse #14 le: février 14, 2020, 03:57:00 pm »
Bonjour,

Comment est défini "arret" ?
Cordialement