Pages: 1 2 [3] 4 5 6   Go Down
Author Topic: aide en programmation testeur de court-circuit et pinnage  (Read 7455 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3436
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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.
Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4978
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour
comme expliqué ici ou ailleurs  smiley-mr-green
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" ?   smiley-roll ) , il doit bien être figé ? avec ses contraintes listées et/ou deduites ?

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

voici mon cahier des charges
merci!

* Cahier des charges.doc (297 KB - downloaded 17 times.)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour  à tous !

voici mon cahier des charges.


* Cahier des charges.doc (297.5 KB - downloaded 12 times.)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonsoir! à tous j'ai besoin d'aide s'ilvouplait!

voici mon code
Code:
#include "Wire.h"
#include <LiquidCrystal.h>

#define win1 0x20 // expandeur envoyeur

#define win2 0x22 //expandeur envoyeur

#define win3 0x21 //expandeur  envoyeur

#define win4 0x23 //expandeur  envoyeur

#define win5 0x24 //expandeur receveur

#define win6 0x25 // expandeur  receveur

#define win7 0x26 //expandeur  receveur

#define win8 0x27 //expandeur receveur


int dd=200;
int val= 0;
int val1=0;
//int valwin2=255;

byte a,c,d,e,f,g,h,j;
byte b;

int z;
int T[8];



// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


 void setup() {

Wire.begin();

Serial.begin(9600);
lcd.begin(16, 2);
  // Print a message to the LCD.
lcd.print(" court-circuit test");

 //allOff(); // les valeurs par défaut PCF8574N à élevé, de sorte cette fonction désactive toutes les sorties hors

}


void testfunc ( )

{


 Serial.println ();
Wire.beginTransmission(win1);
Wire.send(0x02);
Wire.endTransmission();
delay(2000);
Wire.requestFrom(win3, 7);
a = Wire.receive();
b = Wire.receive ();
c = Wire.receive ();
d = Wire.receive ();
e = Wire.receive ();
f = Wire.receive ();
g = Wire.receive ();
h = Wire.receive ();
Serial.println();
Serial.print ("RECEVOIR 1-");
Serial.print(a,DEC);
Serial.print(b,DEC);
Serial.print(c,DEC);
Serial.print(d,DEC);
Serial.print(e,DEC);
Serial.print(f,DEC);
Serial.print(g,DEC);
Serial.print(h,DEC);


}
void testfunc2()




 
if (a!=2)
{  lcd.begin(16, 2);
  // Print a message to the LCD.
   lcd.print("coupure ");
  //Serial.print("coupure");
}


}


 
void allOff()

{

Wire.beginTransmission(win1);
Wire.send(255);
Wire.endTransmission();
Wire.beginTransmission(win2);
Wire.send(255);
Wire.endTransmission();
//Wire.beginTransmission(win3);
//Wire.send(255);
//Wire.endTransmission();
//Wire.beginTransmission(win4);
//Wire.send(255);
//Wire.endTransmission();

}
void loop()

{

for (int z=0; z<10; z++)

{

testfunc();

}

for (int z=0; z<10; z++)

{

testfunc2();

}

}
  j'aimerai avec celui -ci effectuer mon teste de risque de court-circuit j'envois un état haut sur une broche de mon PCF8574 de nom de " win1" et je veux lire si j'ai cet état haut la  se trouve aussi sur une des autres broches du PCF8574.qui normalement devais être à zéro

mais, j'arrive pas !

Merci ! de m'aider .
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3436
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Faudrait jeter un coup d'oeil à la doc quand même http://arduino.cc/en/Reference/Wire.
Il n'y a pas de méthode receive() associée à la classe Wire.
Après tu demandes la lecture de 7 octets dans win3 mais de ce que j'ai vu dans la doc du composant il n'y a qu'un octet à lire donc je ne vois pas l'intérêt.
Ensuite si on suit la doc, il faut utiliser la méthode available() pour voir s'il y a des octets à lire avec read().
Maintenant je ne peux pas t'aider plus je n'ai jamais utilisé la librairie Wire.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok ! merci!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

VOICI MON teste de continuité
Code:
#include "Wire.h"
#include <LiquidCrystal.h>

#define win1 0x20 // expandeur envoyeur

#define win2 0x22 //expandeur envoyeur

#define win3 0x21 //expandeur  envoyeur

#define win4 0x23 //expandeur  envoyeur

#define win5 0x24 //expandeur receveur

#define win6 0x25 // expandeur  receveur

#define win7 0x26 //expandeur  receveur

#define win8 0x27 //expandeur receveur


int dd=200;
int val= 0;
int val1=0;
//int valwin2=255;

