Auteur Sujet: loco LGB sans fil  (Lu 40532 fois)

maxou9914

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
loco LGB sans fil
« le: janvier 30, 2017, 07:57:48 pm »
Bonjour,

Après des mois de recherche et de test, je vous présente mon projet de contrôle de train sans fil !

A la suite de différent essai dans la gestion de 2/3 train sur un circuit LGB extérieur, contrôle de puissance pour chaque canton (une commande par canton :o) sur un TCO. Le nombre incommensurable de câbles que cela génère (2 fils par canton) rend la gestion en extérieur difficile et l'évolution du réseau complexe, ajout de nouveaux cantons ou modifications. Je me retrouve rapidement avec une cinquantaine de fils sans compter les moteurs d’aiguilles (en cours d'achat).
Cela oblige à avoir un TCO fixe et démontable (je suis en extérieur).


Donc face à ces contraintes je pense avoir trouvé MA solution.

Je suis parti du principe que les rails m'apporte juste le courant (18V) et que la locomotive possède un "décodeur" qui dialogue avec ma commande sans fil.

Donc nous avons au final:

Une locomotive avec:
1- un pont redresseur (4 diodes) ( je suis en continu mais si je retourne la loco....)
2- L298n (pour la puissance motrice) -> je pense le remplacer par la suite ? car sifflement du moteur ?!? :o à bas régime
3- un régulateur de tension LM2596 (pour arduino et le L298n)
4- un arduino mini
5- un Émetteur-récepteur sans fil 2,4 GHz Module NRF24L01

Une commande sans fil:

1- un arduino mini
2- un Émetteur-récepteur sans fil 2,4 GHz Module NRF24L01
3- un écran 4 lignes
3- Potentiomètre
4- boutons


Je joins le code pour la manette et la loco, il est fonctionnel dans l'état pour une seul loco. Des options en cours de développement ne sont pas encore fonctionnelles:

-détection RFID :
   -> arrêt en gare automatique (fonctionne mais problème)
   -> "retro signalisation" pour une gestion des feux ?
   -> ???


- Muti loco ( en cour)
- Feux Av/Ar
- Gestion sonore en fonction de la vitesse ;D
- Fumigène en fonction de la vitesse 8)
- Gestion des aiguilles sans fil :o
- Trajet automatique (je commence a rêvé là ..... ;D)
- ..... ???? ::)

Mon problème mis en stand-by :
 Impossible de connecter un détecteur RFID et le module NRF24L01  sinon plus de communication avec le NRF24L01 ?!  :-\ tous deux communiquent en SPI.
J'ai trouvé un autre détecteur RFID qui communique via le RX/TX mais pas encore tester.


Je planche sur la gestion de plusieurs loco afin de faire fonctionner tout ça aux beaux jours.


« Modifié: février 01, 2017, 06:02:08 pm par maxou9914 »

PhB22

  • Invité
Re : loco LGB sans fil
« Réponse #1 le: février 01, 2017, 10:21:00 am »
2- L298n (pour la puissance motrice) -> je pense le remplacer par la suite ? car sifflement du moteur ?!? :o à bas régime
En utilisant le PWM, on a effectivement un sifflement lorsque le moteur n'a pas encore démarré, la fréquence du signal PWM avec les bobinages du moteur en étant la cause.
Lorsque l'on démarre progressivement le moteur par une boucle du genre :
for vitesse (0, 255, vitesse ++) avec un delay (une certaine valeur) pour obtenir un démarrage progressif, on a ce sifflement tant que le moteur n'a pas démarré complètement.
Alors au lieu de faire démarrer à la vitesse à la valeur 0, suivant les moteurs et par essais, je remplace 0 par 25, 30, 35...
Et là dès que la boucle for est lancée, je démarre à une vitesse qui se situe juste avant le démarrage du moteur et je n'ai pas cette plus ou moins longue phase de sifflement.

Si ça peut aider...
« Modifié: février 01, 2017, 11:28:12 am par PhB22560 »

