aide en programmation testeur de court-circuit et pinnage

OKAY! merci pour le conseil

/ / Mux_Shield_DigitalOut_Example
/ / Http://mayhewlabs.com/arduino-mux-shield

/ *
Cet exemple montre comment afficher haute ou basse sur tous les 48 pins. Pour utiliser les broches analogiques que numériques, nous utilisons
numéros des broches 14-16 (au lieu de numéros analogiques 0-2). 

Pour simplifier ce code en outre, on peut utiliser pour les boucles imbriquées ou des appels de fonction.
* /

/ / Donner des noms pratiques pour les broches de commande
# Define CONTROL0 5 / / MUX broche de commande 0 (S3 est connecté à Arduino broche 2)
# Define Control1 4
# Define Control2 3
# Define Control3 2

void setup ()
{
  / / Définit les broches de commande MUX à la sortie
  pinMode (CONTROL0, OUTPUT);
  pinMode (Control1, OUTPUT);
  pinMode (Control2, OUTPUT);
  pinMode (Control3, OUTPUT);
}
  

void loop ()
{

  / / Comme tous les 3 multiplexeurs ont les mêmes broches de commande, le multiplexeur de données en ligne que nous voulons 
  / / Parler devrait être réglé pour la sortie et les deux autres lignes de multiplexeur doit être être «contournée» par 
  / / Fixer les repères d'entrée
    
  / / Activer la sortie numérique à la broche 14 (0 MUX) et éteindre les 2 autres broches de données du multiplexeur
  pinMode (14, OUTPUT);
  pinMode (15, INPUT);
  pinMode (16, INPUT);
    
  / / Cette boucle for est utilisée pour faire défiler le premier multiplexeur
  for (int i = 0; i <16; i + +)
  {    
    / / Les 4 commandes suivantes définir la logique correcte pour les broches de commande pour sélectionner l'entrée désirée
    / / Voir le bit à bit ET Arduino Référence: http://www.arduino.cc/en/Reference/BitwiseAnd
    / / Voir le Guide de référence Bitshift Aruino: http://www.arduino.cc/en/Reference/Bitshift
    digitalWrite (CONTROL0, (i & 15) >> 3); / / S3
    digitalWrite (Control1, (i & 7) >> 2); / / S2
    digitalWrite (Control2, (i & 3) >> 1); / / S1
    digitalWrite (Control3, (i & 1)); / / S0
    
    digitalWrite (14, HIGH);
    retard (100);
    digitalWrite (14, LOW);
    retard (100);
  }
  
  / / Activer la sortie numérique à broche 15 (1 MUX) et éteindre les 2 autres broches de données du multiplexeur
  pinMode (14, INPUT);
  pinMode (15, OUTPUT);
  pinMode (16, INPUT);
  
  / / Cette boucle for est utilisée pour faire défiler la deuxième multiplexeur
  for (int i = 0; i <16; i + +)
  {
    digitalWrite (CONTROL0, (i & 15) >> 3); / / S3
    digitalWrite (Control1, (i & 7) >> 2); / / S2
    digitalWrite (Control2, (i & 3) >> 1); / / S1
    digitalWrite (Control3, (i & 1)); / / S0
    
    digitalWrite (15, HIGH);
    retard (100);
    digitalWrite (15, LOW);
    retard (100);
  }
  
  / / Activer la sortie numérique à la broche 16 (MUX 2) et éteindre les 2 autres broches de données du multiplexeur
  pinMode (14, INPUT);
  pinMode (15, INPUT);
  pinMode (16, OUTPUT);
  
  / / Cette boucle for est utilisée pour faire défiler la troisième multiplexeur
  for (int i = 0; i <16; i + +)
  {
    digitalWrite (CONTROL0, (i & 15) >> 3); / / S3
    digitalWrite (Control1, (i & 7) >> 2); / / S2
    digitalWrite (Control2, (i & 3) >> 1); / / S1
    digitalWrite (Control3, (i & 1)); / / S0
    
    digitalWrite (16, HIGH);
    retard (100);
    digitalWrite (16, LOW);
    retard (100);
  }
}[code]

[/code]

