Arduino Light Dimmer

6.6K357

Intro: 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.

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!!!!

7 Comments

salut a tous,

Je suis a la recherche de développeur pour un projet opensource similaire, Nous somme déjà 3 sur ce projet.
Ce projet consiste a rendre accessible aux plus novices les fonctionnalités du rapberry pi et arduino combinés dans le but de gérer des systêmes domotiques annexes tel qu'une ruche, un jardin, un aquarium, une cave a vin, une champignonnière, un terrarium, une serre, enfin presque tout enfaite.

Une interface graphique seras accessible depuis partout. Un systême de scénarios configurable permettra la régulation ainsi que l'alerte mail et sms du systême.

Le But étant de pouvoir partager depuis un site communautaire des données créer par la communauté dans un esprit de DRY (don't repeat yourself), pour éviter que chacun écrive sont petit morceau de code dans sont coin alors qu'il pourrais le rendre accessible a toute une communauté. Quel gains de temps pour toute une communauté!!!.

n’hésitez pas à nous rejoindre, on ne mort pas lol!!! les projets open sources ont besoin de vous!!

https://ardui-farm.sonetin.com/

Agreed. nice enough but hard to read it all. that's my problem though. I'll just download it and remove all the Francais.

nice ible!

Thanx for your support. I tried as I could to translate the essential informations. Later I will give the translation on the SYSML diagrams (usefull to create and visualize the project). But for the moment the schematics and the guide are enough explicit I think despite some french sentences. Hope it will run for you.

This system has just been intalled by a client. No troubles for the moment...

Best regards. Manu

This looks awesome, but is there any way you can write it in English?

Wishes nearly granted! I tried to translate my comments but it still remaining the diagram in french. Hope it will be understandable. Thankx for your support.

Best regards.

So smart! Thanks for shearing :)

Thanx. Hope i 'will give you some ideas for an instructables. Let me know.

Best regards.