maxou9914

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : loco LGB sans fil
« Réponse #2 le: février 01, 2017, 06:04:27 pm »
En effet j'ai aussi utilisé ta méthode :  0 ->30 puis incrémentation
mais toujours un sifflement résiduel  >:(

PhB22

  • Invité
Re : loco LGB sans fil
« Réponse #3 le: février 01, 2017, 06:17:47 pm »
On peut aussi changer la fréquence du PWM mais, ça, je ne l'ai jamais fait.

C'est dans le fil "Simulation daylight" et une adresse est donnée avec un bout de code :
https://www.ofrecordings.com/2014/03/16/how-to-set-up-16-bit-pwm-with-an-arduino-uno-atmega328/
« Modifié: février 01, 2017, 06:22:52 pm par PhB22560 »

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Re : loco LGB sans fil
« Réponse #4 le: février 01, 2017, 06:44:36 pm »
Bonjour

On peut aussi changer la fréquence du PWM mais, ça, je ne l'ai jamais fait.

Je l'ai fait, avec une fréquence de PWM au dessus de 20kHz plus de bruit (c'est inaudible), mais il faut que le moteur de la loco supporte et que le L298n supporte aussi (sa fréquence de commutation est limitée typiquement à 25kHz (voir datasheet), personnellement j'ai utilisé un pont en H plus rapide.

Pierre

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : loco LGB sans fil
« Réponse #5 le: février 02, 2017, 09:51:56 am »
Il n'y a pas de problème pour le moteur. À vrai dire plus la fréquence est élevée et mieux c'est

Pour changer la fréquence de la PWM, tu peux utiliser la bibliothèque Timer1 ou bien Timer3. Il ne faut pas que la sortie PWM que tu utilises corresponde au Timer2 dont on ne peut changer la fréquence sans changer la base de temps du logiciel Arduino (celle qui est derrière millis() et les autres fonctions temporelles)
Cordialement

ramboman

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : loco LGB sans fil
« Réponse #6 le: février 04, 2017, 08:22:44 am »
Sifflement...

Vas voir ici...
http://forum.locoduino.org/index.php?topic=275.0
je me suis laissé dire que les locos LGB n'aiment pas le PWM...

Ton idée est excellente... je vais creuser de mon côté ;)

Pour le SPI il faut une pin d'activation par périphérique...

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : loco LGB sans fil
« Réponse #7 le: février 04, 2017, 08:52:06 am »
Ramboman, je te prierais d'arrêter de colporter des âneries concernant les moteurs et La PWM.

Premier et dernier avertissement

Pour comprendre les implications de l'alimentation d'un moteur par PWM, voir les quatres articles dont le premier est ici : http://modelleisenbahn.triskell.org/spip.php?article44
« Modifié: février 04, 2017, 09:16:23 am par Jean-Luc »
Cordialement

