DIY Lulzbot Mini - Bed Leveling Problems

I guess this is a software issue. I have no idea how to go about fixing it. This is for my homebuilt lulzbot mini.

i have an odd issue where the print head is about 3/4" above the plate when going to wipe and touch the washers, and when it goes to print it prints off to the left instead of the center where the model is. I’m wondering if that is some sort of issue with the software having the wrong estep value?

https://youtu.be/_z3OjY84E94

You have an issue with the type of limit switches I see on your machine in the video.

They seem to work fine. If you are suggesting that they are creating space which is messing up the z-axis offset i dont think it is, but even if it was it would make the z-axis slightly lower than normal which should cause the extruder to slam into the bed instead of being so high. So i don’t think that is my problem. Besides, that does not explain why the machine is printing far over to the left when the computer clearly shows the model is supposed to be in the direct center of the bed.

If I’m missing something please let me know, but as of now i can only conclude this is a software issue and not a hardware one.

Home Z, then measure from the bed up to the tip of the nozzle. You should get something very close to 164mm. If not, then there may be something going on with limit switch actuation or the physical build.

Assuming that’s correct…

Which firmware file did you flash?
If you execute an M501 command, what step values are shown for M92?

Also, are you sure your Z-Min switch isn’t being hit, and that is stopping the downward travel? (You should be able to confirm that visually, but I can’t see it in the video).

Hard to tell from the video, but it looks like your X belt is VERY loose. That could cause the print to be shifted left, if the belt is slipping on the initial fast jump to the right when the print starts (i.e., carriage doesn’t move as far to right as commanded).

I can see they have the metal lever and small rollers on them that makes it hit/actuate early preventing the bed level from working(aka touch the washers), and then I see one on the X min position that throws the X axis off, also the Z max switch. I can not see from your video if you have the same limit switch on the Z min but you could. (The possible real reason you see all the end-limit messages on the control window.) The firmware was told/programmed that the Z range is a set number of MM but the wrong switches will cause end limit errors and mess up the firmware and where it thinks it is at. Home is like +160 MM Z but the wrong switches make it smaller, then the firmware tries to go down 155 MM but gets a end limit, and stops, AKA firmware is lost! so the wiper is out of range to get to along with the washers and the bed.

Okay, that kinda makes sense. I have looked and you are right the bottom z-axis limit switch is hitting early and is causing the offset, so i will need to fix that.

The x-axis limit switched i oriented so that the metal strip really doesent seem to be in the way, but perhaps it still is slightly. Is there a gcode command that i can use to show all the limit switch positions for debugging? So for the weird printing off the the left problem you are suggesting that the limit switches are switching too early and the software is guessing at where it is and failing miserably? That seems like a possibility i suppose.

But in the meantime i’ve found another issue i need to fix before i continue. I’ve realized that the red wire connecting to the extruder nozzle is not going anywhere to the board as at the time i was doing the wiring i did not know where it needed to go. I followed the OHAI instuctions so it is wired up to the massive connector, but there were no instructions on where it needed to go to the board after that. According to the pinout guide it is reffered to as the “red extruder nozzle ground”. Basically what i take to mean that voltage is supposed to go through it and when it touches the washer it grounds out simulating pressing a limit switch. I have the aluminum bed grounded to the board, but the extruder red wire is currently going nowhere. Does anyone know where it is supposed to go? All the limit switch ports are all used up, so i don’t see any other connector available.

Assuming i can fix the z-axis limit switch issue, without fixing this issue the extruder might crash into the washers and not stop.

https://ohai.lulzbot.com/media/uploads/Wire_Diagram_1_1.png.600x0_q85.png

I could be wrong but I think Step 10 here is the connector. You will notice there are 3 - Z limit switches.

https://ohai.lulzbot.com/project/86510011-df83-408c-a220-1dcf8c5a7262/mini/

Well, i cut off the metal strips from the limit switches. I wired up the extruder ground wire how it should go, but now the bed leveling pushes my bed corners down way too far. Continuity checks out. The only thing i can think of is a software problem. Anyone have any ideas???

…The only solution i can think of is to bypass the code for bed leveling and print without it. The problem is my aluminum bed might now be slightly bent (not sure) and so it might not get close enough to the bed as it’s supposed to for the first layer.

< Bed x: 0.00 y: 0.00 z: -2.78
< Bed x: 160.00 y: 0.00 z: -2.74
< Bed x: 160.00 y: 160.00 z: -2.73
< Bed x: 0.00 y: 160.00 z: -2.77
< Eqn coefficients: a: 0.00 b: 0.00 d: -2.78
< planeNormal x: -0.00 y: -0.00 z: 1.00
< Probing done!
< echo:endstops hit:  X:0.34 Z:-2.77
< echo:endstops hit:  Z:1.44

Well i fixed the bed leveling problem, i guess. After thinking about this at great length and from testing, i finally had the thought that the way the bed leveling works is that the extruder ground actually REPLACES the z-min switch and that the other limit switch actually does NOTHING. I wired up the extruder ground like step 10 shows to z-min and the bed leveling now works correctly. The downside is that the default lulzbot mini firmware for the mini rambo does not seem programmed to do anything with the other lower z limit switch. In effect there are three limit switches, but only two are functional. This is basically a lulzbot design flaw if i am right. If so there is no real point to that limit switch being there (shown in step 12).

