Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - laurentr

Pages: 1 ... 13 14 [15] 16 17 ... 41
211
Vos projets / Re : BASIC_AUTO_LOOP_REVERSER
« le: février 01, 2024, 09:52:07 pm »
Bonsoir Christophe

Une relais faible signal format "DIL" en gros un sucre de 1cm x2cm) permet de couper max 2A sous 30VDC.

Toute valeur en dessous nous va bien :)

Temps de bascule de ce type de relais : entre 3ms et 8ms en gros (selon le sens de bascule ou le modèle).

C'est à la fois court et long.

Mécaniquement c'est rapide.

Electroniquement c'est long! En effet des solutions à base de MOS ont des vitesses de commutation de quelques dizaines de us. Ce qui n'est que mieux!

Si j ai bien lu entre les lignes le célèbre LK100 de LENZ était à base de relais. Son successeur le LK200 est purement basé sur de l'électronique, sans relais donc.


Un CIRCUIT BREAKER est en fait un disjoncteur local qui bascule si le seuil est atteint ou dépassé ( de façon temporisée) . ( avec ce type de relais jamais au delà de 2A au max)
Il doit être plus rapide que la mise en sécurité des moyens de protection des centrales/booster.

Un circuit breaker doit être plus long à basculer que un circuit gérant les alignements de signaux des pôles du DCC ( J/K)(LOOP AUTO REVERSE)
Dans le même temps un circuit d'auto reverse ne doit pas faire du "Ping Pong en boucle non stop" en attendant que la sécurité s'enclenche.  bascule, si plus de problème pas d autre bascule, si maintient du problème attendre qu'une autre protection s'enclenche sans chercher cette fois de nouveau à basculer.

Je cherche un montage pour substituer le relais... mais pour le moment je n'ai résolu qu'une partie de l'équation pour une solution qui de ce fait n'est pas viable.

Si vous avez des suggestions, c'est le moment c'est l 'instant!

Laurent




212
Vos projets / Re : BASIC_AUTO_LOOP_REVERSER
« le: février 01, 2024, 05:14:06 pm »
Bonjour Marc


Pour ma part moins on à de CC et mieux l'électronique se porte. En encore plus dans le long terme. Plus on ménagera nos décodeurs mieux ils se porteront.

Pour prendre le courant sur le DCC c'est ajoutable sans difficulté majeur mais je n'en suis pas fan. (un pont, un régulateur ( LDO? DC DC?) et condo feront l'affaire) Voir une paire de jumper pour sélectionner la source.

J'ai mis un peu de temps pour comprendre le mécanisme de bascule qui est assez "subtile" car c est en fait le fait de bypasser la diode de l'opto  qui est polarisée lorsqu'il y a une conso (donc présence d'un convoi consommateur de courant)  entre les pôles J et K.
Le "bypass" crée un bref changement d'état sur la sortie de l'opto qui génère alors une interruption en FAILLING sur le CPU. Cette interruption va alors entrainer un changement dans la commande du relais.

Cela fonctionne dans les deux sens puisque l'opto et bidirectionnel (354T) Donc des que des rails en polarité opposées se font face et qu'un essieux va être à cheval sur ces éléments il y a bypass de la diode de l'opto donc bascule de l'état de sortie.
En absence de bypass on conserve l'état présent.

C est physiquement ce qui se passe lorsque les rails sont sur de polarites opposées et qu'un essieux ponte un pole J avec un pole K ce qui éteint la led de l'opto, provoque la changement d'état lors d un FAILLING  sur l'entrée du microcontrôleur.

C'est toujours bijectif. K<>J J<>K

Idéalement j aimerai remplacer le relais par un montage à base de MOSFET mais c est un peu plus touchy à réaliser

Le mécanisme de bascule sera traité je pense de la même façon ( détection similaire) , en revanche le temps de bascule sera encore plus rapide qu'avec le relais.

Un montage à base de MOS en back to back me semble convenir ( N? P?) mais il faut en piloter les bascules sans venir mélanger ou ajouter des alim externes...
OPTO de rigueur mais pas que...

On aura alors comme l'indiquait Denis des équivalents aux "JUICER" de TAM'S.