ramboman

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : loco LGB sans fil
« Réponse #8 le: février 04, 2017, 10:43:19 am »
Ce n'est pas le respect qui t'étouffe...
J'ai de bonnes raisons d'utiliser le continu "pur"... Driving Railway aussi à l'époque pour LGB.
Maintenant, si tu te crois en Corée du Nord, libre à toi :(

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : loco LGB sans fil
« Réponse #9 le: février 04, 2017, 10:57:13 am »
Ok, nous voilà amené sur le terrain du respect et de la dictature politique. On frôle déjà le point godwin.

Il ne s'agit ni de l'un ni de l'autre.

  • Nous sommes sur un forum à caractère technique et scientifique. Si le débat d'idées existe, une affirmation doit reposer sur une base scientifique et technique démontrable.
  • L'affirmation : « les locos LGB n'aiment pas le PWM » ne repose sur aucune base scientifique et technique démontrable.
  • Les choix techniques adoptés par Driving Railways ne constituent pas une telle base.

Par ailleurs, en tant que fondateur du forum, je veillerai particulièrement à ce qu'on n'y colporte pas des choses fausses.
Cordialement

ramboman

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : loco LGB sans fil
« Réponse #10 le: février 04, 2017, 11:46:56 am »
On ne va pas en débattre, puisque tu te réfères à un article écrit par toi même...
Ce que je regrette ce sont les termes "âneries" et "premier et dernier avertissement"...
je ne vois pas ce que "godwin" vient faire là dedans... ce sont clairement des menaces de censure :(

Revenons à mon commentaire : on peut difficilement affirmer que je sujet est totalement sans fondement...
il suffit de consulter internet à ce sujet, en tout cas pour ce qui concerne les moteurs sans fer...
J'ai moi même grillé in tempore une fournée entière de moteurs Jouef "N" sous alimentation pulsée...
et je ne tiens pas vraiment à prendre le risque de griller (même volontairement) un moteur LGB...

Comme tu le dis toi-même (sic) :
"Les moteurs à rotor sans fer n’aiment pas les alimentations à courant pulsé [1]
Comme on va le voir, cette affirmation n’est pas tout à fait vraie"
... pas tout à fait vraie... ou pas totalement fausse ?

Mais pour être honnête je reste surtout en DC "pur" pour les raisons développées ici :
http://forum.locoduino.org/index.php?topic=275.0




Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Re : loco LGB sans fil
« Réponse #11 le: février 04, 2017, 11:53:06 am »
On ne va pas en débattre, puisque tu te réfères à un article écrit par toi même...

L'étude n'est pas de moi mais d'un enseignant-chercheur de l'ECN. J'ai juste écrit l'intro.

Citer
Revenons à mon commentaire : on peut difficilement affirmer que je sujet est totalement sans fondement...
il suffit de consulter internet à ce sujet, en tout cas pour ce qui concerne les moteurs sans fer...

Internet est une mine d'âneries. Je précise : affirmer de manière générale que la PWM pose problème est sans fondement scientifique et technique.

Citer
J'ai moi même grillé in tempore une fournée entière de moteurs Jouef "N" sous alimentation pulsée...
et je ne tiens pas vraiment à prendre le risque de griller (même volontairement) un moteur LGB...

Comme tu le dis toi-même (sic) :
"Les moteurs à rotor sans fer n’aiment pas les alimentations à courant pulsé [1]
Comme on va le voir, cette affirmation n’est pas tout à fait vraie"
... pas tout à fait vraie... ou pas totalement fausse ?

Tu n'as donc ni lu ni compris l'article.
« Modifié: février 04, 2017, 12:14:14 pm par Jean-Luc »
Cordialement

ramboman

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : Re : Re : loco LGB sans fil
« Réponse #12 le: février 04, 2017, 12:31:12 pm »
Tu n'as donc ni lu ni compris l'article.
On arrête... parce qu'on va se fâcher :(

maxou9914

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : loco LGB sans fil
« Réponse #13 le: février 07, 2017, 06:07:40 pm »
Changement de bibliothèque pour la gestion du sans fil ! https://github.com/maniacbug/RF24
il faut juste modifier le #define NumeroLoco avant d’envoyé le programme à la loco, jusqu’à 5 loco possible.

Je vais regarder pour modifier la fréquence de l'horloge ( cf post http://www.locoduino.org/spip.php?article202 ) ou dans l'autre cas je passe par un pont en H, plus facile à miniaturiser pour les futurs locos http://www.ebay.fr/itm/291859205210.

Je regarde aussi pour le son synchronisé ! soit avec tone() ou des fichiers .wav ? à voir 

maxou9914

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
loco LGB WIFI
« Réponse #14 le: juillet 09, 2017, 07:12:10 pm »
Bonjour,

Après plusieurs améliorations j'ai changer de technique sans fil.
J'ai découvert les puces ESP8266, et plus particulièrement la WEMOS 1D https://www.wemos.cc/ qui possède:
11 digital input/output pins
1 analog input(3.2V max input)
Micro USB connection

Pour le contrôle j'utilise une interface web (disponible directement dans le navigateur : ordinateur, tablette, telephone,etc ) qui peux être utilisé par plusieurs à la fois.

Mon système est donc composé comme suit :

Dans la loco :

Moteur 19v -> pont en H L298 -> Wemos
Fumigene 16V -> transistor TIP142 -> Wemos

Alimentation 21V par les voies -> Pont de diodes -> LM2593 ( pas de régulateur 3.3v en stock) -> WEMOS
                                                                       -> Pont en H L298

Voilà pour la partie physique.

Pour la partie interface:

J'utilise Node-Red pour la création de l'interface web https://nodered.org/

Mon flow qui configure l'interface:


le rendu sur PC:

Le rendu sur android:


Et un Serveur MQTT mosquitto pour dialoguer entre Node et le Wemos  https://mosquitto.org/, je conseille d'installer un "lecteur de flux" MQTT qui facilite le débogage par la lecture en direct des échanges entre Node et le WEMOS. https://play.google.com/store/apps/details?id=at.tripwire.mqtt.client&hl=fr

 
Pour la partie programmation j'ai pour node-red le flow suivant à importer :
https://www.dropbox.com/s/3erfxlbblz8h98m/node%20V2.txt?dl=0

Pour le code du WEMOS :

#define Version 2
#define NumeroLoco 1

#include <ESP8266WiFi.h>
#include <PubSubClient.h>


// Paramètre WiFi, MQTT - WiFi, MQTT parameters
const char* ssid = "Bbox-maxou";                // WiFi SSID
const char* password = "cessnacessna";        // WiFi Password
const char* mqtt_server = "192.168.1.44";  // IP Broker MQTT
const char* Vitesse = "Loco1/Vitesse";
const char* Sens1 = "Loco1/Sens1";
const char* Sens2 = "Loco1/Sens2";
const char* Lumiere = "Loco1/Lumiere";
const char* Fumigene = "Loco1/Fumigene";
const char* Nom = "Loco1/Nom";

unsigned long TempsGlobal = 0;

/////////////////    Moteur      ///////////////////////

#define PinMoteurPWM D4
#define PinMoteurSens1 D3
#define PinMoteurSens2 D2

/////////////////    Fumigene    ///////////////////////

#define PinFumigenePWM D7

#define PinLumiere D8

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup() {

  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);


  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(PinLumiere, OUTPUT);

  pinMode(PinMoteurSens1, OUTPUT);
  pinMode(PinMoteurSens2, OUTPUT);
  pinMode(PinMoteurPWM, OUTPUT);


  pinMode(PinFumigenePWM, OUTPUT);

}

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  String string;
  // Affiche le topic entrant
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  // décode le message
  for (int i = 0; i < length; i++) {
    string += ((char)payload[i]);
  }
  // Affiche le message entrant
  Serial.print(" Valeur brut : ");
  Serial.print(string);
  Serial.print(" en ");
  // Conversion de Valeur en entier
  int Valeur = string.toInt();
  Serial.println(Valeur);

  //   Détermine quoi faire
  if ( strcmp(topic, Vitesse) == 0 )
  {
    Serial.print(" Vitesse :");
    Serial.println(Valeur);
    analogWrite(PinMoteurPWM, Valeur);
  }
  if ( strcmp(topic, Sens1) == 0 )
  {
    Serial.print(" Sens 1 :");
    Serial.println(Valeur);
    digitalWrite(PinMoteurSens1, Valeur);
  }
  if ( strcmp(topic, Sens2) == 0 )
  {
    Serial.print(" Sens 2 :");
    Serial.println(Valeur);
    digitalWrite(PinMoteurSens2, Valeur);
  }
  if ( strcmp(topic, Lumiere) == 0 )
  {
    Serial.print("Lumiere :");
    Serial.println(Valeur);
    digitalWrite(PinLumiere, Valeur);
  }
  if ( strcmp(topic, Fumigene) == 0 )
  {
    Serial.print("Fumigene :");
    Serial.println(Valeur);
    analogWrite(PinFumigenePWM, Valeur);
  }
  delay(15);
}

void reconnect() {

  while (!client.connected()) {
    Serial.print("Attente  connection MQTT...");
    // Attempt to connect
    if (client.connect("ESP8266Client")) {
      Serial.println("connected");
      client.subscribe(Vitesse);
      client.subscribe(Sens1);
      client.subscribe(Sens2);
      client.subscribe(Lumiere);
      client.subscribe(Fumigene);
    } else {
      Serial.print("Erreur, rc=");
      Serial.print(client.state());
      Serial.println(" recommence dans 5 secondes");
 
      delay(5000);
    }
  }
}
void loop()
{
  if (!client.connected())
  {
    reconnect();
  }
  client.loop();
  if ((millis() - TempsGlobal) > 3000)
  {
    client.publish(Nom, "BR81");
    TempsGlobal = millis();
  }

  delay(10);
}


Le premier test fonctionnel

Si vous avez des questions n'hésitez pas.