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 - Mdtdamien

#1

Citation de: Mdtdamien le Février 14, 2023, 06:27:31 PM

puis je court-circuité toute cette partie entre le fils en rouge et le point "MAX 130mA" sans risque pour les transistors et la logique de commande.

Non vaut mieux Q9412.

Peux tu développer, je n’ai pas bien saisi le
« Non vaut mieux Q9412 Â»
merci.
#2
après recherche dans la documentation fournis par @papyblue (merci encore)
on trouve cet bloc assurant la mise en marche d'un ventilateur.

Question, quelle sont les roles de
-  R9410 ( 0 ohm ? )
- R9411 OPEN ?

puis je court-circuité toute cette partie entre le fils en rouge et le point "MAX 130mA" sans risque pour les transistors et la logique de commande.
#3
Merci pour vos réponse.
@loulou31 comment le fait de refroidir les radiateurs sur le quelle sont monté les transistors de puissance peut leur être préjudiciable ?
#4
Amis bidouilleur Bonjour, je suis à  la recherche des schémas pour l'ampli Marantz SR7015.
savez vous ou l'on peut obtenir ce type de schéma.

J'aurai souhaiter pouvoir ajouter une mise en marche manuel des 2 ventilateurs qui sont loger sous les transistors de puissance.
#5
Le code que j’ai proposé est pour une utilisation de l’arduino comme Maitre Modbus.
Quelle est ton système de télégestion. Je pensé que tu avais un appareil comme un TSX37( Schneider) qui peut être maître ou esclave.
#6
Bonjour, ci-joint le code pour la lecture d'un compteur socomec DIRIS A-14

tu auras besoin d'intégré la bibliothèque
https://github.com/syvic/ModbusMaster
enleve tous ce qui est en rapport à  blynk si tu ne souhaite pas utiliser ceci comme interface
https://blynk.io/



Citation/*************************************************************
  This example shows how to use Arduino Ethernet Shield 2 (W5500)
  to connect your project to Blynk.

  Note: This requires Ethernet2 library
    from http://librarymanager/all#Ethernet2

        Pins 10, 11, 12 and 13 are reserved for Ethernet module.
        DON'T use them in your sketch directly!

  Feel free to apply it to any other example. It's simple!
*************************************************************/

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


#include <SPI.h>
#include <Ethernet2.h>
#include <BlynkSimpleEthernet2.h>
#include <ModbusMaster.h>               //Library for using ModbusMaster

#define MAX485_DE      3
#define MAX485_RE_NEG  2

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "votre clé token du projet";
  BlynkTimer timer;
  ModbusMaster noeud;                    //object node for class ModbusMaster
  WidgetLED led1(V10);
  WidgetLED led2(V11);
  WidgetLED led3(V12);
  WidgetLED led4(V13);
  WidgetLED led5(V14);
  WidgetLED led6(V15);

float U1 = 0.0;
float U2 = 0.0;
float U3 = 0.0;
float I1 = 0.0;
float I2 = 0.0;
float I3 = 0.0;
float I1Max = 0.0;
float I2Max = 0.0;
float I3Max = 0.0;
float SeuilAlarmeMiniI1 = 0.0;
float SeuilAlarmeMaxI1 = 60.0;
float SeuilAlarmeMiniI2 = 10.0;
float SeuilAlarmeMaxI2 = 60.0;
float SeuilAlarmeMiniI3 = 0.0;
float SeuilAlarmeMaxI3 = 60.0;
float HysterisieSeuilI1 = 10.0;
float HysterisieSeuilI2 = 2.0;
float HysterisieSeuilI3 = 2.0;

bool AlarmeSeuilBasI1 = LOW;
bool AlarmeSeuilHautI1 = LOW;
bool AlarmeSeuilBasI2 = LOW;
bool AlarmeSeuilHautI2 = LOW;
bool AlarmeSeuilBasI3 = LOW;
bool AlarmeSeuilHautI3 = LOW;

