Prop-based CNC/3D printer

145791014

Comments

  • neotericneoteric Posts: 144
    edited March 2011 Vote Up0Vote Down
    Rayman,
    I am an experienced makerbotter. Here is some info to consider:
    Dont buy an automated build platform. You can print one.
    Go to thingiverse.com, you'll see all kinds of stuff to print, including an automated build platform.
    With the new stepstruder, you can switch from 1.7 to 3mm filament, there is a "tube" you put in.
    Familiarize yourself with Makergear.com, and join both the makerbot and makergear google groups. Makergear has a lot of options, including prebuilt hybrid extruders. He is also a solid engineer with excellent customer support.
    Let me know how I can be of further assistance.
  • RaymanRayman Posts: 8,230
    edited March 2011 Vote Up0Vote Down
    neoteric, thanks! Couple questions for you... Can you switch back and forth between 1.7 and 3 mm ? What type of material is best to print on?
    Prop Info and Apps: http://www.rayslogic.com/
  • neotericneoteric Posts: 144
    edited March 2011 Vote Up0Vote Down
    Yes, you can switch between 1.7 and 3 mm filament.

    You can print onto flexi, but you need a good raft (a square you print with the item. This helps prevent warpage.) If you print in ABS, you can print directly onto glass.

    I print mostly with PLA onto a Kapton tape square. I use a heated build platform, which you can build easily. I bought mine from Makerbot. But the plans are on thingiverse.com.
    A heated build platform is just a resistor pcb that generates a square of heat. Then you have a heat spreader square, a plate of aluminum. I have a square of Kapton adhesive square on the aluminum. I print directly on the kapton.
  • RaymanRayman Posts: 8,230
    edited March 2011 Vote Up0Vote Down
    Thanks neoteric, I'm thinking of trying PLA as a light pipe... Got some big ideas... ABS on glass sounds pretty easy. Making a raft sounds like a lot of work...
    I'll take a look at Makerbot again for the heated build platform.
    BTW: what is flexi?
    Prop Info and Apps: http://www.rayslogic.com/
  • neotericneoteric Posts: 144
    edited March 2011 Vote Up0Vote Down
    Plexi. Plexiglass. Mybad.
    The current software most of us use is Replicator G. http://replicat.org/ You can mess with it before you get your printer built. If you use blender, there is a 3d printer visualation tool that takes the gcode and puts it into blender. https://github.com/zignig/blender-gcode-reader This way you can load models and "print" them in blender.

    All we need after that is to take the gcode, and load it into a Prop. Which I dont have the skills quite yet to do...
    One of the disadvantages of the Makerbot is it is built on the Arduino. Not multi. So if you do things like visual feedback, feedback to PC, etc, it lags your printer. Which makes for less nice prints.
  • RaymanRayman Posts: 8,230
    edited March 2011 Vote Up0Vote Down
    Thanks for the tips.

    I think we can do a whole lot better than that Arduino!
    Prop Info and Apps: http://www.rayslogic.com/
  • prof_brainoprof_braino Posts: 4,312
    edited March 2011 Vote Up0Vote Down
    All we need after that is to take the gcode, and load it into a Prop. Which I dont have the skills quite yet to do...
    One of the disadvantages of the Makerbot is it is built on the Arduino. Not multi.

    Hi neoteric! Welcome to the thread!. Sounds like you and this thread have complimentary skills.

    >> take the gcode, and load it into a Prop

    So to do this, we want the prop to recieve as input a list of g-code that is something like Start coordinate, motion, end coordinate. Yes?
    The task for the prop can be described as to parse each list item, move 1 - 4 motors, stop 1 - 4 motors. Yes?
    What does the list of G-code typically look like, is it hundreds of records of { (start x,y,z) (line/arc/spline) (end x,y,x) }?

    Personally, I am still collecting parts, but I am trying to keep up on Rayman's progress, and understand Graham's insights
  • StefanL38StefanL38 Posts: 2,284
    edited March 2011 Vote Up0Vote Down
    to learn about g-code you can use this freeware which does a graphical simulation on the part that gets milled or turned

    http://www.cncsimulator.com/

    it does not know all g-codes (and m-codes etc) but to get into it it is good

    best regards

    Stefan
    [x] <== SLAM in nail here to hook up the new screen! :lol:
  • Graham StablerGraham Stabler Posts: 2,507
    edited March 2011 Vote Up0Vote Down
    http://en.wikipedia.org/wiki/G-code

    Is also good as a reference. G-code is the standard for most cnc machines, it is easier to interpret than produce generally.

    Graham
  • RaymanRayman Posts: 8,230
    edited April 2011 Vote Up0Vote Down
    Finally got the thing put together:
    Zen_AllDone.jpg


    Here's some things I think I've learned:

    You can go back and forth from 3D Print and CNC parts, but I probably won't do it because it's a pain. (unless, I find that the tolerances are too bad with 3D Print parts).

    The linear bearings are very sensitive to alignment and they bind if just a little bit off. I think it's a very good idea to make sure they aren't binding before attaching them to the anti-backlash nut. I'm not really sure how they bind but putting them back in the vice once or twice seems to fix the problem.

    One question I see asked is how freely the drive screw should turn. I think the main source of resistance is the anti-backlash nut. You can actually adjust this a little by how many threads apart the two brass pieces are. When they are almost touching, there is a lot of resistance. If you let them be one more thread apart, the resistance goes down a lot. I'd recommend holding the a-b nut with your hand while turning the drive screw to get a feeling for that resistance. If you wind up with more than that, your linear bearings may be binding.

    It's very difficult to get the motor wires to come out going a good direction (out of sight) on the first try... I wound up redo'ing it a few times.

    There were no pre-drilled holes for the center 4 screws where my part #22 attaches to the back and I had to drill some holes myself.

    Anyway, now I have to find time to hook up the electronics and see if the motors work...
    1024 x 768 - 125K
    Prop Info and Apps: http://www.rayslogic.com/
  • StefanL38StefanL38 Posts: 2,284
    edited April 2011 Vote Up0Vote Down
    Hi Raymann,

    congrats to finishing the assembly of the mechanical part and thank you for sharing the picture and your experience with it.
    I'm really curious about the precision that can be reached with this machine.

    best regards

    Stefan
    [x] <== SLAM in nail here to hook up the new screen! :lol:
  • ErNaErNa Posts: 983
    edited April 2011 Vote Up0Vote Down
    Just as an update from my side: the kit for mendel (reprep) arrived and we are in the state of assembly. As soon as running, we will start to replace the stepper drivers by a propeller, Next steps: tbd
    ErNa
  • Graham StablerGraham Stabler Posts: 2,507
    edited April 2011 Vote Up0Vote Down
    One potential reason for binding is slight non parallel rails, they will tend to pinch, possibly fix one tightly and move the carriage back and forth while you tighten the other.

    Graham
  • lonesocklonesock Posts: 878
    edited June 2011 Vote Up0Vote Down
    Mildly off-topic warning:

    I have a RapMan 3.1, and the bottleneck in my usage of it was not the stepper driver board, it was the slicing software. As an impatient type guy, I wrote my own slicer, and I'm in the process of releasing it. If anyone on this thread is doing extrusion printing (RepRap or RapMan style), I'd love to get your feedback.

    KISSlicer can be found here: http://www.lonesock.net/kisslicer.html

    I'll be working on it for a while (and taking feature requests). Once it's "done (for the time being)", then the bottleneck will be the stepper driver board, and at that point I'll be mildly back on-topic. [8^)

    thanks,
    Jonathan
    Free time status: see my avatar [8^)
    F32 - fast & concise floating point: OBEX, Thread
    Unrelated to the prop: KISSlicer
  • RaymanRayman Posts: 8,230
    edited June 2011 Vote Up0Vote Down
    Jonathan, looks great. Why does it only work with RepRap style? I'm still learning this stuff, but I though g-code was fairly generic...
    Prop Info and Apps: http://www.rayslogic.com/
  • lonesocklonesock Posts: 878
    edited June 2011 Vote Up0Vote Down
    You're absolutely correct, it does use generic G-Code. However, different driver boards (and even different firmware revisions) handle different subsets of G-Code. All I know for sure is that my RapMan 3.1 with firmware 4.1.1 likes the output just fine. As far as I know you could use this on makerbot or RepRaps of all varieties.

    Jonathan
    Free time status: see my avatar [8^)
    F32 - fast & concise floating point: OBEX, Thread
    Unrelated to the prop: KISSlicer
  • SapiehaSapieha Posts: 2,964
    edited June 2011 Vote Up0Vote Down
    Hi lonesock.

    On my computer it give that error.



    lonesock wrote: »
    You're absolutely correct, it does use generic G-Code. However, different driver boards (and even different firmware revisions) handle different subsets of G-Code. All I know for sure is that my RapMan 3.1 with firmware 4.1.1 likes the output just fine. As far as I know you could use this on makerbot or RepRaps of all varieties.

    Jonathan
    1024 x 541 - 95K
    Regards
    Sapieha
    _____________________________________________________
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it as simple as possible yet as versatile/usable as possible.
  • kuronekokuroneko Posts: 3,623
    edited June 2011 Vote Up0Vote Down
    Same here (0xC0000005). Could this have anything to do with not specifying a filename (i.e. just double clicking the executable)?

    Update: missing or non-existing file bombs out, existing file works fine.
  • lonesocklonesock Posts: 878
    edited June 2011 Vote Up0Vote Down
    Right you are...I made a rookie mistake! Updated version should be online now.

    thanks,
    Jonathan
    Free time status: see my avatar [8^)
    F32 - fast & concise floating point: OBEX, Thread
    Unrelated to the prop: KISSlicer
  • neotericneoteric Posts: 144
    edited June 2011 Vote Up0Vote Down
    Rayman et al... how goes the project?
  • RaymanRayman Posts: 8,230
    edited June 2011 Vote Up0Vote Down
    Well, sadly, I came to realize that I don't really have time to get it working myself...

    So, I more or less loaned the setup to a friend who has some summer college students to keep busy...
    My friend also has a need for a 3D printer, so we're pooling resources to get it put together...
    So, there's at least one college student working hard on putting it all together...
    Maybe by the end of the summer we'll have it working.
    Prop Info and Apps: http://www.rayslogic.com/
  • prof_brainoprof_braino Posts: 4,312
    edited June 2011 Vote Up0Vote Down
    I'm still collecting parts, and working on the software components.

    I found a couple of local maker/hacker spaces, pumping station one in chicago is having a class in reprap medal prusa, this has most of the mechanicals for a 3D printer in a kit. I figure with a small 3D printer, I could make parts for another machine.

    http://pumpingstationone.org/2011/05/3d-printing-reprap-mendel-prusa-build-june-18/

    But I missed this session, the organizer said another session will be scheduled soon.

    I also found Workshop 88, but was not able to visit. Maybe next month.

    The plan is to share / swap software experience for mechanical / electrical experience. These forums are great and all, but its more fun to be in the same room. Unfortunately both places are a bit far, and are impractical for daily use.

    Pumping Station One and Workshop 88 appear to interact with each, so I am now trying to start a hackerspace in my area, and share with these two. It appears that the typical mode is for a hacker space to exist for several years before it gets a physical address, so I'm on the right track, but this is a long term process.

    So I'm moving in several directions, but haven't gotten anywhere yet. I'm going to "focus on the journey, not the destination", so I can rationalize my lack of progress. :)
  • StefanL38StefanL38 Posts: 2,284
    edited June 2011 Vote Up0Vote Down
    I started working on a G-Code interpreter.

    So far I just have two methods that you can give a G-Code sentence like

    "N002 G01 X-123.456 Y345.678 Z-10.456 F200 S1500"

    and the methods extract it to the parts

    G01

    X-123.456

    Y345.678

    Z-10.456

    F200

    S1500

    It is quite tolerant about having more than one "space" between the parts or between letter and digits and lower-case letters are transformed to uppercase.

    I commented the code intensivly. And I want to have feedback on this amount of comments.

    Do the comments make it easy to read? Is it still readable? Or already too much?
    This amount of comments is my personal opinion about what I would call a diamond standard object (instead of gold standard)
    I post the two methods here. They use the PC_Text- and the PC_keyboard-object from the PC-software Propterminal. But it can be used with any terminal-software running at 115200 baud.
    I attach the whole project that contain with all methods a very simple text-based menu-system and my PASM two axle stepperdriver.

    best regards

    Stefan
     PUB Test_G_Code_Input(StrPointer) | KeyCode, PosOfNextChSeq, SizeOfStr, Ch, lb_Cmd_found 
    
      KeyCode := 0
      PosOfNextChSeq := 0
      SizeOfStr := 0
      Ch := " " 
      lb_Cmd_found := false
      
      PC_Text.Writeln(string("Type String on Keyboard (Enter)"))
      PC_Keyb.getstr(StrPointer)
      'DeleteTrailingSpaces(StrPointer)
      'DeleteLeadingSpaces(StrPointer)
          
      SizeOfStr := strsize(StrPointer)
    
      PC_Text.Write(string("Str=*"))
      PC_Text.Write(string("0123456789012345678901234567890"))
      PC_Text.Writeln(string("*"))
    
      PC_Text.Write(string("Str=*"))
      PC_Text.Write(StrPointer)
      PC_Text.Writeln(string("*"))
    
      'This loop parses until the first nescessary part of the G-Code is found
      'The Sentence letter "N" and number (example "N007") is not  
      repeat until (lb_Cmd_found) or (PosOfNextChSeq == SizeOfStr)
        Ch := byte[StrPointer + PosOfNextChSeq]
    
        if((Ch => "a") and (Ch =< "z")) 'if lowercase convert to uppercase
          Ch := (Ch - 32)
    
        case Ch
          'parse forward in case of space "N" and digits
          " ","N","0".."9" : PosOfNextChSeq++          
    
          0,"F","G","I","J","K","M","S","T","X","Y","Z" : lb_Cmd_found := true
          
      'after exiting this loop PosOfNextChSeq contains the position of where the important part begins
       
      'go on parsing. Store each found part of the command into string "CharSeq"
      repeat until PosOfNextChSeq == -1
        PosOfNextChSeq := Extract_Next_CharSequence(@MyStr,@CharSeq,PosOfNextChSeq)
        PC_Text.Write(string("CharSeq=*"))
        PC_Text.Write(@CharSeq)
        PC_Text.Writeln(string("*"))
          
    
    PUB Extract_Next_CharSequence(StrPtr_Cmd,StrPtrChSeq,StartPos) : NextCmdPos | Ch, Pos, lb_Next_Cmd_found, Begin, End
    {{ This method separates parts of the G-Code like "G01"  "X-12.345", "F200", etc. from each other
    
       Parameter "StrPtr_Cmd" contains the adress of the whole command-line example "N001 G01 X-12.345 Y987.654"
       
       Parameter "StrPtrChSeq" contains the adress of the string where the part of the command should be copied to
                               this method parses the string at adress StrPtr_Cmd.
                               The charactersequence found in the string StrPtr_Cmd is copied to string at adress StrPtrChSeq   
    
       
       The extracting starts at StartPos where StartPos is the Indexnumber inside of the string StrPtr_Cmd
       Example StrPtr_Cmd points to adress of a string that contains "N001 G01 X-12.345 Y987.654"
       
       CharIndexNr  01234567890123456789012345
       Charsequence N001 G01 X-12.345 Y987.654
    
       Now if StartPos contains value 9 the method starts parsing the string at "X-12.34..."
       Pos is increased until the next character "F","G","I","J","K","M","S","T","X","Y","Z" is found
       The next letter indicates the next charsequence "Y987.654"   
       
       then it copies this charactersequence into the string at adress StrPtrChSeq
       The returnvalue NextCmdPos contains the Indexnumber where the next charsequence begins
    
       (in this example NextCmdPos contains "18" where "Y987.654" starts)    
    }}
    
      Ch := " "
      Pos := 0
      lb_Next_Cmd_found := false
      Begin := 0
      End   := 0
      
      repeat until lb_Next_Cmd_found
        Ch := byte[StrPtr_Cmd + StartPos + Pos]
        
        if( (Ch => "a") and (Ch =< "z") ) 'if lowercase 
          Ch := (Ch - 32)                 'convert to uppercase
    
        Case Ch
          " " : Pos++  'if there are still spaces go to next position 
                                   
          'leading character that indicates begin of charsequence
          0,"F","G","I","J","K","M","S","T","X","Y","Z" : lb_Next_Cmd_found := true
         
      if Ch <> 0    
        Begin := StartPos + Pos     
    
        Pos := 1
        lb_Next_Cmd_found := false
    
        'start again parsing for a leading character that indicates the begin of the NEXT charsequence
        repeat until lb_Next_Cmd_found
          Ch := byte[StrPtr_Cmd + Begin + Pos]
          'TaggedInteger(string("Begin + Pos"),Begin + Pos)
          if((Ch => "a") and (Ch =< "z")) 'if lowercase 
            Ch := (Ch - 32)               'convert to uppercase
                 
          Case Ch
           'spaces, sign, digits belong to this charsequence
           'examples "G01", X -12.345" "F 300", "S1200"
            " ", "-","+",".",",","0".."9" :
              Pos++
            
            0,"F","G","I","J","K","M","S","T","X","Y","Z" :
              lb_Next_Cmd_found := true
            
    
        End := Begin + Pos - 1
    
        'here Begin and End contain the CharIndexNumbers where the Charsequence begins and ends
        '  CharIndexNr  01234567890123456789012345
        '                        &#8595;      &#8595;
        'in the example N001 G01 X-12.345 Y987.654 Begin contains 9;   End contains 16
        
        'now the charsequence "X-12.345" is copied to string at adress StrPtrChSeq   
        repeat Pos from 0 to (End - Begin)  
          byte[StrPtrChSeq + Pos] := byte[StrPtr_Cmd + Begin + Pos]
    
        byte[StrPtrChSeq + Pos ] := 0
           
        if Ch <> 0    
          NextCmdPos := End + 1
        else
          NextCmdPos := -1 'set to -1 to indicate end of string
      else
        NextCmdPos := -1   'set to -1 to indicate end of string    
    
    [x] <== SLAM in nail here to hook up the new screen! :lol:
  • RaymanRayman Posts: 8,230
    edited June 2011 Vote Up0Vote Down
    Stefan,

    Thanks for posting your code. I don't think you could put in too many comments for me... I'm very much still learning this CNC stuff...
    Prop Info and Apps: http://www.rayslogic.com/
  • jeff-ojeff-o Posts: 181
    edited July 2011 Vote Up0Vote Down

    That's one of many current and past CNC projects on Kickstarter. Do a search for "CNC" and they'll all turn up.
  • JoannaKJoannaK Posts: 44
    edited July 2011 Vote Up0Vote Down
    Hello all.

    I know this is a bit old thread but I've been busy with non-propeller -related thingies and only now found this thread. I think that Propeller would be much better controller for 3Dprinter than Andruino (since it's only 8-bit chip) but at the moment I'd rather get one (most likely) working machine first and in time (interest permitting) make something my own later. I got the eMaker Huxley ordered and am now waiting for them to deliver the backlog...
  • prof_brainoprof_braino Posts: 4,312
    edited July 2011 Vote Up0Vote Down
    Hi JoannaK

    The thread has been going for a while but I still have not started building, only collecting parts and information. . There is a lot of info on this trhead, maybe enough to get building.

    I'm looking into the local Makerspace projects, they tend to build the mechanicals, but do not include electronics/software. I'm looking into working with someone with a machine built, and do the motor control with propforth. But the propforth final kernel won't be finished until Autumn, so there is still a bit of time before this gets going.
  • StefanL38StefanL38 Posts: 2,284
    edited July 2011 Vote Up0Vote Down
    Hi,

    while surfing across the web discovering http://opensourceecology.org/wiki/Main_Page
    - They are developing even an industrial robot-arm http://opensourceecology.org/wiki/Industrial_Robot_Build_Instructions -

    I came across this site http://makeyourbot.org/start
    It's a small CNC-mill for $100. With a lot of video based instructions http://makeyourbot.org/mantis9-build

    You seem to have to do a lot of manual work to build it. But the price is really low.

    As a side comment I want to add the following: if the financial system should melt-down worldwide I guess the OSE-org movement in collaboration with the http://www.thezeitgeistmovement.com/
    might build up a "new life after capitalism". From my experience in this forum propeller-users seem to be more open minded than "average-people" and might think this is interesting.
    As this is far away from beeing propeller-related I suggest - if somebody wants to discuss this - to use the test-forum.

    keep the questions coming
    best regards

    Stefan
    [x] <== SLAM in nail here to hook up the new screen! :lol:
  • Kevin BrownKevin Brown Posts: 44
    edited July 2011 Vote Up0Vote Down
    solar 3-D printing with sand !!!!!

    http://www.tecca.com/news/2011/06/27/solar-sinter/

    after seeing the video now I want to build something like it I have the lens from a 50 inch rear projection TV.

    my problem is I want to build one large enough to print a 3-D House out of sand. From looking at the video I'm guessing it would take some time. And yes when you're house is finished it would be completely filled with sand. But in theory you could print the foundation with the plumbing pipes, plumbing fixtures(tubs,sinks,etc), counter tops, cabinets, furniture even down to the plates and cups.

    I did a crude sketch of drawings of what a 3-D House printer might look like.
    the rough idea is to have a rotating auto tracking lens on one side
    an the sand hopper/spreader and drive wheel on the other. Height can be adjusted hydraulically or with a simple screw arrangement.

    Thinking about trying to build a prototype to build a 10 or 12 foot dome printer

    should be simple right LOL


    Dome House Printer1.jpg
    1024 x 492 - 42K
Sign In or Register to comment.