Forum Électro-Bidouilleur

Merci de vous connecter ou de vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session

Auteur Sujet: Conception et fabrication d'un milliohmmètre (m. à .j. 16/06/2022)  (Lu 4140 fois)

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil

  courant sortie: 9,701mA (mise en marche)
courant sortie: 9,689mA (après 1 min) (-0,124%)
courant sortie: 9,660mA (après 5 min) (-0,42%)
courant sortie: 9,579mA (après 1h) (-1,26%)

La charge de test de valeur nominale 470mOhm.




II : Alimentation

Mais avant toute chose faisons un petit bilan de puissance approximatif :
Carte analogique :

10 mA de courant de mesure
2*2 mA pour les DEL  (J'ai augmenté la valeur de R1 et R8  à  4,7kOhm, elles étaient trop lumineuses avec 2,2 kOhm/4,5 mA)
5mA pour le régulateur linéaire
1mA pour l'amplificateur
le reste est négligeable

total: 20 mA, mesuré: 19,51 mA



Carte de contrôle :

10 mA pour le microcontrôleur (ATMEGA328P, peut réduire la consommation en utilisant les modes sommeil)
5 mA pour  le transducteur piezzo
5 mA pour le régulateur

total: 20 mA


Carte affichage :

afficheur 7 segments :
maximum 1,25 mA par segment * 7 segments * 4 sections  + 1,25 mA * 1 virgule (alim 5 V, résistances 680 Ohm, pas sûr que j'utilise les virgules)

total: 36,25 mA

Total système : maximum 76,25 mA


Le petit transfo devrait donc suffire.






Et voici la petite carte d'alim :




 

100 mA :

 


III : Affichage






Horloge processeur : Horloge interne RC ~= 8 MHz
Temps de réponse de la mesure affichée : ~=  2s
Fréquence de rafraîchissement de l'afficheur :         250 Hz
Fréquence de rafraîchissement de la valeur affichée :         10Hz
Fréquence sortie piezzo : ~= 500-2000Hz suivant la valeur mesurée
Fréquence échantillonnage : 100 Hz
Facteur de suréchantillonage :         x 128
Plage de mesure : ~= 0-3000 mOhm
Résolution de mesure sans suréchantillonage : ~= 5 m Ohm
Résolution de mesure avec suréchantillonage : < 1 m Ohm
Résolution d'affichage : 1 m Ohm



//Code Milliohmmètre

//Yohann MORANDY 2021
//Licence Attribution -  Partage dans les Mêmes Conditions 4.0 International (by-sa)
//https://creativecommons.org/licenses/by-sa/4.0/deed.fr


#include "afficheur.h"
#include "CAN_surechantillonneur.h"

afficheur affichage(4,250); //nombre de sections, fréquence de rafraîchissement

#define TENSION_REFERENCE_CAN 4990.0 //mV
#define SENSIBILITE_SYSTEME 0.9036 //mV/mOhm
#define TENSION_MAXIMALE  3400 //mV

#define RETARD_DEMARRAGE 60000 //ms, temps d'attente pour stabilisation thermique au demarrage
unsigned long tempsDemarrage = 0;

bool chargeConnectee = 0;

// CAN_surechantillonneur(byte broche, unsigned int resolution = 1024, float tensionReference = 5000.0, int echantillons = 16, unsigned int frequenceEchantillonnage = 100);
CAN_surechantillonneur CAN(A0,1024,TENSION_REFERENCE_CAN,128,100);

//assignation des broches
#define BROCHE_PIEZZO 9
#define BROCHE_BOUTON 4

float decalageZero = 0.0;


#define BROCHE_AFFICHAGE_T1 3
#define BROCHE_AFFICHAGE_T2 2
#define BROCHE_AFFICHAGE_T3 1
#define BROCHE_AFFICHAGE_T4 0
#define BROCHE_AFFICHAGE_D1 5
#define BROCHE_AFFICHAGE_D2 6
#define BROCHE_AFFICHAGE_D3 7
#define BROCHE_AFFICHAGE_D4 8
#define BROCHE_AFFICHAGE_D5 10
#define BROCHE_AFFICHAGE_D6 11
#define BROCHE_AFFICHAGE_D7 12
#define BROCHE_AFFICHAGE_D8 13


unsigned long dernierTemps = 0;
unsigned long periode = 100; //ms, periode de m.a.j. de l'affichage



void setup() {

  //configuration de l'afficheur
  affichage.brochesDiodes[0] = BROCHE_AFFICHAGE_D3;
  affichage.brochesDiodes[1] = BROCHE_AFFICHAGE_D4;
  affichage.brochesDiodes[2] = BROCHE_AFFICHAGE_D7;
  affichage.brochesDiodes[3] = BROCHE_AFFICHAGE_D6;
  affichage.brochesDiodes[4] = BROCHE_AFFICHAGE_D5;
  affichage.brochesDiodes[5] = BROCHE_AFFICHAGE_D2;
  affichage.brochesDiodes[6] = BROCHE_AFFICHAGE_D1;
  affichage.brochesDiodes[7] = BROCHE_AFFICHAGE_D8; //changement numerotation sequencielle broches -> numerotation segments ABCDEFG

  affichage.brochesTransistors[0] = BROCHE_AFFICHAGE_T1;
  affichage.brochesTransistors[1] = BROCHE_AFFICHAGE_T2;
  affichage.brochesTransistors[2] = BROCHE_AFFICHAGE_T3;
  affichage.brochesTransistors[3] = BROCHE_AFFICHAGE_T4;

  //configuration des broches
  affichage.init();

  pinMode(BROCHE_PIEZZO,OUTPUT);
  pinMode(BROCHE_BOUTON,INPUT_PULLUP);

 tempsDemarrage = millis();


}

void loop() {

  if(millis()-dernierTemps > periode) //effectuer le contenu de la boucle tous les periode ms
  {
    dernierTemps = millis();

    float valeurCAN = CAN.lireValeur();

    if(digitalRead(BROCHE_BOUTON) == 0)  decalageZero = valeurCAN; //calibration zero
   
    if(valeurCAN < TENSION_MAXIMALE) //charge detectee
    {
      float valeurAAfficher = abs(valeurCAN-decalageZero)/SENSIBILITE_SYSTEME;  //permet soit de court-circuiter pour calibrer puis de mesurer, soit de calibrer avec la charge puis de court-circuiter pour mesurer
      affichage.afficherNombreEntier(valeurAAfficher); 

      tone(BROCHE_PIEZZO,20000.0/(10.0+valeurAAfficher*0.05)); //sortie son piezzo

      chargeConnectee = 1;
    }
    else //pas de charge detectee
    {
      noTone(BROCHE_PIEZZO); //pas la peine de me casser les oreilles inutilement
      affichage.afficherChaine("----"); 
      chargeConnectee = 0;
    }

    if(millis()-tempsDemarrage < RETARD_DEMARRAGE) //retard au demarrage pour attendre que le systeme soit thermiquement stable, affichage du temps d'attente
    {
      String chaineAttenteS = (String("0000")+String(RETARD_DEMARRAGE-millis()-tempsDemarrage) );
      char* chaineAttente = chaineAttenteS.c_str();
      int longueurChaineAttente = chaineAttenteS.length();
      char chaineAttenteAffichage[4];
      chaineAttenteAffichage[0] = 'A';
      chaineAttenteAffichage[1] = 'T';
      chaineAttenteAffichage[2] = chaineAttente[longueurChaineAttente-5];
      chaineAttenteAffichage[3] = chaineAttente[longueurChaineAttente-4];
     
      affichage.afficherChaine( chaineAttenteAffichage ); 
    }

   
  }

 
  affichage.maj();
  CAN.maj();
   
 
}

//Code afficheur Milliohmmètre

//Yohann MORANDY 2021
//Licence Attribution -  Partage dans les Mêmes Conditions 4.0 International (by-sa)
//https://creativecommons.org/licenses/by-sa/4.0/deed.fr


#ifndef afficheur_inclus
#define afficheur_inclus

#include "Arduino.h"



class afficheur
{
  public:

  byte nombreSections; //maximum 8
  byte compteurSections;
  byte chiffres[8];
  byte virgules;
  byte brochesDiodes[8];
  byte brochesTransistors[8];
  unsigned long int periodeRafraichissement;       //en μs, rafraichit une section tous les periodeRafraichissement
  unsigned long int tempsDernierRafraichissement; 
  const byte tableDesCaracteres[18] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0b01000000,0b01110000};


  void init();
  void afficherNombreEntier(unsigned int nombreAAfficher);
  void afficherNombreDecimal(float nombreAAfficher);
  void afficherChaine(char chaineAAfficher[8]);
  bool maj();

  afficheur(byte sections, unsigned long int frequenceRafraichissement = 200);


};


#endif


//Code convertisseur A/N avec surechantillonnage

//Yohann MORANDY 2021
//Licence Attribution -  Partage dans les Mêmes Conditions 4.0 International (by-sa)
//https://creativecommons.org/licenses/by-sa/4.0/deed.fr


#ifndef CAN_surechantillonneur_inclus
#define CAN_surechantillonneur_inclus

#include "Arduino.h"



class CAN_surechantillonneur
{
  public:

  byte brocheEntree;
  int nombreEchantillons;  //max 256
  unsigned int compteurEchantillons;
  unsigned int *tableEchantillons;
  float mvParPalier;

 
  unsigned long int periodeEchantillonnage;       //en μs
  unsigned long int tempsDernierEchantillon;


  bool maj();         //mesure la tension et met a jour tableEchantillons
  float lireValeur(); //fait la moyenne des echantillons et retourne une valeur en mv

  CAN_surechantillonneur(byte broche, unsigned int resolution = 1024, float tensionReference = 5000.0, int echantillons = 16, unsigned int frequenceEchantillonnage = 100);
  ~CAN_surechantillonneur();

};


#endif

https://moutonceleste.fr/s/KCMqiitt5iGAkGr/download/code_miliohmmetre.7z

https://forum.bidouilleur.ca/index.php?action=dlattach;topic=1039.0;attach=3693https://creativecommons.org/licenses/by-sa/4.0/deed.fr

« Modifié: janvier 26, 2024, 10:47:57 am par Bricolabroc »
IP archivée

papyblue

  • Administrator
  • Hero Member
  • *****
  • Messages: 751
    • Voir le profil
Re : Conception et fabrication d'un miliohmmètre
« Réponse #1 le: septembre 30, 2021, 04:18:20 pm »

« Modifié: septembre 30, 2021, 04:37:36 pm par papyblue »
IP archivée

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre
« Réponse #2 le: septembre 30, 2021, 05:02:59 pm »

« Modifié: octobre 01, 2021, 10:15:37 pm par Bricolabroc »
IP archivée

papyblue

  • Administrator
  • Hero Member
  • *****
  • Messages: 751
    • Voir le profil
Re : Conception et fabrication d'un miliohmmètre
« Réponse #3 le: octobre 01, 2021, 04:00:43 pm »

IP archivée

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre
« Réponse #4 le: octobre 01, 2021, 04:54:59 pm »

Citer
tension entrée a vide:1,354V
courant sortie: 9,701mA (mise en marche)
courant sortie: 9,689mA (après 1 min, 70mA en sortie du régulateur)
courant sortie: 9,660mA (après 5 min, 70mA en sortie du régulateur)
courant sortie après 1h et 70mA en sortie du régulateur: à  mesurer

sensibilité (si gain=100): 0,9689mV/mOhm
tension sortie a vide:3.989V
tension sortie court circuit: 320,5mV
tension sortie charge 473mOhm: 774,5mV (mesure après 10s)

calcul mesure: (774,5-320,5)/0,9689 = 468,9mOhm   
« Modifié: octobre 01, 2021, 10:15:28 pm par Bricolabroc »
IP archivée

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre (m.à .j. 11/10/2021)
« Réponse #5 le: octobre 12, 2021, 03:29:52 pm »



Mesure d'une bande de nickel 0,125*8*100mm:
IP archivée

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre (m.à .j. 14/10/2021)
« Réponse #6 le: octobre 16, 2021, 05:05:27 pm »

 
IP archivée

loulou31

  • Administrator
  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre (m.à .j. 14/10/2021)
« Réponse #7 le: octobre 20, 2021, 07:31:54 pm »

IP archivée

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre (m.à .j. 14/10/2021)
« Réponse #8 le: octobre 20, 2021, 08:47:48 pm »



Yohann
IP archivée

papyblue

  • Administrator
  • Hero Member
  • *****
  • Messages: 751
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre (m.à .j. 14/10/2021)
« Réponse #9 le: octobre 21, 2021, 10:16:34 am »

IP archivée

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre (m.à .j. 14/10/2021)
« Réponse #10 le: octobre 21, 2021, 11:59:17 am »



Yohann
« Modifié: juin 16, 2022, 09:05:19 am par Bricolabroc »
IP archivée

papyblue

  • Administrator
  • Hero Member
  • *****
  • Messages: 751
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre (m.à .j. 14/10/2021)
« Réponse #11 le: octobre 21, 2021, 02:07:06 pm »

IP archivée

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
IP archivée

Bricolabroc

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Conception et fabrication d'un milliohmmètre (m.à .j. 14/10/2021)
« Réponse #13 le: octobre 24, 2021, 02:39:25 pm »






Yohann
IP archivée