Ne le prend pas mal mais je pense que tu prends le problème à l'envers.
Avant d'essayer de comprendre des bouts de code mal traduits avec google translate, tu ferais mieux d'écrire ce que tu veux faire.
Pour chaque test:
qu'est-ce que tu cherches à savoir
comment l'obtenir
en déduire toutes les étapes du test à dérouler
envisager les résultats que tu peux obtenir suivant que le câble et bon ou non. Et surtout bien appréhender comment tu pourras déduire les erreurs que tu cherches des résultats de tes tests.

Une fois que tu as fais cela pour les trois tests que tu envisages:
faire une synthèse des tests
voir si tu peux utiliser le même hardware pour les 3 tests

Une fois que tu auras fait ça tu pourras commencer à coder.

MERCI!

rassure toi , je suis entrain d'apprendre donc , je suis soumisse à toute proposition .

Je ne suis pas une pro de la programmation , et aussi concernant le hardware que je pourrais utiliser je suis ouverte à toutes propositions , car je n'est pas beaucoup d’expérience dans ce domaine . C'est mon premier stage et ma première expérience

Pour mon teste de la continuité j'ai opté pour un multiplexeur analogique 4051

Je n'ai rien à ajouter aux conseils de fdufnews, je les partage intégralement.
Ne cherches surtout pas un code qui "tombe en marche".
Défini bien tout ce dont tu as besoin et tout ce que tu dois faire.

Tu ne nous as toujours pas dit comment était constitué ton multicable audio.
Chaque fil est-il blindé individuellement ?
Le fil aller et le fil retour (chacun blindé ou pas) sont-il dans un blindage à leur tour ?
Le multicable contient combien de câbles élémentaires ?

Est-ce que les tests que tu dois faire sont en tout ou rien : ça conduit ou ça conduit pas (Go/NoGo) ou faut-il quantifier un paramètre ?
Tu parles d'envoyer une séquence dans le fil en test, quel est l'intérêt ? Une séquence sous entend une réponse fréquentielle, est-ce bien ce que tu dois faire ? Si un simple test continu suffit le programme sera simplifié.

Il y a une vingtaine d'année j'ai partagé un bureau avec un chef de groupe informatique. Je ne comprenais rien à ce qu'il faisait mais j'ai été surpris de voir que lui et son groupe passaient plus de temps à écrire de longs textes en français décrivant le programme qu'à la programmation proprement dite.
Dans ton cas c'est pareil : si toutes les hypothèses et demandes sont correctements identifiées et couchées sur le papier la programmation ne posera pas de soucis.

Pour mon teste de la continuité j'ai opté pour un multiplexeur analogique 4051

OK ça on a compris.

Mais on ne sait pas comment tu veux l'utiliser. Comment veux-tu conduire le test pour t'assurer que les liaisons sont bonnes et qu'il n'y a ni coupure, ni court-circuit, ni croisement?

Décris nous le déroulement des tests pour que l'on puisse t'aider.
Un programme ça commence par une analyse du besoin suivi d'une description des tâches à réaliser.
Une fois les tâches clairement posées, on peut commencer à coder. De ce bon découpage à l'origine va en découler un programme claire, simple et facile à faire évoluer et à mettre au point.
Chaque tâche devient une fonction dans le programme.
Chaque tâche se découpe, elle même, en d'autre sous-tâches qui vont donner d'autres fonctions.
Jusqu'à ce que l'on arrive aux fonctions de bas niveau celles qui vont adresser directement le matériel.

Toutes ces étapes s'écrivent en français et sont totalement indépendantes du langage de programmation que tu vas utiliser.
Tu les écris, dans l'ordre où elles se déroulent. Tu en déduis les traitements répétitifs qui vont donner lieu à des boucles dans ton programme.
Une fois que tu as tout écrit, tu suis le déroulement à la main de toutes les étapes en imaginant ce qui va se passer si le câble en test en bon ou non. Et tu vois si c'est bien ce que tu voulais obtenir.
Et là tu peut commencer à coder.

Bonjour, fdufnews

moi je pensais , comme je l'avais dit précédemment pourvoir identifié chacune de mes paires par des codes binaires différents que je dois envoyer de l'entrer mâle et à la sortit femelle je dois récupérer le même code dans le cas contraire , mon code en question auras trois possibilité vue que le croisement dans une paire n'offre que trois possibilité que sont par exemple:

si je prends les câbles soc apex 37 PINS dont les pinnage possible sont :

donc j'envois un code par exemple pour la première paire : 101 si j'ai 110 alors, il y a croisement entre la pin 2 et 3
si j'ai 011 alors, il y a croisement entre la pin 1 et pin 2

c'est vrai que je ne pourrais pas observer le croisement entre pin 1 et pin3 . mais, bon! je crois que je m’arrêterai là!

numérisation0003.pdf (891 KB)

Il faut que tu puisses tester des câbles avec 37 points?

bonsoir! oui!

Bonjour, fdufnews

vous m'avez donner une bonne idée sur le fait de choisir d'abords le hardware et j'ai demander de l'aide à skywodd et il m'a conseillé des

expandeur comme le PCF8574

Merci!

Bonjour,
pour pouvoir faire le test sur toutes les pins, il te faut 2*(37+1) = 76 I/O !!!
Pas possible avec le PCF8574 Il t'en faudrait 10 et il n'a que 3 fils d'adresse.
Il faut donc en utiliser au maximum 8 et compléter avec des PCF8574A
Plus d'infos ici :

Je te conseille plutôt d'utiliser le PCA9555. Il fait 16 bit de large, il ne t'en faudra que ... 5 !
Ne pas oublier de mettre une résistance en série avec toutes les sorties pour protéger ton circuit.
Tiens nous informé du résultat.
Au boulot !
Jacques

merci! pour votre conseil JMe87

j'avais aussi constater que les bits d'adresse ne me permettaient d'avoir que 8 possibilité de PCF8574N.

Et maintenant j'étais entrain de voire comment je pouvais augmenter mon nombre de PCF8574N. Donc, merci! pour votre aide on dirais que vous avez lu dans mes pensé :slight_smile:

Cependant, pour mon projet mon nombres totale de pins a tester est 147. Car, je dois tester le DB25, les Socapex et les LK .

qui sont des multicables audio.

et donc je pense utiliser 6 PCF8574 pour les DB25

5 PCA9555 pour les soc apex (37pins)

et je cherche encore un composant similaire pour le LK( 85 PINS).

Par ailleurs, j’espère que PCA9555 utilise le langage C comme le PCF8574

Merci!

VOICI la référence pour avoir une idée des soc apex que je dois testé Historique - ESL FRANCE

VOICI la référence pour avoir une idée des soc apex que je dois testé Tech Stuff - RS232 Cables and Wiring

Re,
cela fait 3 jours que l'on te demande combien de pins tu dois tester. Hier c'était des cables 37 maintenant tu parles de cables 85. Quand vas-tu t'arreter ?
Dans une autre vie, j'avais contribué à la réalisation d'un équipment pour faire ce genre de test.
Soit tu réalises des montages dédiés à chaque cable soit tu utilises le même processeur avec des cartes d'adaptation. Cela te permet de réaliser un montage qui comporte "seulement" le nombre d'I/O necessaire pour le plus gros connecteur.
Mais, si tu veux mesurer la continuité de tous les fils d'un cable a 85 conducteurs, il faut 170 I/O.
Ensuite tester la continuité, ce n'est rien mais les court-circuits c'est une autre histoire.
Dans le cas le plus défavorable tu pourrais être amenée a faire 2^84 mesures. Soit avec un arduino qui commande un bus I2C avec un soft qui n'est pas optimisé pour la vitesse, des jours de calcul (au pifometre)
Voila mon avis
Jacques

Tu peux obtenir un résultat similaire en utilisant de bête registres à décalage. Il n'y a pas de problème d'adresse puisqu'ils se cascadent directement. C'est facilement extensible, si demain il faut tester 300 points il suffit d'ajouter quelques registres supplémentaires.

J'attire ton attention sur un autre point. Dans le pire des cas, tu peux très bien avoir 2 points de connecteurs en court-circuit. Cela veut dire qu'il faut peut être prendre quelques précautions sur les sorties du circuit que tu utiliseras.

skywodd

me proposait pour les risques de court-circuit, d'envoyer du 5V sur une des pins et tester si j'ai du 5V sur les autre pins

si c'est le cas , alors c'est qu'il y a court-circuit!

j'ai eu à utiliser des registre a décalage , et même le multiplexeur 4051 pour le teste de court-circuit

le soucis ici est mon nombres limité de pins sur mon ATMEGA 328 .

et concernant le registre à décalage c'était un 74HC595N

bonsoir
je prend en cours de route, mais j'ai lu les messages jusqu'ici
in fine cela consiste à verifier si un motif de cablage est conforme en continuité electrique
il "suffit" d'ecrire dans un tableau X/Y avec comme valeur 0 pas de continuité, 1 pas de continuité.

pour la discussion, la facilité et compte tenu du dimensionnement, je partirais sur un tableau X/Y de 96X96

pour l'injection je suis partisan comme fdufnews de l'utilisation de registre à decalage cascadables
pour le scan je me tournerais vers des demux CD4067 (16 sorties) 96 adresses peuvent etre commandées par 24 bits, directement avec 3 ports 8bits ou pourquoi pas aussi avec des registres à decalage pour l'adressage.

sauf gros plantage de ma part (je rentre de WE :grin: )
la durée de verification totale du motif est fonction du delay mini d'adressage et de lecture par l'arduino.
en mettant ça à 5µs le pas , ça doit tourner aux alentours de 50 ms (~ 10000 X 5µs) et meme avec un facteur 50 pour la durée du test ce n'est pas rédhibitoire.

Bonjour,

merci pour vos idées . si je comprends bien vous me demander de d'utiliser des registres a décalage pour le teste de continuité et d'utiliser les multiplexeurs / démultiplexeurs 4067 pour le teste de risque possible de croisement entre les pins d'une même paire?

et le multiplexeur / démultiplexeur 4051 alors ?

Cependant, j'ai déjà ces composants et sauf le 4067 que je n'est pas , mais à la place j'avais prix le 4051 pour une question de budget .

Par ailleurs, le problème comme je l'explique depuis le début est que je ne dois pas mettre une carte arduino entière dans mon projet je l'utilise juste pour mes testes sur breadbord , dans la réalisation de ma carte complet j'utiliserai juste l'atmega 328 qui est celui de mon arduino .

Mon principal problème est la programmation , j'ai pas énormément d'expérience comme beaucoup d'entre vous dans ce domaine sinon je ne vous embêterai pas .

Merci!

si je comprends bien vous me demandez d'utiliser des registres a décalage pour le test de continuité et d'utiliser les multiplexeurs / démultiplexeurs 4067 pour le test de risque possible de croisement entre les pins d'une même paire

Non on ne te demande rien on te donne des pistes. A toi de faire ton choix en fonction de tes impératifs.
On peut utiliser indifféremment des multiplexeurs ou des registres à décalage pour ce genre de fonctions.

Le multiplexeur est plus rapide, tu choisis directement la sortie que tu veux voir on positionnant les bits de sélection mais par contre il faut plusieurs broches pour sélectionner les voies et assez rapidement avec des plateformes comme l'arduino on se trouve à court de broches si on veut piloter séparément des multiplexeurs sur les entrées et les sorties (ce qui est nécessaire pour tester les courts-circuits et les croisements)

Le registre à décalage est plus lent puisqu'il faut générer autant de coups d'horloge que la longueur du registre. Mais, en contre partie, il suffit de 3 ou 4 broches par registres quelle que soit sa longueur. Et il est facilement extensible on ajoute un registre à la suite des précédents sans rien changer d'autre au hardware (et sans consommer de broches supplémentaires)

Maintenant la balle est dans ton camp tu évalues ton besoin, ton budget et tu fais ton choix.

bonjour
comme expliqué ici ou ailleurs :grin:
Ici on te donne des pistes, j'ai evoqué des 4067 mais si tu a des 4051 , c'est kif-kif fonctionnellement au moins pour la fonction mux/demux.
il te faut déjà poser correctement sur papier les fonctions à dérouler en fonction du "cahier des charges" , d'ailleurs "ce cahier des charges" si c'est pour un projet de fin d’étude (à rendre pour cette fin d'année "scolaire" ? :roll_eyes: ) , il doit bien être figé ? avec ses contraintes listées et/ou deduites ?