Auteur Sujet: Un Arduino par canton  (Lu 63999 fois)

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Un Arduino par canton
« Réponse #15 le: février 17, 2015, 11:41:16 am »
J'ai fait une vidéo, je vous mets ça en ligne dès que possible.
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Un Arduino par canton
« Réponse #16 le: février 18, 2015, 09:34:46 am »
Voici la vidéo avec une petite BR64 au ralenti. L'ovale d'essai est incliné comme on peut le voir sur la 2e moitié de la vidéo via l'absence de parallélisme entre les joints du carrelage  et le rebord. La loco descend donc au début puis remonte la pente de l'autre côté de l'ovale.

https://dl.dropboxusercontent.com/u/67740546/ralenti.m4v
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Un Arduino par canton
« Réponse #17 le: février 26, 2015, 08:30:40 am »
Bonjour,

Le github pour SyncPWM qui remplace la version postée ici en pièce jointe :

https://github.com/Koryphon/SyncPWM
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Un Arduino par canton
« Réponse #18 le: mars 03, 2015, 05:46:49 pm »
Bonjour,

J'ai avancé sur la carte d'alimentation de canton version Arduino. Les composants tiennent sur une carte 10x10 avec un Arduino Nano aux commandes. J'ai testé sur breadboard la mesure de vitesse, l'asservissement de vitesse et la détection. Le CAN a été testé par ailleurs. Le reste attendra la carte car ça devient compliqué sur breadboard  :)

J'ai disposé un certains nombre de pastilles sur les signaux entre l'électronique et l'Arduino pour mettre des sondes et voir ce qui se passe.

Voici l'implantation des composants :



Le cuivre côté composants :



Le cuivre côté cuivre :



C'est compliqué mais ça fait également la détection et ça gère un canton double sens avec zone d'arrêt. C'est également une alimentation « One step beyond » car, à ma connaissance, il n'existe pas d'alimentation avec asservissement et synchronisation entre les cantons (L'alimentation avec asservissement de l'AMFN semble être monolithique). Les systèmes comme Driving Railways, LadyBug ou UTS utilisent de la tension hachée basse fréquence sans asservissement.
« Modifié: mars 04, 2015, 06:31:07 am par Jean-Luc »
Cordialement

TF53

  • Newbie
  • *
  • Messages: 47
    • Voir le profil
Re : Un Arduino par canton
« Réponse #19 le: mars 03, 2015, 08:26:04 pm »
Je trouve le principe très bien pensé. Félicitations!!!

Petites questions :
1) Comment se fait la détection? Uniquement via la mesure de la FCEM ou y a t-il autre chose qui permet de détecter la machine?
2) Si je comprends bien, tu mesures la FCEM pour en déduire la vitesse de la locomotive. Cela marche ben avec des locomotives analogiques, mais cela marche t-il aussi avec des locomotives équipées de décodeurs?
3) Quel logiciel utilises tu pour faire tes typons?
4) qu'appelles tu une alimentation "one step beyond"? Je ne trouve pas d'article sur le net expliquant ce que c'est...

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Re : Un Arduino par canton
« Réponse #20 le: mars 03, 2015, 08:43:27 pm »
Je trouve le principe très bien pensé. Félicitations!!!

Merci  :)

Citer
Petites questions :
1) Comment se fait la détection? Uniquement via la mesure de la FCEM ou y a t-il autre chose qui permet de détecter la machine?

Non car quand la machine est à l'arrêt la FCEM est nulle. La détection se fait via le système classique : une serie de diodes (ici 4 pour avoir une bonne sensibilité)  quand un courant circule, on a une tension, qui est la somme des tensions de seuil des diodes en série, qui sert à saturer un transistor. Quand le courant ne circule pas, le transistor est bloqué. Ça permet de détecter une résistance de plus de 68kΩ ce qui correspond à des essieux de wagons pas très bien graphités.