From a safety standpoint however this means that if the extruder nozzle is not clean and cannot make contact with the washers then this could lead to a catastrophic failure with the nozzle crashing into the washers and never stopping. Ideally the other limit switch would be programmed to do the same function as the other z-min, but be put in a place to switch easily if the nozzle goes slightly past where the washer would be so it only bends the aluminum bed very minimally before hitting the backup switch. I am currently considering putting some tape to raise the point where this backup switch will trigger and wiring the two switches together to electrically do the same function since the firmware does not.

I also seem to have fixed the weird printing issue that can be somewhat seen in the video where a half size octopus is trying to be “printed” (i was testing without filament) and the printer was going haywire going past the edge of the print bed. I also had this problem with other STL models i tried to print with real filament. I eventually tried putting on the toroids on the motors and wires. I guess the weird printing issue was caused by electrical interference. The toroids seem to have eliminated that interference.

So i guess this thread can be marked as solved. But the lulzbot firmware guys should definitely program that limit switch to stop the z-axis from moving too far down if pressed.

So Lulzbot support has now confirmed that the secondary z-min switch actually does NOTHING despite it’s obvious purpose as a backup switch in case the bed leveling gets clogged and can’t make contact and stop the z-axis. No wonder i was pulling my hair out trying to get it to work. The good news i now know the command (M119) to use for limit switch debugging. The bad news is that this is a firmware bug on the default lulzbot mini firmware. I honestly don’t see a point in having a backup limit switch if it doesn’t even function. I’m sure a few lines of code could fix this issue.

Here is what two different lulzbot support techs told me:

That third switch is kinda of a secondary, it’s only used if the auto bed leveling goes to far down. The idea is that it will be physically pushed if the first Z mind switch cant make electrical contact.

First if you have not already seen it, check out the wiring guide for the Mini Rambo: > https://ohai.lulzbot.com/project/86510011-df83-408c-a220-1dcf8c5a7262/mini/ > Steps 10, 11, and 11 are the endstops.

If those all check out, You can connect to your Mini and test the end stops by using the M119 command in Cura. Try even holding down the endstop by hand seeing if the M119 command says that the endstop is triggered.



The secondary Z-min switch is actually not functional. The firmware is set-up only for a single Z-min switch and this is used by the bed leveling.

I hope this helps. Let me know if you have any further questions.

I’m not sure its really a firmware issue. I can’t find any documentation that says the two pins to which the secondary switch (the physical micro switch) is attached are addressable/readable. In fact, I can’t find any documentation of those two pins at all. Without connecting that switch to something the board can report, a firmware change isn’t going to fix it.

The backup switch (the physical micro switch) could be connected in parallel with the bed/nozzle to the Z-Min input. That would stop the motion, but isn’t really adequate – because we don’t want G29 thinking that’s where the bed is, and continuing with the print which would run the nozzle into the bed.

Ideally, hitting that switch would abort the G29 sequence, move the head up a little, then just stop for the user to clean the nozzle and restart the G29 sequence. Not sure how that could be accomplished, but might be a combination of both hardware and firmware changes needed.

Thanks Scott,

Yeah i haven’t been able to find any documentation for those pins either, but i assume the original lulzbot designers knew that those two pins would at the very least not interfere with anything. At one point i thought maybe the OHAI instructions were wrong so i tried the top left two pins. Apparently those pins are the same as hitting the reset button on the rambo mini. I’m sure Ultimaker has the files needed to know what O/I pins those are. But assuming the worst that those pins are not I/O addressable, my understanding is that there are some expandable pins on the board somewhere. I think at least some of those pins might be used by some to put an LCD onto the board. It is conceivable that those pins could be used, however that would eliminate the ability to add an LCD screen to a mini.

I’m thinking about doing that electrical hack you mentioned on my mini as that would be better than nothing. But your right, that’s not the best solution if one is not monitoring their printer closely.

I like your idea of an error popping on screen and letting the user know that the nozzle would need to be cleaned if the backup switch were to hit. First problem to solve is getting that switch to work independently of the bed leveling though.

I can not find it, me and the forum search do not get along everything i want to find is too common and the computer will not be bothered to search.
I could be wrong but I remember reading a post where someone modified the firmware so that if the sensor was not detected within some small distance from where it was expected to be it then stopped with an error.

You are probably remembering that from the discussion of a particular Marlin 1.1 RC3 build. The exact quote you read was probably this from the last message in the thread:
https://forum.lulzbot.com/t/jrhubotts-mini-firmware-totally-rocks/2815/1

I think I read a description that his probing sequence check the z heights of the 4 washers from the current attempt against the results from the previous one and does something (aborts? retries? pauses for user input?) if the difference is too great. I may be remembering this incorrectly…

The proposal that poster was recalling entailed comparing the previously stored compensation matrix to the current one, then stopping for nozzle cleaning and repeating the sequence after user input. With no standard way to get user input on the Mini (no LCD or knob control), the idea never really applied to the mini (but might be something that could work with the Taz6, or other printers with click-wheel or touchscreen input).