Quantcast
Channel: Reprap Forum - Firmware - Marlin
Viewing all 12089 articles
Browse latest View live

Re: Marlin - two extruder setup

$
0
0
I mean I can read this file ultralcd.cpp :), no code understanding.

But anyway:

Deleted - Lines
Added + Lines

Result is that there are really only EXTRUDER 1 and EXTRUDER 2.

But when I move with one extruder , the value is still shared with second one.
I mean if I turn with EXTRUDER 1 for example 2mm, EXTRUDER 2 has shared
2mm, it should be 0 ? Or not ? (Moving is independent, only value is shared)

Re: Usage status collection

$
0
0
The positions of the data move, depending on what features are enabled. Only the compiler knows where exactly they are

I believe the first 100 bytes of eeprom in marlin are not used

Re: Usage status collection

$
0
0
So I've gone thru my firmware and found that indeed the first 100 bytes seems to be empty
#define EEPROM_OFFSET 100
#define EEPROM_VERSION "V21"
#ifdef EEPROM_SETTINGS
void Config_StoreSettings() 
{
  char ver[4]= "000";
  int i=EEPROM_OFFSET;
  EEPROM_WRITE_VAR(i,ver); // invalidate data first

with further testing, even tho serialprint will give me gibberish for some unknown reason. if I simply use the read variable to do a comparison, it'll work.

the following code write "same", proving I've successfully written and read data.
bool test = true;
    EEPROM.write(0, test);
    bool verify;
    verify= EEPROM.read(0);
    if(verify){
    serialprintPGM(PSTR("same"));
    }else{
      serialprintPGM(PSTR("problem"));
    }

So now my only problem is, how to I do the serial print?? so I can actually read the counter value?


So now i'm trying to figure out how to read and write values to the first 100 bytes (adding the following code into ultralcd_implementation_hitachi_HD44780.h)
#include
void counting() {
uint8_t prints =5;
EEPROM.write(0, prints);
serialprintPGM( EEPROM.read(0));

will return gibberish
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮1⸮⸮r⸮⸮⸮⸮⸮/⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮àݠ⸮⸮⸮[⸮^⸮M⸮Q⸮W⸮b⸮f⸮l⸮p⸮t⸮z⸮
I've also tried (code that i found in ConfigurationStore.cpp)
EEPROM_WRITE_VAR(0, prints);
EEPROM_READ_VAR(0, prints);

and it give me an error
exit status 1
'EEPROM_WRITE_VAR' was not declared in this scope

I've tried adding
#include ConfigurationStore.cpp
#include ConfigurationStore.h

but it still tells me not declared.

what am i missing?

Re: Add password/lock screen to firmware

$
0
0
SD Menu update:
So i've found time to work on the firmware stuff again, this time instead of inserting the lockscreen between the main and SD menu, I hid the sd menus, and added a unlock menu item, so that the sd menus will only appear after unlocking.
So far it's working and i don't see any problems.

First i defined a global variable "lock", set it to 1, added
if(lock==1){
  MENU_ITEM(function, "Unlock", lcd_lockscreen);
  }else{
just before #ifdef SDSUPPORT in ultralcd.cpp
this'll hide the SD menus, and only show and option called Unlock

then in the lockscreen code, add lock=0; when the codes match.

and lastly lock=1; inside card.printingHasFinished(); to relock the menu once the print is done.

and some other misc. code, like storing and putting back the the button and encoder values before and after the lockscreen..etc

Re: 5 x Tool changer Marlin E3D style

$
0
0
After figuring out that one of the mosfets wasn't working on my Ramps bored I have managed to re-map the heater pins to digital pins, Unfortunately the Mosfet inputs are supposed to be 12 volts so I have had to power the mosfets through a relays, clickety click.

I extracted all of the #define pin lines out of the temperature sensor and heater pins section and got rid of the #ifndef stuff:

//
// Temperature Sensors
//
#define TEMP_BED_PIN 11// // Analog Input
#define TEMP_0_PIN 13 // // Analog Input
#define TEMP_1_PIN 14 // // Analog Input
#define TEMP_2_PIN 15 //
#define TEMP_SENSOR_1 11 //
#define TEMP_SENSOR_2 11 //
//
// hotends
//
#define HEATER_0_PIN 45
#define HEATER_1_PIN 47
#define HEATER_2_PIN 32
//
// Stepper
//

#define E2_STEP_PIN 17
#define E2_DIR_PIN 23
#define E2_ENABLE_PIN 25
//
// Servos
//

Also had to do this in Configuration.h

#define EXTRUDERS 3

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 1
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_BED 0
#define TEMP_SENSOR_CHAMBER 0



But it works! Im happy to say, im controlling 3 hotends now. Next step is to work on the gcode editor and start designing the physical tool changer. This is a big relief for me as I was warred it would be the firmware that would stop me from achieving my goal as I can’t follow marlins programming language. I'm actually a bit surprised with how all the features are already built into marlin but so few tool changing printers have been made by the public. I think it comes down to the Kinematic coupling implementation, up until when I got my head around the concept of it I couldn't visualize how to achieve the repeatability.

Re: Usage status collection

$
0
0
your trying to print a string, but your passing it an array of characters....
It needs to be null terminated to be a string

Re: Configurating an Y-endstop that sits too far out?

$
0
0
There is only one last weird thing. When homing and sending the machine to certain coordinates, it works as intended, I now have full coverage of the 210x190mm build area.

But, when I make a print, it suddenly centers the print too far up. As in this schema:

top
__________
|        |
|    X   |
|        |
|_________|

bottom

It's kinda strange as in the slicer it shows up perfectly centered and when I manually home and send the hotend to different coordinates, it goes to the exact spot I tell it to go.

Re: Configurating an Y-endstop that sits too far out?

$
0
0
Maybe you still have an M206 in your slicer's start gcode?

Re: Configurating an Y-endstop that sits too far out?

$
0
0
Quote
MMcLure
Maybe you still have an M206 in your slicer's start gcode?

I'll check the EEPROM, thanks for being so sharp, that might be the problem!

Re: ABL and G30

$
0
0
To add to my question, If the probe offsets are X-20 Y-20 does a G29 record the value that is shown on the LCD with coordinate offsets factored in? For example if the displayed coordinates show X170 Y190 during the G29, the probe will be at X150 Y170, so will the Z value, lets say it is -0.05, be stored in EEPROM as X170 Y190 Z offset is #, or does it get stored as a corrected location with Z offset #?

Re: ABL and G30

$
0
0
G29 will use the position of the probe to store the correction value. So it will, for example, put the probe at 10,10 and use the value it measures there when the nozzle is at 10,10 when printing.
Having the probe in the center of the bed when homing Z is also the correct behavior.
The LCD will never show the probe location when probing - just the nozzle position. But it will take the probe offset into account when using the probed values to correct the Z axis.

Z axis torque increase

$
0
0
Hi all,

I have built a 300 X 300 X 300 machine,

I am currently having an issue where the lead screws are unable to lift the bed up.

I am using two 8 mm lead screws and have increased the current as well.

I would like to know if decreasing the default max speed value in marlin will provide more torque to the motors for lifting the bed. ??

For homing moves moves what values of speed are taken ??

Thanks for your help !

Re: Z axis torque increase

$
0
0
lower acceleration, lower feed rate and decrease the micro-stepping also consider a higher voltage to your stepper motors

Re: ABL and G30

$
0
0
Thank you, thats what I thought, for some reason I was thinking the probe shoud be moving to the nozzle position and then reading when a G30 is done. All is good.

Using Z_DUAL_ENDSTOPS for build plate leveling on Z_MAX with probing on Z_MIN

$
0
0
I've built CoreXY printer with dual Z steppers. I have BLTocuh as my probe on Z MIN.
Sometimes Z steppers get "out of sync" and build plate is not parallel any more to XY plane.
I would like to add two endstops on Z MAX (bottom of printer) and use them to make build plate parallel with XY plane.
Marlin does have Z_DUAL_ENDSTOPS, but from what I can see they must be on homing direction (MIN in my case).
Is it posible to setup marlin to have homing in MIN direction and this Z_DUAL_ENDSTOPS leveling in MAX direction?

Re: 5 x Tool changer Marlin E3D style

$
0
0
I've made the first version of my G code editor and im now able to demonstrate how to print in multi materials minus the actual printing.

I still have to figure out some filament profile settings in slicer then I'm going to focus on the mechanical aspects of the tool changer, I will pick this up again once I have the physical arrangement and electronics to do the tool changing.

[attachment 111579 DONE.PNG]

Re: Using Z_DUAL_ENDSTOPS for build plate leveling on Z_MAX with probing on Z_MIN

$
0
0
I feel like this is working around the problem. Sorry for not providing an answer, but wouldn't it be a better idea to fix the steppers going out of sync?

What could be the cause of that? Binding? An axis leadscrew slipping in relation to the stepper shaft?

Re: Using Z_DUAL_ENDSTOPS for build plate leveling on Z_MAX with probing on Z_MIN

$
0
0
Quote
Ohmarinus
I feel like this is working around the problem. Sorry for not providing an answer, but wouldn't it be a better idea to fix the steppers going out of sync?

What could be the cause of that? Binding? An axis leadscrew slipping in relation to the stepper shaft?
Maybe my choice of words wasn't the best. It's not problem while printing. But when I remove print surface (flexible) or poke around printer, then I sometimes accidentally move one lead screw. When that happens I need to manually level it again. I would like to have a way to do it automatically before every print.

Help designing new Nextion display implementation

$
0
0
Hi guys, I've been experimenting with Nextion display and Marlin for some time now, and have already tested the @apballard and @MagoKimbra versions and both works just fine. However since I learned about the Protocol Reparse mode (recmode=1) in Nextion, I belive it is possible to implement a display that communicate only via gcode trough serial port. Protocol Reparse mode lets you read and proccess raw serial data, also you can send raw serial data using 'print' function.

So far I managed to connect to an Arduino Mega2560 with Marlin installed, trough the Nextion simulation interface. I also changed the baudrate on Marlin to match the Nextion communication. When connected, Marlin sends the info message trough serial and I can read it on Nextion simulation interface, but when I try to send a gcode to the Arduino, the Tx led blinks but Marlin responds nothing. Summing up: I can read the first command Marlin sends via serial, but can't seem to send commands properly. I also tried sending "\r\n" in the end of each command, and disabling Protocol Reparse mode to see if only sending commands would work, but no luck.



Does anyone have any idea what should I do to get the Marlin to process the gcode commands I send trough Nextion? I would love to make this work and provide the project as open source after I finish.

Re: Using Z_DUAL_ENDSTOPS for build plate leveling on Z_MAX with probing on Z_MIN

$
0
0
Correct this basic mistake: two steppers and screws for Z.
Besides, a well made cartesian machine doesn't need auto bed leveling.
It is explained in the CoreXY thread.
Viewing all 12089 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>