Jump to content

Banner.jpg.b83b14cd4142fe10848741bb2a14c66b.jpg

Gina

Beyond the Event Horizon
  • Posts

    45,326
  • Joined

  • Last visited

  • Days Won

    120

Blog Comments posted by Gina

  1. This first photo shows the main framework of the printer plus print bed Z carriage frame and XYZ drive systems. The external dimensions are 750mm x 660mm x 1000mm. The frame parts are 20mm x 20mm aluminium extrusion designed for wheels to run on. The X rail is wider at 40mm x 20mm for extra precision. The printing capacity will be 490mm x 470mm x 650mm (or maybe slightly more).  Most printed parts are PETG with the exception of the Z drive gears which are PLA for the large gear and TPU for the motor pinion.  Also, the parts cooler air duct is in ABS for that ability to "solvent weld" it in parts.

    This printer is different in some ways from most 3D printers. The X and Y drives are combined in an arrangement called CoreXY where one stepper motor provides X+Y motion and the other X-Y motion. The drive is by standard timing belts and pulleys.  The Z drive is different - it uses fishing line braided cord which is very strong, with negligible stretch. Cords are attached to the 4 corners of the bed frame, go up over pulleys and onto a horizontal aluminium tube that acts as an axle/drum where the cord is wound up to lift the bed. This is driven by gearing with a 10:1 ratio from the Z stepper motor.

    224791583_MainframeworkDrives.JPG.f762caa0a0a4e8ebafbf4aa40348aebc.JPG

    • Like 1
  2. Bed corner blocks completed and installed plus all four suspension cords connected to the adjusters.  Z drive pinion printed, pushed onto motor shaft and motor mounted on main printer frame.  On testing by hand it was found that the Z carriage frame collided with the left hand XY motor so a new motor mounting was required.  Since the standard NEMA17 bracket wouldn't fit, a 3D printed motor bracket was designed and printed in PETG.   With all drive mechanics completed, the printing capacity was measured - 470mm x 490mm x 650mm (XYZ).

    Still to do :-

    1. Decide location and mount control box and hotend cooling water reservoir.
    2. Wiring and water tubing.
    3. Umbilical support cable chain.
    4. Filament reel support.
  3. Rear pulley blocks designed and printed in ABS and checked for fit.  Final blocks will be printed in PETG.

    Now working on the Z drive.  A horizontal aluminium tube, 1" (25.4mm) OD will go across the top from side to side and centred front to back.  This will be driven by a pair of spur gears from a NEMA17 stepper motor.  Cords from the corners of the bed will go up over pulleys and be wound up on the tube.  There will be approximately 9 turns to raise the bed from bottom (Z = 700mm) to top (Z = 0).  With a cord diameter of 0.4mm these turns will take up just under 4mm for each cord.  Approximate bed levelling will be achieved with guitar pegs attached to the bed frame - accurate bed levelling will rely on the auto-bed-level-compensation of the controller electronics.

  4. I'm currently almost rebuilding this printer as I'm dissatisfied with certain aspects of it.

    1. The Z drive with the 4 threaded rods is very noisy and slow.
    2. The brackets for the bed failed to hold it when printing with a high bed temperature so I had it supported on pieces of wood on the floor.
    3. In spite of the bungy cords to lift it, the umbilical tended to catch at high level printing.
    4. The arrangement of Z drive and XY carriage limited the printing area.

    To overcome these problems I'm changing from moving the XY plane for Z axis to the more standard moving print bed, replacing the 5mm thick aluminium bed with a 2mm aluminium sheet supported on aluminium extrusion, parts of which will form the Z carriage.

    The threaded rod Z drive will be replaced with cord support on the four corners as I have in one of my other printers. The cords will be taken over pulleys to a crosswise bar on which they will be wound up to lift the bed, with the bar driven by reduction spur gears (3D printed) from a stepper motor.

  5. Working on the drive unit now.  This is the layout of the stripboard and components.  The RTC (Real Time Clock) is accurate to a minute or two a year.  The stepper motor is a NEMA14.

    609231992_Screenshotfrom2018-11-1113-26-49.png.5dbc8ad84760e8507d0d2def51641ceb.png

    And the Arduino sketch

    
    // Filename :- Giant_Wall_Clock_v1_2018-11-12
    // Software timing from RTC on pin 2 using polling
    //
    #include <DS3232RTC.h>    //http://github.com/JChristensen/DS3232RTC
    #include <Time.h>         //http://www.arduino.cc/playground/Code/Time  
    #include <Wire.h>         //http://arduino.cc/en/Reference/Wire (included with Arduino IDE)
    //
    String VerString = " Giant_Wall_Clock_v1_2018-11-08";
    boolean lastSqWave = 0; 
    boolean ledON = 0; 
    int count = 0;  // Used to flash LED
    int sqwPin = A6;
    int dirPin = 5;  // DIRECTION pin
    int stepPin = 6; // STEP pin
    int slpPin = 7;   // Sleep pin
    int rstPin = 8;  // Reset pin
    int ms3Pin = 9;  // Microstepping pin
    int ms2Pin = 10;  // Microstepping pin
    int ms1Pin = 11;  // Microstepping pin
    int enPin = 12;  // Enable pin
    int ledPin = 13;  // Internal LED pin
    //
    void setup() {
      Serial.begin (9600);     // Enable Serial Monitor via USB
      pinMode(dirPin, OUTPUT);
      pinMode(stepPin, OUTPUT);
      pinMode(slpPin, OUTPUT);
      pinMode(rstPin, OUTPUT);
      pinMode(enPin, OUTPUT);
      pinMode(ms1Pin, OUTPUT);
      pinMode(ms2Pin, OUTPUT);
      pinMode(ms3Pin, OUTPUT);
      pinMode(ledPin, OUTPUT);
      digitalWrite(ms1Pin, 0);  //  full-step mode
      digitalWrite(ms2Pin, 0);  //  full-step mode
      digitalWrite(ms3Pin, 0);  //  full-step mode
      digitalWrite(enPin, 0);   //  enable
      digitalWrite(rstPin, 1);  //  not reset
      digitalWrite(slpPin, 1);  //  not sleep
      digitalWrite(dirPin, 1);  //  set on test
      pinMode(sqwPin,INPUT_PULLUP);   //  RTC timing pin
      Serial.println(VerString);
      setSyncProvider(RTC.get);  // the function to get the time from the RTC
      if(timeStatus() != timeSet) 
          Serial.println(" Unable to sync with the RTC");
      else
          Serial.println(" RTC has set the system time");
      RTC.squareWave(SQWAVE_1_HZ);    // 1Hz square wave            
    }
    //
    void runClock(void){
      for (int i = 199; i >= 0; i--) { 
        digitalWrite(stepPin, 1);
        delayMicroseconds(10);     // Make STEP pulse 10μs long
        digitalWrite(stepPin, 0); 
        delayMicroseconds(30); }     //
      ledON = !ledON; digitalWrite(ledPin, ledON); }  //  flash LED 1s on 1s off
    
    //
    void loop(){
      boolean sqUp = ((analogRead(sqwPin) > 500));  // read logic level of 1Hz square wave
      if (sqUp != lastSqWave)  { lastSqWave = sqUp; if (sqUp); { runClock(); } }  //  Call runClock on rising edge of RTC square wave
    }
    // End

     

    • Like 1
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. By using this site, you agree to our Terms of Use.