Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FR] No extruders (motors) but hotends (PID control for hotend temperature) #42

Closed
DerAndere1 opened this issue Jan 5, 2021 · 14 comments

Comments

@DerAndere1
Copy link
Owner

Description

@Daniele-Dondi (https://github.com/Daniele-Dondi) opened the following feature request in the upstream MarlinFirmware/Marlin issue tracker;
Hi, I'm quite new here. I'm trying to use Marlin on my robot for chemical reactions. Actually the robot has 6 axes for driving syringes plus several servos for valves. I wish to implement the possibility to heat (by using PID) but the only way I found is to enable one extruder (that I don't need and also I haven't enough pins to use on my board).
So, I'm asking if it is possible to have hotends without extruders (motor).
I tried to modify the code without success.
(I know that I could use the bed pins but actually I need more hotends)

Steps to Reproduce

Expected behavior: [What you expect to happen]

Actual behavior: [What actually happens]

Additional Information

  • Include a ZIP file containing your Configuration.h and Configuration_adv.h files.
    Dondi.zip
@Daniele-Dondi
Copy link

Thank you for the hint. By putting a dummy extruder (setting the same unused pin for the three pins needed) I was able to compile it correctly. I've also setup the sw for 12 servos. I'm waiting for some hardware stuff for the final check (I got stuck for some missing connectors and linear bearings). After the test if you are interested I can post here the files I modified.

@DerAndere1
Copy link
Owner Author

Yes, definitely, I'm still interested in your progress and updated configs. Also, you may want to get in touch with user @scientistnobee (https://github.com/scientistnobee) by writing a comment at DerAndere1/contact_DerAndere1#3 . (S)he is currently building a liquid handling system (stationary, no positioning) with multiple syringe pumps.

@scientistnobee
Copy link

scientistnobee commented Jan 13, 2021 via email

@Daniele-Dondi
Copy link

Hi, I'm still alive. Now that I received the hw I'm having some problems.. I added 12 servos but only the first 4 moves.
Other than
pins_MEGATRONICS_3.h
Configuration.h
I modified also the files:
servo.h
servo.cpp
pins.h
I'm making some checks to avoid some trivial hw or sw errors

@Daniele-Dondi
Copy link

Finally I think to have solved all the issues.
Since I manipulated many files I prefer to attach the whole marlin (I started from marlin for pipetbot Derandere's version)
This version should work with the following hw:
-board Megatronics 3.0
-6 stepper motors
-PID with thermocouple in the first slot and power exit on the first extruder as BED
-12 servos

On most (if not all) lines I modified the //Dondi comment was added

6 axes bed 12 servos.zip

@Daniele-Dondi
Copy link

@DerAndere1 Hi, I'm thinking to publish some stuff on my robot. How can address you and/or your work as a citation in the paper?

@DerAndere1
Copy link
Owner Author

DerAndere1 commented Feb 18, 2021

@Daniele-Dondi : Thanks for your feedback and good work! I am
"DerAndere" (EDIT: removed personal information). I did not publish any peer-reviewed article on the subject, but you can say that you used my firmware Marlin2ForPipetBot (https://github.com/DerAndere1/Marlin) which was developed as part of my PipetBot-A8 project. You could cite the PipetBot-A8 project page. The relevant information is

Author Pseudonym: DerAndere
Last Modified Date: 18 February 2021
Website title: DerAndereOnline
Sub-page title: DIY lab robot Pipetbot-A8
URL: https://derandere.gitlab.io/pipetbot-a8/

If your journal requires you to choose between real name and pseudonym, prefer to cite my real name (EDIT: removed personal information).
In MLA citation style, citation would be:

DerAndere [EDIT: removed personal information]. "DIY lab robot Pipetbot-A8". DerAndereOnline, 18 Feb. 2021, https://derandere.gitlab.io/pipetbot-a8/. Accessed 19 Feb. 2021.

In case you publish your firmware, it is advisable to fork the repository https://github.com/DerAndere1/Marlin (forking is described at https://guides.github.com/activities/forking/) and commit/push your modifications to your fork so that the git history remains intact and allows tracking of contributions. You can add a copyright statement in the following form to the beginning of modified source code files (do not delete any existing copyright statements):

/**
 * [Placeholder for your institute's copyright statement. Replace this line]
 * 
 * Based on
 * Marlin2ForPipetBot [https://github.com/DerAndere1/Marlin]
 * Copyright 2019 - 2020 DerAndere and other Marlin2ForPipetBot authors [https://github.com/DerAndere1/Marlin]
 * 
 * Based on 
 * Marlin 3D Printer Firmware
 */

@Daniele-Dondi
Copy link

Thank you, you are very kind. I'll follow your suggestions

@DerAndere1
Copy link
Owner Author

@Daniele-Dondi : I added copyright statements to the modified source code files in my Marlin2ForPipetBot branch. You should be able to update your fork with one of these workflows: https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/syncing-your-branch#pulling-to-your-local-branch-from-the-remote or https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/syncing-a-fork

@Daniele-Dondi
Copy link

Hi, I'm trying to merge the projects with some difficulties. Since I'm new I don't understood yet the netiquette here. But I'm asking also another thing: I created a python program to control my robot. Do you think it's better to include the code in my branch or I've to create a new project?

@DerAndere1
Copy link
Owner Author

DerAndere1 commented Feb 23, 2021

If you have difficulties with the merging, you can also abort it. git is a powerful but can be daunting at times. Klick on the hyperlink below to see the diff of my recent change. It might be faster for you to just have a look at the changes and copy into your code manually whatever you like about it:
Commit 361c316 did not change any functionality, I just tried to make it easier to distinguish between my fork and upstream Marlin Firmware, which was initially not my focus.
Regarding the control software, I have no experience how publications about software usually proceed. First make sure what sequence of steps the journal (and your employer!) expects. You may have to keep your software in a private repository an maybe give the editors and reviewers exclusive access to the code so the publication of the paper and the public release of the software can be coordinated. Google will tell you what to do. I would prefer a seperate repository in any case. If the journal gives you a choice, pick a good License and make your choice transparent, e.g. by adding a LICENSE file to the root of your control software repository as the first/second commit. I usually prefer the Apache-2.0 License in combination with a NOTICE file.

@thebjtfellow
Copy link

I see this is old, but I thought I'd describe how I got around it. I too am using DerAndere's pipette-bot, but for a binder jetting machine. I needed to enable the heater channels for things like an overhead heater, a curing stand, a binder warmer, etc. I also am using all of the axes available, and have nothing left to assign to extruders. And I needed all four channels of heaters, so spoofing was just sort of out.

The board is the BTT Octopus Pro V1.1. 8 Axis, 4 Hotend channels, Heated Bed channel

In configuration.h, I set the TEMP_SENSOR_0 - 3 options, and the TEMP_SENSOR_BED option.
I added #define HOTENDS 4 after the #define EXTRUDERS 0
Comment out PREVENT_COLD_EXTRUDE, PREVENT_LENGTH_EXTRUDE, it makes it a little easier

At the top of Conditionals-1-axis.h, I inserted #if HOTENDS<1 ... #endif from lines 55-65 so the temp sensors wouldn't be erased

At line 175, I added #ifndef HOTENDS ... #endif at line 185 so the # is set by the configuration.h declaration

Then in planner.cpp. at 1385, I inserted #if EXTRUDERS>0 ... #endif at 1388 so it doesn't make as .se value for the move block

FInally, in gcode.cpp, at line 128 I changed it to: if( (e < EXTRUDERS) || (e < HOTENDS) ) return e;

Those changes let me use all of my hotend controllers while having no extruders defined. I hope that helps somebody, but I doubt this is a common need.

@Daniele-Dondi
Copy link

Daniele-Dondi commented Dec 27, 2024 via email

@DerAndere1
Copy link
Owner Author

DerAndere1 commented Dec 29, 2024

I added the necessary changes to https://github.com/DerAndere1/Marlin/tree/Marlin2ForPipetBot. In my fork, I recommend to set all of the following options explicitly in Configuration.h: HOTENDS, EXTRUDERS, and the new option TOOLS (if you have zero extruders, no laser and no spindle, add #define TOOLS 0). In the future I will prepare a pull request to add those changes to MarlinFirmware/Marlin also. Thanks @thebjtfellow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants