Parlons Arduino > Vos projets

Un Arduino par canton

<< < (3/13) > >>

Guillaume:
Il faudra que tu nous expliques cela le truc différentiel. Un peu cher le mcp comme tu dis. Les autres c'est mieux.
Une autre question d'ailleurs, les arduinos sont aussi reliés par la masse ?

Si on reprend le truc, un arduino lambda uno ou mega ou mini pour le moment démarre le master clock sur la broche 3. Sont reliés ensuite d'autres arduino qui démarre le prog sync, crée un objet selon la biblio avec réception du signal sur la broche 8 et envoie le pwm sur la broche 3 en fonction d'un argument byte.
Chaque arduino mettant l'attribut byte qu'il veut d'où l'indépendance de chaque canton.


Le due n'est pas nécessaire pour le moment, je réfléchis à en prendre un vu son prix pas si différent d'un méga. Ca sera pour mon mini module en HOe.

Jean-Luc:

--- Citation de: Guillaume le février 13, 2015, 06:41:48 pm ---Il faudra que tu nous expliques cela le truc différentiel. Un peu cher le mcp comme tu dis. Les autres c'est mieux.

--- Fin de citation ---

http://fr.m.wikipedia.org/wiki/Signalisation_différentielle


--- Citer ---Une autre question d'ailleurs, les arduinos sont aussi reliés par la masse ?

--- Fin de citation ---

Oui via l'alimentation. Mais il ne faut pas considérer que les masses sont identiques partout. Un fil long n'est pas une équipotentielle.


--- Citer ---Si on reprend le truc, un arduino lambda uno ou mega ou mini pour le moment démarre le master clock sur la broche 3. Sont reliés ensuite d'autres arduino qui démarre le prog sync, crée un objet selon la biblio avec réception du signal sur la broche 8 et envoie le pwm sur la broche 3 en fonction d'un argument byte.
Chaque arduino mettant l'attribut byte qu'il veut d'où l'indépendance de chaque canton.

--- Fin de citation ---

Oui c'est ça. Mais les valeurs de PWM appliquées sur chaque canton sont décidées par un Arduino maître qui connaît l'emplacement des trains via une rétro-signalisation.


--- Citer ---Le due n'est pas nécessaire pour le moment, je réfléchis à en prendre un vu son prix pas si différent d'un méga. Ca sera pour mon mini module en HOe.

--- Fin de citation ---

Le due me semble bien taillé pour jouer le rôle de l'Arduino maître.

Guillaume:
Merci pour ces réponses.
C'était un raccourci pour la valeur des PWM.

Pour ce qui est du DUE, il va falloir d'abord que je puisse accéder à l'IDE 1.5.8 car à ce jour impossible de l'avoir sur aucun de mes ordis, en attente. Cela marchait sur un seul de mes ordis, mais le temps faisait, il ralentissait de plus en plus vu toutes les installations de prog que je faisais, et les versions devenant de plus en plus gourmandes j'ai réinstallé pour un truc plus light. Bref, je dois cogiter un peu...

A suivre

Guillaume:
Finalement, la dernière version en stable qui remplace tout la 1.6 a résolu le pb sans intervention de ma part.
Plus qu'à commander le DUE.

Jean-Luc:
Pour l'instant je fais des essais avec un moteur Graupner Speed 500E sans chercher à optimiser quoique ce soit. La seule chose que j'ai faite est de passer la fréquence de la PWM à 31,45kHz (d'après l'oscillo).

Le moteur est donc piloté avec une PWM à 31,45kHz.

Toutes les 10ms, la PWM est coupée et l'Arduino mesure la force contre électromotrice du moteur (FCEM).  Quand un moteur tourne, il produit une tension, comme une dynamo de vélo, qui est proportionnelle à la vitesse de rotation. Pour cela, un montage à d'amplificateur opérationnel permet de la mesurer. Ça ramène une valeur entre 0 et 10V entre 0 et 5V et ça fonctionne avec des masses qui ne sont pas exactement les mêmes, elles peuvent différer de plusieurs volts.

L'Arduino effectue 6 mesures car la FCEM est très bruitée et les trie. Les deux extrêmes sont éliminés et une moyenne des 4 centrales est effectuée.

J'ai mis en œuvre un asservissement de vitesse du moteur avec un régulateur PI (j'utilise asservissement plutôt que régulation pour ne pas confondre). PI pour Proportionnel Intégral. La consigne est la FCEM à atteindre. En soustrayant la FCEM mesurée à la consigne, on calcule une erreur. Cette erreur est multipliée par une constante qu'il faut régler : le gain proportionnel. On calcule également la somme des erreurs ce qui donne l'intégrale de l'erreur. Cette intégrale est également multipliée par un gain. La PWM est donc calculée comme suit (ici on divise par l'inverse du gain intégral) :


--- Code: ---     int erreur = consigneVitesse - fcem;
     cumulErreur += erreur;
     pwm = erreur * gainProportionnel + cumulErreur / inverseGainIntegral;

--- Fin du code ---

La PWM est ensuite relancée avec la nouvelle valeur.

Pour l'instant l'électronique est un peu crade. L'ampli op est alimenté directement par la tension qui alimente le MOSFET et elle est très bruitée. Mais ça marche quand même :)

Navigation

[0] Index des messages

[#] Page suivante

[*] Page précédente

Utiliser la version classique