Parlons Arduino > Trucs & astuces
Comptage des essieux
Dominique:
A mon humble avis, le comptage des essieu n’est sert qu’à vérifier si un train à tous ses wagons ou en a perdu. Encore faut-il avoir enregistré le décompte attendu quelque part.
Ce n’est pas adapté à la détection de présence à cause des multiples détections.
Cela peut aussi servir à initialiser un train juste après sa composition en sortie d’une gare de triage.
C’est dommage qu’il n’existe pas de composant tout fait mais je n’ai pas regardé n’ayant pas vu les détails techniques de la chose.
bobyAndCo:
Oui je suis d’accord avec toi Dominique et c’est en cela que je trouve que c’est une technique lourde d’enregistrer le nombre d’essieux pour chaque convoi. Peu souple en cas de modification de compositions de convois. Cela nécessite aussi de maintenir une petite base de données, bref, je crois pas très souple.
Pour détecter si un ou des wagons se sont décrochés, la détection par consommation de courant du wagon de queue et cette technique apportent les mêmes réponses satisfaisantes.
Christophe
CATPLUS:
Bonjour
Effectivement j'ai cherché un montage complet, hélas rien, uniquement l'émetteur & le receveur, c'est le montage qu'il a fabriqué.
Il me semble que l'un d'entre vous avait suggéré le comptage des roues en cas de perte ou de décrochage.
Cela peut être intéressant comme le souligne Dominique.
La chose que je trouve impressionnante c'est la rapidité de l'ESP32 à traiter le calcul surtout à la vitesse ou train roule (dans d'autre vidéo le test est réalisé avec un Nano et cela fonctionne)
Christophe tu as raison rien ne peut remplacer la détection par consommation de courant.
Je continu à jeter un œil, il me semble qu'il faut creuser.
Dominique:
Il y a un bout de schéma dans sa vidéo mais c’est pas commode d’en tirer quelque chose.
Je ne comprends pas cette mode des tutos video qui pèsent beaucoup plus lourd en Mo qu’un article Locoduino bien plus instructif 😬
Bientôt sur TikTok ? 🤮
Brunotoutsimple:
Bonjour à vous tous.
Je suis entrain de récupère les textes, les images, les schémas.
Donc voici déjà le code:
--- Code: ---/*
Ce code concerne un compteur d'essieux ferroviaire miniature. Il y a quatre capteurs qui surveillent l'état des axes.
Chaque capteur lit une valeur analogique et vérifie si cette valeur est supérieure à 1000. Si oui, l'état du capteur est mis à 1, sinon à 0.
Lorsque l'état d'un capteur change, il est vérifié si le nouvel état correspond à celui du capteur suivant.
Si oui, le compteur de l'axe correspondant est décrémenté, sinon il est incrémenté.
La différence entre les compteurs des axes est calculée et si cette différence est nulle, la broche de sortie est réglée sur HIGH, sinon sur LOW.
Cela pourrait par exemple être utilisé pour envoyer un signal lorsque tous les axes d'un modèle ferroviaire ont dépassé le capteur.
*/
#include <Arduino.h>
// Voici le code commenté :
// Initialisation des variables
int a=0; // Etat du premier capteur
int b=0; // État du deuxième capteur
int c=0; // État du troisième capteur
int d=0; // État du quatrième capteur
int z1=0; // Compteur pour le premier axe
int z2=0; // Compteur pour le deuxième axe
int D1=0; // Différence entre le nombre d'essieux
int lastAl=1; // État précédent du premier capteur
int lastB1=1; // État précédent du second capteur
int lastC1=1; // État précédent du troisième capteur
int lastD1=1; // État précédent du quatrième capteur
int output=5; // Broche de sortie
void setup()
{
// Définition des broches en entrée
pinMode(36, INPUT); // premier capteur
pinMode(39, INPUT); // deuxième capteur
pinMode(34, INPUT); // troisième capteur
pinMode(35, INPUT); // quatrième capteur
// Définition des broches en sortie
pinMode(5, OUTPUT); // Broche de sortie
}
void loop()
{
// Lire les valeurs des capteurs
int w1=analogRead(36); // Valeur du premier capteur
int w2=analogRead(39); // Valeur du second capteur
int w3=analogRead(34); // Valeur du troisième capteur
int w4=analogRead(35); // Valeur du quatrième capteur
}
// Vérifie si la valeur du capteur est supérieure à 1 000 et définissez l'état en conséquence.
a=(w1<1000) ?0:1;
b=(w2<1000) ?0:1;
c=(w3<1000) ?0:1;
d=(w4<1000) ?0:1;
// Vérification si l'état du premier capteur a changé
if(a != lastA1)
{
if(a == b)
{
z1--; // Si l'état est égal à celui du deuxième capteur, décrémente le compteur
}
else
{
z1++; // Autrement, incrémentez le compteur
}
lastA1=a; // Mise à jour de l'état précédent
}
lastB1=b: // Mise à jour de l'état précédent
// Vérifiez si l'état du troisième capteur a changé
if(c != lastC1)
{
if (c == d)
{
z2--; // Si l'état est égal à celui du quatrième capteur, décrémenter le compteur
}
else
{
z2++; // Ansonsten inkrementiere den Zähler
}
lastC1=c; // Mise à jour de l'état précédent
}
lastD1=d; // Mise à jour de l'état précédent
D1=z1-z2; // Calcul la différence entre les compteurs d'axes
// Vérifie si la différence est nulle
if((D1) == 0)
{
digitalWrite(5,HIGH); // Si oui, réglez la broche de sortie sur HIGH
}
else
{
digitalWrite(5,LOW); // Sinon, réglez la broche de sortie sur LOW
}
--- Fin du code ---
Cordialement
Bruno
Navigation
[#] Page suivante
[*] Page précédente
Utiliser la version classique