Controle éclairage 12V

Bonjour,

nouveau ici, j'ai comme projet de contrôler l'éclairage dans ma grange avec un Arduino, j'ai donc besoin de savoir si c'est réalisable

Je veux donc pouvoir programmer des heures d'ouverture/fermeture, mais avant la fermeture j'aimerais que la programmation "dimme" l'intensité afin d'avertir les animaux que prochainement il va faire (tout) noir, par exemple en diminuant de 25% au 15min (ou graduellement)

Un bouton/switch devrait me permette un "override" en cas de besoin et ce malgré la programmation

Pour l’installation actuelle:

J'ai un transformateur 120VAC a 12VDC qui alimente mes LED, le tout est branché sur une simple minuterie qui coupe la ligne d'alimentation des LED, si j'ai besoins de rallumer les LED lorsque la programmation OFF est active je n'ai qu'a appuyer sur un bouton, je voudrais pouvoir garder ce principe en plus de "dimmer" avant la fermeture programmé

J'ai aussi un câble Ethernet qui se rend a la grange, rien n'y est branché pour le moment mais j'envisage quelques caméras et ultimement un contrôle de quelque composante

Des suggestions sur ce projet?

Merci!

bonjour,
quelle minuterie coupe la ligne des leds : coté secteur ou coté 12 VOLTS ?
et surtout quelle genre de leds : rubans 12 volts ou ampoules 12V qui remplacent les anciennes 12volts halogenes ?

Cette minuterie et elle coupe le 12V. J'ai besoin de garder le transfo 120VAC/12VDC en fonction car il alimente un 2e circuit non programmé que j'allume au besoin dans un autre section de la grange

https://www.amazon.ca/%C3%A9lectronique-programmable-micro-ordinateur-dalimentation-interrupteur/dp/B08HTX1F1F/

Pour ce qui est des LED c'est des rubans 12V

Merci!

bonjour,

la graduation de rubans 12 v dc n'est pas tres compliquée : pourcentage/durée, ce qui sera moins évident c'est de déclencher la graduation suivant la programamation de la minuterie la sortie minuterie est un seul contact sec d'un relais
dommage que d'autres forumers bien plus aguerris ne repondent pas à votre demande que je trouve tres utile pour le bien-être animal

hors sujet : mon disque dur ayant rendu l'ame, je n'ai pas pu me reconnecter avec mon ancien pseudo, meme avec "mot de passe oublié", j'ai du recreer un nouveau compte avec la meme adresse mail ?

Bonjour jideel

[quote="jideel, post:1, topic:1183329"]

As tu un lien sur ton ruban de LED 12V?
Quelle longueur totale?

Signifie éteindre graduellement la lumière de façon manuelle ou désactiver le système?

Ton horloge a un contact sec pour commander le système?

Oui, pour dimmer tes LED, il faut utiliser une pin de l'Arduino ayant l'attribut PWM (~) qui commande un module MOSFET de ce genre
image

Ces modules supportent 5 Ampères mais si > 1A il faut mettre un radiateur, mais on peut aussi en mettre plusieurs en divisant ta rampe de LED.

Quand au programme, je peur te faire un exemple, si tu le désires :wink:

A+
Cordialement
jpbbricole

Bonjour JPBBricole

Les rubans LED sont ceux-ci (3 longueurs total) J'ai coupé la manette et branché direct car je voulais "centralisé" le tout dans un boitier et alimenter au 12V a l'époque (j'était sur 1 panneau solaire avant d'alimenter la grange)

https://www.amazon.com/gp/product/B07XGKX327/


