Auteur Sujet: Simulation daylight  (Lu 14467 fois)

Guillaume

  • Global Moderator
  • Full Member
  • *****
  • Messages: 204
    • Voir le profil
    • Locoduino
Simulation daylight
« le: avril 12, 2015, 02:56:52 pm »
Bonjour,
je souhaite sur mon module HOe mettre une simulation jour/nuit avec des bandes de LED. J'en possède une à ton chaud. Il existe aussi des tons froids.
Je sais que froid c'est plutôt la journée et chaud c'est lever et coucher de soleil.
Avant de faire des tests, est-ce que par hasard quelqu'un s'est penché sur ce point ?
G.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Simulation daylight
« Réponse #1 le: avril 12, 2015, 05:42:23 pm »
Oui, Patrick a travaillé là dessus :

http://jurasecondairen.blogspot.fr/2012/11/jour-et-nuit.html

Même si je pense que le matin, c'est blanc pur à l'aube avant que le soleil se lève puis plus chaud au levé du soleil.

À moduler pour simuler un temps nuageux avec des couleurs plus froides

Et puis ses propres goûts :)
« Modifié: avril 12, 2015, 08:15:39 pm par Jean-Luc »
Cordialement

Guillaume

  • Global Moderator
  • Full Member
  • *****
  • Messages: 204
    • Voir le profil
    • Locoduino
Re : Simulation daylight
« Réponse #2 le: avril 12, 2015, 06:23:02 pm »
Je ne m'en rappelais plus de celui-là.
Je vais prendre cela déjà comme exemple pour

Chacun a ses propres valeurs. J'avais trouvé ces trucs sur un site de photos pour une histoire de balance des blancs.
On va mettre en application cela alors
G.

Guillaume

  • Global Moderator
  • Full Member
  • *****
  • Messages: 204
    • Voir le profil
    • Locoduino
Re : Simulation daylight
« Réponse #3 le: avril 13, 2015, 09:01:16 am »
Et voila un premier jet, il y a des choses à refaire de toute façon, et forcément à simplifier le code :
//Bibliothèque
#include <ScheduleTable.h>

//Variables pour les tables

//Laisser à 1 pour un cycle de 24h en 24 min, pour accélérer, augmenter jusqu'à 200 max
const byte acceleration = 1;
//----------------------------
//Table générale
const byte actionTable = 4;

ScheduleTable cycle(actionTable, 1440, (1000/acceleration)); //24 min rééls pour un jour de 24h

//--------------------
//Table jour/nuit pour le soleil (ton chaud et froid)
ScheduleTable leverchaud(1, (470/acceleration));
ScheduleTable coucherchaud(1, (235/acceleration));

ScheduleTable leverfroid(1, (470/acceleration));
ScheduleTable coucherfroid(1, (235/acceleration));

// Pin des pwm
const byte pinchaud = 3;
const byte pinfroid =5;
//Variables pour pwm
byte chaudpwm = 0;
byte froidpwm = 0;

void setup() {
  // ajout des taches sur la table générale
  cycle.at(600, setleverchaud);
  cycle.at(1140, setcoucherchaud);
  cycle.at(360, setleverfroid);
  cycle.at(1080, setcoucherfroid);
 
  //ajout sur table annexe
  leverchaud.at(0, pwmleverchaud);
  leverfroid.at(0, pwmleverfroid);
  coucherchaud.at(0, pwmcoucherchaud);
  coucherfroid.at(0, pwmcoucherfroid);
 
  cycle.start();
 
  pinMode(pinchaud, OUTPUT);
  pinMode(pinfroid, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  ScheduleTable::update();
}

//Fonctions pour les scheduleTable

void setleverfroid(){
  leverfroid.start(255);
}

void setcoucherfroid(){
  coucherfroid.start(255);
}

void setleverchaud(){
  leverchaud.start(255);
}

void setcoucherchaud(){
  coucherchaud.start(255);
}

void pwmleverfroid(){
  froidpwm++;
  analogWrite(pinfroid, froidpwm);
}

void pwmcoucherfroid(){
  froidpwm--;
  analogWrite(pinfroid, froidpwm);
}

void pwmleverchaud(){
  chaudpwm++;
  analogWrite(pinchaud, chaudpwm);
}

void pwmcoucherchaud(){
  chaudpwm--;
  analogWrite(pinchaud, chaudpwm);
}
G.

petitrain

  • Jr. Member
  • **
  • Messages: 86
    • Voir le profil
Re : Simulation daylight
« Réponse #4 le: avril 13, 2015, 02:33:56 pm »
bonjour à tous,
Je reprends la parole après un long silence, je vois que le forum est toujours actif...
Je n'ai toujours pas testé les sheduleTable de Jean Luc, ça a l'air vraiment simples.
Pour répondre à ta question, sur mes modules, j'ai testé pas mal de choses pour le jour et la nuit et je n'ai pas encore  décidé quoi prendre:
 J'ai mis des rubans de leds RGB en soutien pour augmenter les tons chauds le matin et le soir, du blanc/bleu pour pour les journées froides d'hiver et pour la pleine lune.
 J'ai mis aussi un ruban de blanc chaud mais je ne sais pas si je vais le garder ( trés jaune)
 J'ai mis des ampoules halogène qui me donne la température de couleur que j'aime bien ( comme on a dans le sud!) mais, le problème avec les halogènes c'est la consommation de courant. Je voudrais les passer en 220v avec un gradateur commandé par arduino mais je n'ai rien trouvé de simple encore.
Un problème que j'ai trouvé avec les rubans de leds, c'est le manque d'inertie des leds par rapport aux ampoules à filament.
Quand la PWM est très basse et lente, la lumière monte et descend par escalier et je n'aime pas beaucoup!!!
Sinon, Patrick m'avait envoyé un petit programme pour commander tout ça, bien sympa, si ça t'intéresse?
Je compte bien m'y remettre mais je manque de temps....

Guillaume

  • Global Moderator
  • Full Member
  • *****
  • Messages: 204
    • Voir le profil
    • Locoduino
Re : Simulation daylight
« Réponse #5 le: avril 13, 2015, 02:46:52 pm »
Je garde cela en tête c'est enregistré. Je vais dans un premier temps faire avec les bandes de led j'ai juste la place pour mettre de front une bande de chaque chaud et froid. Je n'ai mis qu'un mini bandeau pour que ca tienne en carton. Tout mon module est fait en carton ;).
Les autres idées je garde pour les prochains.

Effectivement le pb du palier peut être. Il faut que je testes en exploitation réelle. J'attends les transistors.
Après, peut être qu'il y a à prendre en compte la fréquence des PWM, comme ce n'est pas une tension continue pure. Avec un transformateur analogique, je n'ai pas vraiment de souci, condensateur aussi ?

Le code que j'ai pondu correspond au diagramme de patrick de juraensecondaire.

L'inertie est à faire avec le programme ;)

Concernant le code, sur les animations lumineuses, je me débrouille. J'aime bien faire par moi-même. La biblio de jlb avance bien le truc, c'est suffisant pour le moment.
G.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Simulation daylight
« Réponse #6 le: avril 14, 2015, 07:41:12 am »
Bonjour,

J'avais noté cette manque de finesse dans la gradation pour les faibles valeurs de PWM et j'ai reprogrammé le timer 1 pour avoir une PWM 16 bits au lieu de 8 bits sur les 2 broches 9 et 10. On se retrouve avec 65536 pas au lieu de 256, ce qui résout le problème.

Mais je n'ai que 2 rubans.

Ceci dit en utilisant un Mega, il y a un paquet de timers 16 bits et donc un paquet de PWM 16 bits.

Il y a un exemple de code ici : http://www.ofrecordings.com/2014/03/16/how-to-set-up-16-bit-pwm-with-an-arduino-uno-atmega328/
Cordialement

Guillaume

  • Global Moderator
  • Full Member
  • *****
  • Messages: 204
    • Voir le profil
    • Locoduino
Re : Simulation daylight
« Réponse #7 le: avril 14, 2015, 08:31:31 am »
Bonjour,
ceci dit l'arduino due facilitera le problème ;) avec la fonction resolution de l'analog.  Heureusement pour moi...

Après, les bandes éclairent à partir de 8V (en tout cas les miennes). Finalement, on peut penser (enfin moi), que la montée finalement est très rapide sur peu de pas (vers la fin) et fait cette impression d'escalier au lieu de montée progressive. Peut être est-ce le souci ?
Avis aux spécialistes.
G.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Simulation daylight
« Réponse #8 le: avril 14, 2015, 08:37:48 am »
Le comportement n'est pas du tout le même entre alimentation en tension continue et alimentation en PWM

En tension continue, il faut que ça passe le seuil de 3 DEL en série (elles sont montées comme ça) pour que ça éclaire. Ça doit effectivement faire dans les 8V.

En PWM, le seuil est passé au premier cran et tu as donc un éclairage 1/256e du temps

Effectivement l'Arduino Due est sympa de ce point de vue :)
Cordialement