Tuesday, August 27, 2019

CNC Upgrade??

One final upgrade to put this debacle of a machine into a usable form. I wanted to get rid of the main wood frame and since the gantry was now so heavy (and my fasteners for the 8020 not used effectively), I wanted to make that fixed. I could simply turn the y-axis rails inwards and have the bed move.

I bought more 8020 a few weeks ago and just this last weekend put all the upgrades in place:
New bottom frame (upside down).
Old base removed.
Gantry corrected to maintain flush faces and fixed in place.
Functional. The block for the y-axis nut will need some work.
Everything has much less flex now and the envelope of the machine has shrunken.

After updating my LinuxCNC from 2.5.4 to 2.7.14, I cut out some samples to make sure it was really working:
LinuxCNC splash g-code.

Fractal example in LinuxCNC.




I also tested out some isolation routing for PCBs to finally put to use the copper clad board I've had for several years now; it turned out much better than I expected, and the base is significantly flatter relative to the router bit right of the bat than before. I used FlatCAM to generate the g-code:
First attempt with multiple runs of the code.









Round 2: really even cutouts and I run a cutting pass.



I have some thinner bits and drills on the way to make complete PCBs (and even double sided).

Saturday, July 13, 2019

High Power LED Driver

I've been wanting to create a some drivers for high power, high CRI LEDs to use as lamps, and last month I designed and made a few that work fairly well. Made a few blunders and the original design had to undergo a few bodges but the base idea works.

I originally wanted to create a boost converter from scratch to drive the LEDs, as the LEDs require about 34V to run a full brightness. It would have been a good learning experience to setup basic control for the switching and the circuit topology isn't that complex. However, since I really wanted to use these day to day and the power being delivered was around 50W, I decided to just go ahead with a boost converter chip.

I considered a few: the AL3353 looked nearly perfect for the job, as it offered current sensing and was designed specifically for LED boost applications. However, the switching frequency was rather low and a large inductor would have been needed. I looked a few others, and eventually settled on the LM3478. This chip was designed to be a general purpose constant voltage boost converter. I wanted to modify the feedback path to be constant current: a small current sense resistor with a current sense amplifier to reach the high feedback reference voltage of 1.26V:

Seems like a good idea at the time. Schematic could also be better formatted.
The microcontroller would create an offset voltage that was added to the amplified current sense voltage so that the current could be regulated. I would quickly realize my implementation was flawed.

For the microcontroller (to control the brightness levels and regulate temperatures) I used the ATtiny1616. This was really nice to use as it was relatively cheap compared to older ATtinys, had a DAC (which I needed for the offset voltage), and had a one-wire programming/debug interface (woo!).
Programming with
ATtiny dev board
The LEDs I used were high CRI Cree LEDs: the CMA1825 series in 2700K and 5700K. I also ordered a few cheap 50W and 100W LEDs for testing.

Cheap LEDs
Cree LEDs
I did the board layout following the TI WebBench design, soldered up the boards, wrote a little code and voila:
Light!
I was a little surprised this worked this well. Almost immediately after sending out the board I was a little concerned the boost converter driver would not like the new feedback setup, especially at the high frequencies it was running at. I looked at the datasheet for the INA199 current sense amplifier I was using and uh-oh:
Not high enough.
Should have looked a little more closely before I chose this part. The LED did light up and I could control the brightness. But, there was some coil whine at low brightness, and at high brightness the switching MOSFET and inductor quickly became very hot. Over 80C hot. 

I had some time today to take out my feedback path and just setup a voltage divider from the output to the feedback pin as intended, and the whine disappeared and the temperatures didn't rise much over room temperature.
Potentiometer from output to feedback pin.
Light! Again!
Guess I'll have to setup a couple of potentiometers for dimming (the functionality of the board doesn't change, just the brightness can no longer be programmatically controlled) to prevent over and undervoltage for the LED.

I bought a new heatsink and lens combo and tested it with the cheaper LEDs:

The yellow edge on the beam is a little gross and may just not use the lens reflector combo and use a larger diffuser.

7.21.2019 Update:

I bought a bowl from IKEA to act as a reflector and got rid of the lens to get a wider beam that was more even:

For some reason the board I was using developed a short across the input power terminals but I can't find where it is for now. I tested the input capacitor and that was okay. Will have to investigate more later. For now I just swapped over to one of the spare boards I had put together and flashed over the firmware:

Works very well!
Let there be light!
Since I don't want to get a new board made, I'll probably find some sort of digital potentiometer to use for brightness control and hack it in for the feedback.

Thursday, January 17, 2019

PortaLED Budget Edition

Using the spare time I had today I partially assembled a PortaLED PCB, as I had all the parts on hand. This time, I put in a one ohm resistor for the current sense resistor instead of 0.3 ohms to reduce the drive current to make the circuit work with the tiny inductor (which actually had a saturation current of 250mA, while my original design wanted to run at 630mA; I only noted the current rating of 1.9A). I didn't put in the microcontroller and tied the enable pin high. I also didn't put in the battery/USB switchover MOSFET/diode combination out of laziness. I just wanted to test to see if the circuit would work as a basic light and if there was really nothing too wrong about my design from before.

Mostly soldered board.

And it did work!
Assembled.
Stacked boards to form a case.
Plenty bright enough at this drive current. Charger works fine, just don't have it plugged in when on.
This one photo refused to be uploaded by Google Photos.
Not sure why I only get partially uploaded.

Saturday, January 12, 2019

Box

After nearly five years, I've finally gotten around to making a box for the electronics for my (crappy) CNC. I spent the last week on and off designing and building it.

I used Fusion 360 for the CAD and CAM, and relearned the limitations of my CNC's rigidity.

CAD model.
During milling it took me a little while to figure out why the end mill kept descending during the cutting process; the coupler for the z-axis was loose and causing retractions to not pull back fully. After tightening it was fine.

A second pass created deeper grooves due to the z-axis slowly falling.
A better look at the bad grooves.
You can also see where the end mill dragged through the piece between drills.
However, the biggest problem was the lack of rigidity. I think it is mostly from the wood plate and clamp for the router, but I know the entire machine is kinda shady. All the hexagons in the back plate were round and all the holes and slots for the connectors and walls were all undersized. I had to go back into the CAD and oversize all the slots, and just manually drilled out/filed the rest of the holes bigger.

