Auteur Sujet: DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS  (Lu 16086 fois)

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #15 le: février 28, 2024, 12:36:46 pm »
Bonjour

Fraichement reçu à l instant, il me reste quelques ajouts de composants à faire ( connecteurs, OPTO MOS)  avant d entamer les tests en fin de semaine...

Ltr

Etienne66

  • Jr. Member
  • **
  • Messages: 98
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #16 le: février 28, 2024, 08:19:36 pm »
J'ai un doute sur ton shéma.

Tu génères le +5v à partir du DCC, mais quand il y a un court-circuit le DCC tombe à 0 donc le 5V aussi.

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #17 le: février 28, 2024, 09:32:55 pm »
Etienne

Il y a une "subtilité".

En effet le 5V provient bien du DCC mais du DCC coté BOOSTER/CENTRALE, partie qui n'est en principe pas coupée lors de la bascule du montage car pris en amont. Le temps de bascule du montage est en effet plus petit que celui coté centrale. (source d alim DCC)
Le montage n'est privé d'alim que si la centrale coupe et donc qu'il y a pas de besoin/possibilité de de surveiller ou d inverser.
C était un choix, mais il pourrait aussi être modifié pour une alim externe.

Dans le montage l'ACS712 prend aussi une mesure cote "boucle" qui n'inclue pas la propre conso du montage.

Le reste est encore à éprouver naturellement. Le code compile. A tester donc avec tous les assemblages finalisés.

Ltr

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #18 le: février 29, 2024, 01:14:50 am »
Bonjour

Premier tests:
Programmation du montage: petit écueil il faut pour cela "démonter" la résistance reliée au  port UDPI pour pouvoir programmer le chip.( sinon message d erreur! Et prog impossible.)

Je devrai ajouter un "bridge" pour éviter ce genre de manip à l'avenir pour la phase injection.
En fait le port UDPI est utilisé non pas de façon exclusive pour la programmation mais comme GPIO d'usage général en mode RUN. (c'était un choix d attribution de broches qui pourrait être résolu par la sélection d'un CPU avec plus d IO et garder le port UDPI de façon exclusive)

Aussi ceci a pour conséquence aussi qu'en écrivant les fuses du CPU il faut alors disposer d'un programmateur à "haute tension" pour le "debriker" si on a flaché les fuses pour passer la broche UDPI en GPIO.  8)

En version finale tout ceci ne sera pas nécessaire puisque tout le travail en amont de mise au point aura été réalisé.

On a la possibilité d'en fabriquer un soit même pour un cout assez modique en suivant les info disponibles ici:
http://www.technoblogy.com/show?48MP

L'autre alternative est d'utiliser des programmateurs disposant de cette option d'injection du 12V en mode "récupération".
A priori un PICKIT4 fait le job.

N'en disposant pas (je suis équipé entre autre d'un ATMEL-ICE) et après quelques recherches je suis tombé sur "le produit qui va bien" pour m'aider dans cette phase de trouble shoot.

Un "debriker" autonome.

Plusieurs versions du produit existent. L'une est exclusive aux MEGATINY,  autre supporte les AVR Dx et les MEGATINY.

Version MEGATINY
https://www.tindie.com/products/microprogrammers/attiny-updi-high-voltage-fuse-repair-programmer/?pt=ac_prod_search#product-description

Version AVR Dx et MEGATINY:
https://www.tindie.com/products/microprogrammers/dual-mode-high-voltage-updi-fuse-repair-programmer/

Je suis donc en attente de la réception de ce précieux outils de mise au point. En attendant je vais utilisé un autre carte pour tester. Seule sera indisponible temporairement la notification externe de CC.

A noter que le site propose différents petites cartes bien utiles. (dont des cartes de tests de CPU, des programmateurs, ...)

J ai par exemple utilisé avec bonheur cette carte de programmation autonome:
https://www.tindie.com/products/microprogrammers/avr-updi-standalone-mass-production-programmer-v2/

En gros on y injecte le code compilé de la puce que l'on veut programmer, on configure quelques options depuis un menu (flash des fuses par exemple)  et ensuite plus besoin de PC. On relie ce programmateur autonome au chip en question et  la pression d'un bouton fera la reste avec un affichage visuel sur led du résultat produit.

Bon voila... la suite très bientôt :)
« Modifié: février 29, 2024, 01:49:48 am par laurentr »

Etienne66

  • Jr. Member
  • **
  • Messages: 98
    • Voir le profil
Re : Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #19 le: février 29, 2024, 06:49:32 am »
Etienne

Il y a une "subtilité".

En effet le 5V provient bien du DCC mais du DCC coté BOOSTER/CENTRALE, partie qui n'est en principe pas coupée lors de la bascule du montage car pris en amont. Le temps de bascule du montage est en effet plus petit que celui coté centrale. (source d alim DCC)
Le montage n'est privé d'alim que si la centrale coupe et donc qu'il y a pas de besoin/possibilité de de surveiller ou d inverser.
C était un choix, mais il pourrait aussi être modifié pour une alim externe.

Dans le montage l'ACS712 prend aussi une mesure cote "boucle" qui n'inclue pas la propre conso du montage.

Le reste est encore à éprouver naturellement. Le code compile. A tester donc avec tous les assemblages finalisés.

Ltr
Je ne parle pas du moment où ça bascule, mais du moment où on a le court-circuit.
U = R * I
R = 0  -> U = 0
Ta centrale ne produit plus de volts ou presque au moment du court-circuit. Tu auras un petit voltage résiduel dù à
la résistance des fils mais si tu es proche de la voie et loin de la centrale il en reste encore moins dans ton circuit.

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #20 le: mars 01, 2024, 11:56:07 am »
Bonjour

Mes tests se sont poursuivis avec des succes et quelques "déconvenues".
Outre une petite erreur de codage finalement corrigée j'ai pu valider les éléments suivants:

bascule des optonmos selon une commande  issue de du CPU
traitement visuel de l'info sur les leds.

maintenant les conditions de déclanchement sont à revoir.
J avais pensé utilisé les interruptions matérielles  liées aux pins ( A1 A2 A3) mais à l usage... il y a trop de rebonds. Et je pense qu'il faut un bon petit "debonce" dans la boucle dont la valeur va être à trouver (peut être autours de quelques dizaines de uS? je prends vos avis!)

AttacheInterupt() sera donc de mise!

Laurent

Etienne66

  • Jr. Member
  • **
  • Messages: 98
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #21 le: mars 01, 2024, 05:08:26 pm »
Quand un cc est détecté tu inverse la polarité des rails et il faut lancer un timer.
A cause des condensateurs le détecteur va continuer à afficher le cc (il faut que tu mesures ce temps de retour à 0)
et il ne faut pas réinverser la polarité pendant ce temps.
Après ce temps si le cc existe toujours il faut déclencher la protection sinon on stoppe le timer après un certain temps.
Mais tant que le timer tourne on n'inverse pas la polarité.
Tu peux mettre le reset du timer à 1 seconde. On n'a pas besoin de plus rapide pour une boucle de retournement.

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #22 le: mars 02, 2024, 01:55:39 am »
Bonjour Etienne

A quel type de "timer" pense tu? :
un comparo avec un seuil sur micros()- xxx >seuil de bascule avec une boucle while() par exemple

ou un timer hardware ( type TIMERB) dont on surveille le CNT au niveau du seuil et dont le start est fait par la confirmation post debounce de l interruption de bascule de la condition?

D'autres propositions?

Ltr

Etienne66

  • Jr. Member
  • **
  • Messages: 98
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #23 le: mars 02, 2024, 09:08:34 am »
2 boucles while avec 2 valeurs de temps :

on attend que le cc revienne à 0 ou qu'on atteigne T1
si on atteint T1 avant que ça revienne à 0 c'est un vrai cc donc on coupe
sinon deuxième while jusqu'à T2 et on remet tout à 0

Etienne66

  • Jr. Member
  • **
  • Messages: 98
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #24 le: mars 02, 2024, 09:23:26 am »
Chronologie :

0  court-circuit
1er while
Ta tu inverses donc plus de cc (ou pas)
Tb les condos sont déchargés si pas de cc -> la 1ère boucle while se termine si pas de cc
T1 la 1ère boucle while se termine avec cc donc on coupe
2ème while
T2 on reset

Donc réaction rapide pour boucle de retournement et temps de réaction T1 pour les vrais cc.

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #25 le: mars 02, 2024, 05:50:55 pm »
Bonjour Etienne

J'avais la trame suivante en tête:

a/CC
b/ détection CC sur broche d'interruption par bascule de son état (selon le montage en entrée  soit RISING soit FAILLING)
c/ ISR avec bascule d une variable xx= z d'un GPIOR ( ultra rapide)
d/ exploitation de cette variable dans la loop du programme principal : if(variable ==z)
Debounce de cette variable par confirmation sur un delais antirebond via lecteur valeur de brcohe et lock du process (if ((PORTx.IN & 0bxxxxxxxx) = 0bxxxxxxxx)) ( on pourrait voir la pour mettre un timer hardware typeB et compter jusau à un evaleur du CNT qui nous donne un delais à exploiter)
transformation de cette variable en xx=y si OK sinon après un delais recheck des conditions sur les broches d interruption par un if ((PORTx.IN & 0bxxxxxxxx) = 0bxxxxxxxx)
e/ dans la loop exploitaiton de la variable xx = y avec les actions de bascule (toogle en entrée puis application des valeurs sur les broches) puis purge du statut de cette variable xx= z qui est le mode run usuel.


Voila un peu à quoi cela pourrait resembler:

void loop()
{
   

  if(STATE == PROTECTION_MODE)
  {
    CIRCUIT_BREAKER_OPEN();

    LED_NRM_OFF;
    LED_REV_OFF;
    LED_CC_ON;
  }

  if(STATE == CC_DETECTED)
  {
    //WE DEBOUNCE HERE CC STATE   
   
    // 1/ CHECK PORT STATUS:
    // FIRST STATUS CHANGE TAKE IN COUNT ONLY TO SET LOCKER
    noInterrupts();
    if(((PORTA.IN & 0b00000110) == 0b00000110) && (LOCK_CHANGE == false)) //PIN PA1 or PA2 IN @ HIGH STATE DUE TO CC
    {
      //DEBOUNCE
      LOCK_CHANGE = true;
      interrupts();
      lastDebounceTimeinus = micros();     
    }

    //DISCARD ANY BOUNCE IF CHANGE YET IN PROGRESS AFTER FIRST CHANGE: SO ANY NEW CC INTERUPT WILL BE IGNORED TILL CHANGE IS NOT OVER
    if(((PORTA.IN & 0b00000110) == 0b00000000) && (LOCK_CHANGE == true)) //PIN PA1 or PA2 or both IN LOW STATE
    {
      //CANCEL ANY BOUNCE EFFECT
      STATE = CC_DETECTED;
    }

    if(LOCK_CHANGE == true)
    {       
      if(micros() - lastDebounceTimeinus > debounceDelayinus)
      {     
        noInterrupts();
        //DEBOUNCE DONE SO NEED TO UPDATE STATUS TO CONFIRM IT     
        LOCK_CHANGE = false; //RELEASE LOCKER
        STATE = CC_CONFIRMED; //UPDATE STATUS FOR NEXT STEP
        interrupts();
        return;     
      }
      else if(micros() - lastDebounceTimeinus < debounceDelayinus)
      {
        //NO CHHANGE YET
        STATE = CC_DETECTED;     
      }
    }
    else if(LOCK_CHANGE == false)
    {
      if((micros() - lastDebounceTimeinus > debounceDelaytimeoutinus))
      {
        noInterrupts();
        LOCK_CHANGE = false;     //RELEASE LOCKER
        STATE = NORMAL_RUN_MODE; // SWAP IN NORMAL RUN MODE
        interrupts();
        return;
      }
      else
      {
        STATE = CC_DETECTED;
      }     
    }


Surement encore très perfectible...

Laurent
« Modifié: mars 02, 2024, 06:17:09 pm par laurentr »

Etienne66

  • Jr. Member
  • **
  • Messages: 98
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #26 le: mars 02, 2024, 06:14:12 pm »
attention deux erreurs de syntaxe non détectées par le compilateur:
STATE == CC_DETECTED
au lieu de
STATE = CC_DETECTED
2 fois

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #27 le: mars 02, 2024, 06:20:08 pm »
Merci Etienne

Je travaillais dessus en y apportant quelques modif également et je les avais corrigé entre temps.

J'ai donc actualisé le code aussi en quelques points. (dans la trame if STATE == CC_DETECTED) correspondant à  timing avant rebascule.

Mais tout n'est pas encore finalisé J y travaille et toute aide comme la tienne est appréciée et bienvenue
Encore merci

Ltr

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #28 le: mars 07, 2024, 01:19:24 pm »
Bonjour

J'ai reçu mon "DEBRIKER".

Il n'y a plus qu'à le mettre en œuvre!

Ltr

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : DETECTION ET PROTECTION CONTRE LES COURT-CIRCUITS
« Réponse #29 le: mars 08, 2024, 01:11:41 pm »
Bonjour

Utilisé avec bonheur et simplicité hier soir!

Remarquable, simple et efficace!
Un outils très utile finalement.

Laurent.