Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login
    1. Home
    2. t0bias
    3. Posts
    • Profile
    • Following 0
    • Followers 0
    • Topics 14
    • Posts 39
    • Best 1
    • Controversial 0
    • Groups 0

    Posts made by t0bias

    • Y-Axis motors behave weird after some time of non-use

      Hi,

      I have not used my printer for some time (since we have had our first child) und now the Y-Axis behave very strangely; one of the two motors seems to have the belt quit violently slip one tooth every like 80mm or so of movement.
      It's twice the exact same stepper, same stepper motor driver moving of the same signal, same length of gt2-belt, same tensioner (I carefully counted revoloutions to make sure, they are equally tensioned).
      The Y-Axis with the whole printhead-assembly can move freely with almost no resistance at all when the motors are not engaged.
      To be frank, I have no clue how this is even possible, or where to look.
      I marked both gears with a Sharpie and compared the rotation of the two motors, and I think it's not the motors that are moving unequally.
      Any suggestions on how to narrow down the cause of this issue?

      posted in Duet Hardware and wiring
      t0biasundefined
      t0bias
    • delay between i2c messages

      Hi,

      I am looking for a way to insert a delay between two I2C messages from within a macro, G4 seems not to affect macros, like if I have this in a macro

      M260 A38 B1:0
      G4 100
      M260 A38 B1:1
      

      both i2c messages get send consecutively without the delay?
      Any ideas?

      posted in Duet Web Control
      t0biasundefined
      t0bias
    • RE: Additional outputs using a SX1509B Expander

      Strange, the SX1509B is in fact detected:

      FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 3.3beta1 ELECTRONICS: Duet WiFi 1.02 or later + SX1509B expander FIRMWARE_DATE: 2021-02-14 16:00:49
      

      however the pins don't get driven high (or low) using the M42 commands.
      I am confident the I²C-Wiring is correct, since I tried using a MCP23017 based relay board that responds to I²C-Commands just fine.

      Any suggestions or ideas are highly appreciated!

      posted in Accessories and Add-ons
      t0biasundefined
      t0bias
    • RE: Additional outputs using a SX1509B Expander

      I upgraded to 3.3beta1 today, but it still doesn't work unfortunately

      posted in Accessories and Add-ons
      t0biasundefined
      t0bias
    • RE: Additional outputs using a SX1509B Expander

      @dc42 thanks for your reply. I am using version 3.1.1, would a upgrade fix the issue?
      yes, 20 would be sufficient, maybe a bit more would be even better still? 😉

      posted in Accessories and Add-ons
      t0biasundefined
      t0bias
    • RE: Additional outputs using a SX1509B Expander

      I may be wrong, but I think pull-up resistors can only be enabled on ports of the Duet board itself.
      There are source-files specifically for this expansion chip (here), however I have no idea what the "DuetNG" denomination is about to be honest. Also, this branch seems to be of the 2.x firmware only?

      posted in Accessories and Add-ons
      t0biasundefined
      t0bias
    • RE: Additional outputs using a SX1509B Expander

      Not that I was aware of..
      However, I just checked the datasheet and according to it, all pins are configured as inputs upon power-on, so I think I would need to configure them as outputs. I don't really know what the duet firmware is doing internally here.. 😕

      posted in Accessories and Add-ons
      t0biasundefined
      t0bias
    • RE: Additional outputs using a SX1509B Expander

      Good point!
      Unfortunately no luck here either..

      I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
      
      posted in Accessories and Add-ons
      t0biasundefined
      t0bias
    • RE: Additional outputs using a SX1509B Expander

      @alankilian true, but as far as I understand (see this note on the very same page this no longer works for RepRap Firmware 3.x

      posted in Accessories and Add-ons
      t0biasundefined
      t0bias
    • Additional outputs using a SX1509B Expander

      Hi everyone,

      I have wired up a Sparkfun SX1509 (BOB-13601) to my Duet 2 WiFi.
      The SX1509 is set to use the 0x71 I²C address (I double-checked it is indeed using 0x71 using a Arduino).
      In my config.g I assign Ports to the Output pins like so:

      
      ; GPIO Ports									; Create GPIO Ports on SX1509B expander pins
      M950 P5 C"sx1509b.0"			; Assign P5 to pin 1
      M950 P6 C"sx1509b.1"			; Assign P6 to pin 2
      M950 P7 C"sx1509b.2"			; Assign P7 to pin 3
      M950 P8 C"sx1509b.3"			; Assign P8 to pin 4
      M950 P9 C"sx1509b.4"			; Assign P9 to pin 5
      M950 P10 C"sx1509b.5"			; Assign P10 to pin 6
      M950 P11 C"sx1509b.6"			; Assign P11 to pin 7
      M950 P12 C"sx1509b.7"			; Assign P12 to pin 8
      M950 P13 C"sx1509b.8"			; Assign P13 to pin 9
      M950 P14 C"sx1509b.9"			; Assign P14 to pin 10
      M950 P15 C"sx1509b.10"			; Assign P15 to pin 11
      M950 P16 C"sx1509b.11"			; Assign P16 to pin 12
      M950 P17 C"sx1509b.12"			; Assign P17 to pin 13
      M950 P18 C"sx1509b.13"			; Assign P18 to pin 14
      M950 P19 C"sx1509b.14"			; Assign P19 to pin 15
      M950 P20 C"sx1509b.15"			; Assign P20 to pin 16
      

      Now the first issue is the number of pins, according to the Gcode dictionary (link) the Duet only supports up to 10 pins.
      Is there another way, I could use those pins?

      Secondly, by using

      M42 P5 S1
      

      or

      M42 P5 S0
      

      I would expect the first pin on the SX1509B Port Expander to toggle the state of said pin, however nothing happens.
      Any ideas?
      Thanks!

      posted in Accessories and Add-ons
      t0biasundefined
      t0bias
    • RE: Macro: Execute python script on Rpi

      As far as I am aware, it can only do G-Code since it's basically just a list of G-Code commands executed in sequence.

      Two more ideas which, however, are probably still not exactly what you are looking for:

      1. Use a minimal Microcontroller powered off the Duet like an Arduino or even better a Bare Microcontroller with a WiFi Shield or something like that to monitor a Level-change on some pin and send out a notification to your Pi

      2. Use a Serial/UART to WiFi Bridge and read the serial data from the Duet using the Pi.

      Let me know if you find some other solution to your question, I'd be very interested in hearing about it..! 😉

      posted in 3D Printing General Chat
      t0biasundefined
      t0bias
    • RE: Monitor what True Bed Levelling is doing?

      @Veti thanks.

      I do understand the meaning of the error; but that's what I am saying - there is no way, there is over 2mm of height difference. And before I changed the probing positions, that error never showed up..

      posted in Tuning and tweaking
      t0biasundefined
      t0bias
    • RE: Monitor what True Bed Levelling is doing?

      I adjusted that very line in my config.g to this:

      M671 X-49:333 Y140:140 S0.75	; define the two Z leadscrew positions (right: -49/140, left:333/140) and max correction of 0.75
      

      But now even weirder I get the following error:

      G32
      Error: Some computed corrections exceed configured limit of 0.75mm: -2.095 -0.356
      

      And even I don't exactly know the height-difference; I can absolutely guarantee there is by no means a difference of two millimeters? And why are there two values anyway?
      😮

      posted in Tuning and tweaking
      t0biasundefined
      t0bias
    • RE: Monitor what True Bed Levelling is doing?

      @fcwilt good point! I used the probing-point coordinates for the leadscrews as well by mistake..

      posted in Tuning and tweaking
      t0biasundefined
      t0bias
    • RE: Monitor what True Bed Levelling is doing?

      I already tried that without success unfortunately!

      posted in Tuning and tweaking
      t0biasundefined
      t0bias
    • RE: Monitor what True Bed Levelling is doing?

      Seasons greetings, everyone!

      Ok, so my bed.g now looks like this:

      
      G28					; home all
      
      G1 Z5.25				; lower bed a bit
      G1 X162.85 Y174.15			; move to center point
      
      G30 S-2					; adjust Z
      
      G30 P0 X34.6 Y174.15 Z-99999		; probe near right Z motor leadscrew	
      G30 P1 X291.1 Y174.15 Z-99999 S2	; probe near left Z motor leadscrew	
      
      G1 X162.85 Y174.15 Z5.25		; move to center point (again)
      G30 S-2					; re-adjust Z
      
      G28 XY					; home X and Y
      

      However, now I always get the error

      G32
      Error: Probe points P0 to P1 must be in clockwise order starting near minimum X and Y
      
      posted in Tuning and tweaking
      t0biasundefined
      t0bias
    • RE: Monitor what True Bed Levelling is doing?

      Thanks for clearifying, Frederick and Phaedrux!

      I really think I got confused about the different techniques there.. 🙄

      Ok, so what I am trying do accomplish is to have my printer automatically level the bed as far as possible.

      My printer has two independent Z-motors to lift the bed, one on each side.
      Homing is done using two independent Z-limit-switches (mounted close to the corresponding motor leadscrew), and both switches still allow for about 1mm of moving further up (at least physically), once they trigger.

      In order to get the bed as level as possible, slightly offset to the nozzle a ir-probe is mounted and should be used for the fine-tuning, I guess.

      The complete config.g of mine:

      ; General preferences
      G90                                             ; send absolute coordinates...
      M83                                             ; ...but relative extruder moves
      M550 P"My 3D Printer"                           ; set printer name
      M669 K1 X1:0:0 Y0:1:0 Z0:0:1                    ; set CoreXY mode
      
      ; Network
      M552 S1                                         ; enable network
      M586 P0 S1                                      ; enable HTTP
      M586 P1 S0                                      ; disable FTP
      M586 P2 S0                                      ; disable Telnet
      
      ; Drives
      M569 P0 S1 R0                                   ; physical drive 0 is disabled (R0)
      M569 P1 S1 R0                                   ; physical drive 1 is disabled (R0)
      M569 P2 S1 R0                                   ; physical drive 2 is disabled (R0)
      M569 P3 S1                                      ; physical drive 3 goes forwards (E0)
      M569 P4 S0                                      ; physical drive 4 goes backwards (E1)
      M569 P5 S1 R1 T5.05:5.05:0.5:0.5                ; physical drive 5 goes forwards (E2 on Expansion Header, X)
      M569 P6 S1 R1 T5.05:5.05:0.5:0.5                ; physical drive 6 goes forwards (E3 on Expansion Header, Y-Left)
      M569 P7 S0 R1 T5.05:5.05:0.5:0.5                ; physical drive 7 goes backwards (E4 on Expansion Header, Y-Right)
      M569 P8 S1 R1 T5.05:5.05:0.5:0.5                ; physical drive 8 goes forwards (E5 on Expansion Header, Z-Left)
      M569 P9 S1 R1 T5.05:5.05:0.5:0.5                ; physical drive 9 goes forwards (E6 on Expansion Header, Z-Right)
      M584 X5 Y6:7 Z8:9 E3:4                          ; set drive mapping
      M350 X16 Y16 Z16 E16 I0                         ; configure microstepping with interpolation
      M92 X855.00 Y420.00 Z6316.00 E837.00            ; set steps per mm (X = 20T, Y = 60T, Z = M8:1.25)
      M566 X600.00 Y300.00 Z50.00 E820.00             ; set maximum instantaneous speed changes (mm/min)
      M203 X6000.00 Y6000.00 Z1500.00 E1200.00        ; set maximum speeds (mm/min)
      M201 X500.00 Y500.00 Z1000.00 E250.00           ; set accelerations (mm/s^2)
      M906 X800 Y800 Z800 E1000 I30                   ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                         ; Set idle timeout
      
      ; Axis Limits
      M208 X0 Y0 Z0 S1                                ; set axis minima
      M208 X284 Y333 Z370 S0                          ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"xstop"                             ; configure active-high endstop for low end on X via pin xstop
      M574 Y1 S1 P"ystop+exp.e2stop"                  ; configure active-high endstop for low end on Y via pin ystop / exp.e2stop
      M574 Z1 S1 P"zstop+exp.e3stop"                  ; configure active-high endstop for low end on Z via pin zstop / exp.e3stop
      
      ; Opposite Side Limit Switches
      M950 J1 C"^exp.e4stop"							; create input J1 on pin exp.e4stop
      M581 P1 S0 T3 C0								; configure active-high X/Y/Z-Axis Upper Limit switch (S0 = falling edge)
      
      ; Magnetic Filament Monitor
      M591 D0 P4 C"exp.e5stop" S1 A0					; configure Filament monitoring for E0 on pin exp.e5stop
      M591 D1 P4 C"exp.e6stop" S1 A0					; configure Filament monitoring for E1 on pin exp.e6stop
      
      
      ; Z-Probe
      M558 P1 C"zprobe.in+zprobe.mod" H5 F120 T3000   ; set Z probe type to modulated and the dive height + speeds
      G31 P400 X21.6 Y34.15 Z1.83                     ; set Z probe trigger value, offset and trigger height
      M557 X45:301 Y35:336 S30                        ; define mesh grid
      
      ; Dual Z-Motor bed levelling
      M671 X34.6:291.1 Y:174.15:174.15 S0.75			; define the two Z leadscrew test-positions (right: 13/140, left:269.5/140) and max correction of 0.75
      
      ; Heaters
      M308 S0 P"bedtemp" Y"thermistor" A"Heated-Bed" T100000 B4138  ; configure sensor 0 as thermistor on pin bedtemp
      M950 H0 C"bedheat" T0                           ; create bed heater output on bedheat and map it to sensor 0
      M307 H0 B0 S1.00                                ; disable bang-bang mode for the bed heater and set PWM limit
      M140 H0                                         ; map heated bed to heater 0
      M143 H0 S145                                    ; set temperature limit for heater 0 to 145C
      
      M308 S1 P"e0temp" Y"pt1000" A"E0-Temperature"	; configure sensor 1 as PT1000 on pin e0temp
      M950 H1 C"e0heat" T1							; create nozzle heater output on e0heat and map it to sensor 1
      M307 H1 B0 S1.00								; disable bang-bang mode for heater  and set PWM limit
      M143 H1 S360									; set temperature limit for  heater 1 to 360C
      M308 S2 P"e1temp" Y"pt1000" A"E1-Temperature"   ; configure sensor 2 as PT1000 on pin e1temp
      M950 H2 C"e1heat" T2                            ; create nozzle heater output on e1heat and map it to sensor 2
      M307 H2 B0 S1.00                                ; disable bang-bang mode for heater  and set PWM limit
      M143 H2 S360									; set temperature limit for  heater 2 to 360C
      
      ; Additional Temperature Sensors 
      M308 S3 P"exp.thermistor3" Y"thermistor" A"X-Motor" T100000 B4138			    ; configure sensor 3 as thermistor on pin exp.thermistor3
      M308 S4 P"exp.thermistor4" Y"thermistor" A"Y-Motor (Right)" T100000 B4138		; configure sensor 4 as thermistor on pin exp.thermistor4
      M308 S5 P"exp.thermistor5" Y"thermistor" A"Y-Motor (Left)" T100000 B4138		; configure sensor 5 as thermistor on pin exp.thermistor5
      M308 S6 P"exp.thermistor6" Y"thermistor" A"Z-Motor (Right)" T100000 B4138		; configure sensor 6 as thermistor on pin exp.thermistor6
      M308 S7 P"exp.thermistor7" Y"thermistor" A"Z-Motor (Left)" T100000 B4138		; configure sensor 7 as thermistor on pin exp.thermistor7
      
      ; Fans
      M950 F0 C"fan0" Q500                            ; create fan 0 on pin fan0 and set its frequency
      M106 P0 S1 H-1                                  ; set fan 0 value. Thermostatic control is turned off
      M950 F1 C"fan1" Q500                            ; create fan 1 on pin fan1 and set its frequency
      M106 P1 S1 H-1                                  ; set fan 1 value. Thermostatic control is turned off
      
      ; Tools
      M563 P0 S"Main Extruder" D0 H1 F0               ; 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 0C
      M563 P1 S"Support Extruder" D1 H2 F1            ; define tool 1
      G10 P1 X0 Y0 Z0                                 ; set tool 1 axis offsets
      G10 P1 R0 S0                                    ; set initial tool 1 active and standby temperatures to 0C
      M200 D1.75										; set filament diameter for all extruders to 1.75mm
      
      ; Miscellaneous
      M575 P1 S1 B57600                               ; enable support for PanelDue
      T0                                              ; select first tool
      
      ; Heater settings
      M307 H0 A143.3 C694.4 D1.3 B0					; PID settings for bed heate
      M307 H1 A390.2 C250.5 D11.7 B0					; settings for heater 1
      M307 H2 A663.8 C218.7 D4.7 B0					; settings for heater 2
      
      posted in Tuning and tweaking
      t0biasundefined
      t0bias
    • RE: Monitor what True Bed Levelling is doing?

      I see, thanks Frederick.

      I got confused by the deprecated-message when using the Mesh bed compensation, I guess.

      So the question would then rather be: "Is there a way to monitor mesh bed compensation?"

      posted in Tuning and tweaking
      t0biasundefined
      t0bias
    • RE: Macro: Execute python script on Rpi

      In case you cannot physically connect the Rpi to the Duet for whatever reason you could use something like this https://coptonix.com/products/lan-i2c-adapter-ms/
      and send a I2C-request from the Duet to the Pi via Ethernet.

      posted in 3D Printing General Chat
      t0biasundefined
      t0bias
    • RE: Macro: Execute python script on Rpi

      This is how I have done it:

      • Connect any unused Output of the Duet with one of the GPIOs of your Pi alongside with a GND connection (optionally use a opto-coupler for the GPIO connection for power isolation).
      • Use a Macro on the Duet using the M42 command to switch the pin on the Duet-side high/low.
      • Watch the GPIO-pin from within your python script for change.
      posted in 3D Printing General Chat
      t0biasundefined
      t0bias