Auteur Sujet: Début de projet !  (Lu 32883 fois)

Sed

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Début de projet !
« Réponse #30 le: mai 05, 2018, 06:33:12 pm »
Merci ! J'ai ouvert le code Autotest de Dccpp je l'ai rapidement parcouru et j'ai vu que je n'avais pas mis DCC::powerOn(); dans le setup.
Je l'ai rajouté à mon code, et le train roule  :D :D

Sinon, je suis d'accord avec vous pour le 1à 10, la structure ne devrait pas être faite pour un seul train.

Sed

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Début de projet !
« Réponse #31 le: mai 06, 2018, 01:59:06 pm »
J'ai maintenant essayé de rajouter à mon code des servo-moteurs, avec la bibliothèque servo.

Faire un code utilisant uniquement les servo-moteurs, pas de souci ça fonctionne.
Par contre quand je dois faire rouler le train et utiliser un servo en même temps ça pose souci.
je crée un servo :
Servo servo1;
dans le setup : servo1.attach(2); (la pin 2 est bien une pin libre avec le dcc si je ne me trompe pas).

Et j'ai remarqué que même sans donner d'ordres au servo-moteur, le servo-moteur se met à osciller tout seul, à faire des petits aller-retours, et ne répond pas aux angles que je veux lui donner lorsque je fais rouler le train en même temps.
Sauriez-vous d'où ça vient, et comment régler ça ?

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2902
  • 100% Arduino et N
    • Voir le profil
Re : Début de projet !
« Réponse #32 le: mai 06, 2018, 02:06:17 pm »
Citer
Sauriez-vous d'où ça vient,

Non en l’absence de code.

Hypothèse :

  • le Servo est de mauvaise qualité
  • la gestion du temps et du Servo dans le code est mal conçue (voir les articles récents).

Quand on débute ça arrive !
Cordialement,
Dominique

Sed

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Début de projet !
« Réponse #33 le: mai 06, 2018, 02:15:50 pm »
Voici le code.
Je ne fais même pas tourner le servo, juste l'attacher à la pin avec le train roulant, donc je ne comprends pas.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2902
  • 100% Arduino et N
    • Voir le profil
Re : Début de projet !
« Réponse #34 le: mai 06, 2018, 02:32:34 pm »
Ça sent le parasite ou le mauvais Servo (essayez-en un autre) !
Il est alimenté comment le Servo (5v indépendant de l’arduino ?) ?
Est-ce que la pin 6 n’est pas utilisée par autre chose ?
« Modifié: mai 06, 2018, 02:35:58 pm par Dominique »
Cordialement,
Dominique

nopxor

  • Full Member
  • ***
  • Messages: 177
    • Voir le profil
Re : Début de projet !
« Réponse #35 le: mai 06, 2018, 02:40:22 pm »
Bonjour,

Il s'agit probablement d'un problème de même timer utilisé par les bibliotheques servo et DCCpp.
Lorsqu'une bibliotheque configure un timer pour son propre usage, il ne peut pas être reconfiguré par une autre bibliotheque sans dommages.

DCCpp peut gérer nativement des pins de sortie pour l'envoi de commande d'aiguillage:
https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation

Il suffit d'envoyer ces ordres sur un ATtiny ou un autre arduino dédié à la commande de servos d'aiguillage.

A noter qu'il est possible, par contre, de commander des aiguillages à solénoïde via des cartes à relais directement depuis l'arduino DCCpp:
http://forum.locoduino.org/index.php?topic=442.0

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 748
    • Voir le profil
Re : Début de projet !
« Réponse #36 le: mai 06, 2018, 02:43:47 pm »
Pour les mouvements erratiques que j'ai également constaté, il suffit de faire un attach() avant le mouvement et un detach() juste après. Une autre solution est de n'alimenter le servo que pendant un mouvement à l'aide d'un relais ou d'un transistor. J'ai employé les deux techniques dans Accessories.

Sed

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Début de projet !
« Réponse #37 le: mai 06, 2018, 03:55:16 pm »
J'ai essayé différents servomoteurs, même problème d'aller retour.
J'utilise le 5v de l'arduino.
Je ne pense pas que la pin6 soit utilisée pour autre chose, j'ai été vérifié, et j'ai testé 2 pins différentes qui sont supposées être libre avec le DCC, on obtient la même chose.

