Results 1 to 1 of 1
-
02-13-2014, 03:03 PM #1
- Join Date
- Jan 2014
- Location
- Ireland
- Posts
- 7
LED ring light for Velleman K8200 3D printer
This time I would like to present you how I have added a light around the extruder.
Instead of re-inventing the wheel I just bought a simple tent light in Argos.
It contains 2 rings with white 5mm LEDs and it is battery powered. It takes 3x AA batteries so the maximum voltage is about 4.5V – close enough to onboard 5V. I’m going to drive it using PWM so I’m not worried about exceeding the limits (I’m sure there is a voltage margin in the product design so it will not catch the flames if 4.51V is provided
14.jpg 15.jpg 16.jpg
For the PWM driver I used Atmega328P microcontroller with an Arduino bootloader. It is a bit overkill using a microcontroller for such a simple purpose but it leaves me an open window for future modifications and it was also very quick to set up from parts I had. The other big advantage of this solution comes when a small tweaks are required – it just means changing the source code and re-uploading it back to the microcontroller.
I used one of the analogue inputs (A0 - pin 23) to read value of the potentiometer and one of the PWM outputs (D10 - pin 16) to drive a transistor that controls the LEDs. Atmega328P has a 10 bit A/D converter, therefore it can read 1024 positions of the potentiometer (0-1023). However, the PWM output is only 8-bit (0-255). I have modified the range to be 3-255 – so turning the potentiometer to its edge will turn off the lights completely. I have also added averaging of last 10 readings to prevent flickering.
A 4-pin header (Reset, RxD, TxD, GND) was added for programming purposes.
As a power supply I used the main controller board, pins marked as +5V and GND from the header J1 located in the corner of the controller board.
schematic.jpg 26.jpg
List of components used:
- 1x ATmega328P with Arduino bootloader
- 1x BUF644 NPN transistor
- 1x 16MHz crystal
- 2x 22p ceramic capacitor
- 1x 10k resistor
- 1x 100R resistor
- 1x 10k potentiometer
And here is the source code:
Code:// Arduino program for PWM LED lighting // Copyright 2014 - LJ Winkler (lwinkler247@gmail.com) // //-------------------------------------------------------------------------// // Permission is hereby granted, free of charge, to any person // // obtaining a copy of this software and associated documentation files // // (the "Software"), to deal in the Software without restriction, // // including without limitation the rights to use, copy, modify, merge, // // publish, distribute, sublicense, and/or sell copies of the Software, // // and to permit persons to whom the Software is furnished to do so, // // subject to the following conditions: // // // // The above copyright notice and this permission notice shall be // // included in all copies or substantial portions of the Software. // // // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // // IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDERS BE LIABLE FOR ANY // // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, // // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //-------------------------------------------------------------------------// /* * pin A0 - PWM pot input * pin 10 - PWM output */ const int numReadings = 10; const int potINpin = A0; const int pwmOUTpin = 10; int potValue = 0; int pwmValue = 0; int readings[numReadings]; int index = 0; int total = 0; int average = 0; void setup() { pinMode(pwmOUTpin, OUTPUT); pinMode(potINpin, INPUT); for (int thisReading = 0; thisReading < numReadings; thisReading++){ readings[thisReading] = 0; } } void loop() { total = total - readings[index]; readings[index] = analogRead(potINpin); total = total + readings[index]; index = index + 1; if (index >= numReadings){ index = 0; } average = total / numReadings; pwmValue = map(average, 0, 1023, 255, 0); if(pwmValue<3){ pwmValue=0; } analogWrite(pwmOUTpin, pwmValue); delay(1); }
To download the files - visit my profile on Thingiverse (http://www.thingiverse.com/ljwinkler/designs) or use direct links below:
- LED rings mount (http://www.thingiverse.com/download:455730)
- Left bracket (http://www.thingiverse.com/download:455726)
- Right bracket (http://www.thingiverse.com/download:455727)
- PWM controller board base (http://www.thingiverse.com/download:455729)
- Potentiometer holder (http://www.thingiverse.com/download:455728)
- Full clip (http://www.thingiverse.com/download:409393)
- Flat clip (http://www.thingiverse.com/download:416539)
- Pin (http://www.thingiverse.com/download:409394)
For more details, photos, schematic - please visit my blog:: http://ljwinkler.blogspot.com/2014/0...-k8200-3d.html
For latest updates/projects please subscribe to: http://ljwinkler.blogspot.com/
Cheers,
LJ
My 3D Norn Emissary print
09-13-2024, 02:28 AM in 3D Printing Gallery