Si quelqu'un a montage à proposer pour remplacer le relais... je prends!

Laurent




213
Vos projets / Re : BASIC_AUTO_LOOP_REVERSER
« le: janvier 31, 2024, 11:48:43 pm »
Voici les lignes de code qui permettent au montage ci dessus de fonctionner.

le CPU est un MEGATINY ( 202,402, 212 ou 412 au choix)

Le code moyennant l'adaptation du brochage et du montage peut tourner sur tout autre MEGATINY ou sur les AVR série 0, AVR Dx ( DA DB ,DD et EA, EB)


#include <Arduino.h>

/*
  DCC AUTO LOOP REVERSER: BASIC V1.0
  Author: Laurent ROEKENS LTR
  Version 1.0.0
  Date rev: 31/01/2024: initial release

  Specially design for MEGATINY x02 ( 202,402, 212, 412 CPU Parts)

  SWAP PIN NAMES OFR ANY AVRx CPU. ( ex AVR Serie0 (NANO_EVERY), AVR Dx, ...)

*/

//VARIABLES:

#if !defined(PIN_PA1)
  #define PIN_PA1 2
#endif

#if !defined(PIN_PA2)
  #define PIN_PA2 3
#endif

#if !defined(PIN_PA3)
  #define PIN_PA3 4
#endif

#define TOGGLE GPIOR0 //use global register GPRIOR0 to store value for faster speed reaction

#define CDE_RLY_SET_PIN     PIN_PA2
#define CDE_RLY_RESET_PIN   PIN_PA1

#define RST_PIN             PIN_PA3

void toggle_state();

void toggle_state()
{
 TOGGLE = !TOGGLE;
}

#define RLY_COIL_SET_ON   PORTA.OUTSET = PIN2_bm //faster than PORTA.OUT |= PIN2_bm
#define RLY_COIL_SET_OFF  PORTA.OUTCLR = PIN2_bm //faster than PORTA.OUT  &= ~PIN2_bm

#define RLY_COIL_RESET_ON   PORTA.OUTSET = PIN1_bm //faster than PORTA.OUT |= PIN1_bm
#define RLY_COIL_RESET_OFF  PORTA.OUTCLR = PIN1_bm //faster than PORTA.OUT  &= ~PIN1_bm

///////////////////////////////
//SETUP
///////////////////////////////
void setup()
{

  TOGGLE = false; //init state arbitrary

  pinMode(CDE_RLY_RESET_PIN, OUTPUT);
  pinMode(CDE_RLY_SET_PIN, OUTPUT);

  pinMode(RST_PIN, INPUT);

  attachInterrupt(digitalPinToInterrupt(RST_PIN),toggle_state,FALLING); //ANY STATE DOWN DETECTED ON RST_PIN WILL SWAP STATE

}


////////////////////////////////
//LOOP
////////////////////////////////
void loop(){

  while(TOGGLE == true)
  {
    RLY_COIL_RESET_OFF;
    RLY_COIL_SET_ON;
  }

  while(TOGGLE == false)
  {
    RLY_COIL_SET_OFF;
    RLY_COIL_RESET_ON;
  }

}


214
Vos projets / BASIC_AUTO_LOOP_REVERSER
« le: janvier 31, 2024, 10:58:26 pm »
Bonjour

Sous cet acronyme Anglo saxon un peu barbare se trouve un petit montage efficace pour gérer une boucle de retournement ou toute autre forme de mise en œuvre nécessitant une inversion des polarite des rail DCC. ( auto sensing)

Cette version repose sur la bascule d'un relais lors de la mise en cour circuit de la détection entre une zone a inverser et une zone fixe ( non inversable) servant de référence comme point fixe.

A noter que cette détection par CC ( court-circuit) est non destructrice au niveau des composants mis en œuvre ici :).

Il se peut toutefois que vos décodeurs de locomotive n'apprécient pas à outrance ce genre de situation... Mais c'est un mécanisme qu'utilise de nombreux produits du commerce.

Le principe repose sur le bypass des diodes de l'opto coupleur bidirectionnel ( BA354 par exemple)  par le premier essieux franchissant cette séparation en cas de polarites opposées entre les parties de rail fixe et  inversable qui va générer une interruption sur une entrée d'un CPU qui commute alors les sorties d un relais pour procéder aux alignements des polarite des deux zones.