byte a;
byte b;
byte count;
int z;
int T[8];



// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


 void setup() {

Wire.begin();

Serial.begin(9600);
lcd.begin(16, 2);
  // Print a message to the LCD.
 
lcd.print(" test continuite");
//lcd.rightToLeft();

 //allOff(); // les valeurs par défaut PCF8574N à élevé, de sorte cette fonction désactive toutes les sorties hors

}

void testfunc2()



for (int y=1; y<9; y ++)

{
   Serial.println ();
// mettre toutes les broches de win1 a l'état haut
Wire.beginTransmission(win1);
Wire.send(val);
Wire.endTransmission();

// Lecture des valeurs
Wire.requestFrom(win3, 1);
a = Wire.receive();
Serial.println();
Serial.print ("RECEVOIR 1-");
Serial.print(a,DEC);
delay(dd+500);


if (a!=0 || b!=0)
{   
   //lcd.begin(16, 2);
  lcd.print("pin");
  lcd.print(y);
  delay(200);
  lcd.print("coupure ");
  Serial.print (" pin");
  Serial.print(y);
   delay(200);
  Serial.print("coupure ");
}
for (int y=9; y<16; y ++)
{
 
// mettre toutes les broches de win2 a l'état haut
Wire.beginTransmission(win2);
Wire.send(val);
Wire.endTransmission();
delay(dd+500);

// Lecture des valeurs
Wire.requestFrom(win4, 1);
b = Wire.receive();
Serial.print ("RECEVOIR 2-");
Serial.print(b,BIN);
delay(dd+50);
//afficher la pin d'éffectueuse
if (a!=0 || b!=0)
{

 Serial.print (" pin");
  Serial.print(y);
   delay(200);
  Serial.print("coupure ");

}
}
for (int y=16; y<25; y ++)
{
 
   
// mettre toutes les broches de win2 a l'état haut
Wire.beginTransmission(win);
Wire.send(val);
Wire.endTransmission();
delay(dd+500);

// Lecture des valeurs
Wire.requestFrom(win4, 1);
c = Wire.receive();
Serial.print ("RECEVOIR 3-");
Serial.print(  c,BIN);
delay(dd+50);
//afficher la pin d'éffectueuse
if (a!=0 || b!=0|| c!=0)
{

 Serial.print (" pin");
  Serial.print(y);
   delay(200);
  Serial.print("coupure ");
}
}




 
//void allOff()
//{

//Wire.beginTransmission(win1);
//Wire.send(255);
//Wire.endTransmission();
//Wire.beginTransmission(win2);
//Wire.send(255);
//Wire.endTransmission();
//Wire.beginTransmission(win3);
//Wire.send(255);
//Wire.endTransmission();
//Wire.beginTransmission(win4);
//Wire.send(255);
//Wire.endTransmission();

//}
void loop()

{
 
//for (int positionCounter = 0; positionCounter <16; positionCounter++) {
   
   // lcd.scrollDisplayRight();
   
    //delay(20);
 
   //delay(1000);

{

testfunc2();

}

}
j'aimerai réunir mes boucles mes je pense que c'est pas possible .
Cependant j'aimerai avoir vos avis .


Merci !
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3436
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
// mettre toutes les broches de win1 a l'état haut
Wire.beginTransmission(win1);
Wire.send(val);
Wire.endTransmission();
A cet endroit que vaut val???? Je serais étonné que val contienne 255. D'ailleurs ce groupe de lignes est répété un peu plus loin avec le même effet.

Code:
if (a!=0 || b!=0)
aïe, aïe aïe, b n'est pas initialisé dans cette partie de la fonction.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'ai déclaré" val" en int  dont je pars juste a chaque fois changer la valeur mais comme c'est mon teste de continuité; donc val =0

et a, b sont déclarer au début en byte se sont les valeurs respectives des régistres de mes PCF receveurs.

Cependant, avec ce programme je n'arrive pas à faire afficher " y" seul lorsque " a ou b" ne sont pas égale a zéro.

lorsque "a " est différent de zero, ou lorsque mes receveurs lisent une valeur différente de val ?
alors, ils doivent afficher la pin défectueuse.

Mon soucis, est qu'il le fait mais il se met a incrémenté Y pas la suite ;ce qui est normal vue mon code mais, j'aimerai savoir s'il peux juste m'afficher la valeur de la pin défectueuse et s’arrête .

J'ai pensé a créer une interruption pour ca .

Mais, je ne suis pas très professionnel en programmation .

Merci de m'aider!


Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour, à tous !

quelqu'un peut -il m'aidé ?

je cherche un expandeur semblable au PCF8575C mais , avec  une autre façon de l'adresser un peut comme le PCF8574N et le PCF8574AN .

Merci ! de m'aider
Logged

Belguim (Messancy)
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu  recherche un expandeur semblable au PCF8575C,  pour une question de support si cet cella moi j'utilise des PCA 9555n en support DIP .
Ce sons aussi des 16 In/Out Sur bus I2C.
Logged

« Ungibus et Rostro » (De bec et d'ongles)


Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

BONJOUR à Tous ,

il y a quelque temps je me suis inscrite sur ce site pour avoir de l'aide sur mon projet de TFE .

et j'ai eu plusieurs proposition qui m'ont aider jusqu'ici . J'ai même eu a y laissé  mon cahier des charges sur ce topic pour parler des différents teste que je devais réaliser .

Aujourd’hui encore je vous demande de l'aide  smiley-sad pour mon dernier teste qui est : le teste de risque de croisements entre les 3pins d'une même paire audio sur un multicables-audio .

par exemple : une paire est constituer de ABC  le teste consiste a dire si A est reliée à B ou C est reliée à B .

j'utilise des pcf8574 OU PCF8575  et j'ai pensé que je pourrai envoyer le code binaire 101 et si j'ai 011 ou 100 alors A ou C touche B .

je ne sais pas si c'est correct comme idée ou initiative .

Merci à tous  de vouloir  m'aide .

* Cahier des charges.doc (297 KB - downloaded 5 times.)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,

 j'ai des doute smiley-confuse sur ce programme j'aimerai savoir s' il est fiable ou non?

dans ce programme j'écris dans certains PCF et je lis dans d'autres que j'ai appelé" receveurs" .


Merci de me dire , si du moins j'ai bien programmer
Code:

#include "Wire.h"
#include <LiquidCrystal.h>

#define win1 0x20 // expandeur envoyeur

#define win2 0x22 //expandeur envoyeur

#define win3 0x21 //expandeur  envoyeur

#define win4 0x23 //expandeur  envoyeur

#define win5 0x24 //expandeur receveur

#define win6 0x25 // expandeur  receveur

#define win7 0x26 //expandeur  receveur

#define win8 0x27 //expandeur receveur

int dd=200;
int val= 0;
byte a,b,c;
byte count;
int state = LOW;



// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


 void setup() {

Wire.begin();

Serial.begin(9600);
lcd.begin(16, 2);
lcd.print(" test continuite");
//allOff(); // les valeurs par défaut PCF8574N à élevé, de sorte cette fonction désactive toutes les sorties hors


}

void testcontinu2()



for (int y=1; y<9; y ++)

{
   Serial.println ();
// mettre toutes les broches de win1 a l'état haut
Wire.beginTransmission(win1);
Wire.send(val);
Wire.endTransmission();

// Lecture des valeurs
Wire.requestFrom(win3, 1);
a = Wire.receive();
Serial.println();
Serial.print ("RECEVOIR-");
Serial.print(a,DEC);
delay(dd+500);


if (a!=0 || b!=0)
{   
   //lcd.begin(16, 2);
  lcd.print("pin");
  lcd.print(y);
  delay(200);
  lcd.print("coupure ");
  Serial.print (" pin");
  Serial.print(y);
   delay(200);
  Serial.print("coupure ");
}
y=1;
}
for (int y=9; y<16; y ++)
{
 
// mettre toutes les broches de win2 a l'état haut
Wire.beginTransmission(win2);
Wire.send(val);
Wire.endTransmission();
delay(dd+500);

// Lecture des valeurs
Wire.requestFrom(win4, 1);
b = Wire.receive();
Serial.print ("RECEVOIR 2-");
Serial.print(b,BIN);
delay(dd+50);
//afficher la pin d'éffectueuse
if (a!=0 || b!=0)
{

 Serial.print (" pin");
  Serial.print(y);
   delay(200);
  Serial.print("coupure ");

}

for (int y=16; y<25; y ++)
{
 
   
// mettre toutes les broches de win2 a l'état haut
Wire.beginTransmission(win5);
Wire.send(val);
Wire.endTransmission();
delay(dd+500);

// Lecture des valeurs
Wire.requestFrom(win4, 1);
c = Wire.receive();
Serial.print ("RECEVOIR 3-");
Serial.print(  c,BIN);
delay(dd+50);
//afficher la pin d'éffectueuse
if (a!=0 || b!=0|| c!=0)
{

 Serial.print (" pin");
  Serial.print(y);
   delay(200);
  Serial.print("coupure ");
}*/

}

 void loop()


{

  testcontinu2();
 
}



Logged

Pages: 1 2 [3] 4 5 6   Go Up
Jump to: