Wilbur

Eclairage d'un bac par Led haute puissance : tuto

41 messages dans ce sujet

Super rendu, 

Mais au final tu a attein ton objectif de ne pas depasser les 150€?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je suis monté à 180 € car en cours de projet, je me suis décidé pour un driver différent qui me permettra par la suite de jouer sur l'intensité et la température de couleur en fonction des heures de la journée.

 

Je confirme qu'il est possible d'avoir cela pour 150 €

 

L'aspect pratique, c'est le rejet d'eau dans le bac de grossissement des alvins, qui ont toujours de l'eau propre

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous,

 

Après un désamarçage intempestif de la pompe de refroidissement (mes parents n'avaient pas fait gaffe au niveau d'eau), j'ai 6 Led qui ont cramé.

 

Du coup, je reprends la chose, mais avec 4 led blanc froid, et 4 blanc chaud (achetées 5 € pièces sur Ledtech.de), j'y ajoute une platine arduino, avec des relais et des capteurs de température pour couper le jus si la rampe devient trop chaude (le prix des lampes perdues m'aurai déjà payé l'arduino...). Je profite pour y ajouter une gestion du thermomètre du bac, une alarme de remplissage, une gestion progressive de l'allumage et de l'extinction des Led, et quelques trucs pour plus tard (gestion CO² et pompes de circulation).

 

Je suis déjà en train d'effectuer les essais, les photos du montage arriveront semaine prochaine, avec un tuto pas à pas pour arduino et cette rampe de Led.

 

Cheers

Modifié par Wilbur

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à toutes et à tous,

 

Le projet est enfin terminé. Il me reste quelques photos à prendre, et surtout à faire le tuto. La sécurité apporté un vrai plus en cas de problème, et la progressivité de l'éclairage fait du bien a la facture EDF  (c'est tout relatif, en compensation, pour le même prix, je précois d'ajouter des pompes de circulation .... - passion quand tu me tiens...).

 

En exclusivité (même si j'ai l'impression que personne ne suit ce post - ce qui est normal au vu de la frequence de mes interventions), voici le code pour l'arduino, lequel subira encore quelques modifications.

 

En attendant, je vous dis à bientôt pour le tuto.

 

 

Wil'

 

 

code :

 

//**********************Wilbursea Arduino***************
//Date : Juin 2013
//*************************************************************

