Auteur Sujet: Carte Servomoteurs DCC + CAN  (Lu 29294 fois)

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1091
    • Voir le profil
Re : Re : Carte Servomoteurs DCC + CAN
« Réponse #180 le: avril 30, 2016, 09:33:02 am »
Concernant http://www.locoduino.org/spip.php?article168, je vais continuer avec un 2e article décrivant l'électronique en détail. Si vous voyez des choses pas claires, dites moi :)

DDEFF

  • Sr. Member
  • ****
  • Messages: 424
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #181 le: avril 30, 2016, 07:15:59 pm »
Rien de pas clair, au contraire.
J'aurais peut-être ajouté ça :


Et les modifs sous le circuit, expliquées sur le forum (ton message du 27 mars à 11h32 (p7 du topic)).
Par contre, le "pb" du funduino peut rester sur le forum (ton message du 23 avril à 17h57 (p12 du topic))
« Modifié: avril 30, 2016, 07:25:37 pm par DDEFF »

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1091
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #182 le: avril 30, 2016, 07:59:38 pm »
Ok Denis

Je vais ajouter une figure avec les brochages des servos utilisables (donc pas sanwa, multiplex et robbe) quoique j'ai des multiplex et ils ont un brochage différent de la figure :-/

Concernant les modifs sur la carte, les fichiers de production que je vais mettre en ligne les incluent mais je vais mettre un encadré sur la carte proto

Merci !

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1095
  • 100% Arduino et N
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #183 le: avril 30, 2016, 08:39:27 pm »
Enfin un petit moment de loisir avec Locoduino ::) :-[ :-\

Voilà ce que je propose pour l'article 1, hardware (mais tu n'es pas obligé de tout intégrer):
- Ajouter les spécifications, les schémas comme dans ta première contribution (http://forum.locoduino.org/index.php?topic=125.msg893#msg893)

- Ajouter une figure du plan d'implantation avec les couleurs selon les fonctions (http://forum.locoduino.org/index.php?topic=125.msg1232#msg1232)



- ajouter la liste des composants, avec un renvoi vers le Forum pour la liste des liens vers TME.

Avec tout cela, je pense qu'on ne peut pas faire plus exhaustif  ;D

Ah si !

Une demande que j'ai trouvée intéressante dans mon club : un renvoi vers un site très bien fait qui décrit merveilleusement une commande par servomoteur avec, en particulier, des détails de réalisation mécaniques très intéressants : http://modelleisenbahn.triskell.org/spip.php?article35

 ;) :D ;D

DDEFF

  • Sr. Member
  • ****
  • Messages: 424
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #184 le: avril 30, 2016, 08:45:59 pm »
Citer
Une demande que j'ai trouvée intéressante dans mon club : un renvoi vers un site très bien fait qui décrit merveilleusement une commande par servomoteur avec, en particulier, des détails de réalisation mécaniques très intéressants : http://modelleisenbahn.triskell.org/spip.php?article35

Ah, que oui !!!

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1091
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #185 le: mai 04, 2016, 09:25:37 am »
Ok, c'est noté. J'ai attaqué un 2e article pour ne pas surcharger le premier qui décrit la carte du point de vue de quelqu'un qui souhaite la connecter et que je complèterai avec l'utilisation du moniteur. Le 2e décrira l'électronique en détails et le 3e le logiciel.

Sinon, un nouveau problème que j'ai constaté hier (et je m'en excuse :-[)

Je me suis loupé sur le partage de l'entrée D4 entre le bouton CFG et l'optocoupleur commandant la surconsommation pour l'acquittement. Ce que je n'ai pas vu est que le fait de mettre la broche en INPUT_PULLUP pour lire le bouton fait circuler un courant dans la LED IR de l'optocoupleur.

La conséquence est que l'entrée D4 est en dessous de 1V (donc un état bas) que le bouton soit enfoncé ou non et donc le bouton est toujours vu comme étant enfoncé. Le bouton sert à faire démarrer la carte en mode configuration.

J'aurait dû partager une entrée plutôt qu'une sortie pour le bouton CFG.

Deux solutions :
1 - vous vous moquez de la fonction d'acquittement, il suffit de ne pas monter l'optocoupleur (le DIP 6 broches)
2 - vous voulez que ça soit pleinement fonctionnel, il faut modifier un peu la carte et re-câbler le bouton sur D2 (qui sert également à l'IT DCC) : 1) couper la broche 4 du bouton poussoir, celle qui est près du bord à côté de la résistance R4 pour séparer le bouton de la broche D4 de l'Arduino. 2) souder un fil fin (fil à wrapper si vous avez) entre la broche 1 du bouton poussoir et D2 de l'Arduino. Photos ci-dessous
« Modifié: mai 04, 2016, 11:25:48 am par Jean-Luc »

