Magnetic Filament Monitor Odd Sensitivity
Just built a new printer and I added a V2 (pcb 1.7b) Duet3d MFM and used the same config line I've used on several other printers which is :
M591 D0 P3 C"121.io1.in" S0 R70:130 L26.00 E3.0
but this is the crazy sensitivity reading I'm getting... (Yes I know its disabled just running it disables to see if I needed tuning...)
M591 D0 Duet3D rotating magnet filament monitor v4 on pin 121.io1.in, disabled, sensitivity 26.00mm/rev, allow 70% to 130%, check printing moves every 3.0mm, version 4, mag 130 agc 61, measured sensitivity 256041.98mm/rev, min -55609% max 56228% over 4000.7mm
256k rev/mm? Wow Any idea's what going on?
version infor I'm sure you all will ask me:
Duet3d Mini5 with 1LC v1.2 toolboard RRF 3.4
m122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.4.0 (2022-03-15 18:59:15) running on Duet 3 Mini5plus Ethernet (SBC mode) Board ID: NKAPA-J096U-D65J0-40KM4-M213Z-732L8 Used output buffers: 10 of 40 (22 max) === RTOS === Static ram: 103684 Dynamic ram: 98244 of which 0 recycled Never used RAM 36160, free system stack 112 words Tasks: SBC(ready,3.8%,448) HEAT(notifyWait,0.0%,338) Move(notifyWait,2.2%,263) CanReceiv(notifyWait,0.0%,772) CanSender(notifyWait,0.1%,346) CanClock(delaying,0.0%,337) TMC(notifyWait,1.3%,71) MAIN(running,91.6%,510) IDLE(ready,0.1%,29) AIN(delaying,0.9%,264), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:56:33 ago, cause: software Last software reset at 2022-03-29 03:29, reason: User, GCodes spinning, available RAM 36640, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU revision 3, ADC conversions started 3394762, completed 3394761, timed out 0, errs 0 Step timer max interval 1479 MCU temperature: min 33.6, current 35.8, max 36.1 Supply voltage: min 24.1, current 24.1, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/106/106, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, read errors 0, write errors 1, ifcnt 123, reads 46316, writes 25, timeouts 0, DMA errors 0, CC errors 0 Driver 1: standstill, SG min 0, read errors 0, write errors 1, ifcnt 125, reads 46315, writes 26, timeouts 0, DMA errors 0, CC errors 0 Driver 2: standstill, SG min 0, read errors 0, write errors 1, ifcnt 126, reads 46314, writes 26, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 0, read errors 0, write errors 1, ifcnt 126, reads 46314, writes 26, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 1, ifcnt 65, reads 46331, writes 10, timeouts 0, DMA errors 0, CC errors 0 Driver 5: ok, SG min 0, read errors 0, write errors 1, ifcnt 101, reads 46323, writes 18, timeouts 0, DMA errors 0, CC errors 0 Driver 6: ok, SG min 0, read errors 0, write errors 1, ifcnt 100, reads 46322, writes 18, timeouts 0, DMA errors 0, CC errors 0 Date/time: 2022-03-29 04:26:10 Cache data hit count 4294967295 Slowest loop: 371.06ms; fastest: 0.07ms === Storage === Free file entries: 10 SD card 0 not detected, interface speed: 0.0MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 83, segments created 32, maxWait 73302ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 75272, completed 75232, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 3], CDDA state 3 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.4 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 1 Movement lock held by null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File* is doing "G1 X129.897995 Y139.373001 E0.013520" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger* is idle in state(s) 0 Queue* is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty === Filament sensors === Extruder 0: no data received === CAN === Messages queued 101179, received 70154, lost 0, boc 0 Longest wait 4ms for reply type 6048, peak Tx sync delay 276, free buffers 18 (min 9), ts 16970/16969/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === Transfer state: 4, failed transfers: 0, checksum errors: 0 RX/TX seq numbers: 3315/3315 SPI underruns 0, overruns 0 State: 5, disconnects: 0, timeouts: 0, IAP RAM available 0x0f6b8 Buffer RX/TX: 1776/3240-0, open files: 0 === Duet Control Server === Duet Control Server v3.4.0 File /opt/dsf/sd/gcodes/KVP corner_panel_clip_4mm_x8-21.154g-2h8m.gcode is selected, processing File: Buffered code: G1 X129.1 Y139.479 E.01827 Buffered code: G1 X128.43 Y139.291 E.01754 Buffered code: G1 X128.107 Y139.044 E.01025 Buffered code: G1 X110.956 Y121.893 E.61188 Buffered code: G1 X110.709 Y121.57 E.01025 Buffered code: G1 X110.538 Y120.958 E.01603 Buffered code: M204 S3000 Buffered code: G1 X110.872 Y120.9 F18000 Buffered code: M204 S2000 Buffered code: G1 F4800 Buffered code: G1 X111.022 Y120.364 E.01405 Buffered code: G1 X111.304 Y120.027 E.01109 Buffered code: G1 X111.651 Y119.803 E.01039 Buffered code: G1 X111.794 Y119.755 E.00382 Buffered code: G1 X110.683 Y119.765 E.02804 Buffered code: G1 X110.394 Y119.733 E.00732 Buffered code: G1 X110.079 Y119.637 E.00831 Buffered code: G1 X109.77 Y119.454 E.00905 Buffered code: G1 X109.53 Y119.217 E.0085 Buffered code: G1 X109.338 Y118.848 E.0105 Buffered code: G1 X109.296 Y118.563 E.00728 Buffered code: G1 X109.305 Y111.267 E.18404 Buffered code: G1 X109.376 Y110.898 E.00948 Buffered code: G1 X109.549 Y110.467 E.01172 Buffered code: G1 X109.744 Y110.163 E.00909 Buffered code: G1 X109.985 Y109.894 E.00912 Buffered code: G1 X110.355 Y109.612 E.01172 Buffered code: G1 X110.692 Y109.445 E.00949 Buffered code: G1 X111.14 Y109.322 E.01172 Buffered code: G1 X111.465 Y109.296 E.00822 ==> 1392 bytes Pending code: G1 X138.535 Y109.296 E.68285 Pending code: G1 X138.86 Y109.322 E.00822 Code buffer space: 1968 Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 1 Full transfers per second: 39.62, max time between full transfers: 268.2ms, max pin wait times: 85.0ms/13.6ms Codes per second: 23.38 Maximum length of RX/TX data transfers: 3708/1152 3/28/2022, 9:18:33 PM
M122 B121 Diagnostics for board 121: Duet TOOL1LC rev 1.1 or later firmware version 3.4.0 (2022-03-15 09:00:04) Bootloader ID: SAMC21 bootloader version 2.3 (2021-01-26b1) All averaging filters OK Never used RAM 2204, free system stack 17 words Tasks: Move(notifyWait,0.8%,91) HEAT(notifyWait,0.3%,95) CanAsync(notifyWait,0.0%,57) CanRecv(notifyWait,0.1%,74) CanClock(notifyWait,0.0%,65) ACCEL(notifyWait,0.0%,61) TMC(notifyWait,3.0%,57) MAIN(running,90.8%,349) IDLE(ready,0.0%,26) AIN(delaying,4.9%,142), total 100.0% Last reset 00:57:20 ago, cause: software Last software reset time unknown, reason: AssertionFailed, available RAM 3392, slot 2 Software reset code 0x0120 ICSR 0x00000000 SP 0x2000415c Task Freestk 129 bad marker Stack: 00000544 00022ffc 00019b65 20003134 00016cff 20003134 000163d1 20000ed0 00000000 00000001 00008275 200071c8 200071c8 200071e0 00000000 20000f50 00011647 000223b8 00022474 00021ac8 00019b05 200071c8 200071c8 20000f50 000083ed 200071d8 000009c7 Driver 0: pos 1743570, 400.0 steps/mm,ok, SG min 0, read errors 0, write errors 1, ifcnt 90, reads 5948, writes 14, timeouts 3, DMA errors 0, CC errors 0, failedOp 0x6a, steps req 1918170 done 1917889 Moves scheduled 72097, completed 72095, in progress 1, hiccups 0, step errors 0, maxPrep 547, maxOverdue 4, maxInc 2, mcErrs 0, gcmErrs 0 Peak sync jitter -4/10, peak Rx sync delay 225, resyncs 0/0, next step interrupt due in 967 ticks, enabled VIN voltage: min 23.9, current 24.0, max 24.2 MCU temperature: min 42.4C, current 52.4C, max 52.5C Last sensors broadcast 0x00000002 found 1 87 ticks ago, 0 ordering errs, loop time 0 CAN messages queued 71131, send timeouts 0, received 103345, lost 0, free buffers 37, min 36, error reg 110000 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 469, adv 34637/74650 Accelerometer: LIS3DH, status: 00 I2C bus errors 0, naks 3, other errors 0 === Filament sensors === Interrupt 4 to 28us, poll 8 to 3428us Driver 0: pos 15.82, errs: frame 0 parity 0 ovrun 0 pol 0 ovdue 0
Nurgelrot last edited by Nurgelrot
I put on a different MFM this one a V1 also with a 1.7b PCB and it working as expected.
Duet3D rotating magnet filament monitor v3 on pin 121.io1.in, disabled, sensitivity 26.00mm/rev, allow 70% to 130%, check printing moves every 3.0mm, version 3, mag 129 agc 82, measured sensitivity 25.76mm/rev, min 98% max 103% over 30.5mm
What are the chances the PCB is bad? I guess I can swap them out too... I can try redoing the case as well but the values for mag and agc are within spec. [EDIT] No they aren't mag is a little too high in both cases... okay see what I can do to fix that.
Okay using a different 1.7b pcb and v1 mechanical parts I was able to show that its the mechanical side of the sensor that's causing the error. Probably the housing... so Not much anyone can do here to help I'll just have to make a better housing. Thanks for letting me ramble
@nurgelrot I've been keeping an eye on the thread, but hadn't had anything much to add. I take it you used the housing designed for each type of rotating assembly when swapping? If so, just out of interest, how did you print and what layer height? You might be interested in the thread over here, it discusses some of the issues you can run into when FDM printing the case. I've never had crazy figures like that out of the MFM, I have to admit!
Nurgelrot last edited by Nurgelrot
@lo-fi I typcally do the housings on my resin printer. But the V2 housing I printed the 2.5mm holes even on the smaller hole version where too large to give the threads any bite. So I did second one on an Voron V0 in ASA with .12 layer height and it looked okay but clearly has issues. I'm going to shrink the holes slightly in the model and reprint in resin when I get time. Or possibly test your redesign Id have to change how I mount it but that's no big deal.
Thanks for the info, that's interesting. You may find that the 1.2 layer height had an impact on the housing. One of the critical distances is between the bearing flanges, with the next being the PCB standoffs. For V1 and V2, the flange to flange distance is 6 and 5mm respectively. 1.2 divides in 6 neatly, so you'll get 5 full layers on the V1. 1.2 into 5 is rather more awkward at 4.16 recurring, so depending on the slicer and printer, you may actually get 4.8mm which is definitely too small.
I can't remember the stock housing PCB standoff heights - I have 5.9/6.9mm from the top bearing flange (respectively), so 1.2 may be an awkward division there too. The official design is suggested 0.2mm layer height, though I found that a little course in my experimentation with my own design and opted for designing in 0.1mm increments.
Anyway, after all that waffling on : Give it a go at 0.1mm layer height, you may find it all fits a little better I'm getting closer to releasing my updated design for anyone that wants to try too.
I'm sure I remember some documentation saying that it's possible for the magnet to be too close to the chip, though in typical fashion I can't find it now!
@lo-fi Resin printed a new housing and I thought it had fixed it but the sensitivity mm/rev started out at a great 27mm but just kept creeping up as the print went on making 5-10mm jumps every 20-30 second until it was well over 150 and climbing. So something is still off. Not very pleased with the V2 magnet at this point. I have 4 of the V1 and all of them work great. Lucky I have a spare V1 To use for now,
When you get the kinks ironed out send me a link to your housing and I'll print it out either 1mm layer or in resin and give it a go.
@nurgelrot That's a puzzle for sure... I've got the V2 magnet to try myself, so I'll keep you posted on how I get on and send some links your way. Maybe I can replicate it!
I'd be interested to see some M591 D0 outputs throughout that print if you still have them handy.
I'd really like to know why the change V1 to V2 rotating assembly. I'd assumed the larger magnet means the distance between it and the chip isn't quite so critical, but that's pure conjecture on my part.
@lo-fi ha .12 not 1.2 I cant type
Okay Solved. Housing had the magnet too close. I shimmed it with 5 layers of 20# paper. that got the agc up to 112 and the mag down to 128 and its giving reliable readings. Going to modify SLT that I already fixed the screw hole size on to make ~.5mm more space for the magnet when using resin
@nurgelrot lol, I should have realised!
That's a great result and valuable info. Bet the previous one got worse as the housing relaxed a little and the mag got closer than it should be.
@lo-fi For the record if anyone is reading this. .5 was too much but I printed different sizes in a batch in the resin printer. The one with .3 added to the inner surface of the lid of the MMF v2 housing got me to the magic agc 110 mag 128 that seems to be working... All magnets vary of course so maybe mine was just a little bit strong.
But if you have a sensor that's reading way high mm/rev sensitivity back your magnet off a tiny amount. the tolerances in the thing are super tight.