davidramiro / marlin-ai3m-2.0.x Goto Github PK
View Code? Open in Web Editor NEW🖨 Marlin 2.0.x optimized for the Anycubic i3 Mega 3D printer
License: GNU General Public License v3.0
🖨 Marlin 2.0.x optimized for the Anycubic i3 Mega 3D printer
License: GNU General Public License v3.0
SD card not read.
I have inserted the following lines from an older pins_Trigorilla_14.h into the new pins_Trigorilla_14.h:
#define BEEPER_PIN 31
#define SDSS 53
#define LED_PIN 13
#define SD_DETECT_PIN 49
now the SD card is read. Maybe you can add that to your version
It would seem that filament runout (and M600 colour change and user initiated pause) is not going to be so simple to implement in anycubic_TFT.cpp for Marlin 2.0. The way the head is parked and unparked from filament runout and user initiated pause has changed in marlin 2.0 for the ADVANCED_PAUSE_FEATURE
We need to rework all pause and restart behaviour to work with the new ADVANCED_PAUSE_FEATURE capability of Marlin 2.0.
I noticed that Marlin 2.0 has an extensible UI concept. It might enable us to integrate our anycubic_TFT code more deeply into the Marlin main loop and events/
See this as the original report: MarlinFirmware/Marlin#12437.
Unchanged from your repository master
Expected behavior:
Actual behavior: [
From observing the terminal during a filament runout and continue it seem the M24 call doesn't do anything. Issuing an M108 down the terminal will actually cause the print head to continue and the printer to continue.
According to the readme this firmware should put 12V to the hot end cooling fan, However I'm only seeing 8V on the fan output. Is this normal?
Required: Please include a ZIP file cAfter 2 or 3 layers the extruder motor of my Anycubic I3 Mega S stops working with TMC 2208.
Once installed the firmware, i had to reverse the extruder motor's pin to make it working correctly.
I tried to mash calibrating the printer different times, i checked the Vref of the drivers, i tried to swap the drivers, and i tried lowering the plate manually but the motor keeps loosing steps and than it stops working and i need to reboot the printer to make it work again.
I tried extruding filament with the built-in function and it work properly.
I followed the guide, i sent those commands after installing the firmware:
M502
M500
M92 E384
M203 E30
M204 R1500.00
M500
I calibrated the plate manually, before using the "mash calibration" function but it still doesn't work.
I tried to reduce print speed at 40 mm/s but it still stops working.
Those are the driver i'm using: https://www.amazon.it/dp/B086MYZHD9?psc=1&ref=ppx_yo2ov_dt_b_product_details
I tried to update the firmware to marlin V2 but it has the same error. During a print i noticed that the motor became more noisy for 2 seconds and than it has stopped working again
I tried to sent the command G26 C H200 P5 R25 Q4.2 Z4. It moves the extruder and the plate but it doesn't extrude. When it starts, the stepper looses steps and than it just stops working
Is 0.85 correct for the Vref of all drivers?
When performing manual bed leveling, if a point on the bed is below the end-stops, the z-axis does not exceed that point so it cannot be leveled giving false level readings.
Hi, I compiled the .hex file on my own, setting Czech language (#define LCD_LANGUAGE cz). After flashing the firmware and following all the steps in "How to flash this?" section, including sending of M commands, my printer has still original English language. In menu language setting still only switches between English and Chinese. I assume flashing the firmware was successful (no beeps on startup) and "Firmware version V116" in info screen:
Anycubic Mega-S
Configuration.zip
Expected behavior:
Czech screen language
Actual behavior: [What actually happens]
English screen language
Dear David
Maybe you can give some information.
I recently ordered the LV8729 motor driver since I have heard good review about them.
I have installed them on the Z, Z2 & E0.
adjusted their voltage to about 1.100V.
Also made the modifications in the code:
#define Z_DRIVER_TYPE LV8729
#define Z2_DRIVER_TYPE LV8729
#define E0_DRIVER_TYPE LV8729
Also needed to switch the direction on the Z, and E0.
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false
The direction now works fine the problem is that the moments is very slow and I also thing it is not the full movement.
My speculation that since it is by default 1/128 and not 1/16 could maybe cause this issue, but what I dont understand is why since if you define the driver type to be LV8729 it should know that that the stepping is 1/128 and work accordingly
do you have any clue?
By the way it is not only on the 2.0 firmware it is also shown in the 1.19 firmware
Do I need to modify this as well??
X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 412 }
to:
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 3200, 3296}
for Z (since the LV8729 is by default 1/128 according to the default of the main board)
1/16 = 400
1/32 = 800
1/64 = 1600
1/128 = 3200
For E0:
1/16 = 412
1/32 = 824
1/64 = 1648
1/128 = 3296
Is that correct?
What about the speed? they move very slow, will this change also accelerate the speed?
I installed the hex ok and everything worked when i made the mesh. I put 7 files on the sd and when i put the sd in, i can see 3 of the first gcode files. If i move the menu down the firmware freezes.
Whats up with that.
Servas David!
wenn man ARC_SUPPORT deaktiviert bekommt man einige compiler errors. Hast du was in der planer routine geändert?
C:\Users\TheDude\AppData\Local\Temp\cc4G2ake.ltrans1.ltrans.o: In function `GcodeSuite::process_parsed_command(bool)':
<artificial>:(.text+0x6d14): undefined reference to `plan_arc(XYZEval<float> const&, XYval<float> const&, unsigned char)'
collect2.exe: error: ld returned 1 exit status
see at MarlinFirmware/Marlin#17826
Description
In the file Marlin/src/core/types.h the operator overloading of operator* and operator/ for struct XYZval had a bug. See for example:
350: FI XYZval operator* (const float &v) const { XYZval ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; }
here the value of z is not multiplied by v but by z instead.
Benefits
correct operations are ensured
Does hot end fan support PWM control? It only blows when fan speed is set to 100%. In any other value fan keeps stopped.
Expected behavior: Fan should adapt its speed to setting
Actual behavior: Fan works only if speed is set to 100%
Fan I use is a 5015 like this: https://es.aliexpress.com/item/4000011565156.html
I'll try to connect an oscilloscope to check if PWM is applied. What setting should I ensure to be activated so that Fan 0 is controlled with PWM?
Hi David,
first: thanks for your work!
I've some questions:
Thanks and greets
Hi, I’m a little confused about pins settings in trigorilla_14.h and ramps.h
I see that 1.x version has configuration for z2 stepper in
https://github.com/davidramiro/Marlin-Ai3M/blob/master/Marlin/pins_TRIGORILLA_14.h which corresponding for actual wirings. But in 2.x version I see that e1 has pins that actually wired to z2.
Should I change this setting before compile 2.x version?
And another question is if I want to add additional extruder, what should I change in this files? Is enough to just add e2 block with corresponding pins?
Is this project going to be updated to the latest marlin?
Thanks.
Complier Error by Probe methode „nozzle as Probe or fix mounted Probe“ only with the Anycubic i3 Mega Stock Display.
Complier Error:
Anycubic_TFT.cpp zprobe_zoffset was not declared in this scope
Just installed version 2.0 on my Anycubic i3 Mega S.
Every time I press the Stop button on the printer, a few more print movements happens and then it continues to repeat moving back and forth on the same spot while retracting and and unretracting. Also, the screen is frozen so my only option is to turn the printer off and on.
Installed to Hex File on a Anycubic Mega-S in wanted to use the Arc Welder plugin which needs Arc Support.
G2/G3 commands give out an error, which should mean that Arc Support isnt enabled at the firmware.
I checked the Code in the Configuration_adv.h file at line 1631 and it looks like it should be enabled.
Are there any additional steps, that need to be made?
Understanding that issue #4 will actually make the anycubic_TFT.cpp code command queuing work the same way in Marlin 2.0 as it did in Marlin 1.1.9 it's still worth considering if this is actually the correct way to do this.
Anytime we are injecting commands to the queue (aborting the current queue) we are technically throwing away commands that had been queued in the command queue just prior to our call.
This means that even in the Marlin 1.1.9 code version of the filament runout code exhibits this behaviour. And effectively once the print resumes we could in theory lose whatever commands were in the queue. Granted this is probably a small number of commands but still possible.
What we really need is a way to prevent the queue from accepting any more commands, but still enqueue our commands immediately after the last command in the queue.
Note sure if Marlin has a concept to do this. We need to review the key code to understand if this is even a problem, and if there is even an elegant way to solve this.
I discovered a bug while printing using the SD-Card feature in the software.
My printer ran fine on your previous Marlin version (1.1.9)
After the upgrade to Marlin 2.0, my printer does not finish print jobs from SD card correctly.
Hoever, When I print using USB Connection, every print works just as expected.
When I monitor the Serial output I get the following response:
SENT: M105 READ: X:86.81 Y:94.96 Z:1.53 E:0.00 Count X:8138 Y:8138 Z:612 READ: ok T:219.79 /220.00 B:74.99 /75.00 @:47 B@:62 READ: X:92.47 Y:88.40 Z:1.53 E:0.00 Count X:7010 Y:7498 Z:612 READ: X:94.28 Y:86.81 Z:1.53 E:0.00 Count X:7398 Y:7072 Z:612 SENT: M105 **READ: TFT Serial Debug: SD print done... J14 READ: DEBUG: AI3M Pause State: 0 READ: Error:MAXTEMP triggered, system stopped! Heater_ID: 0** SENT: M105 READ: Error:Printer halted. kill() called! READ: TFT Serial Debug: Kill command... J11
After that, the printer immediatelly stops.
I am quite sure the connection to the hotend thermistor is not loose.
Any idea what could trigger the kill function?
Link to configuration file: https://cloud.hansen-its.de:443/share.cgi?ssid=0O2KKcb
Error does not occur while printing via usb (Simplify 3D)
However, the same G-Code does not work when I put it on to SD-Card
Start print using SD-Card
Last few Lines of the G-Code are:
G92 E0.0000 G1 E-7.0000 F3900 ; layer end G91; relative positioning G1 Z5 ;lift Z axis after printing G90; absolute positioning G1 X0 Y195 F2400 ; position for easy part removal M106 S0 ; fan off M104 S0 ; turn off extruder M140 S0 ; turn off bed M84 ; disable motors
The print finishes as expected, but the printhead stays at the object (it does not lift the nozzle after printing) and the build plate is not moved forward.
Expected behavior: [What you expect to happen]
Printer finishes print and does all commands as expected
Actual behavior: [What actually happens]
Printer calls the kill function and stops immediatelly
Mega-S hangs after printing interruption: the printer endlessly repeats the last track in the loop, the touch screen does not respond to clicks
Anycubic Mega-S in stock configuration.
Mesh Bed Leveling was performed and enabled(M501 and M420 S1).
Linear advance was enabled(M900 K0.65)
Configuration.h:678-690 were commented(all *_DRIVER_TYPE defines)
Configuration.h:1055-1063 were changed according to comments for stock drivers
Everything else corresponds to the 2.0.x branch
1: run printing any model, wait until printer starts to print it(e.g.: wait second layer printing).
2: Press "STOP" button.
Expected behavior: the printing correctly has stopped, like in stock firmware.
Actual behavior: the printer hangs: it repeats last track in the loop, the touch screen does not respond to clicks. To stop this loop I have to turn off power.
Heho.
Will you support the Anycubic Mega-X?
What do you need for informations?
Here I posted the M503: https://www.reddit.com/r/anycubic/comments/fcqz6f/anycubic_megax_configurations_m503/
and here you get the firmwares:
https://www.reddit.com/r/anycubic/comments/fcsy92/anycubic_megax_stock_firmware/
The printer is nearly the same as Mega-S except of the size of X Y and Z and the acceleration rates.
Greetings
In your 1.4.6 codebase you use the command enqueue_and_echo_commands_P() to send commands to the printer. From the comments in the code of Marlin 1.1.9 enqueue_and_echo_commands_P() actually aborts the current queue and queues your specified command immediately (see code snippet below). But in your Marlin 2.0 codebase you use the command queue.enqueue_now_P(). But from tracing this funciton it appears that enqueue_now_P() will enqueue this command on the end of the command queue, and if the queue is full (which happens if trying to do anything during an sdcard print) then the function just throws out any commands that don't fit on the queue silently.
The Marlin 2.0 code that does the closest thing to enqueue_and_echo_commands_P() is actually queue.inject_P(). Basically enqueue_now_P() will work for any commands from the TFT executed while the printer is not printing from SDCard (like say performing a bed levelling), but it won't work during an SDcard print.
Unchanged from your repository master
Expected behavior:
Actual behavior:
Code signature of original call in Marlin 1.1.9
/**
* Record one or many commands to run from program memory.
* Aborts the current queue, if any.
* Note: drain_injected_commands_P() must be called repeatedly to drain the commands afterwards
*/
void enqueue_and_echo_commands_P(const char const pgcode) {
Marlin-Ai3M-2.0.x paired with TMC2209s (0.86v current on each, upgraded cooling, stealthchop enabled) causes random Y Layer Shifts (random in both time and direction) using Marlin2-Ai3M-v2.0.0_TMC2208-reversed.hex.
This also is true with "stable" Marlin-Ai3M-v1.4.6-TMC2208_reversed.hex
tried toggling linear advance, tried disabling jerk/accel
This is in beta, so do you suggest using that or v1.
Hi.
I've been using one of your pre-builds for a year, and everything works perfectly, and the M600 does what I expect.
I have cloned the repo to change some options, and when I test it I see that everything is going correctly, but when I pause with M600 and then launch M108, it takes about 10-15 seconds to start loading the filament (once the loading speed is as expected)
#if ENABLED(ADVANCED_PAUSE_FEATURE)
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
#define PAUSE_PARK_RETRACT_LENGTH 4 // (mm) Initial retract.
// This short retract is done immediately, before parking the nozzle.
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 40 // (mm/s) Unload filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_UNLOAD_LENGTH 430 // (mm) The length of filament for a complete unload.
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
// Set to 0 for manual unloading.
#define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load.
#define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material.
// 0 to disable start loading and skip to fast load only
#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 40 // (mm/s) Load filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 393 // (mm) Load length of filament, from extruder gear to nozzle.
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
//#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
#define ADVANCED_PAUSE_PURGE_FEEDRATE 2 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
#define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading.
// Set to 0 for manual extrusion.
// Filament can be extruded repeatedly from the Filament Change menu
// until extrusion is consistent, and to purge old filament.
#define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park.
//#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.
// Filament Unload does a Retract, Delay, and Purge first:
#define FILAMENT_UNLOAD_PURGE_RETRACT 13 // (mm) Unload initial retract length.
#define FILAMENT_UNLOAD_PURGE_DELAY 3000 // (ms) Delay for the filament to cool after retract.
#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
#define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload
#define PAUSE_PARK_NOZZLE_TIMEOUT 900 // (seconds) Time limit before the nozzle is turned off for safety.
#define FILAMENT_CHANGE_ALERT_BEEPS 3 // Number of alert beeps to play when a response is needed.
#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
//#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)```
**Required:** Please include a ZIP file containing your `Configuration.h` and `Configuration_adv.h` files.
### Steps to Reproduce
<!-- Please describe the steps needed to reproduce the issue -->
1. M600
2. M108
**Expected behavior:** After launching M108, the filament begin to load
**Actual behavior:** 10-15 seconds delayed
[Marlin.zip](https://github.com/davidramiro/Marlin-Ai3M-2.0.x/files/6283722/Marlin.zip)
#### Additional Information
* Provide pictures or links to videos that clearly demonstrate the issue.
* See [How Can I Contribute](#how-can-i-contribute) for additional guidelines.
Filament sensor does not pause print. When filament is out of sensor a message is shown on screen but printing goes on normally.
I'm running latest 2.0.x commit [d47dbd5]
Expected behavior: I would expect that printing pauses waiting for new filament
Actual behavior: A message is shown on LCD, so sensor works fine. Printing process goes on.
When triggered, both the y_min & x_max endstop do not change state
I'm running latest 2.0.x commit 9b7f0ba, with stock code, no modifications
Moved from Marlin 1.1.9 and there was no problem on that firmware.
Tried to compare both configuration file in the "Endstop" section but without any result
Expected behavior: [Normal Homing of all Axes]
Actual behavior: [Y Axis and the second Z axis keep pushing the rail after reaching the endstop]
Hi. I'm unable to set Z position in LCD menu, but also positioning instruction provided in the readme file doesn't work. I have sent those commands, saved, rebooted and Z axis is in the same position as it was - pressing the bed.
Anycubic I3 Mega with Chinese nozzle, which is 2.8mm higher than original.
a) Change position of Z axis via LCD, save, reboot
b) Send G91, G1, G90, or even M206, M428
Actual behavior: EEPROM is not being overwritten (?)
Expected behavior: [What you expect to happen]
Actual behavior: [What actually happens]
Configuration.h
and Configuration_adv.h
files.printer: Anycubic I3 Mega-S (upgraded)
board: 8 bit trigorilla 1.0
I'm running a mixed (tmc2209/A4988) stepper driver configuration (A4988 on extruder). and i am very confused about configuring the steppers.
On a Trigorilla board, the second Z-axis is connected to E1 header
in "Configuration.h" I have
#define X_DRIVER_TYPE TMC2209_STANDALONE
#define Y_DRIVER_TYPE TMC2209_STANDALONE
#define Z_DRIVER_TYPE TMC2209_STANDALONE
#define E0_DRIVER_TYPE A4988
#define E1_DRIVER_TYPE TMC2209_STANDALONE
But when i look into "pins_TRIGORILLA_14.h", E1 is not defined. and Y2 and Z2 have the same pins assigned to them (which actually match E1 header on the board). Mind you, there is no Y2 on a trigorilla, and the second Z is hardwired in parallel).
So should "Configuration.h" have
define Z2_DRIVER_TYPE TMC2209_STANDALONE
or
define E1_DRIVER_TYPE TMC2209_STANDALONE
if you have a 2209 driver on the second Z-axis driver? I believe it is Z2 (according to the pins layout), but that is just plain confusing, as it does not actually matches the silkscreen on the trigorilla pcb.
in vanilla Marlin 2.0, this seems to have been changed, and "pins_TRIGORILLA_14.h" has an include for "pins_RAMPS.h", which has the correct pin assignments for the X, Y, Z, E0 and E1 headers on the trigo board.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.