Close



Page 7 of 17 FirstFirst ... 56789 ... LastLast
Results 61 to 70 of 166
  1. #61
    Staff Engineer printbus's Avatar
    Join Date
    May 2014
    Location
    Highlands Ranch, Colorado USA
    Posts
    1,437
    Add printbus on Thingiverse
    Everything sniffle has said is correct. I'll elaborate on your original question. Unfortunately, another lengthy answer is required to fully explain how the printers use memory.

    The ATMEGA2560 processor used in the MakerFarm printers contains three types of memory. We'll describe them as flash, Electrically Erasable Programmable Read Only Memory (EEPROM), and Random Access Memory (RAM).

    When a printer is up and running, it is executing the firmware code stored in the flash memory, using the RAM as workspace for various parameters, calculation results, and other variables. Contents of the flash memory will stay the way it is until the flash memory is damaged or new firmware has been uploaded to it. Along with the executable firmware code, the flash memory also contains what is described as "factory defaults" for settings and parameters. Don't be confused by the label factory - it doesn't imply MakerFarm as the factory. Factory simply refers to the firmware build that was last uploaded to the printer. Being able to change settings and parameters in a firmware upload is one method of changing them.

    The Marlin firmware starts off by initializing the variable RAM space. If EEPROM is disabled, it will fetch the factory default values from the firmware upload stored in flash memory. If EEPROM is enabled, the data saved by the printer user to EEPROM will be used instead. Regardless of the source, this iniitialization only occurs once as the firmware starts up. After that, the contents of the settings and parameters in the RAM space will continue to be used until the ATMEGA2560 is reset or otherwise restarted. During the time the printer is up and running, many settings and parameters can be changed through either the LCD smartpanel or through gcode commands sent to the printer through host software. When changed from either the LCD or gcode, the updated values will again continue to be used until the ATMEGA2560 is reset. Updating RAM with settings and parameters from the LCD or gcode a second method of changing them.

    Processors like the ATMEGA2560 are developed as general purpose processors - they aren't tailor designed for the 3D printer market. EEPROM space is available in the generic processor design for products that have a need to store some number of user-settable parameters in a non-volatile way without the risk and hassle of revising the flash memory contents. For example, in a clock design EEPROM might be used to store the daylight savings time mode, preventing the need for the user to re-enter the desired state every time the clock is restarted. Applying the generic processor design to our 3D printers, Marlin provides the option to store the settings and parameters in the EEPROM space as well. On command from either the LCD or receipt of the M500 gcode instruction, Marlin firmware will take the current state of key settings and parameters in the variable RAM space and copy them into the EEPROM. With Arduino, this is the only way to update the EEPROM contents. Storing settings and parameters and settings in EEPROM is a third method of managing them.

    Again, when EEPROM is enabled, the settings and parameters stored there will be used by the printer instead of the "factory defaults" loaded with the firmware build in flash memory. On command, however, again from the LCD or here on receipt of the M502 gcode instruction, the RAM workspace will be loaded with the factory default settings and parameters. As described earlier, these values will then be used until changed from the LCD or gcode, or the printer is reset/restarted. The printer will again fetch the settings and parameters from EEPROM during the reset/restart.

    To "erase" the effect of the EEPROM settings, you can disable EEPROM. Marlin will no longer look to EEPROM for settings when it is disabled. The other option available is to send the printer an M502 gcode command followed by an M500 command. The M502 copies the factory default settings from flash to RAM, and M500 in turn copies them from RAM to EEPROM. Similar manipulation is also possible through the LCD.

  2. #62
    Engineer-in-Training
    Join Date
    Feb 2015
    Posts
    371
    Thanks for the info. I will digest that.

    In the meantime, I just ran a print and figured I would do some measurements. From pronterface, I homed the machine, ran a m18 code and checked that the bed was level and ran a print. I paused the print as the skirt was printing and measured the height of the nozzle. It is at .53mm. Here is the Gcode.

    ; generated by Slic3r 0.9.9 on 2015-02-08 at 11:44:36


    ; layer_height = 0.2
    ; perimeters = 3
    ; top_solid_layers = 3
    ; bottom_solid_layers = 3
    ; fill_density = 0.4
    ; perimeter_speed = 75
    ; infill_speed = 100
    ; travel_speed = 100
    ; nozzle_diameter = 0.4
    ; filament_diameter = 3
    ; extrusion_multiplier = .93
    ; perimeters extrusion width = 0.67mm
    ; infill extrusion width = 0.67mm
    ; solid infill extrusion width = 0.67mm
    ; top infill extrusion width = 0.67mm
    ; support material extrusion width = 0.67mm
    ; first layer extrusion width = 0.70mm


    G21 ; set units to millimeters
    M190 S110 ; wait for bed temperature to be reached
    M104 S250 ; set temperature
    ; 12" i3v 3mm ABS for .40 Hexagon 4-5-14
    G1 Z5 F50 ; lift nozzle
    G28 ; home all axis


    M109 S250 ; wait for temperature to be reached
    G90 ; use absolute coordinates
    G92 E0
    M82 ; use absolute distances for extrusion
    M106 S89
    G1 F1800.000 E-1.00000
    G92 E0
    G1 Z0.350 F6000.000
    G1 X134.600 Y134.330
    G1 F1800.000 E1.00000
    G1 X135.140 Y133.830 F1350.000 E1.02154
    G1 X136.010 Y133.140 E1.05404
    G1 X136.940 Y132.520 E1.08676
    G1 X137.920 Y131.990 E1.11937
    G1 X138.590 Y131.680 E1.14097
    G1 X139.280 Y131.410 E1.16266
    G1 X139.640 Y131.290 E1.17377
    G1 X139.990 Y131.180 E1.18451
    G1 X140.710 Y131.000 E1.20623
    G1 X141.430 Y130.850 E1.22776
    G1 X142.170 Y130.740 E1.24965
    G1 X143.280 Y130.660 E1.28223
    G1 X156.710 Y130.660 E1.67532
    G1 X157.820 Y130.740 E1.70789
    G1 X158.920 Y130.920 E1.74052
    G1 X160.000 Y131.180 E1.77303
    G1 X160.710 Y131.410 E1.79487
    G1 X161.400 Y131.680 E1.81656
    G1 X162.070 Y131.990 E1.83817
    G1 X163.050 Y132.520 E1.87078

  3. #63
    Engineer-in-Training
    Join Date
    Feb 2015
    Posts
    371
    Okay, I got that, Maybe my brain isn't as mushy as I thought! So if I want to return the EEPROM to a "firmware" state I need to send a M502 gcode command followed by an M500 command? This will write what ever was in the firmware to the EEPROM.



  4. #64
    Staff Engineer printbus's Avatar
    Join Date
    May 2014
    Location
    Highlands Ranch, Colorado USA
    Posts
    1,437
    Add printbus on Thingiverse
    Quote Originally Posted by tsteever View Post
    Okay, I got that, Maybe my brain isn't as mushy as I thought! So if I want to return the EEPROM to a "firmware" state I need to send a M502 gcode command followed by an M500 command? This will write what ever was in the firmware to the EEPROM.
    Yep. Yep again since the server requires everything to be at least 10 characters long.

  5. #65
    Engineer-in-Training
    Join Date
    Feb 2015
    Posts
    371
    Do you see anything funky in the code that would attribute my printing to be too high from the bed? As I stated, I homed and then moved the nozzle by hand to make sure that everything was a paper height from the bed. This was at temp too. When I ran the code it was too high.

    Secondly, I got the following error when I ran the print...

    Print started at: 12:10:52
    [ERROR] Failed to set power settings:
    Traceback (most recent call last):
    File "/Users/craigvanvliet/Desktop/PyInstaller-2.1/pronterface/build/pronterface/out00-PYZ.pyz/printrun.pronsole", line 1173, in startcb
    File "/Users/craigvanvliet/Desktop/PyInstaller-2.1/pronterface/build/pronterface/out00-PYZ.pyz/printrun.power", line 130, in powerset_print_start
    File "/Users/craigvanvliet/Desktop/PyInstaller-2.1/pronterface/build/pronterface/out00-PYZ.pyz/printrun.power.osx", line 72, in inhibit_sleep_osx
    File "/Users/craigvanvliet/Desktop/PyInstaller-2.1/pronterface/build/pronterface/out00-PYZ.pyz/printrun.power.osx", line 49, in AssertionCreateWithName
    File "/Users/craigvanvliet/Desktop/PyInstaller-2.1/pronterface/build/pronterface/out00-PYZ.pyz/printrun.power.osx", line 40, in StringToCFString
    AttributeError: 'module' object has no attribute 'kCFStringEncodingASCII'


    [ERROR] Failed to set power settings:
    Traceback (most recent call last):
    File "/Users/craigvanvliet/Desktop/PyInstaller-2.1/pronterface/build/pronterface/out00-PYZ.pyz/printrun.pronsole", line 1180, in endcb
    File "/Users/craigvanvliet/Desktop/PyInstaller-2.1/pronterface/build/pronterface/out00-PYZ.pyz/printrun.power", line 134, in powerset_print_stop
    File "/Users/craigvanvliet/Desktop/PyInstaller-2.1/pronterface/build/pronterface/out00-PYZ.pyz/printrun.power.osx", line 79, in deinhibit_sleep_osx
    AttributeError: 'function' object has no attribute 'assertion_id'

  6. #66
    Staff Engineer printbus's Avatar
    Join Date
    May 2014
    Location
    Highlands Ranch, Colorado USA
    Posts
    1,437
    Add printbus on Thingiverse
    Quote Originally Posted by tsteever View Post
    Do you see anything funky in the code that would attribute my printing to be too high from the bed? As I stated, I homed and then moved the nozzle by hand to make sure that everything was a paper height from the bed. This was at temp too. When I ran the code it was too high.
    No problems noted. The first Z movement in the gcode starts you out at 0.35mm, which is what you have the slicer set for. How much different than that does the print appear to start at?

    Someone else would have to address the pronterface/python issues.

  7. #67
    Engineer-in-Training
    Join Date
    Feb 2015
    Posts
    371
    My print started at .53mm.

  8. #68
    Staff Engineer printbus's Avatar
    Join Date
    May 2014
    Location
    Highlands Ranch, Colorado USA
    Posts
    1,437
    Add printbus on Thingiverse
    I think I'm going to bow out and see if someone else can help at this point. I haven't had issues with this. The 0.53mm doesn't seem that far off, since you've got the endstop set for paper or about 0.1mm from the bed, and the slicer is configured for the first layer to print 0.35mm above that, or 0.45mm.

    I know there's been discussion on whether or not the slicer first layer height should be set to equal the paper thickness, and some probably do. I never did. I never had a problem with how the first layer turned out in prints sliced in Slic3r or Cura with that 0.35mm layer height setting. I was either lucky or had fudged my way around any problem by adjusting the first layer extrusion width. I don't remember.

  9. #69
    Engineer-in-Training
    Join Date
    Feb 2015
    Posts
    371
    So, I played with Cura a bit as I just wanna try out what options there are. I seemed almost too easy to get it setup. I thought there would be more to it. I generated some gcode and it looks similar to the slicer but not the same, obviously. I am wondering, could running this code be potentially harmful? That is to say, would it ask the printed to move in opposite directions?

  10. #70
    no, it will print just fine

Page 7 of 17 FirstFirst ... 56789 ... LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •