So quick backstory…
My internet went down over the weekend, service said quickest was today… SO: your wondering why I bring that up…
I spent that time getting my Davinci 1.0 (not A) up and running on Klipper!
I read [TheDup] post on his 1.0a last week and decided I would like to try too. Well I succeded and wanted you guys to be the first ones to hear it.
before I begin, let me say Thank You to TheDup… you got me going with making this work. Your config and your spreadsheet helped in getting me started. So Friday I got the gumption to do it, and boom I got it and am so happy one of the most interesting and yet ez installs
first 2 comments
A) I noticed that you had a 1.0a in your original post, but in your printer.cfg the pins you have listed are for a 1.0 not a 1.0a.
In the spreadsheet there are 3 tabs. 1st is for 1.0 and 2.0, 2nd is for 1.0a and 2.0a, and 3rd for AiO printers. (youll need to use different pins than I do)
B) in your printer.cfg file you have it set as a corexy but the davinci is a cartesian… (but you probably knew that wink wink)
Now on to the goodies
as a prereq: I loaded Debian on an old i3 4gb MSI laptop and installed kiuah, then klipper, mainsail, python3, ffluid, and mpg-streamer.
I began by flashing the davinci firmware then my journey into printer.cfg began
[*] Enable extra low-level configuration options
Micro-controller Architecture (SAM3/SAM4/SAM E70 (Due and Duet)) —>
Processor model (SAM3x8e (Arduino Due)) —>
Communication interface (USB) —>
USB ids —>
(!PA12,!PA13,PA0,PB5,PD6,!PB4,!PD5,!PD9) GPIO pins to set at micro-controller startup
Note: I added the Pins for heaters, motors, and step pins
The heaters and motors for safety so they dont kick in till klipper starts
The step pins so one of the advanced klipper features work. (endstop to motor phasing)
I started with a copy of sample-cartesian.cfg and updating the mcu id and then…
Starting with the basics getting pins, directions,and endstops (with and without !) working correctly (what the hell is a tilde anyway
Mucked around with direction and enable pins till they all went in the right directions.
I’ve got so much to tell, but this post is already long.
Thermistors were the biggest pain, but I think I got em
Based on research and older repetier work from
[luc-github] [Repetier-Firmware-4-Davinci]
(GitHub - luc-github/Repetier-Firmware-4-Davinci: Repetier-Firmware-0.92 based for DaVinci printer (Beta - so far so good))**
and others I finally got the thing running.
The enable pins and directions for the x and y steppers didnt take much, but a bit of a surprise though when working on the Zed…
MM Per Rotation…eh
Who woulda thunk migrating to a new printer OS was like going from imperial to metric, or learning the “New Math”…
As it says in the manual, just take the old motion settings from your printer in steps_per_mm and convert to mm_per_full_rotation (ya easier said blabla)
Steps for Z:
(200 steps per rotation is default, and omitted in most example printer.cfg’s, but listed for refrence in my config anyways; so get over it…
Original posted config had 16 microsteps for all motors, and 40mm for x and y, and 8mm per rotation for z; Which is consistant with newer printers with a T8 lead screw.
But as found in additional late night reading in fluidd/klipper/config/docs (below is a snippet)
Rotation_Distance.md:
For example, the common “T8 leadscrew” has a rotation distance of 8mm (it has a pitch of 2mm and has 4 separate threads).
Older printers with “threaded rods” have only one “thread” on the lead
screw and thus the rotation distance is the pitch of the screw. (The
screw pitch is the distance between each groove on the screw.) So, for
example, an M6 metric rod has a rotation distance of 1 and an M8 rod
has a rotation distance of 1.25mm.
The Davinci is indeed one of those “Older printers” with a threaded rod for z-axis
snippit from eeprom save from my davinci 1.0
80.0000 X-axis steps per mm
80.0000 Y-axis steps per mm
2560.0000 Z-axis steps per mm
200.000 X-axis max. feedrate [mm/s]
200.000 Y-axis max. feedrate [mm/s]
5.000 Z-axis max. feedrate [mm/s]
40.000 X-axis homing feedrate [mm/s]
40.000 Y-axis homing feedrate [mm/s]
4.000 Z-axis homing feedrate [mm/s]
(btw:-math-hurts-
16 microsteps per full step
200 full steps per rotation
3200 microsteps per rotation
2560 steps_per_mm
1.25 mm per rotation
sounds like a M8 threaded rod to me…
After further review I was able to use 16 steps and 1.25 so I edited out my rant and updated the config.
With that I’m getting full range of bed movement now and it even sounds like the original davinci in zed moves
But for now on to the extruder:
99.000">Extr.1 steps per mm
50.000">Extr.1 max. feedrate [mm/s]
20.000">Extr.1 start feedrate [mm/s]
5000.000">Extr.1 acceleration [mm/s^2]
and halt:
Preempted by thermistors:
before I can move on to setting up extruding pins, directions, and steps; I first have to get the temps right!
I tried the original printer.cfg thermistor settings in it but they give wrong readings.
I start off with a idle machine with Repetier firmware, reports 20c/21c for hotend and bed respectivly.
@ambient the hotend stays a bit cooler than the bed (always noticed that) must be a metal thing…
after flashing with klipper the temps are 84.8c hotend and 47.1c bed using the ATC Semitec 104GT-2 set for hotend, and EPCOS 100K B57560G104F set on the Bed
Well… thats not right
It took some time but I finally got them by defining my own thermistors.
The thermistors are indeed Epcos, but they are not the 104F… I found the info needed buried in old .91 repetier for davinci… like i had to dig on an old laptop I originaly used to put repetier on my davinci
Ill post my whole printer.cfg later in the post. but here is the info on the thermistor setups without the pins, pids and other settings. just for readability…
Now please be aware although it seems to be working just fine ( I dont have a good thermometer to validate the temps ) till then use at your own risk.
After updating with these, I see 25c/24c at ambient and am able to verfiy both at 39c is 39c using a forehead temp scanner as it only goes to 104f, (humans are so cold…) after that it shows Hi and not the temp… ugh
But I am able to hit 270 on the extruder and 120 on the bed as reported inside Klipper… alot hotter than I usually run but wanted to ensure I could get there.
The PID tunes go fine as well. So I am hopeful in this regard.
[thermistor DAVINCI_ext]
temperature1: 25
resistance1: 100000
beta: 2470
[extruder]
sensor_type: DAVINCI_ext
pullup_resistor: 51000
min_temp: -20
max_temp: 300
[thermistor DAVINCI_bed]
temperature1: 25
resistance1: 440000
beta: 4036
[heater_bed]
sensor_type: DAVINCI_bed
pullup_resistor: 51000
min_temp: 10
max_temp: 150
Now after getting the basics I started adding all the luxury items
As of now have the following added.
First is the dimensions
All the other printers in the world are 0,0 is front left corner of the bed…
Originaly the DaVinci coordinates was 200x200x200 with 0,0 at the rear right corner nerest the filament dump box.
The optical endstops on the Davinci 1.0 are outside the build area, and originally they were positioned @ x-33 y-12 z0 (fyi 1.0A is different even at that step and so endstops and min max position would need changed to match yours.)
However that being said (and this may upset some davinci users) I turned the coordinates around on my DaVinci Klipper config to industry standard 0,0 being front left corner…
Full range is now x-4, y-5 to x233, y212 with endstops being at x233, y212, z0
Fan(s):
Both cpu fan and hotend fans are activly controlled and displayed off/on in fluidd (A part fan is in the config but not installed on my printer yet)
I have added the DaVinci mcu temprature as well
Filament runout and Filament motion sensors are both working and can be disabled in Tune page in Fluidd.
LCD LED and Case LED’s are working and can be turned off in Fans & Outputs in Fluidd
I have the buzzer working and can be called from macros. But I have questions on it, like there is a slider that appears in Fluidd, it seems to have a 0 - 1 both being off, and .1 - .99 on and effectivly being a volume control… ?? is this an affect of soft pwm? is this digital amplitude modulation (thinking of possibilities… ) I had assumed it would change frequency (tone)
I also have the Top Cover sensor working, although other than just showing on the Tune page in Fluidd thats about all I did with it so far.
I may in the future try to to kick off a pause and filament change and resume only when lid is shut. (think safety)
I added in the Cartrige slots in hopes that one day i can get it to read the materials temps etc like thier doing with reading spool barcodes on MMU’s… but for now, its just listed in the tune page next to top cover.
Although the Winstar LCD is a hd44780 compatible display, its not working at the moment. But I was able to enable 5 of the 6 buttons and do see the screen changes when button is pressed (its a font thing i have a feeling, as I do see symbols and text on the screen)
The biggest button on the front I made into the Kill button
Next is Bed Probing:
this includes (corner probe pads)
currently the probe has no offsets defined:
- the nozzle to probe z offset cancels out with the offset of pad to bed height.
- the probe points I have in .cfg already take into accout the x offset of the inductive probe. However in thinking of it, an X offset and slightly different probe points could be accomplished if needed for bed_tilt to be more affective.
[bed_screws]
[screws_tilt_adjust]
[bed_tilt]
and some macros for bed leveling is working
The Probe is working and tested good.
*see below for best tramming steps I have come up with for this config.
-
Run BED_SCREWS_ADJUST in Tools
This moves the nozzle to 3 points on the bed just above each screw. Do the paper thingy with each, with thin paper it should just loose enough to pull out (still some tension) and hit accept on each. It then it goes to each of the three corners probe pads to let you verfiy the probe sees the pad. *issue command Query_Probe in a console window on another tab for each pad, switch between tabs to run the command to see if it says TRIGGERED before hitting accept on each of the 3 pads.
At any time if youve made changes, click changed and it will reverify each pad again.
-
Run SCREWS_TILT_CALCULATOR in Tools
This runs a test of the three corners and tells you how much to turn each screw to bring them level(er).
2b) Run the Multi-probe Macros for the corner your trying to get level, it will show in the console results of 10 probes on each. This way you can try to adjust the screws on-the-fly.
-
Then finally run the BED_TILT_CALIBRATION in Macros
This will have the system probe (ALL 4) corners and automaticly adjust the zed to the bed for that session, or similar to bed_mesh it can optionally be saved for later boots by choosing save-restart.
3b) call that macro before each print, it should help that first layer lay down smooth
*Note BED_TILT is not compatible with BED_MESH which requires a bltouch type probe to wander around the bed and probe many positions.
at the moment I’m currently working on some of the other advanced klipper items like:
[firmware_retraction]
[input_shaper]
[endstop_phase]
I commented out those for the post so it doesnt error on a 1st boot.
So far endstop_phase is working but its interesting to say the least.
I made macros to help update them when it detects a change which seems too often imo. probably a mix of worn or loose belts and optical endstops. Ive had over 2000hrs of print time on it Luv my DaVinci
sorry for all the edits, but wanted to fix some of the typos and formatting
come to think of it, should I be stripping the Pids out for posting too??
I’m just getting started but Its been real fun getting this done…
And sorry for such a long post!
Thanks,
Darren
macros.cfg (1.9 KB)
printer.cfg (7.0 KB)