Mrnt / OctoPrint-FlashForge

OctoPrint plugin to support closed source printers from FlashForge, PowerSpec, Dremel
GNU General Public License v3.0
87 stars 12 forks source link

Dremel 3D45 printer head trying to go past home position #46

Open visualvalhalla opened 3 years ago

visualvalhalla commented 3 years ago

I'm new to octoprint, but have experience in programming IoT devices. I have a 3D45 and looked at trying out the octoprint plugin for it. Have it installed on Raspberry Pi 4 and tested with bacic Fan on/off move head commands. All seem to be fine until I tried to upload a gcode output from the Dremel 3D slicer and attempt to print. The print head immediately tries to go past the home position and I have to shut the printer off to prevent further damage. Tried it multiple times with the same results. I've attached the full session log

ocotprint_printhead_error.txt

visualvalhalla commented 3 years ago

User error - maybe.

I see only Upload to SD is support. Closing issue

Mrnt commented 3 years ago

@visualvalhalla I have added support for printing directly from OctoPrint though it is new and may not work for all printers and almost certainly will require your help to debug. If you are willing to test maybe we can get it to work. You will need to turn on debugging for the plugin - see Troubleshooting section. Also can you try:

  1. making a fresh connection
  2. use the OctoPrint move controls to move the head to some random position
  3. go to the OctoPrint "Terminal" tab and enter the command G28 and report back what happens
Mrnt commented 3 years ago

Also if you feel ok sharing the file you were printing, can you upload that here too?

visualvalhalla commented 3 years ago

Attached gcode sliced from this stl: https://www.thingiverse.com/thing:2197230

D3_Latice_torture_test_2.zip

visualvalhalla commented 3 years ago

rebooted printer, connected Octo to printer. Fan on/off works. Tapping LEFT and DOWN arrows moved the print head in the expected directions

Send: G28 Recv: CMD G28 Received. Recv: ok Recv: status: ready Recv: temperature: 48 Recv: platform_temperature: 31 Recv: chamber_temperature: 30 Recv: extruder_target_temperature: 0 Recv: buildPlate_target_temperature: 0 Recv: error_code: 200 Recv: door_open: 0 Recv: remaining: 0 Recv: totalTime: 0 +++++++++========++++++ Nothing happened to the print head

visualvalhalla commented 3 years ago

I have debug logging turned on for octoprint.plugins.flashforge but I don't see any log files

Mrnt commented 3 years ago

It will be in the octopi.log

visualvalhalla commented 3 years ago

octoprint.log

Debug on. G28

visualvalhalla commented 3 years ago

octoprint (1)_attempt to print.log Right after that, I attempted to print to print the gocde that was attached earlier

Mrnt commented 3 years ago

re the G28 issue - just to double check, you:

  1. used the X, Y buttons to move the head to some random position
  2. went to the terminal and entered G28 and the head did not return to home?

If you try G28 X Y instead, does that work?

visualvalhalla commented 3 years ago

Yes, I tried combinations of X Y and Z.... head did not move at all

Mrnt commented 3 years ago

And: The head is not already at home - definitely at some random location? What about G28 X or G28 Y?

visualvalhalla commented 3 years ago

octoprint _G28_test.log

Confirm the head is in the middle of the plate. No movement observed

visualvalhalla commented 3 years ago

Would sniffing the USB comms between a PC and 3D45 help?

Mrnt commented 3 years ago

Are you able to print from the Digilab Slicer directly? ie without uploading the file from the slicer to the SD card? If so then sniffing the connection should show the slicer sending the file command by command and the response. That might be helpful. If it just uploads it to the SD card, then not useful.

I pulled up the Digilab Slicer but I do not have a printer for it to connect with - does Digilab Slicer have a control panel to move the head around directly, maybe make it "Home"? If so then that would be useful to sniff.

visualvalhalla commented 3 years ago

I've not tried the direct USB route yet to print. I use network connection to the printer. The Dremel slicer does not have controls other than print.

Mrnt commented 3 years ago

The center of the plate is the origin (ie, X,Y coordinates 0,0) and I feel like what is happening is that it does not home and therefore assumes the current head position is 0,0 so when it starts printing using the G1 X-_some number_ it just starts moving to the right and bangs against the side instead of moving to the center and then printing from there.

Another thing you can try is: Close the connection Power printer off then on Connect OctoPi to the printer Send M114 in the Terminal - note the positions it returns Send G28 X then G28 Y in the Terminal Send M114 in the Terminal - note what it returns - there should be new values for X, Y

Mrnt commented 3 years ago

I've not tried the direct USB route yet to print. I use network connection to the printer. The Dremel slicer does not have controls other than print.

When you do the direct network connection can you tell if it uploads the file to SD or does it seem like it is sending command by command?

visualvalhalla commented 3 years ago

Send: M114 Recv: CMD M114 Received. Recv: X:34.0742 Y:-51.3811 Z:-5 E0:0 [...] Send: G28 X Recv: CMD G28 Received. Recv: ok Recv: status: ready Send: M114 Recv: CMD M114 Received. Recv: X:34.0742 Y:-51.3811 Z:-5 E0:0

visualvalhalla commented 3 years ago

Send: M114 Recv: CMD M114 Received. Recv: X:64.0742 Y:-51.3811 Z:-5 E0:0 Recv: B:0 Recv: ok Send: G91 Recv: CMD G91 Received. Recv: ok Send: G1 X-10 F6000 Recv: CMD G1 Received. Recv: ok Send: G90 Recv: CMD G90 Received. Recv: ok Send: G91 Recv: CMD G91 Received. Recv: ok Send: G1 X-10 F6000 Recv: CMD G1 Received. Recv: ok Send: G90 Recv: CMD G90 Received. Recv: ok Send: G91 Recv: CMD G91 Received. Recv: ok Send: G1 X-10 F6000 Recv: CMD G1 Received. Recv: ok Send: G90 Recv: CMD G90 Received. Recv: ok Send: G91 Recv: CMD G91 Received. Recv: ok Send: G1 Y10 F6000 Recv: CMD G1 Received. Recv: ok Send: G90 Recv: CMD G90 Received. Recv: ok Send: M114 Recv: CMD M114 Received. Recv: X:34.0742 Y:-41.3811 Z:-5 E0:0 Recv: B:0 Recv: ok

Mrnt commented 3 years ago

Recv: CMD M114 Received. Recv: X:34.0742 Y:-51.3811 Z:-5 E0:0

Hmm I don't think thats even close to the right numbers for "home" on that printer.

Recv: CMD M114 Received. Recv: X:64.0742 Y:-51.3811 Z:-5 E0:0

How did you get the X coordinate to increase? That would mean that it would have to think it moved the head to the righ (since "Home" was X:34.0742 Y:-51.3811 Z:-5 E0:0)?

visualvalhalla commented 3 years ago

Sorry. That wasn't at home position. Showing G28 did nothing

visualvalhalla commented 3 years ago

Head at home position: Recv: CMD M114 Received. Recv: X:100.962 Y:71.089 Z:-5 E0:0

Mrnt commented 3 years ago

I need to call it a night I'm afraid. If you want to experiment, I made a dictionary of g-code to try and document what is supported and what they do. It's in the Wiki here: https://github.com/Mrnt/OctoPrint-FlashForge/wiki/G-Code-Dictionary

Like the plugin, it's a work in progress based on some scant docs someone found and trial and error...

visualvalhalla commented 3 years ago

I appreciate the hard work you put in. Let's get the printer working

visualvalhalla commented 3 years ago

I'm on a FB Dremel 3D printer group. There were a couple Dremel employees in the group and we had a conversation about this issue. It appears that the Windows driver for 3D45 is broken and Dremel has decided to discontinue support for the USB port.
As such, I am not able to capture the USB comms between DigiLabs and the printer.