Thierry

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 383
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #186 le: mai 04, 2016, 09:32:47 am »
Pour relever un peu le moral, un essai hier a permis de faire fonctionner un servo simultanément par I2C et CAN grace à ma librairie Commanders. 18 lignes de code utile sans rien de bien compliqué ! Je dois y ajouter le Dcc pour parfaire le test, mais j'ai un doute maintenant... Est ce que la carte est prévue (broches partagées...) pour supporter tous les modes simultanément ? J'envisageais même de brancher un poussoir sur la broche de mouvement d'un des servos pour y ajouter un élément Button de ma bib !

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1091
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #187 le: mai 04, 2016, 11:17:05 am »
Il n'y a que le bouton CFG qui est partagé avec l'IT DCC (ou l'ACK si pas de modif)

Donc, pas de soucis pour brancher un bouton sur une broche servo si la broche en question est programmée pour gérer un bouton. À noter que les broches servo sont tirées à 5V via une résistance de 10k. Donc INPUT_PULLUP n'est pas nécessaire.
De manière générale, toute broche non raccordée à un autre circuit de la carte peut être utilisée pour un autre usage que celui prévu. C'est le cas des 8 broches pour les servomoteurs : 6, 7, 8, 9, A0, A1, A2, A3. Il vaut mieux laisser le SPI et l'IT_CAN  tranquilles si le 2515 est en place. Si rien n'est branché sur le connecteur DCC, la broche IT_DCC peut être également utilisée.

La carte est prévue pour supporter tous les modes simultanément : CAN + DCC en même temps.

Ceci dit, les AVR 8 bits ne supportant pas les interruption nichées, c'est à dire qu'une interruption ne peut pas en interrompre une autre de plus faible priorité, plus il y a d'interruptions en route et plus l'IT DCC risque d'être imprécise. Par défaut il y a l'interruption du TIMER 0 qui sert à compter le temps (c'est là dessus que se basent millis(), micros(), delay(), ...). Il y a également la bibliothèque Servo qui utilise l'interruption du TIMER 1. Certe l'IT DCC est la plus prioritaire mais ça ne joue qu'en cas de concurrence avec plusieurs IRQ présentes simultanément. Si une IT de faible priorité est en court d'exécution l'IT DCC sera prise en compte avec du retard.

Je vois les choses comme ça :
1) on ne peut pas se passer du comptage du temps car le DCC l'utilise
2) on ne peut pas se passer de la bibliothèque Servo
3) on peut se passer de l'IT CAN si la carte est utilisée en DCC

Donc selon le mode DCC ou CAN on a
Mode DCC : pas d'IT CAN, IT DCC. Si rétrosignalisation, on a seulement de l'émission de messages CAN à un rythme assez faible (10 fois par seconde ?)
Mode CAN : pas d'IT DCC, IT CAN

Donc quoiqu'il en soit 3 IT actives

Les IT du TIMER 0 et du  TIMER 1 sont assez courtes. Celle du CAN est très courte.
Celle du DCC me semble courte également.

Concernant le fonctionnement des servos qui, alors que la consigne est censée ne pas changer, bougent faiblement. Comme les interruptions ne sont pas nichée et qu'on a une IT externe de plus forte priorité (IT DCC > IT CAN > IT TIMER 1 > IT TIMER 0) la synthèse du signal de commande des servos subit un peu de gigue. Donc au lieu d'avoir un beau signal carré de x µs de large, on a un signal qui varie de x µs à x µs + durée de l'ISR externe +durée de l'ISR TIMER 0.

Le pire scénario est :
à t0, l'IT du TIMER 0 survient
à t0+dt, l'IT du TIMER 1 et l'IT externe surviennent (dt € [6,25ns, durée d'exécution de l'ISR du TIMER0])

Lorsque l'IT du TIMER 0 termine, on continue du l'IT externe et lorsque cette dernière termine, l'IT du TIMER 1 s'exécute.

La solution est d'arrêter de générer ce signal quand le servo a atteint sa position en appelant detach sur l'objet servo. C'est pris en charge automatiquement dans SlowMotionServo.
« Modifié: mai 04, 2016, 01:22:44 pm par Jean-Luc »