C'est peut-être bien un souci de même timer.


J'ai testé l'attach juste avant le mouvement, et le detach juste après :
servo1.attach(servo1pin);
servo1.write(servo1pos);
servo1.detach()

tant que je ne mets pas un delay(1000) après le write, le servo ne bouge pas (et on a forcément pas d'aller/retour). Et si je mets un delay, le servo bouge, mais les allers et retours aussi.

nopxor

  • Full Member
  • ***
  • Messages: 177
    • Voir le profil
Re : Début de projet !
« Réponse #38 le: mai 06, 2018, 04:24:09 pm »
Vraisemblablement un conflit au niveau du Timer1 utilisé à la fois par la biliothèque servo et la bibliothèque DCCpp:

DCC++ BASE STATION for the Uno configures the OC0B interrupt pin associated with Timer 0,
and the OC1B interupt pin associated with Timer 1, to generate separate 0-5V
unipolar signals that each properly encode zero and one bits conforming with
DCC timing standards.  When compiled for the Mega, DCC++ BASE STATION uses OC3B instead of OC0B.

Si tu utilises un arduino Mega, il devrait être possible en modifiant le code de la bibliothèque servo d'utiliser le timer4 ou 5 (16 bits) à la place du timer1.

------------------------------------------------
rectificatif:
the Servo library uses timer1 on Arduino Uno (timer5 on Arduino Mega).

donc question, quel type d'Arduino utilises-tu ?
« Modifié: mai 06, 2018, 04:33:59 pm par nopxor »

Sed

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Début de projet !
« Réponse #39 le: mai 06, 2018, 04:58:27 pm »
j'utilise un Arduino UNO  :-\
Est-ce qu'il serait possible de modifier le timer qu'utilise la bibliothèque servo en utilisant l'arduino Uno ?

nopxor

  • Full Member
  • ***
  • Messages: 177
    • Voir le profil
Re : Début de projet !
« Réponse #40 le: mai 06, 2018, 06:19:16 pm »
D'ou le conflit probable.

Alors ça vaut le coup d'essayer cette bibliothèque servo qui utilise le timer2:
https://github.com/nabontra/ServoTimer2

Tiens nous au courant.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2902
  • 100% Arduino et N
    • Voir le profil
Re : Début de projet !
« Réponse #41 le: mai 06, 2018, 06:47:25 pm »
 Peut-être mais si tu commences à vouloir faire des acrobaties c’est la chute assurée bientôt. Sortir de l’ordinaire n’est pas bon signe.

Déjà le UNO vas très vite s'avérer insuffisant vu tous les développements qu’il y a dans ton projet.

 Il faudrait réfléchir d’abord à l’architecture générale avant les détails de réalisation. Comme plusieurs Arduino semblent nécessaires il serait bon de penser à les mettre en réseau.

 Car il vaut mieux réaliser plusieurs projets simples qu’un seul gros projet compliqué.
« Modifié: mai 06, 2018, 10:49:08 pm par Dominique »
Cordialement,
Dominique

Sed

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Début de projet !
« Réponse #42 le: mai 09, 2018, 04:01:40 pm »
J'ai pu tester la bibliothèque ServoTimer2, ça fonctionne, plus de va et vient, et les servos répondent correctement.  Il est juste à noter que les angles ne sont pas exprimés en degrés (on a du utiliser de 0 à plus ou moins 3000 pour exprimer les angles de 0 à 180) dans cette bibliothèque.

A partir de là, on a pu réaliser la commande des aiguillages via servo-moteurs, une détection du train via ultrason, et l'ouverture/ fermeture de passage à niveaux qui en suit, c'est fonctionnel.

Effectivement, si on va plus loin que ça, on arrive rapidement à court au niveau des pins disponibles pour l'Arduino en utilisant DCC++.

nopxor

  • Full Member
  • ***
  • Messages: 177
    • Voir le profil
Re : Début de projet !
« Réponse #43 le: mai 10, 2018, 01:07:50 pm »
Bonne nouvelle  :D
C'est tellement agréable quand tout fonctionne comme prévu après avoir surmonté des problèmes.