FW 1.4 Changelog

As I subscripted to the new newsletter i noticed the download links at the end of the page. There you can download the FW Version 1.4? And also on the support page i can find this FW.

Whats the changes in it?
Please Velleman Support give some infos, may some of us has to think about changes the have made in the slic3er which are impacted by the new FW.

Main differences are the RGB-LED fuction if you run through the code, who ever needs this (not me).

So fency party lights while printing?

Or how could i understand this?

You could maybe change the color during printing, e.g. if the print is 50% done change from bleu to red or so. So I do not use it, so I’m not really interessested how this will work. You need REG light to be connected to one spar conntector on the board (don’t even know if the Velleman board has this or this is used by another part).

Main reason for this update is a bug fix which could lead to infinite heating and destruction of the extruder on rare occasions.

The added code is for an RGB led add-on which will be available later this year.

More information can be found here:
viewtopic.php?f=66&t=13071&p=57224#p57224

Some reseller has the description already online for the LED set:

elektronicacatalogus.nl/RGB- … NTER-K8403

The extrusion value is still set at 200? Or is this lowered in this update?

Kind Regards
JeAfKe

On which output is the LED set available?
I have IKEA LED’s on my Vertex but if a print is finished they stay ON. With this update we can turn them OFF if we know on which pins this add-on works.

RGB is overkill but mine are warm-white LED’s.

Cheers,
Dylan

Jeafke : Unfortualy they havent changed it. It is still 200 :slight_smile: However i changed it in the H:2 version so if you can use that then http://www.teddysplace.se/download/vertex-m1-v1.4-h2.zip

Worth knowing is i have done some other alterations in that one also

  • I have changed the termistor setting for the heatbed due to the heatbed i use. If you dont have one you can pritty much ignore that change.
  • What is also changed is the calibrated settings for X, Y and Z steppers along with the Extruder steppers.

My line in configuration.h : #define DEFAULT_AXIS_STEPS_PER_UNIT {135.69,135.19,4397.60,148.7} //

  • For the Extrusion stepper change it is needed to change the filament feeding in the load and unload also.
  • Changing The G28 command in the load and unload to G28 X Y. I like having it not homeing Z at that point makes more sense for me.

The Ultralcd.cpp is changed to these versions of the functions.


