2013-04-22

Cage for BMPCC and GH2

I'm currently designing a cage for the Black Magic Pocket Cinema Camera.
But since the camera won't be shipped before July, I'm testing my basic idea with a GH2 first.

Let's start with the requirements:
  • small
  • follow the form of the camera
  • handheld operation, meaning I can stil grab the camera and not have to attach handles to the cage.
  • GH2: access to the battery door (not for BMPCC since it can be powered via 12V and even charge the battery while at it)
  • Access all connectors, buttons on top and the full back side.

Mark I


Originally I thought about a conventional design like this one and just leave a larger gab on the right side to slip my hand between camera and cage.
The result looks like this:


 This looks nice in theory but has one important flaw.
Because both cameras are tiny, my hand extends a significant way below the camera.

Mark II

So I started to look around and found this cool design.


 I liked the way it put the right side forward.
I disliked the space below the camera as it adds bulk to the cage.

So now I'm changing my design to put the right side forward and allow a hand to grip the camera.
The result is this:
Now this may be easy to grip but...it's in the way when you want to grip the lens from below to change focus or zoom.
Turns out it is quite hard to design a cage that does not get in the way when the camera is to be used handheld, gripping the actual camera body.

2013-03-26

CCC Freiburg visits RaumZeitLabor Mannheim

