A Sunrise and Sunset Lamp With LEDs
Intro: A Sunrise and Sunset Lamp With LEDs
On the other hand, most of the time it is also dark when you come home from work. So the great sunset is also gone. Wintertime seems sad, isn't it?
But not for the readers of this instructable. It explains you how to build a combined sunrise and sunset-lamp from a picaxe microcontroller, some LEDs and a few other parts.
The LEDs might cost you 5-10 Euros depending on the quality and the other parts should not make more than 20 Euros. So with less than 30 Euros you can build something really helpful and nice.
And this instructable will not only explain you how to rebuild this, but also show you how to modify it to your individual preferences.
STEP 1: Things We Need
In older computer-mouses with D-Sub-connectors you might find a good substitute for the phone-jack cable used to program the picaxe.
Picaxes and a lot of other useful stuff might be bought here:
http://www.rev-ed.co.uk/picaxe/
For the rest just check out your local dealer.
STEP 2: The Circuit-layout
Standard ultrabright 5mm LEDs normally use 25-30mA per strip and even eight of them will stress the FET only with 200-250mA, so your far away from any critical points. You might even think about using high power 5W LEDs for the wakeup light. They usually use 350mA at 12V and might also be driven by this array.
The pushbutton "S1" is the reset-button for the microcontroller.
The switch "S2" is the selector of sunset or dawn. You could also replace it by a pushbutton and activate sunset by an interrupt in the software.
The potentiometer R11 acts as a selector for speed. We use the picaxes ADC ability to read out the position of the potentiometer and use this value as the timescale.
The picture shows the first board that I built with 7 individual transistors (BC547C) and the resistors to drive them. I didn't have the ULN2803 at the time I build the circuit, and now I'm missing some other parts. So I decided to show you the original layout, but also provide the layout with the new driver-array.
STEP 3: What Is Sunset Looking Like?
The sunset will be the most difficult part of the device because you watch it with full consciousness and little mistakes are quite annoying. Sunrise is principally the same program reversed but as you are still asleep when the sunrise starts, we don't have to worry too much about colours. And starting your sunset when laying down, you might not want to start out with bright sunshine but in the morning it is important to get the most out of the LEDs. So it is convenient to have different sequences for sunrise and sunset, but you are free to test anything you like of course!
But these differences in the programs, might lead us to a different selection of LEDs for both programms.
STEP 4: Selecting the LEDs and Calculating the Resistors
Colours:
It is difficult to smoothly switch a strip on or off with LEDs of a complete new colour. So my recommendation is that each strip contains LEDs of all colours but in changing quantities.
If we imagine the sunset reversed the first strip would contain a lot of red LEDs and maybe one white, a blue and a UV one. So let's say 5 red ones, 2 yellow, 1 warm white and 1 UV. If you like you might replace one of the red or yellow LEDs by an orange one (Strip 2 in the schematic)
The next brighter strip would then have a few red ones substituted by yellow ones. Let's say 2 red, 5 yellow and 2 warm white (strip 3 in schematic)
In the next strips a few more red ones will be substituted by yellow ones or even white ones. Let's say 1 red, 1 yellow, 4 warm white and 1 blue. (strip 4 in schematic)
The next strip might consist of 3 cold white, 2 warm white and 1 blue LED. (strip 5)
This would be four strips for sunset so far. For Sunrise we could use the leftover three strips with mainly cold white and blue LEDs. If you connect the 7th and the 8th input together you could also use 4 strips for sunrise, or give sunset a fifth strip, just as you like.
You might have noticed that the strips containing red LEDs have more LEDs per strip than the pure white ones. This is caused by the difference in minimum voltage for red and white LEDs.
As the LEDs are really bright and even dimming them down to 1% is quite a lot, I calculated strip 1 with 3 reds, 2 yellow and a warmwhite LED to have only 5mA of current. This makes this strip not as bright as the other ones and therefore suitable for the last hint of sunset. But I should have given this strip an UV-LED too, for the last glance.
How to calculate the LEDs and the resistors:
The LEDs need a certain voltage to operate and even the darlington-array uses 0.7V per channel for its own purpose, so to calculate the resistor is very simple. The FET practically doesn't cause any voltage loss for our purposes. Let’s say we operate at 24V from the power supply. From this voltage we subtract all the nominal voltages for the LEDs and 0.7V for the array. What is left must be used by the resistor at the given current.
Lets look at an example:
first strip: 5 red, 2 yellow, 1 warm white and 1 uv LED.
One red LED takes 2.1V, so five of them take 10.5V.
One yellow LED also takes 2.1V, so two of them take 4.2V.
The white LED takes 3.6V, the UV LED takes 3.3V and the array 0.7V.
This makes 24V -10.5V - 4.2V - 3.6V - 3.3V - 0.7V = 1.7V which must be used by some resistor.
You surely know Ohm's law: R = U/I. So a resistor that uses 1.7V at 25mA has a value of 1.7V/0.025A = 68 Ohm which is available at electronic stores.
To calculate the power used by the resistor just calculate P = U*I, this means P = 1.7V * 0.025A = 0.0425 W. So a small 0.25W resistor is enough for this purpose. If you use higher currents or want to burn more volt in the resistor you might have to use a bigger one!
That’s the reason why you could only operate 6 high voltage consuming white LEDs on 24V.
But not all LEDs are really the same, there might be big differences in the voltage loss from LED to LED. So we use the second potentiometer (300 ?) and a current-meter to adjust the current of each strip to the desired level (25mA) in the final circuit. Then we measure the value of the resistor and this should give us something around the calculated value.
If the result is something in between two types then choose the next higher value if you want the strip to be a little darker or the next lower value for the strip to be a bit brighter.
I installed the LEDs in an acrylic glass board which I fixed to the power-source-housing. Acrylic glass can easily be drilled and bend if heated to around 100°C in the oven. As you can see on the pictures I also added the sunrise – sunset selection switch to this display. The potentiometer and the reset-button are on the circuit-board.
STEP 5: Adjusting the Software
The picaxes are very good for beginners because the requirements to the hardware are very simple and the basic-language is easy to learn. With less than 30€ you can start to explore the wonderful world of microcontrollers. The disadvantage of this cheap chip (18M) is the limited RAM.
If you chose other features or connect the picaxe different you might have to adjust the program. But surely you will have to make adjustments to the transitions between the individuals strips.
As you can see in the listing the variable w6 (a word-variable) acts as a counter – variable and as the parameter for the PWM. With the chosen PWM-frequency of 4kHz the values for 1% to 99% duty-time are 10 to 990 respectively. With the calculations in the loop we get a nearly exponential decrease or increase of LED-brightness. This is the optimal when you control LEDs with PWM. When switching on or off one strip, this is compensated by the software by changing the value of the PWM.
For example let's look at the sunset. Initially the outputs 0, 4 and 5 are switched high, that means the respective strips are switched on via the ULN2803A. Then the loop reduced brightness until the variable in w6 is smaller than 700. At this point pin0 is switched low and pin2 is switched high. The new value of w6 is set to 900.
This means that the lamp with strips 0, 4 and 5 at PWM-level 700 is nearly as bright as the lamp with strips 2, 4 and 5 at PWM-level 800. To find out these values you have to test around and try some different values. Try to stay somewhere in the middle, because when you dim down the lamp in the first loop too much, you can not make much in the second loop. This will reduce the colour-change-effect.
To adjust the PWM-settings I used a subroutine that also uses the value of w5 to pause the program. At this point the speed comes in the game. Only during start-up the potentiometer is checked and the value is stored in w5. The number of steps in each loop of the program are fixed, but by changing the value of w5 from 750 to around 5100, the pause in each step changes from 0.75s to 5s.
The number of steps in each loop might also be adjusted by changing the fraction for the exponential de- or increase. But make sure not to use to small fractions, because the variable w6 is always a whole number! If you would use 99/100 as a fraction and apply that to a value of 10, that would give you 9.99 in decimals but again 10 in integers. Also keep in mind that w6 might not exceed 65325!
To speed up testing, try to comment out the line with w5 = 5*w5, this will speed up the program by a factor of 5! :-)
STEP 6: Installation in the Bedroom
In the evening, I activate the sleep-timer-function of the timer clock and power up the lamp with the sunset switch on. After the program has started I immediately switch back to sunrise, for the next morning. Then I enjoy my personal sunset and soon fall asleep.
STEP 7: Modifications
When replacing the toggle-switch by a pushbutton you must switch to the sunset-part by activating some interrupt in the program.
To change the supply-voltage you must recalculate the individual LED strips and the resistors, because with 12V you could only drive 3 white LEDs and you need a different resistor too. A workaround would be to use constant current sources, but these might cost you some bucks and use another few tens of a volt for regulation.
With 24V you could drive a lot of LEDs in one strip, to control the same amount of LEDs with 12V supply, the LEDs must be separated in two strips which are used parallel. Each of these two strips needs its own resistor and the accumulated current through this channel has more than doubled. So you see, that it makes no sense to drive all LEDs by 5V, which would be convenient, but the current would rise to an unhealthy level and the amount of resistors needed would also skyrocket.
To use high power LEDs with the ULN2803 driver you could combine two channels for a better thermal management. Just connect two inputs together on one microcontroller-pin and two outputs on one high power LED-strip. And keep in mind, that some high power LED spots come with their own constant-current circuit and might not be dimmed by PWM in the power-line!
In this setup all parts are far away from any limits. If you push the things to the edge you might get thermal problems with the FET or the darlington array.
And of course never use 230V AC or 110V AC to drive this circuit!!!
My next step beyond this instructable is to wire up an microcontroller with three hardware PWMs to control a high power RGB-Spot.
So have fun and enjoy the privilege of your individual sunset and sunrise.
28 Comments
neillsun 12 years ago
Has anyone make a PCB for this? I'm being lazy here, of course!
andyk75 12 years ago
And congratulations that you finally started with Picaxe. They are really easy to learn and good for a start.
Good Luck!
neillsun 10 years ago
So, after another 2 years - yes, I am embarrassed! - I have built and circuit and programmed the Picaxe. I needed to make a few changes to the Picaxe as the one I bought is a 18M2.
Alas. I'm not winning! If, for example, I turn on pins B.0 and B.2 and do NOT use the PWM, so set B.3 high to switch the FET, everything works well. If, with exactly the same set up and code, but use the PWM and don't set B.3 high, the LEDs connected to B.0 and B.2 turn on at full brightness, and all the other LEDs start off, but increase in brightness with each step of the PWM routine.
I will point out here that I haven't built the LED grid yet, I am testing with one LED connected to each output of the ULN2803.
I have tried numerous things to sort this out, changing the FET for an NPN transistor; swapping the ULN2803 for a different one; adding the pull down resistor to the PWM pin as recommended by the Picaxe (this seemed to stop the LEDs flicking on at power up); adding a pull-up resistor to the GND pin of the ULN2803 (incase the FET was leaving the pin floating); removing the capacitors, thinking there might have been a residual capacitance effect. (I am using a 20V laptop PSU, so I'm pretty confident the supply is clean).
I have gone through my circuit and your schematic very carefully, and can't see any errors, and I have gone through my stripboard to make sure there are no bridged tracks, dry joints, etc.
I'm a touch stuck here! Any suggestions?
Thanks,
N.
fjordcarver 12 years ago
Pixelxo 12 years ago
I need help..I wanted to know that if I wanted to use this for the entire roof of my roof (10X10sq ft) how many leds are required and where do place the various colors.
And is there a way that I could connect it to a electric watch and it could simulate it for me when ever I wanted to on the press of a button ??
Thanks
Rahul
ABaruwal 13 years ago
Can anyone help me with the circuit for the wake up light, please.
floodll 13 years ago
NikonDork 13 years ago
Your project here is perfect for people as it naturally adusts your vision to match whats going on outside. if you could integrate a stronger UV source, it would help your body adjust even better. This idea is great for both people and animals that are sensitive to sunrise/sunset.
Im going to try this as soon as i can collect parts. I also think it would look excellent if it were modfied to point the leds upward and enclose in a simple, thin, 3d rectangular frame with panels made of a heavy rice paper, or a thin opaque white plastic.
Awesome stuff.
miguelastico 14 years ago
aborior 14 years ago
andyk75 14 years ago
But a big painting is also a good idea.
Lately I saw something like this, that was a silhouette of a city in front of a RGB-LED. This also gave a nice effect.
koraygumbur 14 years ago
andyk75 14 years ago
The *.sch file contains the circuit diagram and can be opened with the "Eagle Layout Editor" from Cadsoft. They offer a free version of their product which might be downloaded from their website
But you could also use the jpgs of the circuit diagramm, they are prints of the eagle software.
ThinkBeforeYouSpeak 14 years ago
Hycro 14 years ago
jeff-o 14 years ago
ThinkBeforeYouSpeak 14 years ago
ThinkBeforeYouSpeak 14 years ago
buteomont 14 years ago
Unless, that is, you enjoy being a sourpuss. If that's the case, then carry on.
poeticoddity 14 years ago