irf540ou irf540 avec irf5305 - Page 2
Répondre à la discussion
Page 2 sur 2 PremièrePremière 2
Affichage des résultats 31 à 43 sur 43

irf540ou irf540 avec irf5305



  1. #31
    Antoane
    Responsable technique

    Re : irf540ou irf540 avec irf5305


    ------

    Bonsoir,

    Au risque de répéter ce qui a déjà été écrit :
    - La valeur de R1 importe peu. Entre 4k7 et 100k semble raisonnable ;
    - Il faut une résistance en série avec la grille du mosfet, la valeur n'est pas critique, 150 à 330Ohm semble a priori raisonnable ;
    - Tu peux tenter de découper à 490Hz, mais au risque de faire du bruit (sonore). Il faudrait idéalement sortir de la bande audio, c'est à dire découper à >20kHz, mais cela exige l'usage d'un driver pour le mosfet, par exemple l'un de ceux-la : http://www.microchip.com/ParamChartS...&pageId=79

    Le PCB devra être soigneusement conçu (masse en étoile, câblage court, découplage...).

    -----
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  2. #32
    inviteed8e3936

    Re : irf540ou irf540 avec irf5305

    merci beaucoup à vous tous pour ces information.
    la led utilisé sur isis c'st juste pour faire une petite simulation mais en réalité seront des mètres de flex led de 300W 12 V.
    je vais voir le driver que vous m'aviez proposer. j'espère qu'il va bien marcher.
    j'ai un petit problème aussi au niveau de mon programme (arduino). pourrez-vous m'aider à le corriger?
    merci d'avance.

  3. #33
    inviteed8e3936

    Re : irf540ou irf540 avec irf5305

    Antoane :Le PCB devra être soigneusement conçu (masse en étoile, câblage court, découplage...).
    je pense pas que je n’aurai pas besoin d'un opto-coupleur car je travaille pas dans les hautes tensions ( 220V). la masse donc sera commune. n'est ce pas ?

  4. #34
    invitee6c3c18d

    Re : irf540ou irf540 avec irf5305

    Bjr. De rien. wep la masse est commune, cette référence commune est indispensable pour que l'arduino et le MOSFET voient des potentiels de tensions identiques. 1V ou 10V n'a de sens que si tu sais ou est le zéro. il est où ton programme, tu l'as déjà posté ? parce que je vois pas où.. ceci dit Je débute en arduino donc en espérant que ce soit pas du high level sinon c pour les autres

  5. #35
    inviteed8e3936

    Re : irf540ou irf540 avec irf5305

    moi aussi je suis débutant en arduino. j'ai acheter une carte arduino uno. mon premier programme c'est celui là. un dimmer avec 12 V et 300W.
    3 boutons. une pour on/off l'autre pour augmenter la fréquence (disant la luminosité du flex) et le 3ème bouton pour diminuer.
    je vais chercher mon dernier programme que j'ai fait et je vais le poster. en fait il y a beaucoup de propositions mais a chaque fois une chose nouvelle survenue dans le cahier de charge.

  6. #36
    inviteed8e3936

    Re : irf540ou irf540 avec irf5305

    Code:
    #define buttonPin1 7 
    #define buttonPin2 8
    #define buttonPin3 12
    #define ledPin1 3 
     
    // variable led
    boolean ledVal1 = false; // state of LED 1
    
    void setup()
    {
       
        // Set button input pin
        pinMode(buttonPin1, INPUT);
        digitalWrite(buttonPin1, HIGH );
          pinMode(buttonPin2, INPUT);
        digitalWrite(buttonPin2, HIGH );
          pinMode(buttonPin3, INPUT);
        digitalWrite(buttonPin3, HIGH );
        // Set LED output pins
        pinMode(ledPin1, OUTPUT);
      
    }
     
    void loop()
    {
    
          int b1 = checkButton1();
           int b2 = checkButton2();
          if (b1 == 1) val1();
          if (b1 == 2) val2();
          if (b1 == 3) val3();
          if (b1 == 4) val4();
          if (b1 == 5) val5();
          if (b1 == 6) val6();
          if (b1 == 7) val7();
          if (b1 == 8) val8();
          if (b1 == 9) val9();
          if (b1 == 10) val10();
           if (b2 == 11) val11();
          if (b2 == 12) val12();
          if (b2 == 13) val13();
          if (b2 == 14) val14();
          if (b2 == 15) val15();
          if (b2 == 16) val16();
          if (b2 == 17) val17();
         //if(digitalRead(buttonPin3==1)){digitalWrite(ledPin1,0);}
    }
     
    
    
    
    // variation 
     
    void val1()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1, 0);
    }
     
    void val2()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1, 25);
    }
     
    void val3()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,50);
    }
     
    void val4()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1, 75);
    }
    void val5()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,100);
    }
    void val6()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,125);
    }
    void val7()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,150);
    }
     void val8()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,200);
    }
    void val9()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,230);
    }
    void val10()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,255);
    }
    void val11()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,255);
    }
     
    void val12()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1, 230);
    }
     
    void val13()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,200);
    }
     
    void val14()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1, 150);
    }
    void val15()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,125);
    }
    void val16()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,75);
    }
    void val17()
    {
          ledVal1 = !ledVal1;
          analogWrite(ledPin1,50);
    }
    
    //////
     
    // Button timing variables
    int debounce = 20; // period anti_rebont pour éciter le scintillement lorsque on presse ou en relache le bouton
    int DCgap = 250; // max  ecart ms between clicks for a double click event
    int holdTime = 500; // ms hold period: how long to wait for press+hold event
    int longHoldTime1 = 1000; // ms long hold period: how long to wait for press+hold event
    int longHoldTime2 = 1500;
    int longHoldTime3 = 2000;
    int longHoldTime4 = 2500;
    int longHoldTime5 = 3000;
    int longHoldTime6 = 3500;
    int longHoldTime7 = 4000;
    int longHoldTime8 = 4500;
    int longHoldTime9 = 5000;
    int longHoldTime10 = 5500;
    ///
    int longHoldTime11 = 500;
    int longHoldTime12 = 1000;
    int longHoldTime13 = 1500;
    int longHoldTime14 = 2000;
    int longHoldTime15 = 2500;
    int longHoldTime16 = 3000;
    int longHoldTime17 = 4500;
    int longHoldTime18 = 5000;
    int longHoldTime19 = 5500;
    int longHoldTime20 = 6000;
    int longHoldTime21 = 6500;
    int longHoldTime22 = 7000;
    int longHoldTime23 = 7500;
    int longHoldTime24 = 8000;
    int longHoldTime25 = 8500;
    
    
     
    // Other button variables
    boolean buttonVal1 = HIGH; // value read from button
    boolean buttonVal2 = HIGH; // value read from button
    boolean buttonLast1 = HIGH; // buffered value of the button's previous state
    boolean buttonLast2 = HIGH; // buffered value of the button's previous state
    boolean DCwaiting = false; // whether we're waiting for a double click (down)
    boolean DConUp = false; // whether to register a double click on next release, or whether to wait and click
    boolean singleOK = true; // whether it's OK to do a single click
    long downTime = -1; // time the button was pressed down
    long upTime = -1; // time the button was released
    boolean ignoreUp = false; // whether to ignore the button release because the click+hold was triggered
    boolean waitForUp = false; // when held, whether to wait for the up event
    boolean holdEventPast = false; // whether or not the hold event happened already
    boolean longHoldEventPast1 = false;// whether or not the long hold event happened already
    boolean longHoldEventPast2 = false;
    boolean longHoldEventPast3 = false;
    boolean longHoldEventPast4 = false;
    boolean longHoldEventPast5 = false;
    boolean longHoldEventPast6 = false;
    boolean longHoldEventPast7 = false;
    boolean longHoldEventPast8 = false;
    boolean longHoldEventPast9 = false;
    boolean longHoldEventPast10 = false;
    ////
    boolean longHoldEventPast11 = false;
    boolean longHoldEventPast12 = false;
    boolean longHoldEventPast13 = false;
    boolean longHoldEventPast14 = false;
    boolean longHoldEventPast15 = false;
    boolean longHoldEventPast16 = false;
    boolean longHoldEventPast17 = false;
    boolean longHoldEventPast18 = false;
    boolean longHoldEventPast19 = false;
    boolean longHoldEventPast20 = false;
    ///
    boolean longHoldEventPast21 = false;
    boolean longHoldEventPast22 = false;
    boolean longHoldEventPast23 = false;
    boolean longHoldEventPast24 = false;
    boolean longHoldEventPast25 = false;
    
    
     
    int checkButton1()
    {
          int event = 0;
          // Read the state of the button
          buttonVal1 = digitalRead(buttonPin1);
          // Button pressed down
          if (buttonVal1 == LOW && buttonLast1 == HIGH && (millis() - upTime) > debounce)
            {
            downTime = millis();
            ignoreUp = false;
            waitForUp = false;
            singleOK = true;
            holdEventPast = false;
            longHoldEventPast1 = false;
            longHoldEventPast2 = false;
            longHoldEventPast3 = false;
            longHoldEventPast4 = false;
            longHoldEventPast5 = false;
            longHoldEventPast6 = false;
            longHoldEventPast7 = false;
            longHoldEventPast8 = false;
            longHoldEventPast9 = false;
            longHoldEventPast10 = false;
            if ((millis()-upTime) < DCgap && DConUp == false && DCwaiting == true) DConUp = true;
            else DConUp = false;
            DCwaiting = false;
            }
    // Button released
          else if (buttonVal1 == HIGH && buttonLast1 == LOW && (millis() - downTime) > debounce)
          {
              if (not ignoreUp)
              {
                upTime = millis();
                 if (DConUp == false) DCwaiting = true;
                 else
                    {
                        event = 2;
                        DConUp = false;
                        DCwaiting = false;
                        singleOK = false;
                    }
              }
          }
    // Test for normal click event: DCgap expired
    if ( buttonVal1 == HIGH && (millis()-upTime) >= DCgap && DCwaiting == true && DConUp == false && singleOK == true)
    {
          event = 1;
          DCwaiting = false;
    }
    // Test for hold
    if (buttonVal1 == LOW && (millis() - downTime) >= holdTime)
    {
    // Trigger "normal" hold
    if (not holdEventPast)
    {
          event = 3;
          waitForUp = true;
          ignoreUp = true;
          DConUp = false;
          DCwaiting = false;
          //downTime = millis();
          holdEventPast = true;
    }
    // Trigger "long" hold1
      if ((millis() - downTime) >= longHoldTime1)
      {
        if (not longHoldEventPast1)
          {
            event = 4;
            longHoldEventPast1 = true;
          }
       }
       //
      // Trigger "long" hold2
      if ((millis() - downTime) >= longHoldTime2)
      {
        if (not longHoldEventPast2)
          {
            event = 5;
            longHoldEventPast2 = true;
          }
       } 
       ////
         // Trigger "long" hold6
      if ((millis() - downTime) >= longHoldTime6)
      {
        if (not longHoldEventPast6)
          {
            event = 6;
            longHoldEventPast6 = true;
          }
       } 
       /////
       // Trigger "long" hold7
      if ((millis() - downTime) >= longHoldTime7)
      {
        if (not longHoldEventPast7)
          {
            event = 7;
            longHoldEventPast7 = true;
          }
       }
       //
      // Trigger "long" hold8
      if ((millis() - downTime) >= longHoldTime8)
      {
        if (not longHoldEventPast8)
          {
            event = 8;
            longHoldEventPast8 = true;
          }
       } 
       ////
         // Trigger "long" hold9
      if ((millis() - downTime) >= longHoldTime9)
      {
        if (not longHoldEventPast9)
          {
            event = 9;
            longHoldEventPast9 = true;
          }
       }
        ////
         // Trigger "long" hold9
      if ((millis() - downTime) >= longHoldTime10)
      {
        if (not longHoldEventPast10)
          {
            event = 10;
            longHoldEventPast10 = true;
          }
       }
      
    }
          buttonLast1 = buttonVal1;
          return event;
    }
    /////////////////////////////////////////////////////////
    int checkButton2()
    {
          int event = 0;
          // Read the state of the button
          buttonVal2 = digitalRead(buttonPin2);
          // Button pressed down
          if (buttonVal2 == LOW && buttonLast2 == HIGH && (millis() - upTime) > debounce)
            {
            downTime = millis();
            ignoreUp = false;
            waitForUp = false;
            singleOK = true;
            holdEventPast = false;
            longHoldEventPast11 = false;
            longHoldEventPast12 = false;
             longHoldEventPast13 = false;
            longHoldEventPast14 = false;
              longHoldEventPast15 = false;
            longHoldEventPast16 = false;
             longHoldEventPast17 = false;
            longHoldEventPast18 = false;
              longHoldEventPast19 = false;
            longHoldEventPast20 = false;
            ///
               longHoldEventPast21 = false;
            longHoldEventPast22 = false;
             longHoldEventPast23 = false;
            longHoldEventPast24 = false;
              longHoldEventPast25 = false;
            
    
            if ((millis()-upTime) < DCgap && DConUp == false && DCwaiting == true) DConUp = true;
            else DConUp = false;
            DCwaiting = false;
            }
    // Button released
          else if (buttonVal2 == HIGH && buttonLast2 == LOW && (millis() - downTime) > debounce)
          {
              if (not ignoreUp)
              {
                upTime = millis();
                 if (DConUp == false) DCwaiting = true;
                 else
                    {
                        event = 2;
                        DConUp = false;
                        DCwaiting = false;
                        singleOK = false;
                    }
              }
          }
    // Test for normal click event: DCgap expired
    if ( buttonVal2 == HIGH && (millis()-upTime) >= DCgap && DCwaiting == true && DConUp == false && singleOK == true)
    {
          event = 1;
          DCwaiting = false;
    }
    // Test for hold
    if (buttonVal2 == LOW && (millis() - downTime) >= holdTime)
    {
    // Trigger "normal" hold
    if (not holdEventPast)
    {
          event = 3;
          waitForUp = true;
          ignoreUp = true;
          DConUp = false;
          DCwaiting = false;
          //downTime = millis();
          holdEventPast = true;
    }
           // Trigger "long" hold11
      if ((millis() - downTime) >= longHoldTime6)
      {
        if (not longHoldEventPast11)
          {
            event = 11;
            longHoldEventPast11 = true;
          }
       } 
       /////
       // Trigger "long" hold7
      if ((millis() - downTime) >= longHoldTime11)
      {
        if (not longHoldEventPast11)
          {
            event = 11;
            longHoldEventPast11 = true;
          }
       }
       //
      // Trigger "long" hold12
      if ((millis() - downTime) >= longHoldTime12)
      {
        if (not longHoldEventPast12)
          {
            event = 12;
            longHoldEventPast12 = true;
          }
       } 
       ////
         // Trigger "long" hold13
      if ((millis() - downTime) >= longHoldTime13)
      {
        if (not longHoldEventPast13)
          {
            event = 13;
            longHoldEventPast13 = true;
          }
       }
        ////
         // Trigger "long" hold14
      if ((millis() - downTime) >= longHoldTime14)
      {
        if (not longHoldEventPast14)
          {
            event = 14;
            longHoldEventPast14 = true;
          }
       }
       ////
          // Trigger "long" hold15
      if ((millis() - downTime) >= longHoldTime15)
      {
        if (not longHoldEventPast15)
          {
            event = 15;
            longHoldEventPast15 = true;
          }
       }
       /////
           // Trigger "long" hold16
      if ((millis() - downTime) >= longHoldTime16)
      {
        if (not longHoldEventPast16)
          {
            event = 16;
            longHoldEventPast16 = true;
          }
       } 
       /////
       // Trigger "long" hold17
      if ((millis() - downTime) >= longHoldTime17)
      {
        if (not longHoldEventPast17)
          {
            event = 17;
            longHoldEventPast17 = true;
          }
       }
       //
      // Trigger "long" hold18
      if ((millis() - downTime) >= longHoldTime18)
      {
        if (not longHoldEventPast18)
          {
            event = 18;
            longHoldEventPast18 = true;
          }
       } 
       ////
         // Trigger "long" hold19
      if ((millis() - downTime) >= longHoldTime19)
      {
        if (not longHoldEventPast19)
          {
            event = 19;
            longHoldEventPast19 = true;
          }
       }
        ////
         // Trigger "long" hold20
      if ((millis() - downTime) >= longHoldTime20)
      {
        if (not longHoldEventPast20)
          {
            event = 20;
            longHoldEventPast20 = true;
          }
       }
            // Trigger "long" hold21
      if ((millis() - downTime) >= longHoldTime21)
      {
        if (not longHoldEventPast21)
          {
            event = 21;
            longHoldEventPast21 = true;
          }
       }
            // Trigger "long" hold22
      if ((millis() - downTime) >= longHoldTime22)
      {
        if (not longHoldEventPast22)
          {
            event = 22;
            longHoldEventPast22 = true;
          }
       }
            // Trigger "long" hold20
      if ((millis() - downTime) >= longHoldTime23)
      {
        if (not longHoldEventPast23)
          {
            event = 23;
            longHoldEventPast23 = true;
          }
       }
            // Trigger "long" hold24
      if ((millis() - downTime) >= longHoldTime24)
      {
        if (not longHoldEventPast24)
          {
            event = 24;
            longHoldEventPast24 = true;
          }
       }
            // Trigger "long" hold25
      if ((millis() - downTime) >= longHoldTime25)
      {
        if (not longHoldEventPast25)
          {
            event = 25;
            longHoldEventPast25 = true;
          }
       }
       /////
    }
          buttonLast2 = buttonVal2;
          return event;
    }

  7. #37
    invitee6c3c18d

    Re : irf540ou irf540 avec irf5305

    wow sérieux ? là je passe mon tour

  8. #38
    inviteed8e3936

    Re : irf540ou irf540 avec irf5305

    bien sûr que sérieux!
    je veux ajouter une mémorisation en utilisant l'eeprom déjà existe dans l'atmega328. si je laisse mon flex allumer avec 6 v par exemple.
    le prochain allumage de mon felx si j’appuie sur bouton 2 ( plus) la luminosité va augmenter et ainsi de suite.
    je trouve que mon code est trop long, et sera plus que ça si j'ajoute les deux ligne de eeprom. Write et read. toute aide serait précieuse. merci d'avance.

  9. #39
    inviteed8e3936

    Re : irf540ou irf540 avec irf5305

    - Tu peux tenter de découper à 490Hz, mais au risque de faire du bruit (sonore). Il faudrait idéalement sortir de la bande audio, c'est à dire découper à >20kHz, mais cela exige l'usage d'un driver pour le mosfet, par exemple l'un de ceux-la : http://www.microchip.com/ParamChartS...g=en&pageId=79

    Le PCB devra être soigneusement conçu (masse en étoile, câblage court, découplage...).
    j'ai déja essayé sans driver sa marche, pas de bruit. j'ai pas tout compris Antoane. peux-tu m'explique plus

  10. #40
    Antoane
    Responsable technique

    Re : irf540ou irf540 avec irf5305

    Bonjour,
    Citation Envoyé par powerPic Voir le message
    Antoane :Le PCB devra être soigneusement conçu (masse en étoile, câblage court, découplage...).
    C'est à dire qu'il ne faut pas faire un circuit avec des fils volants de 30cm en tous sens. Il faut un circuit imprimé ou une belle plaque à pastilles, avec des liaisons courtes, bien positionnées et tout et tout.

    Citation Envoyé par powerPic Voir le message
    je pense pas que je n’aurai pas besoin d'un opto-coupleur [...] la masse donc sera commune. n'est ce pas ?
    Oui, tout à fait. L'appellation "masse en étoile" désigne la manière dont sont réunis les fils au niveau de la masse. Un schéma :
    Nom : fs_etoile.png
Affichages : 58
Taille : 41,5 Ko
    Tu vois que d'un point de vue électrique, les deux schémas sont identiques, et pourtant, celui du haut, avec le câblage en étoile au niveau de R9 fonctionnera différemment. L'impédance (~la résistance) parasite des pistes aura moins d'influence sur le fonctionenement du circuit car il y aura moins de couplage entre les signaux. Ce n'est pas toujours nécessaire ou même souhaitable, mais parfois si
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  11. #41
    inviteed8e3936

    Re : irf540ou irf540 avec irf5305

    merci Antoane. c'est bien compris pour la masse commune.
    mais j'ai pas compris celui la:
    - Tu peux tenter de découper à 490Hz, mais au risque de faire du bruit (sonore). Il faudrait idéalement sortir de la bande audio, c'est à dire découper à >20kHz, mais cela exige l'usage d'un driver pour le mosfet, par exemple l'un de ceux-la : http://www.microchip.com/ParamChartS...g=en&pageId=79
    surtout que j'ai essayé mon pcb sans driver et y avait pas de résonance (bruit)
    est ce que apparait nécessaire d'utiliser un driver même si sa marche sans ce dernier?

  12. #42
    Antoane
    Responsable technique

    Re : irf540ou irf540 avec irf5305

    Bonsoir,

    * A 490Hz, le driver n'est (souvent) pas indispensable. Chez toi ça marche sans, tant mieux (ca veut pas dire que le MOSFET ne souffre pas, mais c'est une autre question ).

    * A 490Hz, le montage aurait pu faire du bruit : notamment car l'inductance du moteur aurait pu ne pas n'arriver à bien lisser le courant dans le moteur. Il n'y a pas de problème dans ton cas, donc inutile d'aller chercher plus loin.

    * Pour assurer que le montage ne fera pas de bruit, une solution est de découper à une fréquence trop haute pour que l'oreille l'entende (son trop aigu) et/ou trop haute pour que le montage vibre de manière perceptible. La limite basse pour cette fréquence est de 20kHz.
    Le problème, c'est qu'à cette fréquence, l'utilisation d'un driver est souvent indispensable.


    * Encore une fois : chez toi ça marche à 490Hz, donc pas besoin de se fatiguer davantage
    Paradoxalement, l'ajout d'un driver est parfois problématique car cela accélère les commutations et rend de facto la conception du PCB encore plus critique. Dans le genre :
    Citation Envoyé par bobfuck
    à propos des di/dt, je m'étais fait avoir : sur un buck synchrone, le chip (LTC38machin) du DC-DC avait 5mm de trace d'alim en commun avec le MOS du haut, jusqu'aux capas de découplage... la commutation de celui-ci suffisait pour provoquer sur l'inductance de la piste une chute de tension suffisante pour rebooter le DC-DC (il y a un circuit dedans qui surveille l'alim pour se mettre en marche et s'éteindre proprement). Un coup de cutter a réglé le problème (en coupant la trace dans le sens de la longueur). Sur un oscillo 100MHz, c'était quasiment indécelable
    Dernière modification par Antoane ; 05/05/2015 à 18h03.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  13. #43
    inviteed8e3936

    Re : irf540ou irf540 avec irf5305

    merciii Antoane

Page 2 sur 2 PremièrePremière 2

Discussions similaires

  1. MOSFET IRF540 et diode de roue libre
    Par hary dans le forum Électronique
    Réponses: 4
    Dernier message: 16/05/2012, 07h38
  2. Commande MOSFET IRF540
    Par hary dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2012, 15h25
  3. Mettre deux IRF540 en parallèle, Possible ?
    Par invite08aa7ce6 dans le forum Électronique
    Réponses: 4
    Dernier message: 24/04/2010, 13h06
  4. le mystère du IRF540 conducteur...
    Par invitebf4bef0f dans le forum Électronique
    Réponses: 14
    Dernier message: 21/02/2010, 18h56
  5. commander 3 irf540
    Par invite5b7deb33 dans le forum Électronique
    Réponses: 12
    Dernier message: 01/10/2009, 05h17
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...