Anet A8 Stepper motor question



  • Hey guys,

    I've graduated from my Anet A8 and I've decided to purchase the Duet Wifi to satisfy all my future 3d printing needs, regardless of the machine I install it on.

    So until I can build my next printer, I'm going to install the Duet on my existing Anet A8 using 12v input. I've read through much of the articles on this site and I believe I have a good grasp on everything except the stepper motor current.

    According to my research the stock Anet A8 steppers have the below specs:
    Model: 42shdc3025-24b

    • Step angle: 1.8 degree
    • Number of phases: 2
    • Voltage: 3.96V
    • Current: 0.9A
    • Resistance: 4.4 ohm
    • Holding torque: 0.34 Nm
    • Operating ambient temperature: -20 Deg.C - 50 Deg.C
    • Operating environment humidity: 90 percent
    • Axis diameter: 5mm

    Looking through the Duet documentation, i see that the following guidance:

    Unless you will be using external stepper motor drivers, choose motors with rated current of at least 1.2A, and at most 2.0A for the Duet 0.6 and Duet 0.8.5, or 3A for the Duet WiFi or Duet Ethernet.

    Above guidance found here under General recommendations:
    https://duet3d.dozuki.com/Wiki/Choosing_and_connecting_stepper_motors

    My question to you guys, is, will I be able to get the Anet running with the stock motors (though only 0.9a rated) with the Duet?

    Do I risk harming the Duet?

    I was planning on setting the current to 800mah, does ohms law apply here, meaning if the stock Anet outputs 4v at 0.9A, do I need to lower current if the Duet outputs 12v to the stepper?



  • @tsitalon1 Let me tell you from my experience with converting Anet A8 to use the Duet: it just works. 🙂

    To add to your list of specs to the motors: no one really knows the inductance of these motors but it was guessed to be about 10 mH. You would need info sometimes.

    I run my motors at 500mA for X, Y and Z and 700mA for E. I set maximum speed to 110mm/s (6600 mm/min) for X and Y and took all other values regarding movements from Marlin config (if you are interested I could post my full config.g here.

    Also you don't have to care about anything else than amperage. All other values will be adjusted by the driver or the laws of physics automatically. 😉

    One more advice: there is a small potentiometer in the PSU near the mains input. I've dialed mine to 13.6V which helps in a little faster heating as well as allowing the motors to run faster without losing steps.

    EDIT: It is recommended to wire high inductance, high voltage Z motors (such as these used with Anet A8) in parallel instead of using the two ports on the Duet that are internally wired in serial. But as I said it works also that way without any problems. Only if you want to use stallGuard for Z you might need to rewire them. I do not use stallGuard for Z so I have no experience in this regard.



  • Awesome, thank you for your help!

    I'm using an ATX PSU right now, so I don't think I can turn up the voltage 🙂

    Once I get the Duet installed and configured i'll see how it goes, if I run into any issues, i may ask you for that config file 🙂

    Thanks again!



  • @tsitalon1 You're welcome.

    And ask whatever you want to know. If I cannot answer it there are plenty of very knowledgeable people around here that probably will have an answer for you. 🙂

    If you have a quite steady 12V supply you might need to reduce maximum speed for X and Y to 100mm/s (6000mm/s). The motors of the Anet A8 are not really good for high speeds. But try it first and see how far you get. I also printed with 120mm/s (or rather travel moves) while "only" at 12.6V and never had a problem that I could really connect to being too fast.



  • @wilriker I am a beginner and I am starting to upgrade my Anet A8 right now, I would like to ask you if you could share your config file.

    Thanks.



  • @black-canary Of course, here you go:

    ; Configuration file for Duet WiFi (firmware version 1.20 or newer)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat Apr 28 2018 20:07:26 GMT+0200 (CEST)
    
    ; General preferences
    G90                                                ; Send absolute coordinates...
    M83                                                ; ...but relative extruder moves
    M555 P2                                            ; Set firmware compatibility to look like Marlin output
    
    ; Network
    M550 PDuet                                         ; Set machine name
    M552 S1                                            ; Enable network
    ;*** Access point is configured manually via M587
    M586 P0 S1                                         ; Enable HTTP
    M586 P1 S0                                         ; Disable FTP
    M586 P2 S0                                         ; Disable Telnet
    
    ; Drives
    M569 P0 S1 C65974                                  ; Drive X goes forwards and gets TOFF=6
    M569 P1 S1 C65974                                  ; Drive Y goes forwards and gets TOFF=6
    M569 P2 S0 C65971                                  ; Drive Z goes backwards and gets TOFF=3
    M569 P3 S1 C65972                                  ; Drive E0 goes forwards and gets TOFF=4 (default)
    M92 X100 Y100 Z400 E96.939                         ; Set steps per mm (at default 16x microstepping)
    M350 X16 Y16 Z16 E16 I1                            ; Configure microstepping with interpolation
    M566 X600 Y600 Z24 E300                            ; Set maximum instantaneous speed changes (i.e. jerk) (mm/min)
    M203 X6600 Y6600 Z720 E3000                      ; Set maximum speeds (mm/min)
    M201 X2000 Y2000 Z100 E10000                       ; Set accelerations (mm/s^2)
    M204 P400 T1000                                    ; Lower accelerations when printing though
    M906 X500 Y500 Z500 E700 I30                       ; Set motor currents (mA) and motor idle factor in per cent (increments of 100mA, rounded down otherwise)
    M84 S15                                            ; Set idle timeout
    ;M915 X S10 R1                                      ; Enable logging of stallGuard for X axes
    ;M915 Y S15 R1                                      ; Enable logging of stallGuard for Y axes
    ;M915 Z S1 R1                                       ; Enable logging of stallGuard for Z axes
    ;M915 P3 S1 R1                                      ; Enable logging of stallGuard for E axes
    
    ; Axis Limits
    M208 X-32.5 Y-1.5 Z0 S1                            ; Set axis minima
    M208 X220 Y216 Z220 S0                             ; Set axis maxima
    
    ; Endstops
    M574 X1 Y1 Z1 S0                                   ; Set active low endstop at low end on X, Y and Z
    
    ; Z-Probe
    M558 P0 H2 F120 T6000                              ; Disable Z probe but set dive height, probe speed and travel speed
    M557 X5:215 Y20:195 S42:35                         ; Define mesh grid
    
    ; Heaters
    M305 P0 T100000 B4725 C7.060000e-8 R4700           ; Set thermistor + ADC parameters for bed heater
    M305 P1 T100000 B4725 C7.060000e-8 R4700           ; Set thermistor + ADC parameters for hotent MK8
    M143 H0 S120                                       ; Set temperature limit for bed heater to 120C
    M143 H1 S275                                       ; Set temperature limit for hotend to 275C
    M307 H0 A177.2 C871.3 D2.8 S1.00 V13.4 B0          ; Use PID on bed heater - tuned@60°C
    M307 H1 A744.4 C223.7 D6.5 S1.00 V13.5 B0          ; Use PID on hotent - tuned@220°C
    M305 P101 S"TMC"                                   ; Virtual heater for TMC driver over-temperature state
    
    ; CPU Temperature calibration
    M912 P0 S-4.25
    
    ; Fans
    M106 P0 S0 I0 F100 H-1                             ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F500 H1 T45                          ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P2 S0.75 I0 F500 H0 T25                       ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on
    
    ; Tools
    M563 P0 S"Hotend" D0 H1                            ; Define tool 0
    G10 P0 X0 Y0 Z0                                    ; Set tool 0 axis offsets
    G10 P0 R0 S0                                       ; Set initial tool 0 active and standby temperatures to 0°C
    
    ; Automatic power saving
    M911 S12 R13 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss
    
    ; Custom settings
    ;M671 X3:217:217 Y108:3:213 P0.5                    ; Adjusting screws for bed, thread pitch 0.5mm
    M404 N1.75 D0.4	                                   ; Filament width and nozzle diameter
    M376 H10                                           ; Set bed compensation to taper off over 10mm
    M207 S3.5 F1920 Z0.0                               ; Firmware retract settings
    
    ; Miscellaneous
    T0                                                 ; Select first tool
    

    So, you might need to adjust some of the value to your specific machine:

    • Axis limits (they might differ a little)
    • M307 commands are specific to my exact instances of heaters/thermistors so you should redo PID autotuning
    • Note that my system now runs at 13.6V (turned on the potentionmeter of the stock Anet PSU to get to this value - it would even go up to 15V but that would fry my fans) - that also includes the thresholds of M911 power-failure-command
    • I have commented out some of the stuff that is specific on my machine like adjustment screws (I use 3-point levelling) or stallGuard

    If you have any question/issues just feel free to ask.



  • There is also data from this page: https://3dprint.wiki/reprap/anet/a8/steppermotor
    The SL42STH40-1684A motor specs are:

    Step Angle: 1.8°
    Step Angle Accuracy: ±5% (full step, no load)
    Voltage: 2.8V
    Current per phase: 1.68A
    Resistance per phase: 1.65Ω
    Resistance accuracy: ±10%
    Inductance per phase: 3.2mH
    Inductance accuracy: ±20%
    Holding torque: 3.6 Kg·cm (0.4 N·m)
    Moment of inertia: 54 g/cm^2
    Weight: 0.28 kg
    Orientation torque: 150 g/cm
    Length: 40 mm
    Temperature rise: 80°C max (rated current, 2 phases on)
    Ambient temperature: -20°C ~ +50°C
    Insulation resistance: 100MΩ min, 500VDC
    Shaft radial play: 0.02 mm max (450g load)
    Shaft axial play: 0.08 mm max (450g load)
    Max. radial force: 28N (20mm from the flange)
    Max. axial force: 10N
    

    But I am not sure these are correct, and in the end there is no guarantee that the drives you have on your Anet are really these.



  • @obeliks This info is outdated. Anet used to use 1.7A steppers but switched to the 0.9A steppers "because they not get so hot" - which probably means they just get them cheaper. 😬



  • @wilriker Thanks for the config file, unfortunately only had time today to finish the upgrade of the Duet3D in the anet A8. I already tuned the heaters but I am getting an error saying that I have no home files when I try to home the axis, do you know why is this happening?



  • @black-canary RepRapFirmware works a little different than most other firmwares. Also for homing. It uses 4 different files to home depending on what you want to do. They belong into the /sys folder on the SD card (also accessible via Settings -> System Editor in DWC). They should have been part of the configuration that you get from https://configurator.reprapfirmware.org. Anyway I'll include mine below (filename is always on the first line):

    ; homex.g
    ; called to home the X axis
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat Apr 28 2018 20:07:26 GMT+0200 (CEST)
    G91               ; relative positioning
    G1 Z2 F3000 S2    ; lift Z relative to current position
    G1 S1 X-260 F3600 ; move quickly to X axis endstop and stop there (first pass)
    G1 X5 F3000       ; go back a few mm
    G1 S1 X-260 F360  ; move slowly to X axis endstop once more (second pass)
    G1 Z-2 F3000 S2   ; lower Z again
    G90               ; absolute positioning
    
    ; homey.g
    ; called to home the Y axis
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat Apr 28 2018 20:07:26 GMT+0200 (CEST)
    G91               ; relative positioning
    G1 Z2 F3000 S2    ; lift Z relative to current position
    G1 S1 Y-250 F1800 ; move quickly to Y axis endstop and stop there (first pass)
    G1 Y5 F3000       ; go back a few mm
    G1 S1 Y-250 F360  ; move slowly to Y axis endstop once more (second pass)
    G1 Z-2 F3000 S2   ; lower Z again
    G90               ; absolute positioning
    
    ; homez.g
    ; called to home the Z axis
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat Apr 28 2018 20:07:26 GMT+0200 (CEST)
    G91               ; relative positioning
    G1 S1 Z-260 F900 ; move quickly to Z axis endstop and stop there (first pass)
    G1 Z2 F3000       ; go back a few mm
    G1 S1 Z-260 F180  ; move slowly to Z axis endstop once more (second pass)
    G90               ; absolute positioning
    
    ; homeall.g
    ; called to home all axes
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat Apr 28 2018 20:07:26 GMT+0200 (CEST)
    G91                     ; relative positioning
    G1 Z2 F3000 S2          ; lift Z relative to current position
    G1 S1 X-260 Y-250 F3600 ; move quickly to X and Y axis endstops and stop there (first pass)
    G1 X5 Y5 F3000          ; go back a few mm
    G1 S1 X-260 Y-250 F360  ; move slowly to X and Y axis endstops once more (second pass)
    G1 S1 Z-260 F900        ; move quickly to Z axis endstop and stop there (first pass)
    G1 Z2 F3000             ; go back a few mm
    G1 S1 Z-260 F180        ; move slowly to Z axis endstop once more (second pass)
    G90                     ; absolute positioning
    


  • @wilriker Ah, OK. Mine are probably the old ones. I tried to use 500mA, ad the printer was not moving. So that means they must be 1,68A version. And they get to ~50°C with 23°C ambient temperature.



  • @obeliks It is quite easy to tell: the new ones are marked as 42SHDC3025-24B on the back (probably easiest to spot on the extruder motor). The old one have either another or no model number on them.



  • Yup. Exactly.



  • @wilriker Thanks for posting your config.g ! Made setting up my A8 a lot faster 😉 Just one question: how did you come up with the M569 C values?

    I just tried to do some investigating in the trinamic driver docs, but without an electronics degree its quite cryptic to me 😕



  • @mortn said in Anet A8 Stepper motor question:

    @wilriker Thanks for posting your config.g ! Made setting up my A8 a lot faster 😉 Just one question: how did you come up with the M569 C values?

    I just tried to do some investigating in the trinamic driver docs, but without an electronics degree its quite cryptic to me 😕

    It all came together here https://forum.duet3d.com/topic/5392/does-m906-set-rms-or-peak-current/19

    Basically this is a bitmap of flags where the TOFF part has the highest influence on noise at standstill. At the end of the linked thread there is also a list of values for all 16 TOFF variants. Not sure if the link is also in that thread but I wrote a little tool to create these numbers:
    https://github.com/wilriker/chopconf-generator (under releases are pre-compiled versions)

    In one of the next RRF versions @dc42 will implement a dedicated parameter to set TOFF without having to use these cryptic bitmap-integer in decimal notation (hex notation does no longer work).

    P.S.: the value for TOFF is motor specific - and note that I did not write model but motor, i.e. even if you have the same model your motor is different and may need different TOFF value to be most silent. So please test various values.



  • @wilriker Cheers man. Like I told you I'm really beginer in this, I did not even created the files on the website you mentioned because I thought I just needed the config.g file, It's working now, I feel that I can make it work better because It doesn't look 100% good, but I will eventually get it to the point. Just another question by the way, Imagine that I want to now use the board in another printer I go to the website and just put the details of the printer, but I got a bit confused in the motors settings, how should I know what is the, max speed and the Steps per mm and every other information? in the data sheet of the motor? (if it has one how about if it doesn't?)



  • @black-canary said in Anet A8 Stepper motor question:

    [...] how should I know what is the, max speed and the Steps per mm and every other information? in the data sheet of the motor? (if it has one how about if it doesn't?)

    This is a tough one. If this is e.g. a totally new printer build from scratch you'd have to start at reasonable defaults and try from there.
    Here is how I did it: before switching my A8 to Duet I was using Marlin on the stock board. So I looked at Marlin's values for these settings and just took them exactly over to the configurator for RRF. Except that I forgot

    M204 P400 T1000                                    ; Lower accelerations when printing though
    

    which led to... say... a surprisingly rough first print. 😁 From there I adjusted the values partly by trial-and-error and partly by using the EMF calculator at https://reprapfirmware.org/. Take the value of "speed at which torque starts to drop (low slip angle)" as the new maximum speed.



  • @wilriker Thanks again, at this moment it's not to build one from scratch it's actually to upgrade one printer. So in this case this printer uses marlin, could I just literally drag and drop the config files? Or my only option is to copy the values to the https://configurator.reprapfirmware.org and then use those files? (Sorry if i'm bothering you but I really like 3D printing and my only regretting is knowing just a little)



  • @black-canary No worries, we all started some point in time. And this forum was also a great help to me in gaining knowledge (besides hours of videos at YouTube 😁).

    You cannot use the files used with Marlin. RRF would not understand them. It is actually your second idea how it is done: get the values from the appropriate Configuration.h or Configuration_adv.h in Marlin and enter them in RRF Configurator. This will then create all the necessary files in the appropriate format.

    The biggest difference of RRF compared to Marlin is that you will (probably) never compile RRF yourself. Everything in RRF is configured via GCode - and it can be done at literally any point in time. So if e.g. you decide in the middle of a print that your acceleration is to high you can just reduce it live with the appropriate GCode command (btw. something I already did more than once).



  • Good man @wilriker, Thanks a lot!


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.