/////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////DECLARE VARIABLES///////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
#include <LiquidCrystal.h>
#include <Wire.h>
#include <RTClib.h>
#define LCD_WIDTH 16
#define LCD_HEIGHT 2
char lcdbuf[LCD_WIDTH];
uint8_t DsHour ,DsMin ,DsSec;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);  // initialize the library with the numbers of the interface pins
RTC_DS1307 rtc;
int minute;
int heure;
int seconde;
int date;
int mois;
int annee;
int temps_perso;
int lastSeconde;
float tempC;
int tempPin = 0; // Temp sensor plugged analog pin 0
int BC = 22; //Relay plugged to pin 22   Relais 1 = Blanc froid
int BF = 24; //Relay plugged to pin 24   Relais 2 = Blanc chaud
int B = 26; //Relay plugged to pin 26   Relais 3 = Rouge
int R = 28; //Relay plugged to pin 28   Relais 4 = Bleu
int PLed = 30;// = Led + Pompe
int Led = 32; // = Led Only
int Heat = 34;
int BC_on_time = 900;
int BC_off_time = 2200;
int BF_on_time = 1100;
int BF_off_time = 2000;
int R_on_time = 1000;
int R_off_time = 2100;
int B_on_time = 1200;
int B_off_time = 1900;
int PLed_on_time = 830;
int PLed_off_time = 2230;
#include <OneWire.h> // Inclusion de la librairie OneWire  
#define DS18B20 0x28     // Adresse 1-Wire du DS18B20
#define BROCHE_ONEWIRE 5 // Broche utilisée pour le bus 1-Wire  
OneWire ds(BROCHE_ONEWIRE); // Création de l'objet OneWire ds 
// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d'erreur
boolean getTemperature(float *temp){  
byte data[9], addr[8];  
// data : Données lues depuis le scratchpad  
// addr : adresse du module 1-Wire détecté  
if (!ds.search(addr)) { // Recherche un module 1-Wire    
ds.reset_search();   // Réinitialise la recherche de module    
return false;         // Retourne une erreur  
}      
if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçue    
return false;                        // Si le message est corrompu on retourne une erreur    
if (addr[0] != DS18B20) // Vérifie qu'il s'agit bien d'un DS18B20    
return false;         // Si ce n'est pas le cas on retourne une erreur  
ds.reset();             // On reset le bus 1-Wire  
ds.select(addr);        // On sélectionne le DS18B20   
ds.write(0x44, 1);      // On lance une prise de mesure de température  
delay(800);             // Et on attend la fin de la mesure
ds.reset();             // On reset le bus 1-Wire  
ds.select(addr);        // On sélectionne le DS18B20  
ds.write(0xBE);         // On envoie une demande de lecture du scratchpad
for (byte i = 0; i < 9; i++) // On lit le scratchpad    
data = ds.read();       // Et on stock les octets reçus
// Calcul de la température en degré Celsius  
*temp = ((data[1] << 8) | data[0]) * 0.0625;       
// Pas d'erreur  
return true;
}  
/////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////VOID SETUP////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
void setup(void)
{
    Serial.begin(9600);
    pinMode(BC,OUTPUT);
    pinMode(BF,OUTPUT);
    pinMode(R,OUTPUT);
    pinMode(B,OUTPUT);
    pinMode(Led,OUTPUT);
    pinMode(PLed,OUTPUT);
    pinMode(Heat,OUTPUT);
Wire.begin();
rtc.begin();
lcd.begin(LCD_WIDTH, LCD_HEIGHT,1);
// Section de mise à l'heure automatique basée sur l'heure de compilation
// pour une mise à jour de l'heure, ajouter 2 slashs de commentaire devant if, Serial et }
if (! rtc.isrunning()) {
Serial.println("Module RTC non initialise!");
rtc.adjust(DateTime(__DATE__, __TIME__));
}
// une fois la mise à l'heure faite, retirer les 2 slashs devant if, Serial et }, recompiler et renvoyer le prog.
// Fin de la section de mise à l'heure automatique
lcd.clear();
}
void GetTimeFromRTC()
{
DateTime now = rtc.now();
DsHour = now.hour();
DsMin = now.minute();
DsSec = now.second();
temps_perso = (DsHour * 100) + DsMin ;
}

/////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////VOID LOOP////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
void loop(void)
{
// Gestion des temperatures
{tempC = analogRead(tempPin); //Taking the temp pin reading and settin' it equal to the tempC variable
tempC = (5.0*tempC*100.0)/1024.0+1; // will convert the analog input to a temperature in celcius
Serial.println((byte)tempC); // will output the converted temperature to pc
Serial.println("C"); //...Puis l'indice "C" et on saute une ligne
 if (tempC >29)
  {
    digitalWrite(Led, LOW);
  }
  else
  {
  digitalWrite(Led, HIGH);
  }
delay(1000);

float temp;      
// Lit la température ambiante à ~1Hz  
if(getTemperature(&temp)) {          

// Affiche la température    
Serial.print("Temperature : ");    
Serial.print(temp);    
Serial.write(176); // caractère °    
Serial.write('C');    
Serial.println();  
}

//Gestion allumage et extinction

//Leds BC on/off k1
if( (temps_perso >= BC_on_time) && (temps_perso < BC_off_time) )
{
digitalWrite(BC, HIGH);
delay(15);
}
else
{
digitalWrite(BC, LOW);
}

// Leds BF on/off k1
if( (temps_perso >= BF_on_time) && (temps_perso < BF_off_time) )
{
digitalWrite(BF, HIGH);
delay(15);
}
else
{
digitalWrite(BF, LOW);
}

// Leds R on/off k1
if( (temps_perso >= R_on_time) && (temps_perso < R_off_time) )
{
digitalWrite(R, HIGH);
delay(15);
}
else
{
digitalWrite(R, LOW);
}

// Leds B on/off k1
if( (temps_perso >= B_on_time) && (temps_perso < B_off_time) )
{
digitalWrite(B, HIGH);
delay(15);
}
else
{
digitalWrite(B, LOW);
}

// Circuit générale Led+pompe
if( (temps_perso >= PLed_on_time) && (temps_perso < PLed_off_time) )
{
digitalWrite(PLed, HIGH);
delay(15);
}
else
{
digitalWrite(PLed, LOW);
}

//Gestion de l'heure
GetTimeFromRTC();
Serial.print("Heure RTC : ");
Serial.println(lcdbuf);
delay(900);

// Gestion de l'affichage
lcd.clear();
lcd.setCursor(0, 0) ;
sprintf(lcdbuf, "%.2d:%.2d",DsHour,DsMin);
lcd.print(lcdbuf);
lcd.setCursor(0,1);    // set the cursor to column 0, line 1 (note: line 1 is the second row, since counting begins with 0):
lcd.print("TLed ");
lcd.print(tempC);
lcd.print("C");
lcd.setCursor(6,0);    // set the cursor to column 0, line 1 (note: line 1 is the second row, since counting begins with 0):
lcd.print("Tbac ");
lcd.print(temp);
lcd.print("C");
}

 

 

 

 

 
 
 
 
 
 
 
 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut

 

Très bien le programme

 

Combien t'a couté le cout de l'arduino ?

Partager ce message


Lien à poster
Partager sur d’autres sites

 

En exclusivité (même si j'ai l'impression que personne ne suit ce post - ce qui est normal au vu de la frequence de mes interventions), voici le code pour l'arduino, lequel subira encore quelques modifications.

 

 

 

Je ne suis pas d'accord ! Je suis de prés ton post qui me semble très très intéressant. Je compte bien m'inspirer de ton système bien pensé dans un futur proche.

 

Merci de partager !

Modifié par Filirion

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est très gentil tout le monde. Mais j'avoue que lorsque je poste 4 fois l'année, ça ne doit pas vous motiver !!

 

Pour info, je dois en faire un tuto (ça me prendra moins de temps que pour faire la rampe...). En revanche, je répond très rapidement aux messages perso, pour ceux qui ont des questions, n'hésitez donc pas.

 

Je répond maintenant à l'une des premières question de ce post :

 

  - est-ce que l'alu rouille (enfin, se dégrade) et si oui, dans quelle proportions ?

 

La dégradation de l'alu est négligeable. Le bac est à 25°C, donc la rampe aussi (en revanche, elle devient rapidement brulante si la circulation d'eau est coupée).

Ayant refait entièrement la rampe après un an de travail, j'ai pu en vérifier l'intérieur à la lampe : aucune dégradation réellement visible. En fait, l'intérieur qui est en eau, à moins souffert que l'extérieur, lequel prenait autant d'eau que d'air, ce qui conduisait à l'apparaition de taches disgracieuses. Je ne dis pas qu'il n'y a pas de dégradation du métal, mais simplement qu'elle ne semble pas mesurable.

 

J'ai en revanche peint en noir brillant la surface externe de la rampe. Elle reste plus belle, et le brillant fait glisser les goutes d'eau. Miracle, au revoir le chiffon.

 

 

L'arduino m'a coûté 45 € (sur selectronic) mais la uno à 25 € suffirait pour ce montage. Si je l'avais prix dès le début, je n'aurai pas perdu mes 8 led blanches avec la surchauffe. Donc j'aurai économisé au final...

A ce propos, mes parents m'ont appelé hier "au secours, ton système clignote" ....

la pompe de réfrigération s'était bouchée avec de la cerato. Conséquence, la température montait et à 39 °C, la carte coupait le courrant. Puis au bout de quelques minutes, la température retombait, la carte renvoyait le courrant, et la température remontait .....

 

Il vaut mieux 4 leds blanc chaud et 4 blanch froid, ce sera parfait dès que j'aurai mis le PWM en marche pour suivre le lever/coucher du soleil. Et la lumière est plus naturelle.

 

Je me dis que je vais ajouter un ou deux trucs là dessus, genre un débimètre et, soyons fous, une appli pour tel, comme ça je saurais en live la tempé et l'état des lampes.... ou au moins, l'envois de SMS en cas d'urgence.

 

 

J'espère vous poster des photos supplémentaires ce WE du nouveau montage., ainsi que donner les infos de cablage et de consomation electrique.

Modifié par Wilbur

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est parce que le sujet passe à la trappe s'il y a peu de remontée. en post-it et article il y aura plus de lectures!

Partager ce message


Lien à poster
Partager sur d’autres sites

Je dois avouer que je suis impressioné par ton système !

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant