Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=signup Les demandes d'inscription sont révisées quotidiennement.

Menu principal
Menu

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.

Voir les contributions Menu

Messages - Zofran

#1
Pas eu le temps de bidouiller cette semaine, je pense que demain ou après demain je pourrais essayer.

Je ne connaissais pas la fonction switch, j'avais essayé des choses avec for et while, mais sans réussir à faire quelque chose de fonctionnel.

J'ai un peu de mal à comprendre cette modification du code proposé (surtout les deux premières lignes) :
lcd.setCursor(0, 0);
  lcd.print("                ");
  lcd.setCursor(0, 1);
  lcd.print("Point ");
  lcd.print(point);

Pourquoi "reset" les caractères de la première ligne qui n'est pas vraiment utilisé pour afficher les points ?

Je n'aurais surement pas toujours des contacts francs quand je toucherais les fils avec ma pointe de touche, est ce que, sans delay, ça ne vas pas provoquer des "rebonds" (comme pour les bouton poussoir) ?

Sinon, je viens de me rendre compte que je n'ai pas mis de résistances de pullup sur ma liaison I2C, pourtant je n'ai pas rencontré de soucis de communication...

#2
Hello,

Actuellement le projet est au stade de breadboard.

Sur la photo j'ai alimenté le circuit via une lipo et un régulateur L7805CV.
L'Atmega à droite n'est pas utilisé (mais c'est celui la qui sera intégré dans le montage final), je fais mes essais avec l'arduino.

Pour mon essai, c'est le fil bleu entouré en vert qui simule la future pointe de touche.



Et voici le code, à mon avis il peut être largement amélioré, j'espère ne pas avoir provoquée une crise cardiaque aux pros du code.  ;D
#include <Adafruit_MCP23X17.h>
#include <LiquidCrystal.h>

Adafruit_MCP23X17 mcp1;

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
 
void setup() {

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);

  // set up the MCP
  mcp1.begin_I2C(0x20);      // Utiliser l'adresse par défaut 0x20
  activationEntreeMcp1();
 
}
void loop() {
 
  if (!mcp1.digitalRead(0)){
  affichagelcd("A");
  }

  if (!mcp1.digitalRead(1)){
  affichagelcd("B");
  }

  if (!mcp1.digitalRead(2)){
  affichagelcd("C");
  }

  if (!mcp1.digitalRead(3)){
  affichagelcd("D");
  }

  if (!mcp1.digitalRead(4)){
  affichagelcd("E");
  }

  if (!mcp1.digitalRead(5)){
  affichagelcd("F");
  }

  if (!mcp1.digitalRead(6)){
  affichagelcd("G");
  }

  if (!mcp1.digitalRead(7)){
  affichagelcd("H");
  }

  if (!mcp1.digitalRead(8)){
  affichagelcd("J");
  }

  if (!mcp1.digitalRead(9)){
  affichagelcd("K");
  }

  if (!mcp1.digitalRead(10)){
  affichagelcd("L");
  }

  if (!mcp1.digitalRead(11)){
  affichagelcd("M");
  }

  if (!mcp1.digitalRead(12)){
  affichagelcd("N");
  }

  if (!mcp1.digitalRead(13)){
  affichagelcd("P");
  }

  if (!mcp1.digitalRead(14)){
  affichagelcd("R");
  }

  if (!mcp1.digitalRead(15)){
  affichagelcd("S");
  }
}

void activationEntreeMcp1() {
  for (int entree=0; entree <=15; entree++){
    mcp1.pinMode(entree, INPUT_PULLUP);
  }
}

char affichagelcd(const char* point){
  lcd.setCursor(0, 1);
  lcd.print("Point ");
  lcd.print(point);
  delay(1000);
  lcd.setCursor(0, 1);
  lcd.print("       ");
}
#3
Hello,

Le projet en tant que tel n'a pas beaucoup avancé.

Par contre j'ai appris à faire plein de trucs de débutant qui me seront utile pour le projet.

J'ai réussi à programmer un ATMEGA328 et l'utiliser en "standalone" (sans bootloader et en utilisant l'horloge interne).
J'arrive à afficher ce que je veux sur un écran LCD 16*2.
Je commence à bien comprendre l'usage des fonctions(paramètres) afin d'éviter des répétitions et de faciliter la lecture du code dans arduino IDE.
A partir d'un datasheet, je sais maintenant convertir une adresse I2C binaire en hexadécimal.

Je pense partir sur ce qui me semble le plus simple pour mon projet, le MCP23017 (avec la librairie adafruit), j'ai reçu l'échantillon la semaine dernière. Pour l'instant je l'ai juste branché et fais mumuse avec le choix de l'adresses I2C, j'ai aussi réussi la lecture de l'action d'un bouton poussoir sur une entrée.
#4
J'attends de recevoir des composants pour faire mes premiers essais.

J'ai acheté des 74HC165 et des mini-plaquettes PCF8575, j'ai envie de tester ces deux approches.

J'ai aussi vu (mais pas acheté) les MCP23017, qui semblent avoir le même fonctionnement que les PCF8575, disponible au format DIP, plus facile à souder pour mon montage final.
#5
Citation de: philchamp51 le Décembre 10, 2023, 01:24:19 AM
Bonjour.
Pourquoi veux-tu fonctionner avec des ponts diviseurs de tension ? Cela complique les choses. Si tu as besoin de beaucoup de connexions, tu devrais prendre un Arduino Mega 2560 qui possède 54 entrées/sorties et un afficheur LCD 1602. Avec un programme simple, cela qui t'indiquera sur quelle pin tu es de l'autre côté du câble.
Ayant déjà un arduino uno et aussi quelques atmega328 je n'ai pas du-tout envisagé d'utiliser un Mega 2560. C'est pour ça qu'avec le manque d'entrée, j'avais envisagé l'utilisation du pont diviseur.
Il est vrai qu'avec le nombre d'entrée suffisant du Mega 2560, ce serait plus simple.

Admettons que je veuille quand même poursuivre avec mon arduino uno, j'ai découvert hier, via une vidéo youtube, le registre à décalage 74HC165, est ce que ça pourrait faire le job pour ajouter des entrées supplémentaires ?

Si ça peut faire le job, ça va me permettre de m'amuser à coder deux méthodes différentes... C'est le but du projet, mettre les doigts dans l'arduino et apprendre à coder.
#6
Oui, sans contexte difficile d'imaginer à quoi peut servir ce montage.

Imaginons que j'ai une 100ènes de faisceaux contenant 25 câbles à fabriquer avec à chaque extrémité un connecteur.
Sans un appareil, je dois câbler le "connecteur mère", puis pour câbler le connecteur secondaire je dois "sonner" chaque câbles afin de les connecter sur la bonne pin du connecteur secondaire.

Avec mon projet arduino, je vais pouvoir connecter le "connecteur mère" sur l'arduino (chaque sorties de mon schéma correspond à une pin du connecteur).
Coté connecteur secondaire, en touchant un câble grâce au fil noir (GND), ça va me dire sur quelle pin je dois connecter mon câble dans le connecteur secondaire. Je ne sais pas si je suis assez clair ...  ;D

Pour l'exemple du câblage plus haut (je ne prend pas en compte la chute de tension des diodes dans le calcul des résistances et je n'ai fait que trois sortie pour tester) :
Il s'agit de deux ponts diviseur de tension avec une petite formule qui convertit en résistance :

Cas 1 (câblage de mon premier poste, fil GND sur la sortie C) :
Pont diviseur de tension A1 : 300 ohms
Pont diviseur de tension A2 : 100 ohms
==> Alors l'arduino me dit que c'est la sortie C

Cas 2 (câblage de mon premier poste mais j'ai les câbles en sortie A et B qui se touchent).
Les diodes en sortie A et B empêche le shunt
Pont diviseur de tension A1 : 300 ohms
Pont diviseur de tension A2 : 100 ohms
==> Alors l'arduino me dit que c'est la sortie C

Cas 3 (câblage de mon premier poste mais je touche sans faire exprès la sortie B et C avec mon fil noir (GND))
Pont diviseur de tension A1 : 200 ohms
Pont diviseur de tension A2 : 100 ohms
==> Normalement ça devrait être 300 Ohms en A1 pour que l'arduino m'indique la sortie C mais ce n'est pas le cas.
Alors l'arduino me dit que j'ai plusieurs sorties qui touchent le GND. (donc je dois bien faire attention de ne toucher qu'un câbles avec le fil GND).
#7
Hello,

Je suis en train de faire joujou avec un arduino.
Mon projet fonctionne bien quand je le simule avec tinkercad, mais le doute m'habite.

J'ai le sentiment qu'il y a un gros court-circuit que je ne vois pas ... C'est réalisable ce montage ou ça va complètement griller ?  ;D


#8
Merci pour vos retours.

La mesure sous 9A a une raison bien spécifique. Je veux respecter une norme précise. De plus, j'ai cru lire que plus le courant était fort et plus la mesure était précise.

En mettant l'alimentation en court-circuit la tension en sortie de celle-ci était faible et je craignais de ne pas avoir de tension à  mesurer aux bornes du fil.
C'est pour ça que j'ai ajouté une résistance de puissance 100W dans le circuit.

Merci pour le lien, je l'avais déjà  dans mes favoris  ;D
D’ailleur, je dispose aussi de milliohmmètre 4fils (pas de la marque sefelec) mais aucun ne génère 9A (c'est soit 100mA, soit 1A, soit 10A).

#9
Bonjour les bidouilleurs,

Je me pose une question sur ma manière de mesurer une faible résistance avec le principe de mesure Kelvin 4fils.

J'ai besoin de mesurer précisément la résistance d'une faible longueur de fil sous 9A.
Voici le circuit que j'ai réalisé :



La résistance sert uniquement à  générer un courant dans le circuit.

Est ce que ma résistance est R=U/I=0.05/9=0.0056=5,6mOhms ?

Merci par avance pour vos réponses  :D