Citer
2) Si je comprends bien, tu mesures la FCEM pour en déduire la vitesse de la locomotive. Cela marche ben avec des locomotives analogiques, mais cela marche t-il aussi avec des locomotives équipées de décodeurs?

Probablement pas. Le décodeur étant intercalé entre la voie et le moteur, la FCEM ne doit pas être visible. 

Citer
3) Quel logiciel utilises tu pour faire tes typons?

Canari (Mac OS X), développé par un collègue.

Citer
4) qu'appelles tu une alimentation "one step beyond"? Je ne trouve pas d'article sur le net expliquant ce que c'est...

C'était juste pour dire que ça va au delà de ce qui se fait habituellement. Ce n'est pas un terme consacré  ;)
Cordialement

TF53

  • Newbie
  • *
  • Messages: 47
    • Voir le profil
Re : Un Arduino par canton
« Réponse #21 le: mars 03, 2015, 09:53:41 pm »
Merci pour le logiciel, je n'en avais jamais entendu parler avant! J'utilisais Cidess, mais sous mac, j'étais obligé d'utiliser wineskin pour l'installer, ce qui provoquait quelques bugs supplémentaires...

savignyexpress

  • Invité
Re : Un Arduino par canton
« Réponse #22 le: mai 16, 2015, 12:16:09 pm »
...Une première chose à faire est de synchroniser les PWM de tous les cantons. En effet, si les PWM ne sont pas synchrones, une locomotive à cheval sur 2 cantons recevra une impulsion plus longue et verra sa vitesse modifiée tant qu'elle est à cheval. Elle fera donc potentiellement un petit bond à chaque passage d'un canton au suivant...

Bonjour Jean-Luc,

Je suis interpellé par la synchronisation des PWM des cantons. Avec une fréquence de 1 KHz et l'effet passe-bas des moteurs, est-ce vraiment indispensable ?

Meilleures salutations.

Marc-Henri

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Un Arduino par canton
« Réponse #23 le: mai 16, 2015, 04:36:31 pm »
Bonjour Marc-Henri

Une synchronisation est nécessaire. Sinon, les PWM peuvent se trouver carrément en opposition de phase. Même un déphasage pas très important se traduit par une accélération de la machine quand elle passe d'un canton a l'autre :



La PWM est à 32kHz

Amicalement
Cordialement

railyRabbit

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : Un Arduino par canton
« Réponse #24 le: mai 16, 2015, 10:39:39 pm »
Je dirais même CRC / acquittement et re-émission
Je me suis posé ces questions pour la liaison sans fil entre le TCO et le réseau. J'envisageais de placer les ordres envoyés dans une file et d'attendre la confirmation pour les en retirer. J'avais regardé la lib. QueueArray à cette fin.
Mais je vais me focaliser sur l'alim PWM dans un premier temps, pour des questions pratiques (le vieux transfo n'est pas très précis).

La fréquence de la PWM est d'un peu moins d'1kHz. l'erreur maxi entre 2 PWM, du moins ce que j'ai pu mesurer à l'oscillo, est d'environ 8µs. Les valeurs possibles pour la PWM vont de 0 à 254.
Sur la base de tes articles, je partais une PWM de 32kHz (la fréquence native du Timer2 d'un Uno). Comme je ne compte pas cantonner (le réseau est petit, 1,6 * 0,7m), je vais rester sur 1 seule source.

Par contre comment gères-tu l'étage de puissance, avec des MOSFET ou un pont en H ? J'ai l'impression que les ponts commutent suffisamment vite pour suivre la fréquence de la PWM.

Sinon, faut-il supprimer les condos et les selfs sur les locos analogiques ? Je partais du principe que oui, vu qu'il faut le faire lors d'une digitalisation...

[Edit: en train de voir ton autre fil dans "Shields et Modules" ; donc MOSFET, et parfois oui, parfois non...]
« Modifié: mai 16, 2015, 11:06:57 pm par railyrabbit »

savignyexpress

  • Invité
Re : Un Arduino par canton
« Réponse #25 le: mai 20, 2015, 04:15:10 pm »
Merci Jean-Luc pour l'explication relative à la synchro PWM.

J'ai regardé en détail ta bibliothèque SynchroPWM et le principe me paraît clair. 2 lectures successives de la PWM envoyée par le maître sont effectuées à chaque interruption et cela permet de déterminer si on est en retard ou en avance. Seule une transition dans le même sens que celle qui a généré l'interruption du timer est considérée comme synchrone. Il y a alors un décalage égal à la période de l'horloge du timer.

Ce qui n'est par contre pas clair pour moi, c'est pourquoi tu n'utilises pas la même interruption avec les Atmega168/328 (timer compare) qu'avec l'Atmega32U (timer overflow). Je suppose que ce n'est pas exactement le même mode PWM qui est utilisé selon le processeur ?

Meilleures salutations.

Marc-Henri

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Re : Un Arduino par canton
« Réponse #26 le: mai 20, 2015, 05:07:16 pm »
Par contre comment gères-tu l'étage de puissance, avec des MOSFET ou un pont en H ? J'ai l'impression que les ponts commutent suffisamment vite pour suivre la fréquence de la PWM.

MOSFET car l'inversion de marche est faite via un ou des relais.

Citer
Sinon, faut-il supprimer les condos et les selfs sur les locos analogiques ? Je partais du principe que oui, vu qu'il faut le faire lors d'une digitalisation...

Condos oui, impératif. Selfs non
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Re : Un Arduino par canton
« Réponse #27 le: mai 20, 2015, 05:16:23 pm »
Ce qui n'est par contre pas clair pour moi, c'est pourquoi tu n'utilises pas la même interruption avec les Atmega168/328 (timer compare) qu'avec l'Atmega32U (timer overflow). Je suppose que ce n'est pas exactement le même mode PWM qui est utilisé selon le processeur ?

héé ééé ben peut-être parce que je me suis planté. Faut que je regarde mais de mémoire j'ai testé avec un 328 en maître et un 32u4 en esclave et ça marchait. Il est également possible que dans le mode où la PWM est programmé overflow == compare étant donné que le TOP du compteur est COMPA. À voir
Cordialement

savignyexpress

  • Invité
Re : Un Arduino par canton
« Réponse #28 le: mai 22, 2015, 07:30:04 pm »
Bonsoir Jean-Luc,

J'ai finalement mis plus de temps à comprendre le code de SyncPWM, mais c'est ok maintenant. Pour les 168/328, la synchro se fait sur output compare A qui déclenche l'interruption et la génération du fast PWM se fait sur output compare B qui change directement la sortie OC correspondante (sans interruption).

Je pense que ton commentaire relatif au 32 où output compare == overflow est correct.

Je vais voir si l'Attiny 2313 a les mêmes capacités pour fonctionner en fast PWM esclave.

Bonne fin de semaine & meilleures salutations.

Marc-Henri

savignyexpress

  • Invité
Re : Un Arduino par canton
« Réponse #29 le: juin 02, 2015, 08:34:19 am »
Bonjour à tous,

Je reviens sur la description de l'asservissement de vitesse par mesure de la force électromotrice décrit par Jean-Luc.

Je serais intéressé par quelques compléments d'information sur l'étape d'amplification à ampli op.
  • Quelle est la valeur brute typique de la tension mesurée à l'entrée ?
  • Comment les ampli ops gèrent-ils les écarts de masse ? J'avoue ne pas être des plus à l'aise avec les questions de masses pouvant être différentes !
  • La tension de sortie est-elle limitée avant d'attaquer l'entrée du convertisseur AD ?
  • Est-il possible de voir le schéma de cette partie ?

Par ailleurs, combien de temps dure l'interruption de la PWM qui survient toutes les 10 ms ? J'imagine que c'est plutôt court !

Encore un grand merci pour ces échanges très instructifs.