All undersized. :(
Soldering outside in a light drizzle.
Connectors for the motors.
Finally used them after buying them five years ago.
Electronics mounted.
The lid was just the original piece of wood I had the electronics temporarily attached to before.

Box! Much neater now.
I may plan to put a fan on the top lid to help with ventilation if it actually becomes too warm.

Monday, August 20, 2018

CNC Upgrade?

I've been using my CNC on and off over the last couple of years, making parts for random projects but not really using its full potential. I recently had to make some plates for a keyboard a friend was making, and it had been nearly a year since I last used my CNC. It took a trial run to figure out the right feeds and speeds for my machine, but I was able to cut out some acrylic successfully for him.

However, during this quick run I saw the shortcomings of my CNC (and remembered how the last "upgrade" reduced my machine's rigidity) and decided to completely replace out the gantry. A significant amount of flex came from these unsupported x-axis pipes and I wanted them replaced with supported rails.

Added a steel bar so the bearing blocks don't roll independently.
After adding a temporary fix to the old gantry, it was time to start anew.

I bought some SBR20 rail, 8020 extrusion, and some screws that I didn't already have in my collection of random screws from overbuying for previous projects.
Parts arranged how they will go together.
In the span of a week after my summer internship ended, I steadily pieced everything together and got the gantry installed.

SBR20 rail installed into tapped holes.
Scrap piece of wood used as a mounting plate.
Nut mount for the plate.
Screw installed.
Old gantry.
New gantry.

Complete.
Spent some time figuring out how to use CAM in Fusion 360 and will likely be doing all my CAD/CAM all in Fusion now.
Test engrave of China. Seems to work fine.

Some things to fix:

The original bearing blocks for the y-axis rails have become loose (as expected with screws threaded into wood) and will need to be replaced with aluminum. The blocks also have some independent wiggle (issue that arose from the last upgrade) and I will likely need some more brackets to strengthen the gantry.

Now that the y-rails are further apart (due to my lack of planning; I really should have just used 1530 extrusion for the vertical beams too but no big deal), they extend over the edge of the wood sides and are currently only supported by a couple of bolts on the edge on top of far too thin aluminum angle (the only hardware I had on hand). This need to be beefed up and properly aligned to be square the the other axes. When installing the axes I only rolled the gantry back and forth hoping for the right alignment. The rails about 1/8" too far apart so the bottom extrusion of the gantry isn't flush.

Haha.

Sunday, May 13, 2018

LED Flash Testing

I was able to do some more testing with the LED flash using a photodiode to test the rise and fall times.

Jank setup.
The BPW34 photodiode is setup with a simple transimpedance amplifier (10K resistor and a 22 pF capacitor in parallel to form low pass). With this, we can see the pulses go through the LED. The rise and fall times appear quite fast, although I haven't fully quantified this.

Pulses.

With 22 pF capacitor.

Without capacitor.
Measuring the voltage across the 0.02 ohm current sense resistor, I get about 75 mV, which means 3.75 A is flowing through the LEDs. I will need to test what happens if add another LED in series, then another string in parallel.

Small note:
Moving the LED slightly removed even more ringing?: I just realized the opamp was hitting the rail. doh.
Clean.

Saturday, May 12, 2018

PortaLED Round 2

I've had a couple of ideas for some projects to make, all involving LEDs because RGB LEDs and lights in general are always fun. However, all of them would only look nice if I can make the enclosure. I want to make a small puck-shaped lamp which looks great in the mind but will likely looking rather ugly in real life due to my limited manufacturing abilities.

So before I get ahead of myself, I decided I need to actually finish my projects. I can't forget about the LED flash and the PortaLED (and the timelapse slider which I really should finish sometime instead of doing other things).

To finish off the PortaLED, I plan to build a full enclosure out of PCBs and redesign it to actually be portable like a keychain light.

The biggest electrical changes that need to be made are:
 - Smaller inductor (use the 1.6 MHz version of the LM3410)
 - Smaller diode
 - Proper Power OR
 - Buttons and switches on the board

When I was browsing Instructables, I came across this mini LED cube pendant:
http://www.instructables.com/id/LED-Cube-Pendant/. I found the compact construction and use of PCBs for the entire frame really well done, and in the circuit the author described a simple power OR circuit that would fit my needs. The use of a P MOSFET in the reverse direction and a diode would properly OR the battery and USB/ISP power so that the battery is not back charged by the ISP header and that when it is plugged in the battery is not charging and discharging at the same time. I also came across the MAX40200 ideal diode in my search for a solution and was tempted to use it, but found out that there are ICs with the P-FET and diode all in one package (from the site I saw before!: http://cameroncharles.blogspot.com/2012/01/petzl-zoom-led-conversion-final-chapter.html; he had the same OR and I didn't even realize!). I'll also be using the same smaller diodes the blogger used.

The OR is really quite clever; the internal body diode conducts when only the battery is connected and causes the VGS to become quite negative, turning on the FET and allowing the battery to connect with little forward voltage drop. When the USB is connected, the gate is pulled high and the FET stops conducting. The body diode will also not allow current to flow backwards into the battery. The FET's arrangement is just like when it is used for reverse polarity protection.

And now I realize my circuit is effectively a clone of the one above. Which is fine with me.

5.8.18

My PCBs should have arrived at my home today (still at school) and I just ordered enough parts to make three complete lights. I ordered my PCBs from PCBWay, and holy they are fast. I placed the order on the 3rd, and they are delivered in just 5 days. Crazy. Ten boards for $5. (shipping is $20, but that really isn't that bad.) I will be using them again for sure for any boards I need in higher quantities and bigger than 3 sq in. Hopefully there are no errors in the layout (it's almost the same from the last revision).

11 (!) Red PCBs.




Time to begin planning out the larger lamp I have in mind.

5.12.18

Now I'm back home, I was able to solder up a board. There are still issues with the design, and I'm not sure what is causing it. Just like the first version, after programming the microcontroller the light is unable to sustain and brightness except the lowest one. The other modes just blink. Also, the LiPo I was using was somehow depleted to far below safe levels (maybe a short?). When I directly connected the DIM pin of the LED driver to VCC, the LEDs did turn on to full brightness, so I know the LED driver works. However, with the small 4.7 uH inductor rated for 1.2A, the inductor started to smoke. Changing it out for the 16 uH inductor from the previous version fixed that issue (although it is much bigger).



I can't figure out what is going on with the microcontroller and why it won't output anything on the PWM pin. I feel that there might be a brown out when the system turns on. I also noted that when the system is running part of the rail drops to ~2V (not sure why). How did this circuit work before?