L'override serait pour éteindre les lumières ex; avant la que la graduation ce fasse ou allumé le tout après la minuterie (sans perdre la programmation). En fait le minuteur présent le fait déjà avec le bouton manuel, mais c'est de graduer qui m’intéresse (ce qu'il ne fait pas)

Le boitier de contrôle peut être refait au complet, je veux conserver que les LED et le transformateur, le reste n'a pas d'importance, de tout façon je veux le refaire car trop gros, il ramasse la poussière et non adapté a mes besoins. De plus ca me donne un projet pour apprendre d'autre chose!

Le module Mosfet est ce genre de conseil que je vient chercher ici!

Pour le moment je doit commencer par me commander un petit kit d'Arduino pour me pratiquer et ensuite je verrais pour le projet, je voulais surtout savoir si c'était faisable avec Arduino avant d'y mettre trop temps et que cela ne soit pas réalisable

Merci!

Bonjour jideel

Je me suis amusé à l’exercice :wink : avec ce montage à module MOSFET IRF520

Et 3,4 mètres de bande LED de ce type :

Le MOSFET chauffe, un petit peu, et le résultat est très bon.

Le programme de test :

/*
    Name:       ARDFR_RubanLed12pwm.ino
    Created:	01.11.2023
    Author:     jpbbricole
				
				Commande d'un ruban de LED par PWM dégressif
				https://forum.arduino.cc/t/controle-eclairage-12v/1183329/5
*/
const int dimmerPeriode = 5;     // Periode en minute(s)
const int dimmerMin = 10;     // Valeur minimum du PWM (0-255)
const int dimmerMax = 255;     // Valeur maximum du PWM

//------------------------------------- LED 12V.
int ledPwm;     // Puissance des LED
const int ledPwmPin = 9;     // Où est connectée la commande de puissance, MOSFET

const unsigned long ledPwmPeriode = dimmerPeriode * 60000;     // Periode en millisecondes
unsigned long ledPwmPeriodeStart;     // Quand a démarré la période

//------------------------------------- Entrées de commande
const int automateContactPin = 8;     // Pin du contact sec de l'automate, 1 côté à GND (PULLUP), l'autre à l'Arduino
const int automateContactEtatOn = LOW;     // Etat actif du contact de l'automate

//------------------------------------- Etats du système.
enum {etatEnAttente, etatDimming, etatDimmingEnd};
int etatSystem = etatEnAttente;

//------------------------------------- Tempo de rafraîchissement
unsigned long updateTempo = 1000;     // Mise à jour des valeurs toutes les secondes
unsigned long updateMillis = millis();     // Mise à jour des valeurs, chrono

void setup()
{
	Serial.begin(115200);

	pinMode(ledPwmPin, OUTPUT);     // Commande de l'étage de puissance
	pinMode(automateContactPin, INPUT_PULLUP);     // https://www.locoduino.org/spip.php?article122

	Serial.println("Dimmer ruban LED start");
}

void loop()
{
	if ((etatSystem == etatEnAttente) && (digitalRead(automateContactPin) == automateContactEtatOn))
	{
		Serial.println("ETAT Dimming");
		etatSystem = etatDimming;     // Dimmer en marche
		ledPwmPeriodeStart = millis();
	}

	//--------------------------------- Dimmer
	if (etatSystem == etatDimming)
	{
		if (millis() - updateMillis >= updateTempo)     // S'il est temps de mettre à jour
		{
			unsigned long tempsEcoule = millis() - ledPwmPeriodeStart;
			ledPwm = map(tempsEcoule, 0, ledPwmPeriode, dimmerMin, dimmerMax);
			ledPwmCommande(255 -ledPwm, tempsEcoule);     // Eteindre progressivement

			updateMillis = millis();
		}
		if (millis() - ledPwmPeriodeStart >= ledPwmPeriode)     // Si cycle du dimmer terminé
		{
			Serial.println("ETAT Dimming END");
			etatSystem = etatDimmingEnd;
			ledPwmCommande(0, 0);
		}
	}

	if (etatSystem == etatDimmingEnd && (digitalRead(automateContactPin) != automateContactEtatOn))     // Si dimming terminé et relais tombé
	{
		Serial.println("ETAT en attente");
		etatSystem = etatEnAttente;
		delay(100);
	}
}

void ledPwmCommande(int pwm, unsigned long secEcoulees)
{
	Serial.println("LED puissance : " + String(pwm) + "\t" + String((ledPwmPeriode / 1000) - (secEcoulees / 1000)));

	analogWrite(ledPwmPin, pwm);
}

A+

Cordialement
jpbbricole

Wow! merci du programme

Je vient de commander un kit de Arduino, je vais pouvoir me pratiquer et décortique ce que tu as fait. Ca va m'aider a comprendre la programmation

Je vais faire ca durant l'hiver et je tient le forum au courant de l'avancement!