static void lcd_load_menu_EXT1_ABS_go()
{
  lcd_return_to_status();
  enquecommand_P(PSTR("M117 Preparing..."));
  enquecommand_P(PSTR("M106 S165"));
  enquecommand_P(PSTR("G28"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("G0 F12000 X100 Y100 Z100"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M104 T0 S245"));
  enquecommand_P(PSTR("M109 T0 S245"));
  enquecommand_P(PSTR("G92 E0"));
  enquecommand_P(PSTR("M83"));
  enquecommand_P(PSTR("G1 E350 F2000"));
  enquecommand_P(PSTR("G1 E322 F1000"));
  enquecommand_P(PSTR("M117 Feeding filament"));
  enquecommand_P(PSTR("G1 E90 F50"));
  enquecommand_P(PSTR("G28 X Y"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("M104 T0 S0"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M84"));
  enquecommand_P(PSTR("M117 Vertex is ready     "));
}

static void lcd_load_menu_EXT1_PLA_go()
{
  lcd_return_to_status();
  enquecommand_P(PSTR("M117 Preparing..."));
  enquecommand_P(PSTR("M106 S165"));
  enquecommand_P(PSTR("G28"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("G0 F12000 X100 Y100 Z100"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M104 T0 S210"));
  enquecommand_P(PSTR("M109 T0 S210"));
  enquecommand_P(PSTR("G92 E0"));
  enquecommand_P(PSTR("M83"));
  enquecommand_P(PSTR("G1 E350 F2000"));
  enquecommand_P(PSTR("G1 E322 F1000"));
  enquecommand_P(PSTR("M117 Feeding filament"));
  enquecommand_P(PSTR("G1 E90 F50"));
  enquecommand_P(PSTR("G28 X Y"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("M104 T0 S0"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M84"));
  enquecommand_P(PSTR("M117 Vertex is ready     "));
}

static void lcd_load_menu_EXT2_ABS_go()
{
  lcd_return_to_status();
  enquecommand_P(PSTR("M117 Preparing..."));
  enquecommand_P(PSTR("M106 S165"));
  enquecommand_P(PSTR("G28"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("G0 F12000 X100 Y100 Z100"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("M104 T1 S245"));
  enquecommand_P(PSTR("M109 T1 S245"));
  enquecommand_P(PSTR("G92 E0"));
  enquecommand_P(PSTR("M83"));
  enquecommand_P(PSTR("G1 E350 F2000"));
  enquecommand_P(PSTR("G1 E322 F1000"));
  enquecommand_P(PSTR("M117 Feeding filament"));
  enquecommand_P(PSTR("G1 E90 F50"));
  enquecommand_P(PSTR("G28 X Y"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("M104 T1 S0"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M84"));
  enquecommand_P(PSTR("M117 Vertex is ready     "));
}

static void lcd_load_menu_EXT2_PLA_go()
{  
  lcd_return_to_status();
  enquecommand_P(PSTR("M117 Preparing..."));
  enquecommand_P(PSTR("M106 S165"));
  enquecommand_P(PSTR("G28"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("G0 F12000 X100 Y100 Z100"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("M104 T1 S210"));
  enquecommand_P(PSTR("M109 T1 S210"));
  enquecommand_P(PSTR("G92 E0"));
  enquecommand_P(PSTR("M83"));
  enquecommand_P(PSTR("G1 E350 F2000"));
  enquecommand_P(PSTR("G1 E322 F1000"));
  enquecommand_P(PSTR("M117 Feeding filament"));
  enquecommand_P(PSTR("G1 E90 F50"));
  enquecommand_P(PSTR("G28 X Y"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("M104 T1 S0"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M84"));
  enquecommand_P(PSTR("M117 Vertex is ready     "));
}

static void lcd_unload_menu_EXT1_ABS()
{
  lcd_return_to_status();
  enquecommand_P(PSTR("M117 Preparing..."));
  enquecommand_P(PSTR("M106 S165"));
  enquecommand_P(PSTR("G28"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("G0 F12000 X100 Y100 Z100"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M104 T0 S245"));
  enquecommand_P(PSTR("M109 T0 S245"));
  enquecommand_P(PSTR("G92 E0"));
  enquecommand_P(PSTR("M83"));
  enquecommand_P(PSTR("G1 E15 F50"));
  enquecommand_P(PSTR("M117 Unloading filament"));
  enquecommand_P(PSTR("G1 E-375 F2000"));
  enquecommand_P(PSTR("G1 E-375 F2000"));
  enquecommand_P(PSTR("G28 X Y"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("M104 T0 S0"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M84"));
  enquecommand_P(PSTR("M117 Vertex is ready     "));
}

static void lcd_unload_menu_EXT1_PLA()
{
  lcd_return_to_status();
  enquecommand_P(PSTR("M117 Preparing..."));
  enquecommand_P(PSTR("M106 S165"));
  enquecommand_P(PSTR("G28"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("G0 F12000 X100 Y100 Z100"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M104 T0 S210"));
  enquecommand_P(PSTR("M109 T0 S210"));
  enquecommand_P(PSTR("G92 E0"));
  enquecommand_P(PSTR("M83"));
  enquecommand_P(PSTR("G1 E15 F50"));
  enquecommand_P(PSTR("M117 Unloading filament"));
  enquecommand_P(PSTR("G1 E-375 F2000"));
  enquecommand_P(PSTR("G1 E-375 F2000"));
  enquecommand_P(PSTR("G28 X Y"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("M104 T0 S0"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M84"));
  enquecommand_P(PSTR("M117 Vertex is ready     "));
}

static void lcd_unload_menu_EXT2_ABS()
{
  lcd_return_to_status();
  enquecommand_P(PSTR("M117 Preparing..."));
  enquecommand_P(PSTR("M106 S165"));
  enquecommand_P(PSTR("G28"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("G0 F12000 X100 Y100 Z100"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("M104 T1 S245"));
  enquecommand_P(PSTR("M109 T1 S245"));
  enquecommand_P(PSTR("G92 E0"));
  enquecommand_P(PSTR("M83"));
  enquecommand_P(PSTR("G1 E15 F50"));
  enquecommand_P(PSTR("M117 Unloading filament"));
  enquecommand_P(PSTR("G1 E-375 F2000"));
  enquecommand_P(PSTR("G1 E-375 F2000"));
  enquecommand_P(PSTR("G28 X Y"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("M104 T1 S0"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M84"));
  enquecommand_P(PSTR("M117 Vertex is ready     "));
}

static void lcd_unload_menu_EXT2_PLA()
{
  lcd_return_to_status();
  enquecommand_P(PSTR("M117 Preparing..."));
  enquecommand_P(PSTR("M106 S165"));
  enquecommand_P(PSTR("G28"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("G0 F12000 X100 Y100 Z100"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("T1"));
  enquecommand_P(PSTR("M104 T1 S210"));
  enquecommand_P(PSTR("M109 T1 S210"));
  enquecommand_P(PSTR("G92 E0"));
  enquecommand_P(PSTR("M83"));
  enquecommand_P(PSTR("G1 E15 F50"));
  enquecommand_P(PSTR("M117 Unloading filament"));
  enquecommand_P(PSTR("G1 E-375 F2000"));
  enquecommand_P(PSTR("G1 E-375 F2000"));
  enquecommand_P(PSTR("G28 X Y"));
  enquecommand_P(PSTR("G90"));
  enquecommand_P(PSTR("M82"));
  enquecommand_P(PSTR("M104 T1 S0"));
  enquecommand_P(PSTR("T0"));
  enquecommand_P(PSTR("M84"));
  enquecommand_P(PSTR("M117 Vertex is ready     "));
}

// Marlark

@Marlark: U sir are a f’ing rockstar! Thank you so much for the modded firmware!

Kind regards
JeAfKe

[quote=“minitreintje”]On which output is the LED set available?
I have IKEA LED’s on my Vertex but if a print is finished they stay ON. With this update we can turn them OFF if we know on which pins this add-on works.

RGB is overkill but mine are warm-white LED’s.

Cheers,
Dylan[/quote]

It seems liked to CN2 (12 V, PG1, PG0, PB6 and GND ). You could certainely divert it to command any LED you want …

Thanks for letting me know!

Cheers,
Dylan

This firmware also fixes a blocking issue where the nozzle can heat uncontrollably when displaying the firmware or filament load screen. It’s recommended that you upgrade your firmware.

This firmware is changing all!! calibration values for the motors.

For the x,y and Z axis I found the original values from Vellemann more suitable for proper print results, only the E value needs to be changed to lower value. The theoretical value of 152.48 steps/mm would be a good starting point for further finetuning.

@marlark;

What did you use to callibrate these settings? You are aware there is a difference in X/Y? (though they are identical in mechanical design in terms of movement)

There is a very small difference due to the belts and other things. What I used was a very good calibration document that exist on the reprap wiki

reprap.org/wiki/Triffid_Hunter’s_Calibration_

To calibrate the E step all you need is do 100mm feed on the filament into the tube and measure it if you get exact 100 mm on other side of the stepper your good or else you can calc it down by % and retest it intill you get it right.

// Marlark

I know about the e calibration, just wondered how you got to the numbers for x/y/z. (since they are different, with the same structural design for both axis)

It would be more safe to calculate these numbers, from the mechanics; I don’t know if you’ve averaged them from measurements on several x/y coordinates, but you are working in tolerances/imperfections of the design (pulley that’s which hole is not entirely centered for example, tolerances/differences in entire belt itself)

I don’t know if you performed these measurements on 1 spot or throughout the entire working area of this printer, with a wobble in the pulleys, and measured over 10mm, the numbers could differ even more.

With the direct drive (mechanically locked/connected) design of the x/y/z a calculated number would be preferred, from my point of view, while with a relative slippery drive for the E, (with the variable of the cutting on the wheel/used pressure) a measurement would give the best results.

With measured numbers for x/y/z you need to take the tolerances into account, I guess that’s what i’m trying to say.

I used a somewhat higher jerk value for x/y (20, instead of 10) with a more reserved acceleration for x/y (5000 instead of 9000). Arh. Potatoes, potatoes. Right.

If your parts are perfect, that’s all that counts in the end.

Great work on the filament load/unload part.

I did the changes in the Ultralcd.cpp that Marlark suggested to change the distances that the filament is moving during loading and unloading. The loading works fine but the unloading only do the short forward extrusion and not the long backward extrusion. It just ignores those two commands. The temperature is turned off afterwards and the status text is changed. Anyone have any idea?
Best Regards!

  enquecommand_P(PSTR("G1 E15 F50"));       //UH 2016-Jan-13 E10 till E15
  enquecommand_P(PSTR("M117 Unloading filament"));
  enquecommand_P(PSTR("G1 E-375 F2000"));  //UH 2016-Jan-13 E-300 till E-375
  enquecommand_P(PSTR("G1 E-375 F2000"));  //UH 2016-Jan-13 E-300 till E-375
  enquecommand_P(PSTR("G28 X Y"));             //UH 2016-Jan-13 G28 till G28 X Y 

This is because

//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. #define PREVENT_LENGTHY_EXTRUDE
Is set in Configuration.h

Maximum length is about 350 or something like that.
G1 E-275 F2000
G1 E-275 F2000
G1 E-200 F2000
that splits it into 3 commands and should work.

Kind regards!
JeAfKe