L'alimentation n'est pas prélevée sur le courant DCC ce qui évite d'avoir une détection par consommation de courant faussée par l'énergie prélevée sur la zone fixe par le montage pour fonctionner.
Elle provient donc d'une source externe DC en 5V.

A noter que le montage doit impérativement être alimenté en 5V courant continu.

2 sorties auxiliaires permettent via une entée additionnelle d'utiliser une autre source de tension et de récupérer l'état de commutation, ce qui sera précieux pour un monitoring éventuel ou une visualisation, voir un asservissement.

Cette alimentation externe peut être en 3V3 ;) ( idéal pour aller vers un CPU type ESP32) ou si en 5V un petit jumper présent sur la carte fera gagner un raccordement dans un bornier :)

A noter que ce dispositif me semble être très rapide pour commuter et sera toujours liée au temps de bascule du relais de l'ordre de 3 à 10 ms.

hormis remplacer le relais par d'autres composants, il sera impossible d'aller plus vite!

Notez qu'un petit bouton poussoir est aussi présent pour commuter par pression la position qui est indiquée visuellement par deux leds( ex rouge et verte)

Voici déjà le schéma correspondant en plus  d'un aperçu du montage.


Encore quelques lignes à écrire pour vous soumettre cet ensemble complet.

Laurent













215
Christophe

Pour compléter le montage du détecteur RAILCOM tu peux envisager de venir mettre un double INA169 comme sur le schéma ci joint.

page 16 dans ce doc:

https://www.ti.com/lit/ds/symlink/ina169.pdf?ts=1706707855189&ref_url=https%253A%252F%252Fwww.google.com%252F

Intérêt on utilise toujours la même résistance de shunt déjà en place pour la détection RAILCOM.

Les mesures sont différenciées.
On peut alors temporiser aussi soit au niveau de CPU ( par soft) soit sur l'entrée du CPU par ajout d'un condo.

Ca reste à tester...

Sinon il faut regarder les calculs pour un shunt a 1.8r et l INA219 ou cela conduit...


Laurent

Ltr

216
Bonjour

@Etienne, si tu parles bien du décodeur à base ACS712 c'est en effet le cas.

Si tu as un détecteur à base dINA219 (et équivalent)  ou d'Ampli OP je ne suis pas persuadé du même résultat car tu vas alors cascader 2 résistances de shunt et donc les valeurs mesurées peuvent être perçues différemment.

On devrait alors par exemple
soit avoir la détection GLOBALE entre le source DCC et le décodeur RAILCOM puis la voie
soit tenir compte du cutout, suspendre les mesures d'occupation durant celui ci en conservant l'état actuel avant coupure ( on parle d 1/2 sec en gros rien de gravissime) , les reprendre ensuite... ( mais plus touchy à réaliser!)

Ltr

217
Hello

Idéalement pour un seuil donné ( ex 2A max) et un temps dépassé (ex 50ms)  il faut pouvoir le déconnecter (via un relais par exemple) dans un circuit de type BREAKER.

Mais ce n'est pas aussi simple car on peut aussi être dans le cas d'un CC bref et local pour une "LOOP" où il faut basculer un relais pour aligner les polarités des rails de deux sections.

Tel que je vois les choses: 

Je ne confie pas cette tache à l'INA219 ni à l ESP32 directement ( mais je lui notifie les états des capteurs)

Je laisse cette tache dédiée à un MEGATINY en annexe avec un ACS712. ( pour chaque type de circuit de détection LOOP et BREAKER) ( c est plus chère mais c est aussi très fiable je pense)

Pour la protection globale CC:
Je bride pour max 2A le BREAKER (local) en cas de "gros CC long" avec un temps d'activation vers 50ms par exemple, il faut une commande externe pour réarmer (push ou cde venant de l'ESP32 pour générer une interruption sur le MEGATINY)

Pour le cas des LOOP:
Si le CC est bref alors c'est à un circuit de type LOOP reverse d'opérer (plus rapidement que le BREAKER avec seuil de bascule plus bas ( ex 1.8A) et temps plus courts)

Si après une 1ere commutation de la LOOP cela ne résout pas le problème du CC détecté ( on temporise le temps de bascule du relais et on mesure de nouveau la conso)  alors  c'est le BREAKER qui prend la suite, et s il n'y pas de breaker c'est à la centrale ou au booster de faire le job de disjonction. ( vers 100ms souvent) et la on risque de chauffer un peu!

On peut piloter aussi le relais de la LOOP depuis l'ESP32 et en récupérer les états.


On voit bien l'intérêt de cascader les éléments.


l'INA219 ne fera que des mesures de conso globale et établira des rapports moyennés à intervalles de temps "long" (>100 ou 200Ms par exemple) sauf à savoir en faire meilleure usage.

Note que si tu confies la lecture de l'INA219 à l'ESP32 la gestion des priorités de ces valeurs va être à traiter.

Il y a peut être moyen de lui confier les 2 rôles pour LOOP et BREAKER qui seront sur 2 relais en série pilotés par l'ESP32.
A voir si c est plus efficace d'avoir des petits CPU dédiés pour cela avec un ACS712 chacun ou ajouter des taches à l'ESP32 et à l'INA219.

Perso j avance actuellement sur le code de la gestion du LOOP.

Laurent

218
Bonsoir

Il est sure que de "capter" une poignée de mV va être délicat.

Il y a toujours la possibilité d'amplifier le signal (via  AMPLIOP notamment en montage suiveur non inverseur) et disposer d'un delta plus important surtout sur le seuil bas.  (attention aux limites)

Si tu inverses le signe des mesures entre -5A et 0A et que tu les ajoutes dans les calculs de moyenne des valeurs entre 0A et 5A tu recentres entre 2.5V et 5V.

Si tu  a une valeur >0 et que tu soustrais alors le Vcc/2 correspondant ( 511 en 10Bits) tu es alors juste sur le delta que tu cherches à mesurer.

A défaut de l ACS712_A5 tu peux envisager aussi l INA219 qui lui va bien tourner en 3V3 ( mais aussi en 5V) mais dont l interface est en I2C.

Avantage: les valeurs y sont dispo dans des registres que tu peux aller interroger lorsque tu le désires dans ta boucle de CPU principal.

Perso j ai une nette préférence pour travailler entre un CPU et un capteur sur la même plage de tensions sauf cas de l'I2C qui va porter les valeurs encodées par le sensor.

Laurent

219
Bonsoir

Je me suis donc remis sur une version simplifiée.

"Petit CPU" (MEGATINY 8 broches type ATTINY202/402/212/412).

2 rôles exclusifs l'un de l'autre sont possible selon le pontage de plots au verso de la carte:

  • Soit un mode pour gérer l'autoreverse en cas de détection de CC (LOOP MODE)
  • Soit un mode pour gérer la coupure d alimentation en cas de CC "prolongé ( MODE BREAKER)

Les paramètres seront encodés en dure pour chaque mode dans le code du CPU.
Il n'y aura rien à traiter de plus.

L'alimentation du montage est externe en +5V  &GND.
Un plot pour générer une interruption par impulsion permet de basculer le relais come la pression sur le switch poussoir.

On dispose d'un indicateur visuel sur la carte pour connaitre l'état.

On peut disposer de l'état vers l'extérieur.
Dans ce cas les modes d alimentation +5V ou une avec une autre tension ( ex +3V3) sont possibles.(leurs masses sont communes)

On n'exporte pas la lecture de la conso.

J'ai encore un peu de travail sur le code correspondant mais très bientôt dispo.

Je pense mettre:
A/ pour le mode breaker un seuil proche de 30 à 40ms avant coupure.
La sensibilité sera réglée pour 2A MAX (ce que peut supporter le relais)
Tout dépassement de cette conso plus de 30ms entraine la bascule

B/ 10ms à 20ms pour le mode reverse

