{"id":4769,"date":"2017-03-10T17:49:07","date_gmt":"2017-03-10T22:49:07","guid":{"rendered":"https:\/\/dyzedesign.com\/?p=4769"},"modified":"2024-05-30T09:15:50","modified_gmt":"2024-05-30T13:15:50","slug":"printing-at-300-mm-s-part-3-firmware-tests","status":"publish","type":"post","link":"https:\/\/dyzedesign.com\/fr\/2017\/03\/printing-at-300-mm-s-part-3-firmware-tests\/","title":{"rendered":"Printing at 300 mm \/ s – Part 3 – Firmware and tests"},"content":{"rendered":"

This third part will discuss firmware and slicer configuration, real experiments, and prints.<\/p>\n

Make sure you read\u00a0the first part<\/a> which explores the components involved in both speed and acceleration performance and then the second part<\/a> which explores all the theory behind the speed limiting factors.<\/p>\n

<\/span>Firmware<\/span><\/h1><\/div>\n\n

The first step in printing fast is to make sure our firmware can handle our required speed. We’ll take a look mostly about maximum axis speed. This example will be based on Repetier firmware, but the equivalent configuration should be very similar between firmware.<\/p>\n

<\/span>Step Frequency<\/span><\/h2><\/div>\n\n

300mm\/s is very fast and we need to make sure our microcontroller can handle this speed. Let’s consider we have the following configuration:<\/p>\n

    \n
  • 1.8\u00b0 Stepper motor (200 full steps per rotation)<\/li>\n
  • Stepper drivers configured at 16 \u00b5steps<\/li>\n
  • 80 steps per mm ( very common GT2 20 teeth pulley )<\/li>\n<\/ul>\n

    We can check the stepper driver input pulse frequency based on our setup:<\/p>\n

    \"StepperFrequency=StepsPerMm\times MaximumSpeed=80 steps/mm\times300mm/s=24000 steps/s\"<\/p>\n

    24 000 is quite a lot of steps per second. The theoretical limit for 8 bit based microcontrollers is around 40 000. However, at this speed, there is no more room for computation. The clever firmware programmer uses tricks such as the:<\/p>\n

    #define STEP_DOUBLER_FREQUENCY 10000<\/pre>\n

    Or<\/p>\n

    #define ALLOW_QUADSTEPPING 1<\/pre>\n

    Starting from 10 000 steps per second, the program will double the steps, and reduce its computation by half. The same logic applies to quad stepping. At 300mm\/s, we are in quad stepping. Make sure it is enabled, or your\u00a0microcontroller will have a bad time moving your printer at 300 mm\/s.<\/p>\n

    <\/span>Firmware modifications<\/span><\/h2><\/div>\n

    Check the maximum speed and acceleration values. They must all be equal or above the ones we’ve found in part 2.<\/p>\n

    #define MAX_FEEDRATE_X 300<\/strong><\/span>\n#define MAX_FEEDRATE_Y 300<\/strong><\/span>\n#define EXT0_MAX_FEEDRATE 30<\/strong><\/span>\n#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_X 3000<\/strong><\/span>\n#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Y 3000<\/strong><\/span>\n#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_X 3000<\/strong><\/span>\n#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Y 3000<\/strong><\/span><\/pre>\n

    <\/span>Slicer<\/span><\/h1><\/div>\n

    The slicer has two option which should be checked:<\/p>\n

      \n
    • Maximum axis speed<\/li>\n
    • Maximum flow<\/li>\n<\/ul>\n

      This example will use Repetier Host with Cura. Again, the same option should be easy to find with a different hos, controller, and slicer.<\/p>\n

      In Config \/ Printer Setting \/ Extruder<\/span>, make sure the « Max. Volume per second<\/strong> » is at 15 mm^3\/s or higher<\/strong>.<\/p>\n

      \"Printing<\/div><\/div>\n\n

      in Slicer \/ Configuration \/ Print \/ Speed and Quality<\/span>, make sure all the « Fast<\/strong> » values are at 300 mm\/s, except for « First Layer<\/strong>« .<\/p>\n

      \"Printing<\/div><\/div>\n\n

      in Slicer \/ Configuration \/ Filament <\/span>, make sure the « Minimum Layer Time<\/strong> » values is 0<\/strong>.<\/p>\n

      \"Printing<\/div><\/div>\n\n

      <\/span>Test<\/span><\/h1><\/div>\n\n

      Before printing an actual part at 300 mm\/s, we will need to validate that our printer can handle all the parameters.<\/p>\n

      <\/span>X & Y Speed Test<\/span><\/h2><\/div>\n\n

      The first test will consist in validating the speed of our printer. It will be done using a simple G-code program where we increase axis movement speed up to 300 mm\/s. The goal is to validate that the printer isn’t blocked by any configuration in the firmware.<\/p>\n

      Copy and paste this test in a Gcode file and run it! Your printer will move back and forth 100mm, from 100 mm\/s up to 300 mm\/s by steps of 50 mm\/s each time. Each back and forth is repeated 5 times. You need to hear a difference<\/p>\n

      <\/i><\/i>X & Y Speed Test Gcode<\/div>
      <\/p>\n
      G28 ; Home all axis\nG90 ; Absolute positioning\nG1 F60 Z5 ; Raise Z\nG0 F3000 X0 Y0 ; Go to printer home\n; Benchmark at 100 mm\/s\n; X Axis\nG0 F6000 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\n; Y Axis\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\n; Benchmark at 150 mm\/s\n; X Axis\nG0 F9000 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\n; Y Axis\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\n; Benchmark at 200 mm\/s\n; X Axis\nG0 F12000 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\n; Y Axis\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\n; Benchmark at 250 mm\/s\n; X Axis\nG0 F15000 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\n; Y Axis\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\n; Benchmark at 300 mm\/s\n; X Axis\nG0 F18000 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\nG0 X100\nG0 X0\n; Y Axis\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\nG0 Y100\nG0 Y0\n\n<\/pre>\n

      <\/div><\/div>\n<\/div><\/div>\n\n

      <\/div>