November 24th, 2013 — Projects, Technology
We have owned an electric S-10 pickup truck for the last 1008 days (2.75 years) and used it as a daily driver. It was driven most frequently to the MARTA station, a 4 mile round trip commute, but also made trips to hardware stores, the Georgia Tech Campus, and to the homes of various people who were selling furniture or other larger items on craigslist. It uses twenty (six volt lead acid) golf cart batteries for its traction pack, and they have gradually lost capacity. When brand new, I would take the truck on 20 to 25 mile trips without stressing the battery pack. Recently however, the absolute maximum range of the truck had dropped to 12-14 miles and if you actually drove it 14 miles you could watch individual batteries hitting their absolute end of their state of charge. Although it could have functioned as a “Get to the MARTA station” vehicle for another year (or two?) I decided it was time to replace the pack to be able to comfortably go to the hardware store or make an extra emergency trip without worry. I have placed 685 charge cycles on the pack, which is in line with the lifespan for lead acid golf cart batteries.
The replacement pack cost $2,171 (I gave back all but one of the used batteries for the core charge), which gives me the final piece of information needed to calculate the total cost of ownership over the last 1008 days. We spent $464 on electricity (estimated at $0.11 a KWH), $610 on maintenance, and the previously mentioned $2,171 on batteries. Obviously, the battery pack is the large cost here. In fact, the electricity cost is very small on a monthly basis, and was never more than 10-15% of our total KWH usage.
We drove a total of 4,861 miles in that timeframe, giving a cost of $0.66 a mile or $3.22 a day. This does not take into account licensing and insurance, but those costs would be exactly the same for an internal combustion engine (ICE) vehicle. If the S-10 were an ICE model, it would probably get around 20 mpg, so the fuel cost (estimating $3.50 for a gallon of gas) would be $0.175 per mile. So for 4,861 miles it would take 242.55 gallons of gas or a fuel cost of $849. This would imply that an ICE vehcile would have to have a maintenance cost of $2400 to get the same per mile cost of ownership as my EV.
Although ICE vehicles are more expensive to maintain, unless something major on the engine exploded, it looks like my hypotheical ICE S10 pickup wins the straight up cost comparison. Of course, I never had to drive out of my way to stop at a gas station, and there is the matter of 242.5 gallons of gas I didn’t use. (the lead and plastic in my batteries goes back to the factory to make new batteries)
In the interest of full disclosure, my first pack of batteries was purchased at a Sam’s Club for $1,800, so my true cost per mile is closer to $0.59. (But I used the pack replacement cost as an estimate for the cost of ownership for my next pack.)
I am hopefull that my 2nd pack (from Interstate batteries) will last longer, either because Interstate sells better batteries, or because I have learned how to care for them better. (Although I don’t think I did anything horrible to murder the first pack…)
October 13th, 2013 — Commentary, Linux, Projects
I set up a Raspberry Pi as a print host for my RepRap (using the Pi Camera Board as a webcam to view the print status). Here are my summary steps:
- Install Rasberrian and update it.
- Configure your system to enable wifi (if used) and camera board (if used) and enable the SSH server if you want to remotely administer the pi board using the “sudo raspi-config” command (you may also want to tweak your overclocking settings here, I’m using “Moderate”)
- Install OctoPrint following directions here: https://github.com/foosel/OctoPrint/wiki/Setup-on-a-Raspberry-Pi-running-Raspbian
- If you have a camera board, you may need to update your pi firmware (sudo apt-get install rpi-update; sudo rpi-update)
- To get the camera board set up as a streaming webcam, install mjpg-streamer experimental version from here:
“git clone https://github.com/jacksonliam/mjpg-streamer”
- You can compile it on the Pi using these instructions:
http://www.instructables.com/id/Create-an-internet-controlled-robot-using-Livebots/step5/Get-the-webcam-streamer-for-Raspberry-Pi/ (ignoring the step to download from sourceforge.net)
- Install the plugins to /usr/local/lib with “sudo make install”. Copy the www directory to the same location.
- Start the webcam streamer: mjpg_streamer -o “/usr/local/lib/output_http.so -w /usr/local/lib/www” -i “/usr/local/lib/input_raspicam.so -x 640 -y 480″
- Start OctoPrint (“OctoPrint/run”)
- Test it by pointing your browser to your raspberry pi’s IP address, port 8080 for the mjpg-stream and port 5000 for OctoPrint
- When all that works, put some commands in your /etc/rc.local file to start them both up whenever your Pi boot sup. I used: su pi -c ‘/home/pi/OctoPrint/run’ & AND su pi -c ‘/usr/local/bin/mjpg_streamer -o “/usr/local/lib/output_http.so -w /usr/local/lib/www” -i “/usr/local/lib/input_raspicam.so -x 640 -y 480″ ‘ &
My Thoughts: Everything works great on a wired (ethernet) connection, but my wifi adapter is performing extremely poorly for streaming video of the printer. Also, why can’t the camera board just have V4L support out of the box?
September 22nd, 2013 — Projects
I brought my rostock-mini 3D printer home so that I could take it to a class, and while I had it here, I decided to update a few minor things.
First, I swapped out the stepper motor brackets (which also serve as the legs) with three I had designed and printed that were 20mm taller. I have a full RAMPS board under the base plate of the rostock-mini, and although it fits, the fit was “very close”. I didn’t like the fact that my stepper motor wires would touch the surface the printer was sitting on, and the limited airflow paths. This extra 20mm really helps things out, and also opens up the possibility of installing an LCD control panel under the base plate in the front. (If I can figure out how to avoid my bed leveling knobs.)
Second, I upgraded the springs on my adjustable print bed to some that were a bit taller and a bit stiffer. My overall build volume was shortened from 187mm to 185mm, but now I have a lot more range for adjustments and the bed is more rigid (while still allowing the print head to push the spring loaded bed down if it crashes horribly).
Third, I wrapped some plastic spiral wire harness wrap around the wires leading down to the print head, to give them a better visual appearance.
Finally, I changed out my bowden tube from using M4 nuts to hold the tube to using screw in Push To Connect adapters. The goal was to allow me to remove the tube from either end without having to unscrew the plastic part holding the nut in place. However, the cheap PTC adapters I bought appear to be single use, in that they don’t release the tube reliably without breaking, so basically it just makes the bowden tube look slightly more professional.
September 20th, 2013 — Commentary
I am using the OpenSCAD parametric 3D design tool to teach students about programming concepts such as conditional execution, encapsulation of code, and iteration. Students are motivated by building visual objects, and if you have access to a 3D printer the students are very motivated to get their part printed.
Here are some documents I share with educators to be used to learn/teach about OpenSCAD and 3D printing:
Outline of the class
3D printing vocabulary
September 18th, 2013 — Commentary, Linux, Uncategorized
I purchased an external HD that was “mac compatable” but I used it with a linux system and used fdisk to put two partitions on it.
Later on, I wanted to use gparted to easily resize one of the partitions, but it refused to see any partitions at all on the disk.
fdisk could still see them just fine, but reported “Partition type: mac”
It turns out that the problem was that the disk originally came with a mac partition table in addition to (right after) the regular MBR Master Boot Record.
I noticed that the first partition didn’t actually start until 63 sectors into the disk (at the beginning of the 2nd cylinder).
Device Boot Start End Blocks Id System
/dev/sdb1 63 1171893554 585946746 83 Linux
So I used DD to copy the first cylinder to a file:
sudo dd bs=512 count=62 if=/dev/sdb of=firstCyl.bin
62+0 records in
62+0 records out
31744 bytes (32 kB) copied, 0.000715733 s, 44.4 MB/s
Looking at that bin file in an editor, I saw the string “Apple_partition_map” which is a dead givaway of what the problem was.
So, I wrote out all zeros to the first cylinder:
sudo dd bs=512 count=62 if=/dev/zero of=/dev/sdb
62+0 records in
62+0 records out
31744 bytes (32 kB) copied, 0.00165608 s, 19.2 MB/s
And then I copied the first sector (512 bytes) back from the firstCyl.bin file I had made:
summetj@constantine:~$ sudo dd bs=512 count=1 if=firstCyl.bin of=/dev/sdb
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00183878 s, 278 kB/s
And it worked! Now gparted is no longer confused by the apple (mac) partition table that I zeroed out, and sees my partition.
September 9th, 2013 — Commentary
I recently replaced a MakerGear hot end with a different model (MG Plus) but wanted to maintain the same connectors (used for the resistive heater and the thermocouple). The MakerGear connectors had a positive locking clip, while the JST connector that came with the MG Plus thermocouple was only friction fit.
FYI – The MakerGear hot end and Prussa Mendel kit I have use the following Molex Micro Fit 3.0 Family parts:
- The female connector (with the bump) is a Molex 0436450200 (DigiKey part number WM1845-ND).
- The male connector (with the hook that catches the bump) is a Molex 0436400201 Digi-Key part number WM1855-ND
- You will also need the associated female and male crimp connectors for the internal contacts: Molex 43030-001 tin 20-24 guage wire (DigiKey part: WM1837CT-ND CONN TERM FEMALE 20-24AWG TIN) and Molex 43031-007 tin 20-24 gauge wire male terminal (DigiKey Part: WM1841-ND WM1841-ND CONN TERM MALE 20-24AWG TIN)
( You might want to get the crimp connectors for smaller wire (higher gauge numbers) depending upon what wires your thermocouple uses, but I got 20-24 gauge for use on power connections and just soldered my thermocouple wires into them.)
The cartridge heater on the MG Plus nozzle came with enough wire to reach all the way down to my RAMPS board so I ended up only using the molex connectors for the thermocouple, and running the resistive heater wire all the way down. This left me with a set of wires going to my hot end terminating with a molex, and I eventually plan on using this for an “always on” fan for cooling the top of the hot end (as opposed to the “under RAMPS control” fan for layer cooling).
September 6th, 2013 — Projects
As part of building the bubbleDisplay I made a lot of prototype tubes, nozzles, and even a small prototype display before actually committing to building the final product. This left a lot of random bubble display type parts laying around my garage. I hate throwing things out, and I wanted to have a bubble display of my own, so I’ve started to design a BubbleDisplay Jr that I can make out of leftover parts. Because I’m limited to stock on hand, I couldn’t make all of the tubes the same length (unless I wanted them all to be 9″ tall….) so I went with a Superman Memory Crystal style sculpture:
Of course, since I have a 3D printer now, I decided that printing the bracket to hold the air hoses and LED’s would be the way to go:
There….now you can’t say I don’t plan out my projects before starting them.
September 4th, 2013 — Projects
I spent a lot of time last summer and fall building this 62″ wide bubble display. So much time that I didn’t get a chance to edit together and post an “overview” video showing the whole thing in action. Well, here is that video. If you are looking for more build details just read all my posts tagged with “Bubbledisplay”. If you just want to sit back and watch the whole thing come together via videos, start watching my “BubbleDisplay” channel on YouTube At the beginning.
September 3rd, 2013 — Projects
To test the resonant frequency of a Tesla coil or other resonant circuit you need an oscilloscope (which I have) and a signal generator (which I didn’t have). I was able to follow these instructions from RM Cybernetics to build one from a 555 timer and use it to test my primary and secondary.
The only modifications I made to the circuit was the addition of a toggle switch so that I could use two different capacitors, giving a “low” and “high” frequency range (plus a “air gap” capacitance that basically runs the 555 as a 2Mhz sine wave generator). I built the circuit on a protoboard that came with a box, and decided to use a laster cutter to make the instrument panel. To do this, I opened up Inkscape to design a control panel using vector graphics. I would print each design out and tweak it until it fit my box and circuit perfectly. I then tested various dial positions on my 10K audio scale (logarithmic) pot using my oscilloscope to mark the approximate frequency on the dial. After a few trials, I was able to laser cut the design onto a piece of 1/8″ craft plywood to get the finished product.
September 3rd, 2013 — Projects
I have been printing Yoda busts on my Rostock Mini.
The first (small) sized one printed very well, but I had some problems when I tried scaling up to 160% size.
If you look closely, it has a small discontinuity just above the eyes. (It looks like the top of his head was sliced off and put back on slightly “off”.)
It looks like one of my axis lost a step, so I ran through various diagnostics (more airflow over the stepper drivers, higher current to the steppers, upgrading my slicing software, etc) and eventually the problem got worse:
Then I heard some squeaking from my 3D printer and started to move things around manually to isolate it and I realized that my straight rods and linear bearings were dry. The final solution was to oil my straight rod and liner bearings, although I can’t confirm that the upgrade to Slic3r didn’t also help things out. All in all, it only took four tries to get things right:
So now I have a large yoda head to float on my desktop levitation box: