Magnet Filament Monitor V4 - Calibration Issue
-
@dc42
InitToolheadDisplay:if !exists(global.dispLEDCount) global dispLEDCount = 64 global dispDefaultBrightness = 10 global lastDisplayContent = "" global toolheadDisplayState = "" if !exists(global.RGBWhite) && boards[0].firmwareVersion != "3.4.5" ;Digits global displayDigit = vector(10, vector(8, null)) ;0 set global.displayDigit[0][0] = {0,1,1,1,1,1,1,0} set global.displayDigit[0][1] = {1,1,1,1,1,1,1,1} set global.displayDigit[0][2] = {1,1,1,0,0,1,1,1} set global.displayDigit[0][3] = {1,1,1,0,0,1,1,1} set global.displayDigit[0][4] = {1,1,1,0,0,1,1,1} set global.displayDigit[0][5] = {1,1,1,0,0,1,1,1} set global.displayDigit[0][6] = {1,1,1,1,1,1,1,1} set global.displayDigit[0][7] = {0,1,1,1,1,1,1,0} ;1 set global.displayDigit[1][0] = {0,0,1,1,1,0,0,0} set global.displayDigit[1][1] = {0,0,1,1,1,1,0,0} set global.displayDigit[1][2] = {0,0,1,1,1,1,1,0} set global.displayDigit[1][3] = {0,0,1,1,1,0,0,0} set global.displayDigit[1][4] = {0,0,1,1,1,0,0,0} set global.displayDigit[1][5] = {0,0,1,1,1,0,0,0} set global.displayDigit[1][6] = {0,0,1,1,1,0,0,0} set global.displayDigit[1][7] = {0,0,1,1,1,0,0,0} ;2 set global.displayDigit[2][0] = {0,1,1,1,1,1,1,0} set global.displayDigit[2][1] = {1,1,1,1,1,1,1,1} set global.displayDigit[2][2] = {1,1,1,0,0,1,1,1} set global.displayDigit[2][3] = {0,1,1,1,0,0,0,0} set global.displayDigit[2][4] = {0,0,0,1,1,1,0,0} set global.displayDigit[2][5] = {0,0,0,0,0,1,1,1} set global.displayDigit[2][6] = {1,1,1,1,1,1,1,1} set global.displayDigit[2][7] = {1,1,1,1,1,1,1,1} ;3 set global.displayDigit[3][0] = {0,1,1,1,1,1,1,1} set global.displayDigit[3][1] = {1,1,1,1,1,1,1,1} set global.displayDigit[3][2] = {1,1,1,0,0,0,0,0} set global.displayDigit[3][3] = {0,1,1,1,1,1,1,1} set global.displayDigit[3][4] = {0,1,1,1,1,1,1,1} set global.displayDigit[3][5] = {1,1,1,0,0,0,0,0} set global.displayDigit[3][6] = {1,1,1,1,1,1,1,1} set global.displayDigit[3][7] = {0,1,1,1,1,1,1,1} var FLF1 = {{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} var FLF2 = {{0,0,0,1,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} var FLF3 = {{0,0,0,1,1,0,0,0},{0,0,0,1,0,0,0,0},{0,0,0,0,0,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} var FLF4 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,0,0,0,0},{0,1,0,0,0,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} var FLF5 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,0,0,1,0},{1,1,1,0,0,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} var FLF6 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,0,1,1,1},{0,1,0,0,0,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} var FLF7 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,0,0,1,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0}} var FLF8 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,0,0,0,0},{0,0,0,0,0,0,0,0}} var FLF9 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,0,0,0,0}} global filamentLoadFrames = {var.FLF1, var.FLF2, var.FLF3, var.FLF4, var.FLF5, var.FLF6, var.FLF7, var.FLF8, var.FLF9} global filamentLoadFrameIndex = 0 var HTF1 = {{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} var HTF2 = {{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0}} var HTF3 = {{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}} var HTF4 = {{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0}} var HTF5 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0}} var HTF6 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0}} var HTF7 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0}} var HTF8 = {{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} var HTF9 = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}} global heatingToolFrames = {var.HTF1, var.HTF2, var.HTF3, var.HTF4, var.HTF5, var.HTF6, var.HTF7, var.HTF8, var.HTF9} global heatingToolFrameIndex = 0 var HBF1 = {{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}} var HBF2 = {{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,1,1,1,1}} var HBF3 = {{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,1,1,1,1}} var HBF4 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}} var HBF5 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{1,1,1,1,1,1,1,1}} var HBF6 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{1,1,1,1,1,1,1,1}} var HBF7 = {{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}} var HBF8 = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}} var HBF9 = {{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}} global heatingBedFrames = {var.HBF1, var.HBF2, var.HBF3, var.HBF4, var.HBF5, var.HBF6, var.HBF7, var.HBF8, var.HBF9} global heatingBedFrameIndex = 0 global RGBOff = {0,0,0,0} global RGBRed = {255,0,0,25} global RGBGreen = {0,255,0,10} global RGBBlue = {0,0,255,45} global RGBYellow = {255,255,0,30} global RGBPink = {255,20,147,10} global RGBWhite = {255,255,255,10} global ToolColors = {global.RGBRed, global.RGBGreen, global.RGBYellow, global.RGBBlue}
Misc/Lights/On:
M42 P1 S230
config-tools.g:
M98 P"/sys/config-tools-size.g" M98 P"/sys/config-tools-material.g" ;Z-Offset: ;If nozzle is too close to bed _reduce_ offset (negative number becomes more negative) ;If nozzle is too far away, _increase_ offset (negative number becomes less negative) M98 P"/sys/config-tools-offset.g" ;Tool offsets G10 P4 X0 Y46.5 Z-20.000 ; set tool 4 axis offsets
config-tools-size.g:
;nozzle sizes if !exists(global.toolNozzleSizes) global toolNozzleSizes = vector(5,0) set global.toolNozzleSizes[0] = 0.6 set global.toolNozzleSizes[1] = 0.4 set global.toolNozzleSizes[2] = 0.6 set global.toolNozzleSizes[3] = 0.6 set global.toolNozzleSizes[4] = 0.0
config-tools-material.g:
;nozzle materials if !exists(global.toolNozzleMaterials) global toolNozzleMaterials = vector(5,"") set global.toolNozzleMaterials[0] = "Brass" set global.toolNozzleMaterials[1] = "Hardened" set global.toolNozzleMaterials[2] = "Brass" set global.toolNozzleMaterials[3] = "Brass HF" set global.toolNozzleMaterials[4] = ""
config-tools-offset.g:
;Z-Offset: ;If nozzle is too close to bed _reduce_ offset (negative number becomes more negative) ;If nozzle is too far away, _increase_ offset (negative number becomes less negative) ;tool offsets G10 P0 X-8.300 Y39.975 Z-3.620 G10 P1 X-8.756 Y40.144 Z-3.340 G10 P2 X-8.438 Y40.700 Z-3.320 G10 P3 X-8.450 Y40.600 Z-3.460
config-filaments.g:
var filaments = {"PETG - Generic","PLA - Generic","PLA - PolyTerra","PLA - Silk", "XTCF20", "PCCF - Prusament", "PLA - Wood"} if !exists(global.filamentSettings) global pebbleFeedSpeedDefault = 0 global pebbleFeedSpeed = global.pebbleFeedSpeedDefault global nozzleSizeMap = vector(6, null) set global.nozzleSizeMap[0] = 0.25 set global.nozzleSizeMap[1] = 0.4 set global.nozzleSizeMap[2] = 0.6 set global.nozzleSizeMap[3] = 0.8 set global.nozzleSizeMap[4] = 1.0 set global.nozzleSizeMap[5] = 1.2 global filamentSettings = null set global.filamentSettings = vector(#var.filaments, vector(2,null)) set global.pebbleFeedSpeedDefault = 300 set global.pebbleFeedSpeed = global.pebbleFeedSpeedDefault while iterations < #var.filaments set global.filamentSettings[iterations][0] = var.filaments[iterations] set global.filamentSettings[iterations][1] = vector(#global.nozzleSizeMap, {0.0, 0.5, 2000, 0.2, 150, global.pebbleFeedSpeedDefault}) ; default settings: PA, retraction distance, retraction speed, Z-Hop, min extrusionTemp, pebble feed speed ; PA R-Dist R-Speed Z-Hop MinTemp Pebble Speed ;PETG - Generic set global.filamentSettings[0][1][0] = {0.175, 0.5, 2100, 0.2, 200, global.pebbleFeedSpeedDefault} ;0.25 set global.filamentSettings[0][1][1] = {0.1, 0.5, 2100, 0.2, 200, global.pebbleFeedSpeedDefault} ;0.4 set global.filamentSettings[0][1][2] = {0.05, 0.7, 2500, 0.2, 200, global.pebbleFeedSpeedDefault} ;0.6 set global.filamentSettings[0][1][3] = {0.03, 0.5, 2100, 0.2, 200, global.pebbleFeedSpeedDefault} ;0.8 set global.filamentSettings[0][1][5] = {0.015, 0.5, 2100, 0.2, 200, global.pebbleFeedSpeedDefault} ;1.2 ;PLA - PolyTerra set global.filamentSettings[2][1][0] = {0.115, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault} ;0.25 set global.filamentSettings[2][1][1] = {0.04, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault} ;0.4 set global.filamentSettings[2][1][2] = {0.025, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault} ;0.6 set global.filamentSettings[2][1][3] = {0.02, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault} ;0.8 ;PLA - Silk set global.filamentSettings[3][1][0] = {0.0, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault} ;0.25 set global.filamentSettings[3][1][1] = {0.055, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault} ;0.4 set global.filamentSettings[3][1][2] = {0.0, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault} ;0.6 set global.filamentSettings[3][1][3] = {0.0, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault} ;0.8 ;XTCF20 set global.filamentSettings[4][1][2] = {0.05, 0.5, 2100, 0.0, 180, global.pebbleFeedSpeedDefault * 0.5} ;0.6 ;PCCF - Prusament set global.filamentSettings[5][1][2] = {0.04, 0.3, 3000, 0.0, 260, global.pebbleFeedSpeedDefault * 0.5} ;0.6 ;PLA - Wood set global.filamentSettings[6][1][2] = {0.04, 0.3, 3000, 0.2, 180, global.pebbleFeedSpeedDefault} ;0.6
-
Im basically seeing this same behavior with other monitors. Once the Monitor is qureried with an
M591 D0
It will repeat the same value for the rest of the print. It will however trigger an error and pause the printer if I go over and interfear with the feed.7/19/2023, 6:58:47 PM M591 D0 Pulse-type filament monitor on pin 124.io0.in, enabled, sensitivity 0.156mm/pulse, allowed movement 75% to 120%, check every 2.4mm, measured sensitivity 0.162mm/pulse, measured minimum 86%, maximum 109% over 949.8mm 7/19/2023, 5:49:24 PM M591 D0 Pulse-type filament monitor on pin 124.io0.in, enabled, sensitivity 0.156mm/pulse, allowed movement 75% to 120%, check every 2.4mm, measured sensitivity 0.162mm/pulse, measured minimum 86%, maximum 109% over 949.8mm 7/19/2023, 3:42:30 PM M591 D0 Pulse-type filament monitor on pin 124.io0.in, enabled, sensitivity 0.156mm/pulse, allowed movement 75% to 120%, check every 2.4mm, measured sensitivity 0.162mm/pulse, measured minimum 86%, maximum 109% over 949.8mm
as you can see I've polled the monitor over a good sampling of time durring a print and its not changing.
Actaul filimaernt use at the time of the last poll:Filament Usage: 22419.1 mm
Granted I'm using the SMT32 port of RRF 3.5.beta4 (and an experimental toolboard) but seems to be the same or simular issue as the OP:
fly_super8_pro_h723 stm32h723-wifi 3.5.0-beta.4_101 Duet 3 Expansion FlySB2040v1_0 FlySB2040v1_0 3.5.0-beta.4_101 Duet WiFi Server n/a 1.27-02S32-D Duet Web Control DWC 3.5.0-beta.4
-
NVM my issue seems to be spacific to the experimental nature of the hardware in that printer. I tested with another printer using current supported toolboars and it worked fine. Will test again when I can get a supported toolboard installed.
-
@dc42 Any news on this? I saw lots of changes on github, but not much being mentioned in the changelog of 3.5rc1.
I updated to rc1 just a few minutes ago and it seems like currently it's a regression compared to 3.5b4.
Looks like my sensors are now completely useless, RRF does not even recognize them anymore, meaning that also the runout switch doesn't work anymore (which did work fine on 3.5.b4)The status is now noDataReceived all the time...
M591 D0 Duet3D rotating magnet filament monitor v1 with switch on pin 100.io0.in, disabled, sensitivity 28.80mm/rev, allow 60% to 160%, check every 3.0mm, no data received
Please also note that it now says v1? Used to say v4. I guess that's because it doesn't seem to communicate at all with them anymore?
All my 4 sensors show exactly the same.
Hardware- and software setup is exactly the same as in the posts above except for upgrading to 3.5rc1
-
@Diamondback we didn't have time to reproduce this one prior to the RC1 release, so it may still be an issue in RC1. It's still on our list to look at.
-
@dc42 Ok, please let me know if I can assist you in any way, I'd really like to see these monitors working completely for me for the first time
-
@Diamondback please can you try the firmware build at https://www.dropbox.com/scl/fo/tjznycpk7bv7sj71p0ssl/h?rlkey=096p4nvgmigyrb20jj8olg3wu&dl=0 and see whether this issue is still present. There are partial release notes at https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-RC#reprapfirmware-350-rc2-changes-since-350-rc1---in-preparation. The filament monitor code has changed significantly since rc1.
-
@dc42 Looks like the issue is the same as with rc1. I do not seem to get any communication with my sensors. The sensors themself appear to be booting up correctly (3x green flash) then they continue to flash alternating green and red. When i insert filament the green LED starts to flash rapidly to the point where it's always lit.
Some data bits:
-
For comparision the same sensor and settings on beta 4 (recorded minutes ago), which at least does communicate with it to some degree, the switch signal works perfectly fine.
Without filament in it:
With filament in it:
-
-
@dc42 Good news With 3.5rc2, all my sensors appear to work for now They collect data that seems right, they change status when inserting filament etc.
I haven't tested yet what happens if they actually detect an issue, but so far so good. Will keep you posted if anything weird comes up. Many thanks -