bool EnableSeuilBasI1 = LOW;
bool EnableSeuilHautI1 = LOW;
bool EnableSeuilBasI2 = LOW;
bool EnableSeuilHautI2 = LOW;
bool EnableSeuilBasI3 = LOW;
bool EnableSeuilHautI3 = LOW;



void preTransmission()            //Function for setting stste of Pins DE & RE of RS-485
{
  digitalWrite(MAX485_RE_NEG, 1);             
  digitalWrite(MAX485_DE, 1);
}

void postTransmission()
{
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);
}

void blinkLedWidget()
{
    if (AlarmeSeuilBasI1 == HIGH)
      {led1.on();}
    else
      {led1.off();}
     
    if (AlarmeSeuilHautI1 == HIGH)
      {led2.on();}
    else
      {led2.off();}
     
    if (AlarmeSeuilBasI2 == HIGH)
      {led3.on();}
    else
      {led3.off();}
     
    if (AlarmeSeuilHautI2 == HIGH)
      {led4.on();}
    else
      {led4.off();}
       
    if (AlarmeSeuilBasI3 == HIGH)
      {led5.on();}
    else
      {led5.off();}
     
    if (AlarmeSeuilHautI3 == HIGH)
      {led6.on();}
    else
      {led6.off();}
}

void myTimerEvent()
{
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V1, U1);
  Blynk.virtualWrite(V2, I1);
  Blynk.virtualWrite(V3, I1Max);
  Blynk.virtualWrite(V4, U2);
  Blynk.virtualWrite(V5, I2);
  Blynk.virtualWrite(V6, I2Max);
 
  blinkLedWidget();
}

  BLYNK_WRITE(V16)
{
    EnableSeuilBasI1 = param.asInt(); // assigning incoming value from pin V16 to a variable

  // process received value
}

  BLYNK_WRITE(V17)
{
    EnableSeuilHautI1 = param.asInt(); // assigning incoming value from pin V17 to a variable

  // process received value
}

  BLYNK_WRITE(V18)
{
    EnableSeuilBasI2 = param.asInt(); // assigning incoming value from pin V18 to a variable

  // process received value
}

  BLYNK_WRITE(V19)
{
    EnableSeuilHautI2 = param.asInt(); // assigning incoming value from pin V19 to a variable

  // process received value
}

void setup()
{
  pinMode(MAX485_RE_NEG, OUTPUT);
  pinMode(MAX485_DE, OUTPUT);
 
  pinMode(4,INPUT);
  pinMode(5,INPUT);
 
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth);
  // You can also specify server:
  //Blynk.begin(auth, "blynk-cloud.com", 80);
  //Blynk.begin(auth, IPAddress(192,168,1,100), 8080);
  // For more options, see Boards_Ethernet/Arduino_Ethernet_Manual example
 
  noeud.begin(5,Serial);            //Slave ID as 5
  noeud.preTransmission(preTransmission);         //Callback for configuring RS-485 Transreceiver correctly
  noeud.postTransmission(postTransmission);
 
  timer.setInterval(1000L, myTimerEvent);
 
}

void loop()
{
  static uint32_t i;
  uint8_t j, result;
  uint16_t data[7];
 
  i++;
 
  // slave: read (7) 16-bit registers starting at register 0xC854 to RX buffer
  result = noeud.readHoldingRegisters(0xC854, 7);
 
  Serial.println();
  Serial.print("noeud.ku8MBSuccess : ");
  Serial.print(noeud.ku8MBSuccess);
  Serial.print(" resultat : ");
  Serial.println(result);
  Serial.println();
 
  // do something with data if read is successful
  if (result == noeud.ku8MBSuccess)
  {
    for (j = 0; j < 7; j++)
    {
      data[j] = noeud.getResponseBuffer(j);
    }
      U1 = data[0]/100.0f;
      U2 = data[1]/100.0f;
      U3 = data[2]/100.0f;
      I1 = data[4]/20.0f;
      I2 = data[5]/20.0f;
      I3 = data[6]/20.0f;
      Serial.println("data : ");
      Serial.print("V1 : ");
      Serial.println(U1);
      Serial.print("V2 : ");
      Serial.println(U2);
      Serial.print("V3: ");
      Serial.println(U3);
      Serial.print("frequence : ");
      Serial.println(data[3]/100.0f);
      Serial.print("I1 : ");
      Serial.println(I1);
      Serial.print("I2 : ");
      Serial.println(I2);
      Serial.print("I3 : ");
      Serial.println(I3);
     
      //Alarme Seuil BAS I1
      if ( I1 < SeuilAlarmeMiniI1  && AlarmeSeuilBasI1 == LOW && EnableSeuilBasI1 == HIGH)
      {
        AlarmeSeuilBasI1 = HIGH;
        Blynk.notify("Alarme Seuil Bas I1");
        Serial.println("Alarme Seuil Bas I1");
      }
      else if ( I1 >= SeuilAlarmeMiniI1+HysterisieSeuilI1 || EnableSeuilBasI1 == LOW )
      {
        AlarmeSeuilBasI1 = LOW; 
      }
     
      //Alarme Seuil HAUT I1
      if ( I1 > SeuilAlarmeMaxI1  && AlarmeSeuilHautI1 == LOW && EnableSeuilHautI1 == HIGH )
      {
        AlarmeSeuilHautI1 = HIGH;
        Blynk.notify("Alarme Seuil Haut I1");
        Serial.println("Alarme Seuil Haut I1");
      }
      else if ( I1 <= SeuilAlarmeMaxI1-HysterisieSeuilI1 || EnableSeuilHautI1 == LOW  )
      {
        AlarmeSeuilHautI1 = LOW; 
      }
     
      //Alarme Seuil BAS I2
      if ( I2 < SeuilAlarmeMiniI2 && AlarmeSeuilBasI2 == LOW && EnableSeuilBasI2 == HIGH)
      {
        AlarmeSeuilBasI2 = HIGH;
        Blynk.notify("Alarme Seuil Bas I2");
        Serial.println("Alarme Seuil Bas I2");
      }
      else if ( I2 >= SeuilAlarmeMiniI2+HysterisieSeuilI2  || EnableSeuilBasI2 == LOW )
      {
        AlarmeSeuilBasI2 = LOW; 
      }
     
      //Alarme Seuil HAUT I2
      if ( I2 > SeuilAlarmeMaxI2  && AlarmeSeuilHautI2 == LOW && EnableSeuilHautI2 == HIGH  )
      {
        AlarmeSeuilHautI2 = HIGH;
        Blynk.notify("Alarme Seuil Haut I2");
        Serial.println("Alarme Seuil Haut I2");
      }
      else if ( I2 <= SeuilAlarmeMaxI2-HysterisieSeuilI2 || EnableSeuilHautI2 == LOW  )
      {
        AlarmeSeuilHautI2 = LOW; 
      }
     
      //Alarme Seuil BAS I3
      if ( I3 < SeuilAlarmeMiniI3 && AlarmeSeuilBasI3 == LOW && EnableSeuilBasI3 == HIGH )
      {
        AlarmeSeuilBasI3 = HIGH;
        Blynk.notify("Alarme Seuil Bas I3");
        Serial.println("Alarme Seuil Bas I3");
      }
      else if ( I3 >= SeuilAlarmeMiniI3+HysterisieSeuilI3 || EnableSeuilBasI3 == LOW  )
      {
        AlarmeSeuilBasI3 = LOW; 
      }
     
      //Alarme Seuil HAUT I3
      if ( I3 > SeuilAlarmeMaxI3  && AlarmeSeuilHautI3 == LOW && EnableSeuilHautI3 == HIGH  )
      {
        AlarmeSeuilHautI3 = HIGH;
        Blynk.notify("Alarme Seuil Haut I3");
        Serial.println("Alarme Seuil Haut I3");
      }
      else if ( I3 <= SeuilAlarmeMaxI3-HysterisieSeuilI3 || EnableSeuilHautI3 == LOW  )
      {
        AlarmeSeuilHautI3 = LOW; 
      }
     
  }
  else
  {
      Serial.println("erreur de lecture registre");
  }
     
  delay(500);
     
  result = noeud.readHoldingRegisters(0x9100, 6);
 
  Serial.println();
  Serial.print("node.ku8MBSuccess : ");
  Serial.print(noeud.ku8MBSuccess);
  Serial.print(" resultat : ");
  Serial.print(result);
  Serial.println();
 
  // do something with data if read is successful
  if (result == noeud.ku8MBSuccess)
  {
    for (j = 0; j < 6; j++)
    {
      data[j] = noeud.getResponseBuffer(j);
    }
    float PoidsFort=data[0];
    float PoidsFaible=data[1];
    I1Max = ((PoidsFort*65536.0)+PoidsFaible)/1000.0;
    Serial.print("I1Max : ");
    Serial.println(I1Max);
    PoidsFort=data[2];
    PoidsFaible=data[3];
    I2Max = ((PoidsFort*65536.0)+PoidsFaible)/1000.0;
    Serial.print("I2Max : ");
    Serial.println(I2Max);
    PoidsFort=data[4];
    PoidsFaible=data[5];
    I3Max = ((PoidsFort*65536.0)+PoidsFaible)/1000.0;
    Serial.print("I3Max : ");
    Serial.println(I3Max);
  }
  else
  {
    Serial.println("erreur de lecture registre");
  }


 
 
  Blynk.run();
  timer.run(); // Initiates BlynkTimer
  delay(1000);
}

#7
Bonjour Circuitbreaker,
j'ai réalisé un circuit similaire communiquer avec un compteur d'énergie modbus.

j'ai utilisé un Arduino Uno avec une carte Shields Ethernet.
pour communiquer avec le compteur modbus, j'ai utilisé une liaison série software avec un convertisseur RS485 modbus.

pour l'interface, j'utilise Blynk, qui est disponible sur IOS et Android.

Cordialement
#8
Bonjour Bidouilleurs, je suis au début d'un projet ayant pour objectif de dupliquer la valeur d'une résistance en entrée (entre 800 et 1300ohm)
pour la transmettre à  2 équipement distint.

Je travail dans l'installation de sous station primaire de géothermie, et nous avons besoin pour le chauffage du bâtiment, d'avoir la température extérieure (loi d'eau), obtenu par des sondes PT1000 ou LG NI1000.
Sur les bâtiments ancien, il est très difficile de repasser une sonde jusqu'au toit du bâtiment, d'où l'idée d'utiliser la sonde de l'armoire secondaire et dupliquer la sonde pour renvoyer le signal vers le régulateur de chaque armoires.

en montagne électronique pur, je n'ai pas d'idée pour faire cela.

je part donc sur l'idée d'un arduino avec en entrée, un pont diviseur de tension et en utilisant VREF interne de 1.1V pour plus de précision.
ou l'utilisation d'une carte adafruit
https://shop.mchobby.be/fr/temperature/1246-amplificateur-senseur-de-temperature-pt1000-rtd-max31865-3232100012462-adafruit.html
mais il me reste à  voir si je peut récuperer la valeur en ohm dans le cas de sonde LG NI1000 qui n'est pas nativement supporté.

en sortie, je pensé utiliser une résistance 800ohm mis en série avec un  potentiomètre numerique piloté en SPI pour plus de précision.
https://fr.farnell.com/analog-devices/ad8403arz1/potentiometre-num-volatile-1k/dp/2727601

une résistance bien qu'un élément simple, deviens autrement plus complexe lorsqu'il s'agit d'essayer de la reproduire, contrairement à  une sonde 4-20ma ou 0-10v

Avant de débuter le projet, je voulais avoir vos avis et idée, peut être je n'aborde pas le problème de la bonne manière. peut être avait vous une solution Electronique sans Microcontrôleur
#9
Bonjour, regarde du côté de Ubiquiti C’est un fabricant de matériel et notamment de pont (bridge) wifi, c’est produit on une antenne directionnel qui leur donne une portée + ou - longue (jusquâ€™à  des km en champ libre)

Pour la portée de ton projet, ça ne pose aucun problème.
Une paire de nanostation M2 suffira