Table of contents

Wednesday, 14 May 2014

3D printed picture frame hook with level adjustment

I bought a picture frame in IKEA but they have attached 2 flimsy, thin metal hooks but I wanted to hang it on just one.
The background is held by 4 metal 'hinges' - exactly in the central point in all 4 sides so I couldn't mount just one hook :/

My design takes care of it.
It also has teeth allowing adjusting the frame's level. 







To download the files - visit my profile on Thingiverse (http://www.thingiverse.com/ljwinkler/designs) or use direct link below:


 

Follow me on Twitter, Google+, Thingiverse, YouTube or by email to receive the latest updates.


If you like my blog - please donate :)

Tuesday, 25 March 2014

Zeroplus LAP-C Logic Analyser Logic Cube Windows 8/8.1/10 driver

If you are struggling with the LAP-C logic analyser driver under Windows 8, 8.1 or 10 - you found a right place to be :)

I haven't used it in past few months so I was very surprised when Windows said that is not happy with the driver (after upgrading to 8.1). After spending number of hours finding a solution I came up with this:

1. Download http://www.zeroplus.com.tw/software_download/lac_s31200_all(win8).zip (this is their official file however, I couldn't find it in any place on the zeroplus website)
2. Extract the zip file.
3. Navigate to the "Driver Setup" folder and extract the "Data1.cab" file (or double click on it to see its contents).
4. Copy the following files to: "C:\Program Files (x86)\PC-Based Instrument\ZEROPLUS\DRIVER\"
 - Bulkusb.inf8 and rename it as bulkusb.inf
 - Bulkusb.sys7 and rename it as bulkusb.sys
 - Bulkusb64.cat3 and rename it as bulkusb64.cat
5. Go to the Device Manager, right click on the LAP-C Analyser device, select "Update Driver Software".
6. Click on "Browse my computer for driver software" and select the folder from point 4 above.
7. Enjoy! :)


Hope it helps!  Thanks for big thumbs up!


Thursday, 13 February 2014

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 (LINK).


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 :) 

I’ve created a circular holder for the rings:




To mount the PCB rings – I simply marked all the holes in the PCBs with a tip of soldering iron (mmmmm, that sweet smell of melted PLA :)) and then used some small screws lying around to hold the 2 rings in place.



Then was a time to make some brackets to hold the lights next to the extruder:







To mount it to the Z carriage arm I used clips from my previous design: 
http://ljwinkler.blogspot.com/2014/01/frame-clip-and-locking-pin-for-velleman.html





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.

Here is a quick schematic:

 

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


I have soldered it on a single layer protoboard:


Then I have designed a base for the PCB.
I have created small support elements keeping the board raised 5 mm and holding it in place by two M3 screws in the corners. The whole unit is mounted on the main controller board mount (described here: http://ljwinkler.blogspot.ie/2014/01/controller-board-mount-for-velleman.html)




Afterwards I have created a holder for the potentiometer. I have redesigned one of my clips - this time I used the flat one as there are wires running underneath.




And here is the source 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:



Follow me on Twitter, Google+, Thingiverse, YouTube or by email to receive the latest updates.

If you like my blog - please use the donate button :)  This will help me making new stuff. THANK YOU!