Last weekend the CCCfr Hackspace visited the RaumZeitLabor Hackerspace in Mannheim.
Smaller then the ShackSpace in Stuttgart, we visited before, but wich much more food. ;)
We made us 3 CCCfr T-Shirts using the cool cutting plotter and shirt-press they had to offer and I found the time to drill and solder the PCB I made.
(Originally wanted to drill it on the CNC but I didn't have the right collets to mount the tiny drills.)






2013-03-22

Milling stamps

I'm currently collecting information regarding milling my own stamps on the CNC machine.
The main inspiration is to make some Hackerspace Passport -stamps for CCCfr.

Material

You can get stamp rubber easily.
I thought about deep freezing it but a friend suggested against it and to cut deep with a real sharp bit to get large shavings.

Tool

Aparently an engraving cutter seems to work fine.
Conneticut uses a 1/32"=0.8mm one FFM a 1mm one.

Speed

FFM: 16K RPM and 200mm/s
Conneticut: 6 ipm = 2.5mm/s ???? 

Depth

Both use 2 passes. 
FFM: delta-Z=-0.75mm depth=-1.5mm
Conneticut: delta-Z=0.75mm  depth=0.060" = 1.5mm


2013-03-20

My first PCB

My first (hopefully) working, etched PCB.
Made in CCCfr last night.
This time the problem was not the (stored warm and brightly lit) PCB from the store but that my acid simply cooled down.
I didn't have access to a heated machine this time, so I used a 10eur kit and hot water.
We tried to warm it up again using hot air from a distance and later a large hot water tub but it just didn't work again.
Maybe it was already saturated.


2013-03-15

Mobile Fräs-Kreissäge-Stichsäge -Tisch


Update: This project got postponed indefinitely.

Lately I've been playing a lot with my CNC and woodworking.
Gaining experience in what cutters work up to what depth, what spindle speed burns rather then cuts the wood, how fast I can go, how to mount the parts properly and what tollerances I have to calculate with due to the wood bending, vibrating and flexing.

So here is my next project:
I'm designed myself a portable table that I can mount
  1. my large circular saw (using 2 flat bars),
  2. my cheap router (using 2 round rods) and 
  3. my jigsaw (using 4 bolts).
As you can see, apart from the jigsaw, non of these tools are equipped to be mounted below a table.

Having a CNC, I'm planning not only give them
  • precise mounting points but also 
  • pocket out the shape of these tools on the underside of the table and 
  • provide a bedstop that has precise stops every 10mm, starting at 0mm from the middle of the blade/cutter. ...and use an engraving bit to 
  • actually label these stops as well as a number of distances and angles on the table
  • and label heights on the bedstop-slider (for the router)
I'm not sure I can pull this off.
For once the table is quite large compared to the working size of my CNC and I have no experience in mouting anything flat yet.
I'll have to cut provisional holes. Use these to mount it onto the CNC. Then use the precise holes to mount it while cleaning up the provisional holes.
I'll also have to think about a sacrificial plate below this part, so I don't hit the CNC's bed when drilling all the way through.
I'll also have to have an easy to center on origin location in case MACH3 crashes, takes the current coordinates with it and I have to find my origin again to resume the program.
     
     IF I get this done, the design files will of cause be released as CC-BY . The mounting holes are very specific to these 3 tools but can easily be adapted to other ones.
     

     

2013-03-13

Ätzworkshop im CCCfr





...by first time of etching PCBs.
Workshop in our CCCfr Hackerspace.

USB Isolator

Last night at the weekly CCCfr meeting, I found the time to SMD solder again.
This time a USB (full speed+high speed) opto isolator.
It is based on the ADuM 3160 chip and can generate isolated 5V from the USB input or be powered from 5-12V externally.
The PCB is version 1.2 or a design by CircuitsAtHome. It is larger then version 1.1 and quite easy to solder by hand.
I still have a 1.1 PCB here that I plan to do another day.

I plan to use it on my CNC to further reduce electric noise leaving the spindle VFD and interfering with the rest of the equipment.

2013-03-12

Yongnuo YN560 II on the inside

Last night at CCCfr I had two defective YN560 II flashes with me and took them apart to look for obvious problems.
So in case you wonder how these look on the inside, click on the album below:
2013-03-11_inside-YN560II

2013-03-10

improving Firefox for Android

I'm looking into fixing the fact, that you can't access your stored passwords on Firefox for Android.

Status

  • Added new menu item "Passwords" in Fennec preferences, just below sync
  • TODO: create dialog for displaying the passwords.
  • TODO: get and honour master-password.
  • TODO: how to localize my strings?
  • TODO: how to access stored passwords?
  • TODO: how to submit my patch?

Setting up

I've set up the development VM as per the instructions .
What they didn't mention was to
  • increase the memory of the VM from 512MB to something like 4GB+swap. Else ld crashes (see below)
  • You need to run an Ubuntu distribution upgrade to get the required yasm 1.0.x
  • You also need to install your language to get your localized keyboard layout and everything.

Where stuff is




The Android UI code seems to be Java but it's not stored as pack/age/name/Classname.java as it's supposed to be but flat in
  • mobile/android/base/*.java .
It is set up not like a Java/Android project but like a C project. So all sources have to be manually added to
  • mobile/android/base/Makefile.in

Sync related code is read-only and comes from a separate sync-repository. See
  • mobile/android/sync/README.txt

String resources for english are in mobile/android/base/locales/en-US .
It it not enough to edit the
  • mobile/android/base/locales/en-US/android_strings.dtd but also
  • mobile/android/base/string.xml.in

Non-String resources like xml/preferences.xml are in
  • mobile/android/base/resources and each new file you add needs to be added to
  • mobile/android/base/Makefile.in






2013-03-09

Remote Filemanager for Dropbox ported to API1

    The CCC-Freiburg is visiting the Shack hackerspace in Stuttgart for the weekend.
    Apart from getting ready to do some programming in the Firefox for Android sources,
    I took the time to upgrade my "Remote Filemanager for Dropbox" app to the new Dropbox API1 instead of the old API0.
    It still needs a lot of graphical work and I had to drop the AccountManager for a first version but it can accept new users again.
    I find the northon commander style much easier to work with for transfering files then the official Dropbox app.

    Privacy  

    Because it has the permission GET_ACCOUNT it needs a privacy declararion.
    That permission exists to access it's own account. the credentials you enter into the app to access your dropbox accounts. Not accounts of other apps.
    It has no advertisement. No tracking. Does nothing except the file operations you tell it to perform.

    2013-03-03

    Camera Flash comparison Metz 58 AF-2 and Youngnou YN560-II

    Comparing the
    1. Metz 58 AF-2 and the  
    2. Youngnou YN560-II (also a 58)

    Made the same photo.
    • Both flashes on 1/1 = full power and 50mm zoom
    • Camera on full manual (aperture, exposure, ISO)
    • Using a 25mm lens on a camera with 1.86x crop factor (GH2 multi aspect sensor on 16:9).

    Wanted to know of the "58" on the Yongnou was just advertisement.
    ...aparently it isn't.

    The Metz is 200eur and has all the bells and wistles.
    It can do TTL and even wireless slave with Panasonic GH3 (Flash firmware 2.0) and with Olympus cameras.
    The Yongou is 60eur, full manual only, very dump but has simple zoom (as opposed to the 460-II).

    2013-03-02

    Java program to probe Z for PCB milling VERSION 2

    I learned a bit more about g-code and completely rewrote my "PCBZCorrect" program.
    Usage now:

    1. create g-code to mill a PCB (or engrave anything else) using pcb2gcode or any other program
    2. Mount the blank PCB and mount the electrical probe onto your CNC machine
    3. optional: modify the sources to use EMC2 or another grid then 5x5 
    4. run the jar file, select the g-code file
    5. run the created *_zprobed.ngc g-code in MACH3.
    6. it will probe the actual z height in a 5x5 grid and store these values in variables #100 to #124.
    7. it will then stop
    8. disconnect your Z-probe and get ready to mill.
    9. press "Cycle start" to continue the program flow
    10. it will mill the PCB using a bilinear interpolation to follow the actual, meassured surface height of the PCB to ensure a consistent cutting depth in the micrometer range
    11. it will also have broken up all long movements at z<=0 to follow the surface at the right height



    Proto:
    left = before (45° engraving tip)
    right = corrected  (10° 0.1mm engraving tip)
    (Yes, I was too deep on the right side. Z-0.0008" was hovering above the copper, Z-0.0016" was cutting too deep into the glass fiber. )

    2013-02-26

    Java program to probe Z for PCB milling

     In my first attempt at PCB milling last weekend I had my PCB bend by as little as 0.04mm.
    Clamping a PCB in a vice the center will bend upwards or one side be lower/higher then the other.
    Even if you can't see it and can't meassure it with hand tools but only with the z-probe of your CNC.
    Given a cutting depth of 0.02mm to barely remove the copper layer, this is too much.
    So last night at the CCC-Freiburg meeting I wrote myself a small Java program.

    It takes the g-code output of PCB2GCode. (See last blog posting about parameters.)
    You have to have your PCB mounted already, positioned your cutting tool and set an initial Z=0.
    You also need an electrical Z probe (simple cable clamped to the PCB and your actual cutting tool with an input pin configured as probe shortened to GND or VCC when both touch).

    Then it determines the position and size of the PCB and asks you to take a number of Z-probe meassurements on your CNC to see very precicely what height the PCB actually starts at in these locations.
    (It will be more likely to be Z=-0.0123 or Z=0.0234 instad of a perfect Z=0.00000)
    It tells you exactly the G-code you have to copy&past&run for MACH3.
    (including G20/G21 setup of the proper unit first, to raise yourtool  and jog to the right location.)
    By default it asks for a 3x3 grid of 9 meassurements.
    One per corner, one in the center and one in the center of each side.

    Then it reads the g-code again and writes a new g-code file with the following changes:
    1. Adds a bilinear interpolation of you real position Z=0 as an offset for each Z position mentioned in the code.
    2. Adds a Z value to all movements in X+Y that don't already have one using the last Z position seen plus the offset.
    3. Breaks up all movements that are longer then 1/6th of the diagonal of your PCB into smaller movements to follow the curvature of the PCB.

    Update: Version 2

    2013-02-24

    Milling PCBs using PCB2GCode


    I'm trying my hands at milling a PCB.
    It will be a USB isolator for my CNC.
    Here I'm collecting my notes as a step by step guide to do the same again later.

    Even if you are etching your PCB, drilling mounting holes and vias automatically could be a reason to visit your local CCC Erfa Kreis, Hackerspace or FabLab.

    Files

    You start with Gerber files. (If you have hpgl or svg data, your CAM software should already be able to do this without pcb2gcode.)
    • .gbs - Gerber Bottom Solder Mask Data
    • .gbo - Gerber Bottom Overlay Data
    • .gbl - Gerber Bottom Layer Data
    • .gbp - Gerber Bottom Paste Mask Data
    • .gdd - Gerber Drill Drawing Data
    • .gko - Gerber Keep Out Layer
    • .gpb - Gerber Pad Master Bottom Data
    • .gpt - Gerber Pad Master Top Data
    • .gtl - Gerber Top Layer Data
    • .gto - Gerber Top Overlay Data
    • .gtp - Gerber Top Paste Mask Data
    • .txt (not human readable)
    ( filesuffix.com helped be with that list)

    Tools

    The go-to tool seems to be PCB2GCode.
    Sadly it is only available for Linux. Not for Windows (where my MACH3 CAM software lives) nor MacOS.
    However there seems to also be a beta website PCB2GCode online by Fablab Amersfoort.

    Usage

    The PCB2GCode website tells you to look at pcb2gcode --help. Nothing more.
    No example. Not even an explanation of the file endings listed above. (They speak of .gbr wich is the only extension you'll not find a file for.)
    Top-layer (.GTL) and bottom layer (.GBL) are easy.
    TODO: Outline I have not a clue.
    TODO: Drill data seems to be missing for me. :(

    example:

    pcb2gcode --front USB_Isolator.GTL --back USB_Isolator.GBL --metric --zsafe 5 --zchange 100 --zwork -0.02 --offset 0.02 --mill-feed 100 --mill-speed 6000
    Importing front side... done
    Importing back side... done
    Importing outline... not specified
    clearing
    clearing
    Calculated board dimensions: 1.7in x 1.7in
    Current Layer: back, exporting to back.ngc.
    Warning: pcb2gcode hasn't been able to fulfill all clearance requirements and tried a best effort approach instead. You may want to check the g-code output and possibly use a smaller milling width.
    Current Layer: front, exporting to front.ngc.
    Warning: pcb2gcode hasn't been able to fulfill all clearance requirements and tried a best effort approach instead. You may want to check the g-code output and possibly use a smaller milling width.
    No drill file specified.

    Parameters


    Attention: Website only expect everything to be in these strange and obsolete "inches" thing.
    The command line tool can be changed via
    "--metric                            use metric units for parameters. does not affect gcode output"
    for it's parameters but the output will still be imperial g-code.
    No Rebels seem to have converted this imperial stronghold into metric units yet.

    The website seems to require a drill file. The command line tool can do without.

    --zwork The default seems to be "0.0008 inches = 0.02032 millimeters" for isolation milling.
    --offset  You need to set half your tool diameter or a greater value for the --offset parameter.
    --zsafe travel height
    --zchange z height for changing from milling to drilling tool
    --mill-feed feed rate
    --mill-speed spindle RPM

    Milling

    Even when set to metric, MACH3 shows the maximum dimensions in imperial inches.
    Use an electrical probe to set Z=0.
    I made a special probe cable for this purpose as the toolheight-sensor wouldn't reliably touch the top side of the PCB.
    Also make sure the PCB is insulated against the machine so the probe isn't always triggered.

    I used paper to do this and also to level out the board (after meassuring all 4 corners).
    TODO: My board was still slightly bent. I need a way to compensate for Z-differences in the 4 corners+center by software.

    --mill-feed 100 --mill-speed 6000 seems to be a good value to start with.

    Cutters

    I tried a chinese engraving tip and it wasn't a good fit.
    The tiny Z errors and the fact that the engraving tip quickly gets bigger the deeper it gets are a bad combination.
    The smallest flat cutter I could find is 0.8mm. Way too large. I need to look for something along the lines of 0.1mm.

    TODO

    DONE:  Wrote a program to take 9 Z meassurements and adjust the g-code PCB3GCode returns.

    (EMC2 specific) There seems to be script named "etch_z_adjust" that uses the electrical probe to meassure the exact Z=0 height every 10cm before starting to mill.

    A thin layer of cutting oil seems to help too.

    (Reprap specific) This "PcbSubtraction " pcb2gcode postprocessor adds probe commands to the g-code itself but is limited to 315 probes per PCB.

    There is also a MACH3 visual basic macro but I just can't find the actual code to try it.






    2013-02-17

    electrical noise issues with CNC


    Starting yesterday I got terrible electrical noise issues with my CNC milling machine.

    Update:

    • I was able to see the noise on my super-cheap pocket-oscilloscope
    • Replacing the RS485-cable with a shielded one and connecting the shield to GND on the USB2RS485 converter helped a bit
    • I'm investigating some USB isolators one, two and RS485 isolators
    • It was pointed out to me that the VFD is not connected to PE. PE ends in the line-filter. I should change that.
    • Connecting VFD-GND to the Spindle case reduced the noise as meassured on the Z-stepper case a lot but did not eleminate it.
    • Noise is greatest on the VFD line filter case, second on the spindle and steppers, least on the USB cable shield and RS485 cable shield now. 
    • Currently revisiting CNC Noise
    • Connecting VFD-GND to mains PE (protective earth) didn't change a thing. At best it made the noise much worse. 

    The Players

    1. Touchscreen PC running MACH3
    2. Huanyang VFD inverter - controller and power supply for the spindle (motor that does the milling)
    3. powered USB hub
    4. USB to RS485 interface
    5. Control box containing:
    6. USB control board -  creating opto-isolated STEP+DIR signals for the
    7. 4x Stepper Driver Boards

     The Problem

    Whenever the spindle is running and USB from the USB control board is connected to either the USB hub or the PC, the steppers twitch and jog around wildly.
    This issue did not happen since october and just started yesterday.
    4 hours earlier I dan 6+hour milling jobs without even loosing a single step.
    Changes made:
    • coiled up cable to some lamps
    • coiled up power+USB cable to PC (undone, no change)
    • coiled up DC power cable of USB hub (undone, added ferrit core, no change)
    • switched oin a refrigator in the room (undone, no change)

    The Setup

    All share the same power socket.

    PC connected to  Powered USB Hub.
    USB Hub has ferrite core on it's DC supply power.

    Powered USB Hub is connected to USB-RS485 converter.
    RS485 converter connected to VFD via TX+ and TX- but not GND

    VFD connected to spindle via shielded cable.
    Shield on the cable not connected to anything.
    VFD connected to mains via line filter element.

    Powered USB Hub is connected to USB control board via USB cable with 2 ferrite cores.


    USB control board connected to Stepper Driver Boards via +5V, STEP and DIR.

    Stepper Driver Boards connected to their own 24V? 48V?  power supply.
    Stepper power supply connected to mains via filter element.

    Page 17 of the manual of the USB control board (link below):
     Photo of the inside of the Control Box containing the USB control board, the 4 stepper driver boards and their power supply:

    Possible solutions

    • Should I connect GND on the USB control board to GND on the stepper power supply even though the manual doesn't mention it?
    No.
    The stepper driver boards get A+ A- B+ B- as STEP+DIR. So they clearly expect a differential input independent from GND. getting A+=B+=+5V and A-=STEP B-=Dir that is exactly what they get.
    • Should I add a capacitor between USB control board GND and it's +5V to filter anything but DC?
    No.
      since the stepper driver boards get a differential input and don't care for either.
    • Should the GND contact on the VFD be connected to anything?
    Manual of the VFD only mentions to use that to give muiltiple spindles a single connection to ground.
    •  Maybe I should connect the VFD GND to the spindle case as mentioned here?
    Original wiring didn't do this.
    DONE, did not solve the problem
    • ????? 
    The PC power cable and the RS485 cable seem to have a large influence on the frequency of these interferences.

    2013-01-29

    Upgrade YOOCNC6040 from LPT to USB


    Since my new touchscreen PC for MACH3 is way too new and uses TTL levels on it's LPT ports,
    I just got myself a USB control board.
    Originally I wanted to wait until the RS485 version of the famous Gecko G540 (with >3 axis) I couldn't wait and use my very, very old laptop any longer.

    With the new board I can control all my 4 axis and got a ton of space inputs and relay-outputs to spare.
    It's supposed to give 200KHz output. No idea if that means 200'000 step+dir for all 4 steppers or just 200'000 time per second switching the level of one step+dir pair. (so 100KSteps/4 steppers=25000 steps/second when all 4 axis are moving at the same time)
    Also no idea if and how much it buffers.
    It seems to come with an integrated g-code and jog -buffer.
    The well known (and much more expensive) smoothstepper card only gets speed+direction from the PC and does all the pulsing autonomously. Thus also independent of any timing-issues from the PC.

    The second thing I got me was a USB handweel.
    Except it doesn't have an actual weel but it was only 20eur.
    I can always use the potentiometer that came with the USB board for that task.
    Aparently that handweel is still on it's way to europe.


    2013-01-27

    CCC-Freiburg "Hack 'n Play"

    Had a very nice evening at CCCfr during today's "Hack'nPlay".
    A mixture of talks and lightning talks and a free software lan-party.
    Including a ton of retro games. Handheld, console and early PC based.

    We're so lucky to have share in the infrastructure of the ArTik with our small Club in Freiburg.

    I was called to help my record the talks while hackers from Karlsruhe would take care of a live stream and a media trainee took photos. (Being there, of cause I took my fair share of photos too.)
    I hope to have my photos up on Tuesday. The videos will take a few days as I have to get the official audio recording first and sync my clips to it.


    Met some nice folks from Chaos Computer Club in Zurich, Switzerland.

    2013-01-22 CCCfr HackNPlay

    2013-01-24

    ThingOMatic broken, making a better one


    When installing a tensioning mechanism for my heated, titanium conveyor belt,
    the acrylic side on my Thing-o-Matic broke.

    Now my bed it too long and hits the Z-rods during the normal homing sequence. (left, then back, then center).
    I wrote a custom homing homing sequence that avoids this. So I can still print small parts that don't require the back lack 2x4cm of the print bed.

    As I need a replacement anyway, I'm now working on a new ABP design that combines:
     into one design that can be printed using only 2/3 of the already tiny build surface of a Thing-o-Matic.

    Installing Conveyor Belt Tensioner on ThingOMatic 3d printer

    Am about to install the heated conveyor belt -tensioner to my . The belt itself is already replaced with 0.025mm titanium with a Kapton surface.

    The missing tensioning mechanism is some heavy oversight in the original Mekerbot Industries design as is the original plastic belt that expands+warps due to temperature ('heated' conveyot belt *hint*) and wear, is slightly too short after purchase because it hasn't expanded yet and the completely missing bed-leveling mechanism.

    Designing a shortened lever-arm for this one as the lower bolt is a bit higher due to my removable ABP mod.This allows me to quickly replace the belt with e.g. my PCB routing platform to mill electronics.
    Have to start from scratch as there are no original design files for the tensioner are posted. Only an STL export and only as a complete bed of 4 parts.

    2013-01-23

    3d printed camera slider


     A while ago I designed a 3d printable camera slider using cheap LM8UU bearings.
    (Why use 608ZZ ball bearings if you can get real linear bearings for cents.)

    Now I finally found the time to make one.
    I also updated the design to include a clamp on the sled. So this can be upgraded to a motorized slider later!
    On the photo I haven't inserted all the bolts yet that hold this together.

    I wanted to use steel rods but they turned out to have vastly inconsistent diameters.
    So I had to use aluminum rods and am currently inserting a second, smaller rod into them to keep them from deflecting in the center.

    PLA: heated bed(/belt) too hot

      I just learned that some of the warping I'm experiencing with PLA may be due to my heated bed being too hot.
      Usually warping in ABS is caused  by very hot ABS from the nozzle of the 3d printer cooling down fast and shrinking. Thus the higher the temperature difference betwee nozzle and bed, the more warping. That's what you learn everywhere.

      So I usually crank the heated bed up as hot as I can to keep the temperature difference between top and bottom of the object low and thus hope to reduce warping.
      So my bed is usually at 120°C and with problematic prints at 130-135°C.

      It seems that PLA melts and expands at these temperatures and thus creates warping of it's own.
      I should run the bed at 55-65°C and run a fan as strong as possible.

      (During CCCongress I ran a big fan and the warping became much stronger instead of lower.
       But then again I had raised the bed temperature to 130°C because the fan would cool the bed.)

      Didn't try 55°C yet, will do so in the next print and update this posting with the result.

      2013-01-19

      New Multimeter

      I've beet putting off getting a good multimeter for some time now.
      My original requirements where:
      • auto range
      • hold+peak
      • USB/serial to log meassurements against time
      • meassure inductance (for stepper motors) directly
      I couldn't find anything that had inductance AND USB.
      So now I got myself a Uni-T UT61.
      • auto range
      • hold, peak, range, delta
      • USB
      • no inductance


      2013-01-15

      Help us develop an alternative design hosting website

      Anyone up to develop an alternative hosting site for 3d printable/laser cuttable/CNC machinable designs?
      Outside the control of a single, commercial company?
      At least help in brainstorming the ideas and coming up with options (e.g. where to host the files and images)?



      We're still filling up the wiki, starting to brainstorm and plan and have a quick skaffolding to experiment with:

      2013-01-09

      Engineering link collection

      I'm not a mechanical engineer, so let's collect links to quickly look up best practices, part nomenclature (e.g. bearing name codes) and similar information
      Obviously this blog posting will be updated every so often

      Best practices

      Stationary

       Nuts and Bolts

      Moving

        Bearings

       Shafts and couplings 

       Planar linkage

      Electrical

       Wires

      General

      2013-01-08

      monetizing open designs for 3d printed parts

      Current state


      There's a lot of talk about unrealistic DRM schemas for 3d printed designs.
      Mostly centered about limiting the ability to print replacement parts by putting DRM on the design files. ...and forgetting that the original design files are never published but instead reverse engeneered using screwdriver and caliper.

      There's also a lot of talk about selling the right to print a published design (a bad and unrealistic idea) and about the selling of physical manifestations of designs instead.

      We've had small CNC machines in above-average hobby-workshops for years now.
      Particularly in the model-building works these are common and parts made in these hobby-workshops are regularly sold.
      Personally I don't think that the world will suddenly collapse just because a new kind of CNC device that is less dirty and produces plastic instead of wood and metal arrives.
      Parts still need bolts, bearings, electronics, labeling, painting, ... . There is no reason to believe that any design consisting of only one plastic part with no regards for material and tollerances (in the case of selling a DRM-controlled right to print a design) is of particular relevance or importance.

      The experiment


      So I'd like to try something.
      I published quite a few designs under CC-BY-NC(-SA).
      Due to the -NC part I'm the only one allowed to monetize them. Sell them, advertise with them, sell physical copies.
      So I'm posting some parts that I find useful to a general public on eBay.
      1. The designs are still CC and published, so everyone is free to print them for themself.
      2. Everyone is also still free to ask someone else to print them and they can even charge a fee for the service of printing.
      3. I only sell physical objects after they are printed and tested and found to be of good quality.
      4. I include required non-printed parts and may even go so far as to do some simple packaging and instructions. 

       Expected results

       

      I don't expect many items to be sold at all.
      I expect the need to brush up my skills of presenting the parts in a more professional way in order to actually sell some.
      Prices will probably stay very reasonable (1-5eur, maybe more).
      I expect a more practical discussion about licenses, where we want the world to be headed and where it will be headed regarding open designs and personal 3D printers.

      2012-12-29

      29C3


      I'm currently visiting 29C3, the 29th Chaos Communication Congress in Hamburg together with my fellow CCCfr (Chaos Computer Club - Erfa Kreis Freiburg) members.
      Had a great time so far.
      Sadly I found out I'm nearly out of filament just when I packed the car and there are (surprisingly) only 2 other people with 3d printers here and both use 1.75mm filament. ...while I run on standard 3mm.

      talks


      Missed most of the talks because I was either talking to people and getting great solutions for current issues, lectures being full or by being tied up because the 3d printer was still running or the soldering iron hot.

      personal projects done and presented


      Managed to get quite a lot done too.
      • At the moment I'm printing a belt tensioner for my titanium ABP belt on the 3D printer.
      • Designed and printed a first prototype of an adapter to use Saeco dual-height coffee pad holders in my coffee machine.
      • Converted a japanese EEG toy to european 50Hz mains frequency, added a port to get the raw signal and decoded the protocol in a logic analyser. (Didn't manage to connect the EEG to my R0cket because of issues setting up the R0cket module build environment.)
      • Designed a completely new camera flash based on the YN460 II but with a better battery case,  switch between batteries and mains power supply, integrated umbrella holder, space for an Arduino Nano to remote control the power and not just trigger the flash remotely.
      • Did a lot of Arduino prototyping using different sensors.
      • I still plan to reanimate my old N.S.E.C.T. toy robot and connect it to an Atmel in the remainng 2 congress days.

      2012-12-18

      Necomimi EEG on the inside

      I'm trying to connect a TGAM1 EEG sensor to a R0cket badge for 29C3 / Chaos Communication Congress of the Chaos Computer Club.

      Because I have not found and photos online:
      This is what the Necomimi EEG toy looks like on the inside.
      Below the sticker. Are 4 PH0 bolts.
      A main PCB on top of a breakout-board and a

      The large breakout PCB is secured by 2 PH00 bolts.
      This is the 60Hz US Version.
      Beware of the third PH00 securing the tiny main board below.

      The main board looks to be a
      Thinkgear TGAM1

      So to convert the notch filter to european 50Hz interference:
      "Tie the M pad to VCC pad to select 60Hz, and to GND pad to select 50Hz notch Filtering frequency."
      The M pad being on the hidden side of the board.
      M=TP7 has 100KOhm to P4-1(square)=VCC and 1MOhm to P4-2(round)=GND .
      So M is indeed tied to VCC for 60Hz.
      B1=GND
      B0=VCC
      So we have " 57.6k Baud with Normal* + Raw Output Mode"
      "Normal Output mode includes the following output: poor quality value, EEG value, Attention value and Meditation value.".
      Thus maybe it's enoug to sniff the existing serial communication instead of replacing/reprogramming the original microcontroller.

      There is a surprisingly large solder-bridge below TP1 and R12. No idea about it's purpose.


      Interestingly P4=power is not connected. Instead the GND and VCC on P3=serial communication are used.
      All test points are easily accessible, so attaching a microcontroller should be easy.

      I don't know if the boards are permanently connected or if this is a very tight socket as there is some black plastic beweet the board where they connect.
      I also can't see the microcontroller used as it's hidden by the TGAM1 board.
      ...stay tuned (My Multimeter battery is dead, so I can't continue to check how the solder bridges are wired.)

      The protocol seems to be 57600bps UART at 3.3V as documented and is described here and here linking here.
      (frame structure: 2x 0xAA sync, 1x payload-length, payload, 1 byte checksum (sum payload, lowest 8 bit, inverted))

      18.12.12

      2012-12-15

      3d printed vacuum cleaner attachment for CNC done

      I finally got around to actually mounting this.
      Works great!
      Sits super tight and sucks like hell even without brush brisles added yet.

      Maybe some day I'll add LED lights and a mounting for a cheap USB endoscope camera.
      ...or you can do that as the design is published under CC-BY-NC-SA.
      It's paramtric, so you can easily change the meassurements to fit different spindles and vacuum cleaners.



        2012-12-11

        Thing-o-Matic 3rd dino

        The Z stage of the Thing-o-Matic has 2 unused mounting holes in the back.
        Yet it only supports it's heavy extruder from the left and right using long levers.

        When transporting the ToM in a vibrating vessel, maybe even non-upright, there is lots of stress on these tiny bolts.
        (Think of having it on it's back in the overhead compartment of a train.)

        So I designed this to support the extruder stepper from the back with a third "dino".

        License: Creative Commons CC-BY-SA (no -NC)
        11.12.12

        2012-12-10

        Parametric tablet stand

        I just mounted a selfmade 0.025mm thick titanium conveyor belt with Kapton surface to the smaller one of my 3d printers.  ..works great!


        One of the first things I printed with it was this:
        I really like Nexus7 Stand by Parametric Design but I wanted some changes.
        Using the stand in a train I found the viewing angle to be too steep.
        It's also very small. So the headphone cable on one side of the (landscape) tablet pulls it away.

        Thus I made a parametric stand.
        One that has 2 slots to use the tablet in 2 different viewing angles and that is wider.
        Both angles and the sizes are asjustable before it's 3d printed.
        And yes, it does carry it's own Thingiverse ID engraved.




        2012-12-10 Titanium belt and parametric Nexus7 stand

        2012-12-06

        The Long List of Google+ Issues


        This started as a looong Google+ comment.

        Android app still sucks. Here is why: (long list)
        Apart from the already mentioned things it has major issues with notifications and bad networks.

        Like you clicking on a notification about a new comment... And it silently fails, showing just the comments it already loaded, not informing you that there are a dozen other ones it failed to load.

        Why can't you add additional circles to share a posting with after it's posted?

        And of cause that notification is gone forever once clicked.
        No matter if it actually succeeded in loading the content you are being notified about.
        ... So much for transactions.

        Notifications between multiple Android devices and the web (with the Nexus7 and 10 tablet usage grew even stronger)

        Why is there still no Google+ for GoogleTV?
        It's so image centric that it's unusable for reading the texts on tablets (the background image has higher priority then the few bytes of comments), yet it needs to be sideloaded=pirated for the big screen of a GoogleTV.

        And images not being zomable in the web?
        The larger your physical screen is, the less you are able to read text in images.

        Having to log out and in In the Android client all the time because it does notify only for that one account and one page?
        What's the point of having e.g. a GoogleTV or a tablet that's shared between people? People having work and private accounts! Discouraging the Businesses that spend tons of money in Google advertisement and want to work "on social". Be agile. React fast to follower comments and posts!

        Still no API!
        Not a single multi-protocol twitter client can integrate Google+ and give people a smooth way to move over by cross posting for a while, their posts becoming longer and more image-heavy then Twitter allows and finally leaving Twitter for Google+.
        Your competitor is Twitter, not so much Facebook!

        There is not even an account and page selector in the "share with" activity of the Google Plus app.
        Very bad user experience. 
        You have to select and download and type content again because you suddenly notice that your Google+ app is currently in the Page instead of the account or the personal instead of some after-dark account.

        What's the issue with *Nicknames*?
        I can't find people that I have known for years because I know them by their nicknames. I have no clue and I don't care about their "real names".
        They don't want me to know their real name and for good reason!
        PS: in the Android contacts app it doesn't fine people when I search for their nickname entered in gmail-web as "nickname: _____" in addition to their real name that I don't know from the top of my head because I only use it for paper-mail and door-bells.

        *Image ordering*!

        The ability to *add additional images* to your last post. Not making all images you could possibly need, then typing, then sending, then finding out you are missing one but only being able to edit the text.
        (It's already an improvement that you can edit texts you entered on the phone in the web. Previously they turned up empty when you hit "edit".)

        Why isn't *Blogger* better integrated into Google+ ?
        Google+ is microblogging, Blogger is (macro)blogging.
        I can inform people here about a blog-post but I can't turn a microblog-posting that gets too long into a full blog post.
        I *can't copy&paste* because all + and # will be removed from the text, garbling the text beyond recognition!

        Don't get me started on how poorly practucally all Google Android software is tested on slow and unreliable networks.

        Every Twitter client stores a posting you send and *retries* until it can upload. Google+ doesn't. It forces you to keep the Google+ client open, thus highjacking your phone until network stabilizes enough to send out the posting.

        Edit the posting you just sent due to a type? The one that's still in memory?
        You have to load it from the network again!

        When you use multi-signin on the web and select menu->link to this post?
        It keeps the /0/ and /1/ in your link. So you can't jsut paste that link anywhere because if this happens to be your work account /1/, people clicking that link will get a login screen instead of the posting.

        The Google+ web site fails terribly when Ajax responses are login-pages injected by hotspots you're passing by. It doesn't retry and you have to load all that heavy, bandwidth eating imagery again! While not a bug in Google+ it is becomming very common and should be dealt with in error handling code soon.

        Oh and there is no reasonable place to give bug reports like these...


        2012-12-05

        testing asymetric speeds per 3d printer axis

        Since I mounted my new extruder and replaced that unreliable Makerbot MK6 junk,
        my Thing-o-Matic got much more reliable.
        I can actually think about larger prints again.
        It cannot possibly reach the speeds of stare of the art printers like the Ultimater (lightweigth Bowden-Extruder and Y stepper not moving a heavy X stage) or the Type 1 (strong longneck stepper motors).

        Testing a long pause


        Today I tested doing long running prints by simply doing a pause.
        Pause while bed and extruder are kept warm works well.
        A pause with both cooled down mid print for 9 hours had the undesired effect I expected. The ABP belt cooled down and the object fell of.

        Testing asymetric speeds


        So now I'm trying to speed up the print job instead.
        30mm/s worked fine.
        60mm/s worked fine too and has become my new default speed. (Twice what I had for 2 years now.)
        At 90mm/s and 120mm/s the Y stepper lost steps. It has to push around the X stage, so it bears the most heavy load.
        Now I tightened everything down and greased the Y axis with PTFE.
        I'm trying to limit the Y axis to 80mm/s via machines.xml
        (Value ius "4800" because the unit in there is mm/MINUTE while everything else uses mm/SECOND.)
        At the same time the X axis is allowed to move at 120mm/s extruding and 150mm/s travelling.

        ...let's see how this works out!
        Print time estimation changed from 1h40m zu 1h1m .

        Fist result: FAILED
        ReplicatorG seems to generate correct g-code that stays below the maximum speed on each axis.
        However when executing it, movements that specify multiple axis (as is the default in 5G = use of G1 commands with 5 arguments covering all 3 axis + extruder + speed) some sanity checking code comes in and disallows the movement. Even though the slower Y axis isn't moved in the command or it's part of the motion-vector is below it's per-axis limit while the total speed is above the limit.

        That test is a bug in ReplictorG and can be disabled with the preferences setting
        "[ ] Review GCode for potential toolhead problems before building"

        Second result: FAILED

        X at 120mm/s
        Y at  80mm/s
        Error message disabled.

        Made a proper bug report and submitted a patch for the Line 420 in replicatorg/machine/Machine.java at http://replicat.org/reporting-bugs .
        "We should have a response for you within one business day"
        ...let's see about that.
        Answer a few hours later:
        Ben McCallum, Dec 05 15:02 (EST):
        Hey Marcus, Thanks for the email. I'll pass this along to the devs. Best, Ben
        Update: One week later I need to "update" my ticket so it won't be automatically closed because nobody acted on it.

        The second layer was nearly 5cm off due to lost steps on the X axis. It seems that X cannot go to 120mm/s either.


        Third result: 


        Limiting both axis to 80mm/s now.
        Layer height increased from 0.27 to 0.4mm to reduce layer count and thus print time.
        No larger nozzle to test with. ;)

        I think I need some kind of wire card or cable drag chain for the ABP platform.
        The cables are shaking loose at these speeds.
        (Already tighened a lot of bolts. They'll have to get nylocs. That threatment helped with nuts shaking loose on my beloved RepMan. However tiny M3 nylocs will be expensive and hard to find compared to common M5.)

          


        I'm not sure if this is the X axis skipping or of a cable from the ABP platform got entangled and prevented the platform from moving in X.
        I secured the cables with tape and will try again.
        At 80mm/s.

        Fourth result:

        Looks like when you use all of the tiny 100x100mm platform, the X+ end switch cable and the ABP cables do touch and can entangle.
        Given that the steppers have much less force at higher speeds, my hypothesis may be correct.
        If there was X skipping, I should have seen it happen much more often and not all at once.

        ...still printing.
        This is a >1h print. Both to get the part done (an upgrade to my CNC) and to get reliable results by printing for a long time.

        Lost a lot of steps in Y but none in X.


        It's getting late.
        Premature results:
        maximum speed for X: 80mm/s
        maximum speed for Y: 64mm/s

        Maybe X can go up to 100 or 120mm/s. That remains to be tested.
        Increasing layer height from 0.27mm to 0.5mm had issues with convex surface details but generally works.

        2012-12-04

        On 3d printing and Creative Commons NC = non commercial


        My designs are usually CC-BY-NC or CC-BY-NC-SA .
        Here is my understanding of this.
        Please comment if your interpretation differs from this.
        If you know of any interpretation or discussion about NC and SA regarding designs for 3d printing, I'd be glad to list them here!

        Short version: You can make and change them but not sell them.
        Because if anyone is selling my design or physical parts I designed, that should be me.

        BY

        Any derived design gives attribution that it is based on this one.
        Nobody else is free to call him/herself creator of this design.

        SA

        "copies or adaptations of the work to be released under the same or similar licence as the original"
        Printed objects (in my understanding) are not copies or adaptations of the design. They are the design "in all media and formats".
        The medium here is a physical object. It is therefore not a derived design but just another representation of the same design.
        Changed designs however need to have the exact same license (or one that CC has publicly declared to be compatible).

        Even without the SA part derived designs are still Non-Commercial.

        NC

        You may not sell the design and you may also not sell 3d printed or CNC milled or otherwise manufactured physical representations of the design for money.
        Legalese: "in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation"

        You are free to make physical copies for yourself or friends.
        You are not free to sell them in a shop.
        You are free sell the service or 3d printing designs in general and accept this design as given by your client to be made.
        You are not free to advertise this design to be made or sell physical copies to anyone but that one client who ordered you to make it. (e.g. that client using your website to open a virtual shop.)
        You are free to give one to a friend for free.
        You are not free to give one or many away as advertisement.
        You are free to sell a personally used machine that just contains a replacement or improvement I designed.
        You are not free to sell (a) new machine(s) and advertise that it contains my improvement.

        2012-12-03

        Testing Sailfish firmware and new extruder on Thing-o-Matic

        I just mounted my new extruder and am now testing the Sailfish firmware.

        How to mount an extruder on a Thing-o-Matic


        This isn't easy.
        Makerbot Industries does sell alternative toolheads but does not have connectors on any of the toolhead cables nor are the extruder mounting bolts easily accessible. (Or accessible at all.)

        Heat up the nozzle, pull out the filament and let it cool down.

        Remove the M5 bolts holding the "Dinos" (the arc with the hoolhead).
        Take of the toolhead and dinos.
        Lower the Z-platform as much as possible.
        Turn the toolhead until the stepper points upward. The 4 multing bolts for the extruder should not be level and point to the back of the machine.

        Now carefully fiddle your M3 ballhead hex driver through the hotend and unscrew the bolts. Do not remove them. Gravity should keep them just in place as long as you are slow and careful.

        Have a Dremel ready in case anything doesn't fit down to the millimeter.

        Be sure your cables are not twisted after changing the extruder.

        Sailfish - first print

        Had to write a "Thing-o-Matic with ABP and Extruder MK6 (Accelerated)" machine profile.

        Easy to do by copy&pasting from the HBP+MK7 and the ABP+MK6 profiles in Sailfish/replicatororg-0040-windiws-r003/replicatororg-0/thingomatic*.xml

        Using the jog-controls, I found, I had to reverse X but not Y and the A=stepper.
        Heating up and extruding into thin air at 185°C (PLA) worked.

        Now on to the first print.
        Selected G-Code Generator "Skeinforge (50)".
        In generating G-Code a dialog popped up that seems to override many settings of the Skeinforge profile. I don't like that at all. I like having Skeinforge profiles for each machine+material combination. Entering 3mm filament instead if the default 1.85 and 185°C instead of the insane 230°C.

        After heating up, the the toolhead stays at maximum Z and prints in thin air instead of the ABP.

        I found a G-Code "M132 X Y Z A B (Recall stored home offsets for XYZAB axis)".
        Maybe I need to set and store the Z-position of the ABP belt somewhere.
        The Install Guide and then Setup Guide don't mention anything like this.
        OnBoard Preferences have a tab "homing" with "X/Y/Z home offset (mm)".
        Z is at 109,4mm. This is the height of my ABP belt. So it looks correct.
        The machine thinks it is at X=24,984mm Y=-44,211mm and Z=10.000mm while waiting at the top.
        Found out through this issue that there is a calibration script you are supposed to run.
        The setup guide didn't tell you to do this.
        Generated G-Code again...second print.

        Still prints in the air, way above the ABP platform.

        Changes the "Z home offset (mm)" from +110 to -110mm.
        Pressure on the extruder arm is very tight but I can't see any sign of it giving or cracking.
        (Tightened it until it extruded as much as it does when I press the extruder arm with my hand.)
        No effect. Still prints in mid-air.
        Reversed my change.
        No mention of this in the troubleshooting guide.
        Added some "G92 Z110.3" and "G92 X-57 Y-57" to the end of the homing sequence. (Taken from earlier G-codes I used before the update to Sailfish.)
        This issue looked similar. Double checked that I had indeed checked "Use default start/end gcode".
        This issue looked similar too but my machines.xml has maxfeedrate=1000 and homingfeedrate=500 aready.
        Problem found! It had the wrong machine configuration loaded. They all sound very similar.

        next print...

        Now it does move down to heat up. But too far left of the nozzle-wiper.
        It is at command 360 when heating up. I should find and change that command.
        Changed the parking positon in start.gcode, didn't help. bed-temperature seems to be overriden by something. My change from 100 to 120°C didn't make it into the final gcode.
        That's why I don't like programs overriding setting in other programs.
        ...found the issue. machines.xml had the HBP instead of my ABP version of start.gcode referenced.
        Now my wiper-position and my prefered 120°C ABP temperature are regognized.
        G1 X60 Y-60 Z10 F3300.0
        M6 T0
        G0 X60 Y-57
        instead of  X25
        Some issues with first layer adhesion to the old ABP belt in my very small test object. A raft solves that.

        Fist impression: The new extruder seems to fix my extruder-reliability issue with the MK6. (At first glance. Need to test with long running, large prints.)

        Faster speeds (still 30mm/s)

        Trying: 60mm/s (instead of 30mm/s). Didn't find a setting to change extruder RPM from 1.89 to something higher. Hopefully PrintOMatic scales that correctly. Temperature remains at 185°C for the nozzle and 120mm/s for the bed.

        It seems that the nozzle doesn't extrude right away and there is a skipping noise once every time the extruder starts up. Maybe it reverses too much. Increase filament pressure slightly doesn't help. Maybe I should increase the temperature.
        The extruder RPM was aparently scaled with the doubled feed rate.

        200°C

        Trying extruder at 200°C (instead of 185°C) and 60mm/s (instead of 30mm/s) now.
        No skipping noise. Extruding starts right away. The increased temperature seems to do the trick.
        I'll have to see if that higher temperature creates warping in large, slender objects.

        Hardly a visible difference between the same object printed at 30mm/s(185°C) and 60mm/s(200°C)

        The final cooling down and ejection via ABP still needs some work. It seems to cool down and down and down but even after getting below 40°C it still didn't go on to start the belt.
        Also I was missing the code to stop heating the belt after a print in my stop.gcode.
        Maybe I can change the nozzle wiping in start.gcode to do multiple passes over the wiper.
        Just to increase reliability when chaining multiple objects to be printed.

        Even faster (120mm/s)

        Loosing steps in Y (front/back) but not X at 120mm/s. Doesn't work (yet)

        Slower (90mm/s) 

        Trying 90mm/s at 210°C now...
        This is 3x my original speed that I was limited to for years! It would make 4h prints print in slightly more then 1h.
        Still loosing steps in Y.

        Back to 60mm/s


        ...just to make sure it still works.
        Keeping the 210°C and my multiple-wiping procedure.

        60mm/s works!