LOCODUINO

Parlons Arduino => Vos projets => Discussion démarrée par: maxou9914 le janvier 30, 2017, 07:57:48 pm

Titre: loco LGB sans fil
Posté par: maxou9914 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.


Titre: Re : loco LGB sans fil
Posté par: PhB22 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...
Titre: Re : loco LGB sans fil
Posté par: maxou9914 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  >:(
Titre: Re : loco LGB sans fil
Posté par: PhB22 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/
Titre: Re : Re : loco LGB sans fil
Posté par: Pierre59 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
Titre: Re : loco LGB sans fil
Posté par: Jean-Luc 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)
Titre: Re : loco LGB sans fil
Posté par: ramboman 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...
Titre: Re : loco LGB sans fil
Posté par: Jean-Luc 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
Titre: Re : loco LGB sans fil
Posté par: ramboman 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 :(
Titre: Re : loco LGB sans fil
Posté par: Jean-Luc 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.


Par ailleurs, en tant que fondateur du forum, je veillerai particulièrement à ce qu'on n'y colporte pas des choses fausses.
Titre: Re : loco LGB sans fil
Posté par: ramboman 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



Titre: Re : Re : loco LGB sans fil
Posté par: Jean-Luc 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.
Titre: Re : Re : Re : loco LGB sans fil
Posté par: ramboman 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 :(
Titre: Re : loco LGB sans fil
Posté par: maxou9914 le février 07, 2017, 06:07:40 pm
Changement de bibliothèque pour la gestion du sans fil ! https://github.com/maniacbug/RF24 (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 (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 (http://www.ebay.fr/itm/291859205210).

Je regarde aussi pour le son synchronisé ! soit avec tone() ou des fichiers .wav ? à voir 
Titre: loco LGB WIFI
Posté par: maxou9914 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/ (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/ (https://nodered.org/)

Mon flow qui configure l'interface:
(https://photos-4.dropbox.com/t/2/AADuLRqcI2Zsy2dcPeH37VTP0JOuVOlQMmQe7L8IBsqvHg/12/282994978/jpeg/32x32/1/_/1/2/2.JPG/EJ_7gJACGNFSIAcoBw/gV1E3fyKdYvkjvB1fPFytk7WXKMABNxcbjtSbv6nd9c?size=2048x1536&size_mode=3)

le rendu sur PC:
(https://photos-4.dropbox.com/t/2/AABcxl8tThs0fz3vNiqxr7YMrsjAt7ZLFftW-zwJYC3u2g/12/282994978/jpeg/32x32/1/_/1/2/3.JPG/EJ_7gJACGNFSIAcoBw/CoRELilmAs0Gg51co5C-7sqpH5cYAv8nLVp36vX7LIs?size=2048x1536&size_mode=3)
Le rendu sur android:
(https://photos-4.dropbox.com/t/2/AACGhYsBu0ah7mBLojVW1Y2iYmT-KQLaKZB7CUuLqqCw9A/12/282994978/jpeg/32x32/1/_/1/2/Screenshot_20170709-183813.jpg/EJ_7gJACGNFSIAcoBw/Pk6QeFB0dpWKQI3wSvbrXw-Ntiwp606ycTPGHLFVHDk?size=2048x1536&size_mode=3)

Et un Serveur MQTT mosquitto pour dialoguer entre Node et le Wemos  https://mosquitto.org/ (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 (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 (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 https://youtu.be/512dBCOPvrs (https://youtu.be/512dBCOPvrs)

Si vous avez des questions n'hésitez pas.
Titre: Re : loco LGB sans fil
Posté par: Dominique le juillet 09, 2017, 09:32:55 pm
Une seule réponse : c'est beau  :P

Je suis en N donc je vais y penser pour mon prochain réseau !
Titre: Re : loco LGB sans fil
Posté par: binoclard le janvier 07, 2018, 04:55:36 pm
Ton truc m'intéresse vraiment  !!

L'esp 8266 wemos D1 à plus d'avantage que ce que tu décris.

Le premier, bien-sûr:  il est wifi et intégré.
Le 2e, le prix, il coûte le prix d un Arduino Uno chinois (je ne parle meme pas de l'original)
Le 3e, il a plus de mémoire :)
Le 4e, il est cadencé plus vite !!

Donc ça a beaucoup d'avantages pour moins cher qu'un Uno avec bouclier wifi.
-------------------------
Bon comme tu le dis dans le début du post, le problème d'un bloc auto c'est le câblage, le wemos resout en parti cela :)
Tu appelles la page web, tu peux l'afficher sur l'écran, et voir même interagir sur le canton en question ou sur les aiguilles :)

La question à se poser est :
Est-ce que c'est la page web qui gère tout le trafic ?
Ou est-ce les cartes canton (d1) qui gèrent et ne font que rapporter !!

Si tu prends la solution 1 fini les câblages fastidieux, juste l'alim des rails et la carte esp dans la cabane à piles au pied du feu et voila.

Si tu choisis la solution 2, câble rx et tx pour chaque carte, et dans ce cas, tu utilises une imprimante 3D (si tu n'en as pas, ça coute 150  €)  pour faire des caniveaux comme en réel a la SNCF


Titre: Re : loco LGB sans fil
Posté par: maxou9914 le janvier 07, 2018, 05:54:29 pm
J'ai un peux avancé sur ce projet,

j'ai choisi l'option 1

J'ai actuellement 3 tender de loco avec à l’intérieur le wemos et le contrôle de puissance ( voir post précédent) avec 3 contrôles d’accessoires fonctionnels ( lumière ou fumigène) et le son en test sur un.

je suis en pleine refonte du code "arduino" et du Node-red afin de simplifier les configurations en les rendent directement accessibles par l'interface WEB. Et malheureusement je me heurte à plusieurs difficultés.

si tu as besoin d'info sur un élément demande moi.
J’espère avancer pour avoir un projet fonctionnel pour le printemps et l'exposer complètement.
 
Titre: Re : Re : loco LGB sans fil
Posté par: Dominique le janvier 07, 2018, 05:58:07 pm
J'espère avancer pour avoir un projet fonctionnel pour le printemps et l'exposer complètement.

Bravo : nous sommes prêts à t'aider pour écrire un article quand tu auras bien mis tout cela au point.
Titre: Re : loco LGB sans fil
Posté par: maxou9914 le janvier 21, 2018, 10:05:19 pm
Je n'arrive pas à correctement contrôler mes transistors Tip 120 en sorti de mon wemos sur un port PWM.
J'arrive à les faires fonctionner mais de façon "empirique" en testant différentes valeurs de résistance  :o

Au niveau logiciel tout est bon pas de problème.
Mon problème vient de la résistance à mettre en série entre le wemos et le transistor. Comment bien dimensionner la résistance, j'ai lu plusieurs article mais il me manque toujours une valeurs que je ne trouve pas....
Donc si quelqu'un à la formule "miracle"  ;)
Titre: Re : loco LGB sans fil
Posté par: Jean-Luc le janvier 23, 2018, 08:26:22 am
Si j'ai bien compris, tu attque le TIP 120 avec une PWM, à quelle fréquence ?
Titre: Re : loco LGB sans fil
Posté par: maxou9914 le janvier 23, 2018, 08:29:49 am
Aucune idée la fréquence de base sûrement  :o
Titre: Re : loco LGB sans fil
Posté par: Jean-Luc le janvier 23, 2018, 08:40:48 am
En cherchant un peu j'ai trouvé 1kHz, environ, c'est une PWM logicielle

Mais j'ai également trouvé qu'on peut la lire avec getclock(), ici : https://nodemcu.readthedocs.io/en/master/en/modules/pwm/ mais cela correspond-il à ton ESP ?

Le gain mini du TIP 120 est de 1000. Donc si tu veux passer 2A, il faut 2mA sur la base. l'ESP est en 3,3V ? donc 3,3V - 2,5V (VBE trouvé dans la datasheet) = 0,8V (chute de tension dans la résistance) pour 2mA, soit une résistance de 0,8/2x10^-3 = 400Ω. 330Ω sera très bien.
Titre: Re : loco LGB sans fil
Posté par: maxou9914 le janvier 23, 2018, 09:51:44 pm
Parfait je te remercie j'ai enfin toutes les données, je test dans la semaine.
Pour le pwm je regarde dans la semaine. Ai-je besoin d'utiliser une sortie pwm ? La fréquence a t'elle un rôle important dans ce cas ? Mon but est juste de pouvoir réguler la tension pour l'accessoire (fumigènes, Led, ampoules etc)
Merci
Titre: Re : loco LGB sans fil
Posté par: Jean-Luc le janvier 23, 2018, 10:33:31 pm
Oui tu as besoin d’une PWM car sinon tu ne peux faire que du tout ou rien

J’ai demandé la fréquence car un darlington comme le TIP120 ne peut pas monter haut en fréquence.

Je pense que pour une LGB, comme les moteurs sont gros, une fréquence entre 100 et 1000 Hz serait bien. De toutes façon, avec une PWM soft tu ne peux pas monter bien haut.
Titre: Re : loco LGB sans fil
Posté par: maxou9914 le février 04, 2018, 08:21:18 pm
Je viens de finaliser ma carte "décodeur".
Tous fonctionne normalement, manque plus que le test avec la motrices.
Avec la résistance de 330ohms c'est parfait
Titre: Re : loco LGB sans fil
Posté par: maxou9914 le juin 05, 2020, 05:47:42 pm
Bonjour à tous,

Après un temps sans participation me revoilà avec une petite démonstration en vidéo de mon système de contrôle wifi

www.youtube.com/watch?v=_XgnnmY3Bis

3 Locomotives sont contrôlables simultanément, le fonctionnement est fiable à 95%.
Je me suis rendu compte que je n'avais pas prévu le reboot de la centrale wifi (raspeberry), les trains ont continués à effectuer la dernière commande envoyée :o, je vais donc ajouter une vérification complémentaire afin d'éviter de nouveau le problème.

Si le projet intéresse quelqu'un je posterai un petit tuto pour paramétrer la centrale raspeberry et le code NODERED ainsi que que celui de ESP8266 :D



Bonne journée
Maximilien