Introduction: Arduino Light Dimmer
Un système qui imite les cycles du jour.
A system for day light simulation using RTC.
Step 1: Introduction
Ce système va permettre d'imiter un lever de soleil (LV) et un coucher de soleil (CO), une fois par jour. Cet appareil est destiné surtout aux élevages d'oiseaux et peut être aussi employé pour les élevages de poule par exemple où les éleveurs ont l'habitude de simuler plusieurs levers et couchers de soleil par jour pour augmenter la production d'oeufs. Pour l'adapter à cette dernière fonctionnalité il faudra modifier le programme fourni.
------------------------------------------------------------------------------------------------------------------------------------------------------
The system simulates a sun rise (LV) followed by a sun set (CO), once cycle a day. This system can be used for exotic birds or chicken growing farm...But for this last example some farmer add 3 or 4 cycle of sun rise/set in a day.
Step 2: Cahier Des Charges
Je vous fournis les différents diagrammes qui se passent de commentaires:
- use case diagram (uc): comment utiliser le gradateur?
- requirement diagram (req): les contraintes et qualités attendues par le gradateur.
- block definition diagram (bdd): les composantes générales du système.
-----------------------------------------------------------------------------------------------------------------------------------------------------
I provide 3 different diagrams (in french sorry) to see all the skills and important points of the project:
-the use case diagram (uc): how to use the system?
-the requirement diagram (req): what is the datasheet?
-the block definition diagram (bdd): what are the components?
Step 3: Schéma Utilisé
L'atmega 328p (arduino clone):
Ce système est basé sur l'atmega 328p dont j'ai fabriqué un clone pour pouvoir dialoguer et être programmé par arduino 1.0.6.
Le LCDkeypad clone:
L'écran LCD et les boutons utilisés sont la copie du fameux LCD keypad shield d'arduino.
Le gradateur:
J'ai innové en utilisant un gradateur à base de mosfet beaucoup plus précis et stable qu'un gradateur à triacs et diac. Une simulation de la tension délivrée à la lampe est fourni (j'ai utilisé PSIM).
Pour bénéficier de fréquence très basse de gradation (50/60Hz par exemple) ce qui permettrait un démarrage avec un filament rouge visible de la lampe, il faudra utiliser un circuit de détection du zéro pour synchroniser la gradation et éviter les flickers et papillotements. Ce circuit n'est pour le moment pas nécessaire dans ce montage mais j'y pense.
L'horloge RTC:
A base de circuit DS1307 nécessite une pile au lithium pour la sauvegarde de l'heure et de la date en cas coupure d'énergie.
L'alimentation 5V:
Simple à construire avec des composants qui trainent mais pas terrible niveau rendement.
WARNING!! Des erreurs s'étaient glissées aux niveaux du pont BR2 du gradateur et de l'alimentation 5VDC. Elles sont corrigées.
-----------------------------------------------------------------------------------------------------------------------------------------------------
The atmega328p (arduino uno clone:
This system is based on an atmega328p, cheap and easy to program with arduino 1.0.6.
The lcd keypad shield clone:
The LCD display and the buttons connected like the famous LCDkeypad shield uses the keypad library to run.
The dimmer:
A new generation of dimmer using MOSFET+RECTIFIER BRIDGE instaead of TRIAC+DIAC, it's more accurate and efficient. More stable on lower frequency (50/60Hz) with a zero detection circuit to syncronize the signal. It's not used in my project for the moment.
The RTC clock:
Based on a DS1307 (I2C communication withe atmega) supplied and safed with a lithium cell to save the date/hour/minute/year/day/seconds.
The 5VDC supply:
Very simple to do with component i got for several years, not efficient but it's 5VDC!
WARNING!! There was some errors on the schematic on the transformer wiring and the rectifier. Now it's fixed! Sorry.
Step 4: Fonctionnement Et Tests
J'ai utilisé la méthode FSM (finite state machine) pour bien organiser et séquencer les différentes tâches du programme dont le fonctionnement est illustré par le state diagram fourni.
J'ai également utilisé la librairie TimerOne.h pour ajuster précisément la fréquence de la PWM volontairement choisie sur la pin 10. La modification du timer 1 (gérant la PWM de cette patte) n'a pas d'influence sur la fonction millis() du programme qui gère la plupart des temporisations.
Le fonctionnement est fortement inspiré du site suivant:
https://github.com/pAIgn10/AlarmClock
J'ai simplement enrichi et adapté le script fourni.
Le diagramme donné est le sd (state diagram) qui référence tous les états du système.
Au niveau des tests du gradateur une fréquence PWM de 160Hz donne les meilleurs résultats du point de vue gradation (très progressif, précis et sans scintillement). Si la fréquence est trop élévée: gradation peu visible et scintillements désagréables.
-----------------------------------------------------------------------------------------------------------------------------------------------------
To organize the several tasks and display message I used a finite state machine (see the state diagram...in french).
I used the TimerOne.h library to adjust accurately the frequence of the PWM on the pin 10. It modifies the timer 1 with no influence on millis() function or others used in the program. This woud not be possible with pin 5 wich uses timer 0 and makes some disruptions.
The FSM running comes from:
https://github.com/pAIgn10/AlarmClock
I change some function on it...
The SD diagram gives you: how is it running?
On the dimmer, i tested a pwm with 160Hz and it gives good results with halogen lamps and dimmable fluo lamps with no flicker. But now for a more progressive light and wil try a lower frequency.
WARNING! Here is the last firmware version with some bugs fixed.
Attachments
Step 5: Une Notice D'utilisation
Cette notice permet de programmer le gradateur en LV et CO, de régler l'horloge RTC et de visualiser les différents écrans affichés.
-------------------------------------------------------------------------------------------------------------------------------------------------------
This guide allows you to program the time of the rise and the set of the light, to tune the RTC and see the different messages displayed.
Step 6: Conclusion
Un grand merci à tous les internautes qui partagent leurs notes. J'aimerais citer plein de sites mais la liste serait trop longue.
Ce projet m'a pris pas mal de temps en partant de presque rien. D'ailleurs le programme comporte près de 1800 lignes et l'atmega328P est utilisé à au moins 80%. Pour une adaptation à un cycle d'élevage de poules par exemple il faudrait rajouter des lignes supplémentaires et peut être passer sur un atmega 644.
------------------------------------------------------------------------------------------------------------------------------------------------------
Thanks to several tutorial shared, i can't mention all of them.
This project took me a long time with 1800 program lines. The microcontroller is used with 80% of his capacities. To adapt the system for chicken growing cycles perhaps you will have to use my atmega644/1284 clone for more memory.
Thank you everybody's interesting tutorials shared!!!!