Interrupteur commandé via une Arduino

Bonjour à tous,
j'ai une question au sujet de la possibilité de commander un "interrupteur" via une Arduino.

Pour simplifier, j'aimerai pouvoir commander (allumer/éteindre) une rampe de leds (celle-ci: rampe) via ma Arduino. Elle est alimentable en 5V - 7,4V.
On pourrait effectivement l'alimenter directement via une sortie de l'Arduino et pour le coup ce serait simple à faire.
En revanche je souhaiterai l'alimenter au delà des 5V en passant donc par une alimentation externe, mais toujours avec la possibilité de l'allumer et de l'éteindre via l'Arduino.
J'ai pensé à utiliser un relais et j'aimerai savoir si cela est bien approprié ou s'il existe de meilleurs solutions.

Jocelyn

Oublie la commande directe par l'arduino : les sorties n'auront de loin pas assez de puissance

Le relais est sûrement la méthode la plus simple et la plus universelle pour ce genre de choses...

1 Like

non on ne peut pas :face_with_head_bandage:
un arduino n'est pas une alimentation - pas de puissance dispo sur le pins (juste quelques mA)

oui un relai peut servir d'interrupteur piloté - il y a plein de tutos sur internet (le premier trouvé)

attention vous jouez avec du vrai courant, ça peut tuer, mettre le feu, etc...

1 Like

Merci pour vos réponses éclairées.
Pour ce qui était de l'alimenter directement avec l'Arduino j'avais effectivement un gros doute que vous venez de me confirmer.

@J-M-L effectivement j'ai lu ce tuto et j'avais trouvé la possibilité d'utiliser un relais en adéquation avec mon besoin, mais étant basique en électronique je voulais être sûr de ne pas me tromper.

Merci

Jocelyn

C'est pour du modélisme?
Un relais pourrait faire l'affaire mais niveau consommation ce n'est pas très optimisé.
Tu pourrais utiliser un module de ce genre

https://fr.aliexpress.com/item/1005003092037857.html

Bonjour @fdufnews , non ce n'est pas un projet de modélisme mais un robot contrôlé par internet muni de caméras et d'un bras :slight_smile:

Je ne sais pas du tout ce qu'est un commutateur MOSFET mais je vais aller regarder sur internet et je pense trouver mon bonheur.
Merci pour ce conseil.

Jocelyn

C'est très souvent que l'on voit des personnes automatiquement partir sur un relais.
Je ne sais pas si il y a un tutoriel en français que l'on pourrait donner, montrant les avantages et les inconvénient des deux.

@fdufnews pour le moment je n'ai trouvé que ça mais c'est en anglais.
https://electronicguidebook.com/mosfet-vs-relay-8-key-differences/

Pour faire court, on va dire que c'est un relais statique.

  • Il n'y a pas de pièces mobiles, donc pas de problème d'usure des contacts.
  • C'est plus rapide en commutation, donc on peut moduler le signal en PWM pour piloter l'intensité lumineuse de LEDs ou la vitesse d'un moteur.
  • la commande du mosFET ne consomme pratiquement pas de courant.
1 Like

@fdufnews c'est ce que j'avais cru comprendre en lisant des documents sur le net.
Le fais que vous m'ayez dit qu'un MOFSET consomme moins qu'un relais a attiré mon attention.

Merci encore.

Jocelyn

Bonjour @fdufnews, je reviens sur ce poste juste pour dire que j'ai testé votre solution avec un MOFSET et ça fonctionne parfaitement.
Mieux même, car on peut faire varier l'intensité de la lumière avec une commande pwm.

Je rajoute ici le petit programme de tests si ça peut servir à quelqu'un d'autre.

#define SIG 9

void setup() {

  Serial.begin(19200);
  pinMode(SIG, OUTPUT);

  //Lumière éteinte
  switchOffLight();
}

void loop() {

  // Lecture des commandes sur le port série.
  // On attend plusieurs types de commandes:
  // - LOW, MEDIUM, HIGH pour définir l'inensité de l'éclairage.
  // - OFF pour éteindre la rample de led.
  // - VAR, permet de faire varier l'intensité de la lumière e façon progressive.
  String command = "";
  if (Serial.available() > 0) {
    command = Serial.readString();
    command.trim();
    command.toUpperCase();
    Serial.print(F("Commande reçue: "));
    Serial.println(command);
  }

  if (command == "LOW") {
      lowLight();
    } else if (command == "MEDIUM") {
      mediumLight();
    } else if (command == "HIGH") {
      highLight();
    } else if (command == "OFF") {
      switchOffLight();
    } else if (command == "VAR") {
      lightVariation();
    } else {
      if (command != "") {
        Serial.println(F("Commande non reconnue !"));
      }
    }
}

void switchOffLight() {
  analogWrite(SIG, 0);
}

void lowLight() {
  analogWrite(SIG, 85);
}

void mediumLight() {
  analogWrite(SIG, 170);
}

void highLight() {
  analogWrite(SIG, 255);
}

void lightVariation() {

  int i;
  for (i = 0; i < 255; i++) {
    analogWrite(SIG, i);
    delay(30);
  }

  delay(5);

  for (i = 255; i > 0; i--) {
    analogWrite(SIG, i);
    delay(30);
  }

  switchOffLight();
}

Jocelyn

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.