Le seuil de détection peut ici être plus bas ( quelques mA) et tout dépassement à compter de 10ms entraine la bascule
A noter que le temps de bascule du relais est très voisin de 5ms. (HONGFA HFD2/005-S-L2) (https://www.tme.eu/Document/cb545971aaf7e641179e4750a1704dc9/HFD2_en.pdf)


Je suis preneur de vos avis sur ces valeurs de temporisation.

Plusieurs essais seront possiblement nécessaires pour trouver le juste milieu.

Laurent


220
J oubliais aussi de préciser que les versions avec la gestion du DCC incorporent non seulement le hard pour le traiter ainsi que leur propre alimentation DC-DC generant le 5V DC depuis le signal DCC.

Les versions de base n'incluaient pas:
    • une sortie produisant la valeur mesurée. ( sur un analoguWrite()


    A voir donc selon ce que l'on désire in fine.

    Laurent


    221
    Bonjour

    Tu as raison et je me dois de mieux expliquer ces évolutions.

    Aucune allergie au relais! "C 'est un acquis". J avais des doutes sur son temps de bascule qui ne peut être inferieur à 5-10ms en gros mais c'est "acceptable".

    Pour memo les centrales du commerce disjonctent en cas de CC au delà de 50 à 100ms.

    1/Autonomie totale ou non:

    A l'origine j ai imaginé mes premières versions comme des compléments modulables et enfichables pour le nouveau hardware des satellites autonomes.

    J avais en effet retenu un petit CPU ( MEGATINY 202 ou 402 par exemple en brochage à 8 broches au format SOIC8).
    Je pensais en effet qu'il n'est pas opportun de mettre une interruption sur le CPU principal des satellites qui ont déjà de quoi faire de leur coté. ( la fameuse boucle des 100ms dont tu as déjà parlé)

    2 sujets étaient à traiter:
    • le cas types boucles de retournements: " auto loop" pour gérer les inversions de polarités
    • la protection sectoriel ( "disjoncteur") au delà d un seuil et d'un temps de bascule (circuit breaker)

    A force de travail sur le routage du PCB, je me suis rendu compte que ces 2 éléments peuvent partager un hardware commun (un simple double pont à réaliser au dos du PCB permet de passer d'un modèle à l'autre).
    Toutefois il faut alors accompagner le paramétrage du code tournant sur le CPU.
    Un simple pont pourrait aussi résoudre en partie ce "dilemme". Oui mais...

    Il peut y avoir plusieurs valeurs possibles (seuil et temporisation notamment en fonction des hardware environnant ( ex Centrale du commerce)) . Donc, sauf à figer en dure ces éléments (à la fabrication et à l injection du code)  l'idée d'ajouter une possibilité de reconfiguration/paramétrage sous la forme d'un décodeur d'accessoire DCC qui permet de modifier des CV et offrir des réglages est venue. (Ce qui a imposé de changer le CPU d'origine par un plus "gros" toujours en MEGATINY mais en 20 broches cette fois ( choix reposant sur les dispo de CPU)

    Oui, une IHM web (sous un ESP32) est top pour le faire mais perso je ne sais pas (encore)  faire... Après un ESP32 dédié pourquoi pas mais ca me semble "riche"...

    On peut aussi utiliser ces éléments de façon autonome.(en dehors des satellites)

    2/évolutions hardware:

    Au niveau hardware les puissances à traiter imposent des choix notamment sur la sélection des relais:
    Les relais de signaux (bobinage 5V) coupent jusqu'à 30V sous 2A. Parfait pour notre usage de gestion des boucles mais un peu "léger" pour un disjoncteur sectoriel (avec un secteur étendu).  D'où une version "BIG" qui impose un relais plus "gros" capable de couper 5A ou 8A (à peine plus lent à la commutation).

    J'ai gardé sur tous ces hardware la possibilité de sortir les info et commander leur bascule/reset de façon externe.

    En cas de paramétrage de valeurs par CV par exemple on a besoin de plus de capacités coté CPU.

    A noter que sur le socle de base du satellite j'ai prévu un emplacement pour recevoir un INA219 ( sortie en I2C, qui mesure aussi tension et ampérage).

    Mais j'ai pensé que de confier ces taches à l ESP32 gérant le satellite n'était pas adapté  pour trois raisons:
    1- tache supplémentaire sur le CPU  principal ( ESP32)
    2- complexité au niveau de priorisation des valeurs reçues et de leur traitement. ( tu peux avoir des avis différents)
    3- les temps requis pour exploiter ces éléments.

    A ce stade on garde donc l'embarra du choix. Il peut encore y avoir des évolutions avant une production et nos échanges ici contribuent à enrichir les solutions qui seront retenues.
    Si on vise au plus simple alors on reste sur des versions "basics" ou c'est à l'injection d'un code "fixe" sans possibilité de réglages.
    Si on veut plus offrir des réglages il faut en tenir compte et permettre cette interaction sous une forme ou un autre.


    Laurent

    PS: les noms ont aussi évoluer pour harmonisation avec les termes Anglo saxon les plus souvent utilisés. POWERCUT = CIRCUIT BREAKER )






    222
    Bonjour

    Le "BIG" circuit breaker est réalisé.

    On pourra aller jusqu'à 7.5AMP dessus avant de le déclencher.

    Cette fois en revanche c est un ACS712 version 10 AMP qui sera requis.

    Un petit ajout aussi pour indiquer le niveau de charge présent par l'allumage de leds:
    <2A
    <4A
    <6A

    Indicateurs visuels précieux

    Lurent

    223
    Vos projets / Re : Mon projet de Centrale multisecteurs
    « le: janvier 28, 2024, 12:55:55 pm »
    Bonjour

    Le temps de bascule d un relais selon sa taille ( et donc son pouvoir de coupure) oscille de 3ms à 15ms ( milli secondes)

    C est à la fois long et court...

    Les centrales du commerce déclenche leur protection vers 80 100ms d ou les systèmes "rapide" pour commuter les polarités encas de détection de CC.

    Donc il faut aller vite!

    Sur les AVR récents un analogRead() unitaire  prend de l'ordre de 22us, si on les cascade pour avoir une valeur moyennée cela laisse encore un peu de temps pour interagir ensuite.

    L idéal c est bien sur quand il n y a pas de CC mais quand il y en a c es d'agir vite.

    Laurent

    224
    mais dans un secteur alimenté par un booster donné , il faut absolument laisser une des 2 files de rail sans coupure :
    1) parce que la double coupure est inutile , Laurent n'a rien démontré

    prenons l exemple d une LOOP ou d une section "ZAP" liée à deux cantons d'alimentation en "phases" opposées... Je vois mal l'inversion n'être réalisée s'il n'y a  pas de coupure des deux cotés...

    Le repiquage sert a cela au prix d un peu de fils.

    si tu as par exemple un évitement sur voie unique avec un aiguillage electrofrog à chaque extrémité , il y a déjà , d'office , 2 coupures au talon de chaque appareil : il suffit donc d'utiliser ces 2 coupures pour les 2 cantons situés entre les 2 appareils ; notons toutefois que dans ce cas , les 2 coupures se situent sur 2 files de railles différentes , il faut donc gérer ceci au niveau du module de rétrosignalisation
    c'est à la technique de s'adapter au réseau , aux choses , pas l'inverse

    C est quand même mieux quand nativement on évite d'avoir à gérer des détections de CC et interagir en fonction. Cela dit je ne vois pas encore ( tu dois avoir un train ou deux d'avance comment tu gères la détection au passage de la pointe pour auto adapter la polarité sur le cœur... alors que si on asservi le cœur à la position des lames et que la sécu fait le reste ( retro, règles,...) il n y a plus de sujet... sauf à s emmêler les pinceaux lors  du câblage!
    Quid dans tu as N cœurs repartis sur les rail de droite et de gauche dans un "ZAP"...?

    [/quote]

    225
    Vos projets / Re : Mon projet de Centrale multisecteurs
    « le: janvier 26, 2024, 01:54:08 pm »
    Bonjour Etienne

    Beau projet.

    Tu as un train de retard sur mes travaux du moment ;) qui sont la ligne que tu décrits ( mais a cause du relais choisi bridé sur MAX2A)

    J ai poussé plus loin en intégrant un décodeur d accessoire pour la configuration via CV des différents paramètres.

    (voir fil satellites)

    Laurent



    Pages: 1 ... 13 14 [15] 16 17 ... 41