mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-17 19:57:57 -06:00
1973 lines
No EOL
65 KiB
HTML
1973 lines
No EOL
65 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
|
|
<link rel="icon" href="img/favicon.ico">
|
|
<meta name="generator" content="mkdocs-1.2.4, mkdocs-material-8.1.3">
|
|
|
|
|
|
|
|
<title>Load Cells - Klipper documentation</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="assets/stylesheets/main.edf004c2.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="assets/stylesheets/palette.e6a45f82.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="_klipper3d/css/extra.css">
|
|
|
|
<script>__md_scope=new URL(".",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-VEN1PGNQL4"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&>ag("event","search",{search_term:this.value})}),"undefined"!=typeof location$&&location$.subscribe(function(e){gtag("config","G-VEN1PGNQL4",{page_path:e.pathname})})})</script>
|
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VEN1PGNQL4"></script>
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="blue">
|
|
|
|
|
|
|
|
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)</script>
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#load-cells" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<header class="md-header" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href="." title="Klipper documentation" class="md-header__button md-logo" aria-label="Klipper documentation" data-md-component="logo">
|
|
|
|
<img src="img/klipper.svg" alt="logo">
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
Klipper documentation
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Load Cells
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<form class="md-header__option" data-md-component="palette">
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="blue" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7M9 21a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1H9v1z"/></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="grey" data-md-color-accent="light-blue" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7M9 21v-1h6v1a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m3-17a5 5 0 0 0-5 5c0 2.05 1.23 3.81 3 4.58V16h4v-2.42c1.77-.77 3-2.53 3-4.58a5 5 0 0 0-5-5z"/></svg>
|
|
</label>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
<div class="md-header__option">
|
|
<div class="md-select">
|
|
|
|
<button class="md-header__button md-icon" aria-label="Select language">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2m-5.15 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56M14.34 14H9.66c-.1-.66-.16-1.32-.16-2 0-.68.06-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2M12 19.96c-.83-1.2-1.5-2.53-1.91-3.96h3.82c-.41 1.43-1.08 2.76-1.91 3.96M8 8H5.08A7.923 7.923 0 0 1 9.4 4.44C8.8 5.55 8.35 6.75 8 8m-2.92 8H8c.35 1.25.8 2.45 1.4 3.56A8.008 8.008 0 0 1 5.08 16m-.82-2C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2M12 4.03c.83 1.2 1.5 2.54 1.91 3.97h-3.82c.41-1.43 1.08-2.77 1.91-3.97M18.92 8h-2.95a15.65 15.65 0 0 0-1.38-3.56c1.84.63 3.37 1.9 4.33 3.56M12 2C6.47 2 2 6.5 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2z"/></svg>
|
|
</button>
|
|
<div class="md-select__inner">
|
|
<ul class="md-select__list">
|
|
|
|
<li class="md-select__item">
|
|
<a href="/" hreflang="en" class="md-select__link">
|
|
English
|
|
</a>
|
|
</li>
|
|
|
|
<li class="md-select__item">
|
|
<a href="/zh/" hreflang="zh" class="md-select__link">
|
|
简体中文
|
|
</a>
|
|
</li>
|
|
|
|
<li class="md-select__item">
|
|
<a href="/zh-Hant/" hreflang="zh-Hant" class="md-select__link">
|
|
繁體中文
|
|
</a>
|
|
</li>
|
|
|
|
<li class="md-select__item">
|
|
<a href="/hu/" hreflang="hu" class="md-select__link">
|
|
Magyar
|
|
</a>
|
|
</li>
|
|
|
|
<li class="md-select__item">
|
|
<a href="/it/" hreflang="it" class="md-select__link">
|
|
Italiano
|
|
</a>
|
|
</li>
|
|
|
|
<li class="md-select__item">
|
|
<a href="/fr/" hreflang="fr" class="md-select__link">
|
|
Français
|
|
</a>
|
|
</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<a href="javascript:void(0)" class="md-search__icon md-icon" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08z"/></svg>
|
|
</a>
|
|
|
|
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
<div class="md-search__suggest" data-md-component="search-suggest"></div>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="md-header__source">
|
|
<a href="https://github.com/Klipper3d/klipper/" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
Klipper3d/klipper
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="." title="Klipper documentation" class="md-nav__button md-logo" aria-label="Klipper documentation" data-md-component="logo">
|
|
|
|
<img src="img/klipper.svg" alt="logo">
|
|
|
|
</a>
|
|
Klipper documentation
|
|
</label>
|
|
|
|
<div class="md-nav__source">
|
|
<a href="https://github.com/Klipper3d/klipper/" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
Klipper3d/klipper
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Overview.html" class="md-nav__link">
|
|
Overview
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Features.html" class="md-nav__link">
|
|
Features
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="FAQ.html" class="md-nav__link">
|
|
Frequently Asked Questions
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Releases.html" class="md-nav__link">
|
|
Releases
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Config_Changes.html" class="md-nav__link">
|
|
Configuration Changes
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Contact.html" class="md-nav__link">
|
|
Contact
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7">
|
|
Installation and Configuration
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" aria-label="Installation and Configuration" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_7">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Installation and Configuration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7_1">
|
|
Installation
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" aria-label="Installation" data-md-level="2">
|
|
<label class="md-nav__title" for="__nav_7_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Installation
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Installation.html" class="md-nav__link">
|
|
Installation
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="OctoPrint.html" class="md-nav__link">
|
|
OctoPrint for Klipper
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_2" type="checkbox" id="__nav_7_2" >
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7_2">
|
|
Configuration Reference
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" aria-label="Configuration Reference" data-md-level="2">
|
|
<label class="md-nav__title" for="__nav_7_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Configuration Reference
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Config_Reference.html" class="md-nav__link">
|
|
Configuration reference
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Rotation_Distance.html" class="md-nav__link">
|
|
Rotation distance
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Config_checks.html" class="md-nav__link">
|
|
Configuration checks
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_4" type="checkbox" id="__nav_7_4" >
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7_4">
|
|
Bed Level
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" aria-label="Bed Level" data-md-level="2">
|
|
<label class="md-nav__title" for="__nav_7_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Bed Level
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Bed_Level.html" class="md-nav__link">
|
|
Bed leveling
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Delta_Calibrate.html" class="md-nav__link">
|
|
Delta calibration
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Probe_Calibrate.html" class="md-nav__link">
|
|
Probe calibration
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="BLTouch.html" class="md-nav__link">
|
|
BL-Touch
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Manual_Level.html" class="md-nav__link">
|
|
Manual leveling
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Bed_Mesh.html" class="md-nav__link">
|
|
Bed Mesh
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Endstop_Phase.html" class="md-nav__link">
|
|
Endstop phase
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Axis_Twist_Compensation.html" class="md-nav__link">
|
|
Axis Twist Compensation
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_5" type="checkbox" id="__nav_7_5" >
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7_5">
|
|
Resonance Compensation
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" aria-label="Resonance Compensation" data-md-level="2">
|
|
<label class="md-nav__title" for="__nav_7_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Resonance Compensation
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Resonance_Compensation.html" class="md-nav__link">
|
|
Resonance Compensation
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Measuring_Resonances.html" class="md-nav__link">
|
|
Measuring Resonances
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Pressure_Advance.html" class="md-nav__link">
|
|
Pressure advance
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="G-Codes.html" class="md-nav__link">
|
|
G-Codes
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_8" type="checkbox" id="__nav_7_8" >
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7_8">
|
|
Command templates
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" aria-label="Command templates" data-md-level="2">
|
|
<label class="md-nav__title" for="__nav_7_8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Command templates
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Command_Templates.html" class="md-nav__link">
|
|
Commands templates
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Status_Reference.html" class="md-nav__link">
|
|
Status reference
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="TMC_Drivers.html" class="md-nav__link">
|
|
TMC drivers
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Multi_MCU_Homing.html" class="md-nav__link">
|
|
Multiple Micro-controller Homing and Probing
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Slicers.html" class="md-nav__link">
|
|
Slicers
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Skew_Correction.html" class="md-nav__link">
|
|
Skew correction
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Exclude_Object.html" class="md-nav__link">
|
|
Exclude Objects
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Using_PWM_Tools.html" class="md-nav__link">
|
|
Using PWM tools
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" >
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_8">
|
|
Developer Documentation
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" aria-label="Developer Documentation" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Developer Documentation
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Code_Overview.html" class="md-nav__link">
|
|
Code overview
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Kinematics.html" class="md-nav__link">
|
|
Kinematics
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Protocol.html" class="md-nav__link">
|
|
Protocol
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="API_Server.html" class="md-nav__link">
|
|
API server
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="MCU_Commands.html" class="md-nav__link">
|
|
MCU commands
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="CANBUS_protocol.html" class="md-nav__link">
|
|
CANBUS protocol
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Debugging.html" class="md-nav__link">
|
|
Debugging
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Benchmarks.html" class="md-nav__link">
|
|
Benchmarks
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="CONTRIBUTING.html" class="md-nav__link">
|
|
Contributing to Klipper
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Packaging.html" class="md-nav__link">
|
|
Packaging Klipper
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" checked>
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_9">
|
|
Device Specific Documents
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" aria-label="Device Specific Documents" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_9">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Device Specific Documents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Example_Configs.html" class="md-nav__link">
|
|
Example configurations
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="SDCard_Updates.html" class="md-nav__link">
|
|
SDCard updates
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="RPi_microcontroller.html" class="md-nav__link">
|
|
RPi microcontroller
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Beaglebone.html" class="md-nav__link">
|
|
Beaglebone
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Bootloaders.html" class="md-nav__link">
|
|
Bootloaders
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Bootloader_Entry.html" class="md-nav__link">
|
|
Bootloader Entry
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="CANBUS.html" class="md-nav__link">
|
|
CANBUS
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="CANBUS_Troubleshooting.html" class="md-nav__link">
|
|
CANBUS Troubleshooting
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="TSL1401CL_Filament_Width_Sensor.html" class="md-nav__link">
|
|
TSL1401CL filament width sensor
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Hall_Filament_Width_Sensor.html" class="md-nav__link">
|
|
Hall filament width sensor
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Eddy_Probe.html" class="md-nav__link">
|
|
Eddy Current Inductive probe
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
Load Cells
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="Load_Cell.html" class="md-nav__link md-nav__link--active">
|
|
Load Cells
|
|
</a>
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#related-documentation" class="md-nav__link">
|
|
Related Documentation
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-load_cell_diagnostic" class="md-nav__link">
|
|
Using LOAD_CELL_DIAGNOSTIC
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#calibrating-a-load-cell" class="md-nav__link">
|
|
Calibrating a Load Cell
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Calibrating a Load Cell">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#applying-a-known-force-or-load" class="md-nav__link">
|
|
Applying a Known Force or Load
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#reading-force-data" class="md-nav__link">
|
|
Reading Force Data
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#taring-a-load-cell" class="md-nav__link">
|
|
Taring a Load Cell
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="Sponsors.html" class="md-nav__link">
|
|
Sponsors
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#related-documentation" class="md-nav__link">
|
|
Related Documentation
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-load_cell_diagnostic" class="md-nav__link">
|
|
Using LOAD_CELL_DIAGNOSTIC
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#calibrating-a-load-cell" class="md-nav__link">
|
|
Calibrating a Load Cell
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Calibrating a Load Cell">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#applying-a-known-force-or-load" class="md-nav__link">
|
|
Applying a Known Force or Load
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#reading-force-data" class="md-nav__link">
|
|
Reading Force Data
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#taring-a-load-cell" class="md-nav__link">
|
|
Taring a Load Cell
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
<a href="https://github.com/Klipper3d/klipper/blob/master/docs/Load_Cell.md" title="Edit this page" class="md-content__button md-icon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
|
|
</a>
|
|
|
|
|
|
<h1 id="load-cells">Load Cells<a class="headerlink" href="#load-cells" title="Permanent link">¶</a></h1>
|
|
<p>This document describes Klipper's support for load cells. Basic load cell
|
|
functionality can be used to read force data and to weigh things like filament.
|
|
A calibrated force sensor is an important part of a load cell based probe.</p>
|
|
<h2 id="related-documentation">Related Documentation<a class="headerlink" href="#related-documentation" title="Permanent link">¶</a></h2>
|
|
<ul>
|
|
<li><a href="Config_Reference.html#load_cell">load_cell Config Reference</a></li>
|
|
<li><a href="G-Codes.html#load_cell">load_cell G-Code Commands</a></li>
|
|
<li><a href="Status_Reference.html#load_cell">load_cell Status Reference</a></li>
|
|
</ul>
|
|
<h2 id="using-load_cell_diagnostic">Using <code>LOAD_CELL_DIAGNOSTIC</code><a class="headerlink" href="#using-load_cell_diagnostic" title="Permanent link">¶</a></h2>
|
|
<p>When you first connect a load cell its good practice to check for issues by
|
|
running <code>LOAD_CELL_DIAGNOSTIC</code>. This tool collects 10 seconds of data from the
|
|
load cell and resport statistics:</p>
|
|
<div class="highlight"><pre><span></span><code>$ LOAD_CELL_DIAGNOSTIC
|
|
// Collecting load cell data for 10 seconds...
|
|
// Samples Collected: 3211
|
|
// Measured samples per second: 332.0
|
|
// Good samples: 3211, Saturated samples: 0, Unique values: 900
|
|
// Sample range: [4.01% to 4.02%]
|
|
// Sample range / sensor capacity: 0.00524%
|
|
</code></pre></div>
|
|
|
|
<p>Things you can check with this data:</p>
|
|
<ul>
|
|
<li>The configured sample rate of the sensor should be close to the 'Measured
|
|
samples per second' value. If it is not you may have a configuration or wiring
|
|
issue.</li>
|
|
<li>'Saturated samples' should be 0. If you have saturated samples it means the
|
|
load sell is seeing more force than it can measure.</li>
|
|
<li>'Unique values' should be a large percentage of the 'Samples
|
|
Collected' value. If 'Unique values' is 1 it is very likely a wiring issue.</li>
|
|
<li>Tap or push on the sensor while <code>LOAD_CELL_DIAGNOSTIC</code> runs. If
|
|
things are working correctly ths should increase the 'Sample range'.</li>
|
|
</ul>
|
|
<h2 id="calibrating-a-load-cell">Calibrating a Load Cell<a class="headerlink" href="#calibrating-a-load-cell" title="Permanent link">¶</a></h2>
|
|
<p>Load cells are calibrated using the <code>LOAD_CELL_CALIBRATE</code> command. This is an
|
|
interactive calibration utility that walks you though a 3 step process:</p>
|
|
<ol>
|
|
<li>First use the <code>TARE</code> command to establish the zero force value. This is the
|
|
<code>reference_tare_counts</code> config value.</li>
|
|
<li>Next you apply a known load or force to the load cell and run the
|
|
<code>CALIBRATE GRAMS=nnn</code> command. From this the <code>counts_per_gram</code> value is
|
|
calculated. See <a href="#applying-a-known-force-or-load">the next section</a> for some
|
|
suggestions on how to do this.</li>
|
|
<li>Finally, use the <code>ACCEPT</code> command to save the results.</li>
|
|
</ol>
|
|
<p>You can cancel the calibration process at any time with <code>ABORT</code>.</p>
|
|
<h3 id="applying-a-known-force-or-load">Applying a Known Force or Load<a class="headerlink" href="#applying-a-known-force-or-load" title="Permanent link">¶</a></h3>
|
|
<p>The <code>CALIBRATE GRAMS=nnn</code> step can be accomplished in a number of ways. If your
|
|
load cell is under a platform like a bed or filament holder it might be easiest
|
|
to put a known mass on the platform. E.g. you could use a couple of 1KG filament
|
|
spools.</p>
|
|
<p>If your load cell is in the printer's toolhead a different approach is easier.
|
|
Put a digital scale on the printers bed and gently lower the toolhead onto the
|
|
scale (or raise the bed into the toolhead if your bed moves). You may be able to
|
|
do this using the <code>FORCE_MOVE</code> command. But more likely you will have to
|
|
manually moving the z axis with the motors off until the toolhead presses on the
|
|
scale.</p>
|
|
<p>A good calibration force would ideally be a large percentage of the load cell's
|
|
rated capacity. E.g. if you have a 5Kg load cell you would ideally calibrate it
|
|
with a 5kg mass. This might work well with under-bed sensors that have to
|
|
support a lot of weight. For toolhead probes this may not be a load that your
|
|
printer bed or toolhead can tolerate without damage. Do try to use at least 1Kg
|
|
of force, most printers should tolerate this without issue.</p>
|
|
<p>When calibrating make careful note of the values reported:</p>
|
|
<div class="highlight"><pre><span></span><code>$ CALIBRATE GRAMS=555
|
|
// Calibration value: -2.78% (-59803108), Counts/gram: 73039.78739,
|
|
Total capacity: +/- 29.14Kg
|
|
</code></pre></div>
|
|
|
|
<p>The <code>Total capacity</code> should be close to the theoretical rating of the load cell
|
|
based on the sensor's capacity. If it is much larger you could have used a
|
|
higher gain setting in the sensor or a more sensitive load cell. This isn't as
|
|
critical for 32bit and 24bit sensors but is much more critical for low bit width
|
|
sensors.</p>
|
|
<h2 id="reading-force-data">Reading Force Data<a class="headerlink" href="#reading-force-data" title="Permanent link">¶</a></h2>
|
|
<p>Force data can be read with a GCode command:</p>
|
|
<div class="highlight"><pre><span></span><code>LOAD_CELL_READ
|
|
// 10.6g (1.94%)
|
|
</code></pre></div>
|
|
|
|
<p>Data is also continuously read and can be consumed from the load_cell printer
|
|
object in a macro:</p>
|
|
<div class="highlight"><pre><span></span><code>{% set grams = printer.load_cell.force_g %}
|
|
</code></pre></div>
|
|
|
|
<p>This provides an average force over the last 1 second, similar to how
|
|
temperature sensors work.</p>
|
|
<h2 id="taring-a-load-cell">Taring a Load Cell<a class="headerlink" href="#taring-a-load-cell" title="Permanent link">¶</a></h2>
|
|
<p>Taring, sometimes called zeroing, sets the current weight reported by the
|
|
load_cell to 0. This is useful for measuring relative to a known weight. e.g.
|
|
when measuring a filament spool, using <code>LOAD_CELL_TARE</code> sets the weight to 0.
|
|
Then as filament is printed the load_cell will report the weight of the
|
|
filament used.</p>
|
|
<div class="highlight"><pre><span></span><code>LOAD_CELL_TARE
|
|
// Load cell tare value: 5.32% (445903)
|
|
</code></pre></div>
|
|
|
|
<p>The current tare value is reported in the printers status and can be read in
|
|
a macro:</p>
|
|
<div class="highlight"><pre><span></span><code>{% set tare_counts = printer.load_cell.tare_counts %}
|
|
</code></pre></div>
|
|
|
|
<h1 id="load-cell-probes">Load Cell Probes<a class="headerlink" href="#load-cell-probes" title="Permanent link">¶</a></h1>
|
|
<h2 id="related-documentation_1">Related Documentation<a class="headerlink" href="#related-documentation_1" title="Permanent link">¶</a></h2>
|
|
<ul>
|
|
<li><a href="Config_Reference.html#load_cell_probe">load_cell_probe Config Reference</a></li>
|
|
<li><a href="G-Codes.html#load_cell_probe">load_cell_probe G-Code Commands</a></li>
|
|
<li><a href="Status_Reference.html#load_cell_probe">load_cell_probe Statuc Reference</a></li>
|
|
</ul>
|
|
<h2 id="load-cell-probe-safety">Load Cell Probe Safety<a class="headerlink" href="#load-cell-probe-safety" title="Permanent link">¶</a></h2>
|
|
<p>Because load cells are a direct nozzle contact probe there is a risk of
|
|
damage to your printer if too much force is used. The load cell probing system
|
|
includes a number of safety checks that try to keep your machine safe from
|
|
excessive force to the toolhead. It's important to understand what they are
|
|
and how they work as you can defeat most of them with poorly chosen config
|
|
values.</p>
|
|
<h4 id="calibration-check">Calibration Check<a class="headerlink" href="#calibration-check" title="Permanent link">¶</a></h4>
|
|
<p>Every time a homing move starts, load_cell_probe checks
|
|
that the load_cell is calibrated. If not it will stop the move with an error:
|
|
<code>!! Load Cell not calibrated</code>.</p>
|
|
<h4 id="counts_per_gram"><code>counts_per_gram</code><a class="headerlink" href="#counts_per_gram" title="Permanent link">¶</a></h4>
|
|
<p>This setting is used to convert raw sensor counts into grams. All the safety
|
|
limits are in gram units for your convenience. If the <code>counts_per_gram</code>
|
|
setting is not accurate you can easily exceed the safe force on the toolhead.
|
|
You should never guess this value. Use <code>LOAD_CELL_CALIBRATE</code> to find your load
|
|
cells actual <code>counts_per_gram</code>.</p>
|
|
<h4 id="trigger_force"><code>trigger_force</code><a class="headerlink" href="#trigger_force" title="Permanent link">¶</a></h4>
|
|
<p>This is the force in grams that triggers the endstop to halt the homing move.
|
|
When a homing move starts the endstop tares itself with the current reading
|
|
from the load cell. <code>trigger_force</code> is measured from that tare value. There is
|
|
always some overshoot of this value when the probe collides with the bed,
|
|
so be conservative. e.g. a setting of 100g could result in 350g of peak force
|
|
before the toolhead stops. This overshoot will increase with faster probing
|
|
<code>speed</code>, a low ADC sample rate or <a href="Multi_MCU_Homing.html">multi MCU homing</a>.</p>
|
|
<h4 id="reference_tare_counts"><code>reference_tare_counts</code><a class="headerlink" href="#reference_tare_counts" title="Permanent link">¶</a></h4>
|
|
<p>This is the baseline tare value that is set by <code>LOAD_CELL_CALIBRATE</code>.
|
|
This value works with <code>force_safety_limit</code> to limit the maximum force on the
|
|
toolhead.</p>
|
|
<h4 id="force_safety_limit"><code>force_safety_limit</code><a class="headerlink" href="#force_safety_limit" title="Permanent link">¶</a></h4>
|
|
<p>This is the maximum absolute force, relative to <code>reference_tare_counts</code>,
|
|
that the probe will allow while homing or probing. If the MCU sees this
|
|
force exceeded it will shut down the printer with the error <code>!! Load cell
|
|
endstop: too much force!</code>. There are a number of ways this can be triggered:</p>
|
|
<p>The first risk this protects against is picking too large of a value for
|
|
<code>drift_filter_cutoff_frequency</code>. This can cause the drift filter to filter out
|
|
a probe event and continue the homing move. If this happens the
|
|
<code>force_safety_limit</code> acts as a backup protection.</p>
|
|
<p>The second problem is probing repeatedly in one place. Klipper does not retract
|
|
the probe when doing a single <code>PROBE</code> command. This can result
|
|
in force applied to the toolhead at the end of a probing cycle. Because
|
|
external forces can vary greatly between probing locations,
|
|
<code>load_cell_probe</code> performs a tare before beginning each probe. If you repeat
|
|
the <code>PROBE</code> command, load_cell_probe will tare the endstop at the current force.
|
|
Multiple cycles of this will result in ever-increasing force on the toolhead.
|
|
<code>force_safety_limit</code> stops this cycle from running out of control.</p>
|
|
<p>Another way this run-away can happen is damage to a strain gauge. If the metal
|
|
part is permanently bent it wil change the <code>reference_tare_counts</code> of the
|
|
device. This puts the starting tare value much closer to the limit making it
|
|
more likely to be violated. You want to be notified if this is happening
|
|
because your hardware has been permanently damaged.</p>
|
|
<p>The final way this can be triggered is due to temperature changes. If your
|
|
strain gauges are heated their <code>reference_tare_counts</code> may be very different
|
|
at ambient temperature vs operating temperature. In this case you may need
|
|
to increase the <code>force_safety_limit</code> to allow for thermal changes.</p>
|
|
<h4 id="load-cell-endstop-watchdog-task">Load Cell Endstop Watchdog Task<a class="headerlink" href="#load-cell-endstop-watchdog-task" title="Permanent link">¶</a></h4>
|
|
<p>When homing the load_cell_endstop starts a task on the MCU to trac
|
|
measurements arriving from the sensor. If the sensor fails to send
|
|
measurements for 2 sample periods the watchdog will shut down the printer
|
|
with an error <code>!! LoadCell Endstop timed out waiting on ADC data</code>.</p>
|
|
<p>If this happens, the most likely cause is a fault from the ADC. Inadequate
|
|
grounding of your printer can be the root cause. The frame, power supply
|
|
case and pint bed should all be connected to ground. You may need to ground
|
|
the frame in multiple places. Anodized aluminum extrusions do not conduct
|
|
electricity well. You might need to sand the area where the grounding wire
|
|
is attached to make good electrical contact.</p>
|
|
<h2 id="load-cell-probe-setup">Load Cell Probe Setup<a class="headerlink" href="#load-cell-probe-setup" title="Permanent link">¶</a></h2>
|
|
<p>This section covers the process for commissioning a load cell probe.</p>
|
|
<h3 id="verify-the-load-cell-first">Verify the Load Cell First<a class="headerlink" href="#verify-the-load-cell-first" title="Permanent link">¶</a></h3>
|
|
<p>A <code>[load_cell_probe]</code> is also a <code>[load_cell]</code> and G-code commands related to
|
|
<code>[load_cell]</code> work with <code>[load_cell_probe]</code>. Before attempting to use a load
|
|
cell probe, follow the directions for
|
|
<a href="Load_Cell.html#calibrating-a-load-cell">calibrating the load cell</a> with
|
|
<code>CALIBRATE_LOAD_CELL</code> and checking its operation with <code>LOAD_CELL_DIAGNOSTIC</code>.</p>
|
|
<h3 id="verify-probe-operation-with-load_cell_test_tap">Verify Probe Operation With LOAD_CELL_TEST_TAP<a class="headerlink" href="#verify-probe-operation-with-load_cell_test_tap" title="Permanent link">¶</a></h3>
|
|
<p>Use the command <code>LOAD_CELL_TEST_TAP</code> to test the operation of the load cell
|
|
probe before actually trying to probe with it. This command detects taps,
|
|
just like the PROBE command, but it does not move the z axis. By default, it
|
|
listens for 3 taps before ending the test. You have 30 seconds to do each
|
|
tap, if no taps are detected the command will time out.</p>
|
|
<p>If this test fails, check your configuration and <code>LOAD_CELL_DIAGNOSTIC</code>
|
|
carefully to look for issues.</p>
|
|
<p>Load cell probes don't support the <code>QUERY_ENDSTOPS</code> or <code>QUERY_PROBE</code>
|
|
commands. Use <code>LOAD_CELL_TEST_TAP</code> for testing functionality before probing.</p>
|
|
<h3 id="homing-macros">Homing Macros<a class="headerlink" href="#homing-macros" title="Permanent link">¶</a></h3>
|
|
<p>Load cell probe is not an endstop and doesn't support <code>endstop:
|
|
prove:z_virtual_endstop</code>. For the time being you'll need to configure your z
|
|
axis with an MCU pin as its endstop. You won't actually be using the pin but
|
|
for the time being you have to configure something.</p>
|
|
<p>To home the axis with just the probe you need to set up a custom homing
|
|
macro. This requires setting up
|
|
<a href="Config_Reference.html#homing_override">homing_override</a>.</p>
|
|
<p>Here is a simple macro that can accomplish this. Note that the
|
|
<code>_HOME_Z_FROM_LAST_PROBE</code> macro has to be separate because of the way macros
|
|
work. The sub-call is needed so that the <code>_HOME_Z_FROM_LAST_PROBE</code> macro can
|
|
see the result of the probe in <code>printer.probe.last_z_result</code>.</p>
|
|
<div class="highlight"><pre><span></span><code>[gcode_macro _HOME_Z_FROM_LAST_PROBE]
|
|
gcode:
|
|
<span class="w"> </span>{% set z_probed = printer.probe.last_z_result %}
|
|
<span class="w"> </span>{% set z_position = printer.toolhead.position[2] %}
|
|
<span class="w"> </span>{% set z_actual = z_position - z_probed %}
|
|
<span class="w"> </span>SET_KINEMATIC_POSITION Z={z_actual}
|
|
|
|
[gcode_macro _HOME_Z]
|
|
gcode:
|
|
<span class="w"> </span>SET_GCODE_OFFSET Z=0 # load cell probes dont need a Z offset
|
|
<span class="w"> </span># position toolhead for homing Z, edit for your printers size
|
|
<span class="w"> </span>#G90 # absolute move
|
|
<span class="w"> </span>#G1 Y50 X50 F{5 * 60} # move to X/Y position for homing
|
|
|
|
<span class="w"> </span># soft home the z axis to its limit so it can be moved:
|
|
<span class="w"> </span>SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum[2]}
|
|
|
|
<span class="w"> </span># Fast approach and tap
|
|
<span class="w"> </span>PROBE PROBE_SPEED={5 * 60} # override the speed for faster homing
|
|
<span class="w"> </span>_HOME_Z_FROM_LAST_PROBE
|
|
|
|
<span class="w"> </span># lift z to 2mm
|
|
<span class="w"> </span>G91 # relative move
|
|
<span class="w"> </span>G1 Z2 F{5 * 60}
|
|
|
|
<span class="w"> </span># probe at standard speed
|
|
<span class="w"> </span>PROBE
|
|
<span class="w"> </span>_HOME_Z_FROM_LAST_PROBE
|
|
|
|
<span class="w"> </span># lift z to 10mm for clearance
|
|
<span class="w"> </span>G91 # relative move
|
|
<span class="w"> </span>G1 Z10 F{5 * 60}
|
|
</code></pre></div>
|
|
|
|
<h3 id="suggested-probing-temperature">Suggested Probing Temperature<a class="headerlink" href="#suggested-probing-temperature" title="Permanent link">¶</a></h3>
|
|
<p>Currently, we suggest keeping the nozzle temperature below the level that causes
|
|
the filament to ooze while homing and probing. 140C is a good starting
|
|
point. This temperature is also low enough not to scar PEI build surfaces.</p>
|
|
<p>Fouling of the nozzle and the print bed due to oozing filament is the #1 source
|
|
of probing error with the load cell probe. Klipper does not yet have a universal
|
|
way to detect poor quality taps due to filament ooze. The existing code may
|
|
decide that a tap is valid when it is of poor quality. Classifying these poor
|
|
quality taps is an area of active research.</p>
|
|
<p>Klipper also lacks support for re-locating a probe point if the
|
|
location has become fouled by filament ooze. Modules like <code>quad_gantry_level</code>
|
|
will repeatedly probe the same coordinates even if a probe previously failed
|
|
there.</p>
|
|
<p>Give the above it is strongly suggested not to probe at printing temperatures.</p>
|
|
<h3 id="hot-nozzle-protection">Hot Nozzle Protection<a class="headerlink" href="#hot-nozzle-protection" title="Permanent link">¶</a></h3>
|
|
<p>The Voron project has a great macro for protecting your print surface from the
|
|
hot nozzle. See <a href="https://github.com/VoronDesign/Voron-Tap/blob/main/config/tap_klipper_instructions.md">Voron Tap's
|
|
<code>activate_gcode</code></a></p>
|
|
<p>It is highly suggested to add something like this to your config.</p>
|
|
<h3 id="nozzle-cleaning">Nozzle Cleaning<a class="headerlink" href="#nozzle-cleaning" title="Permanent link">¶</a></h3>
|
|
<p>Before probing the nozzle should be clean. You could do this manually before
|
|
every print. You can also implement a nozzle scrubber and automate the process.
|
|
Here is a suggested sequence:</p>
|
|
<ol>
|
|
<li>Wait for the nozzle to heat up to probing temp (e.g. <code>M109 S140</code>)</li>
|
|
<li>Home the machine (<code>G28</code>)</li>
|
|
<li>Scrub the nozzle on a brush</li>
|
|
<li>Heat soak the print bed</li>
|
|
<li>Perform probing tasks: QGL, bed mesh etc.</li>
|
|
</ol>
|
|
<h3 id="temperature-compensation-for-nozzle-growth">Temperature Compensation for Nozzle Growth<a class="headerlink" href="#temperature-compensation-for-nozzle-growth" title="Permanent link">¶</a></h3>
|
|
<p>If you are probing at a safe temperature, the nozzle will expand after
|
|
heating to printing temperatures. This will cause the nozzle to get longer
|
|
and closer to the print surface. You can compensate for this with
|
|
<a href="Config_Reference.html#z_thermal_adjust">[z_thermal_adjust]</a>. This adjustment will
|
|
work across a range of printing
|
|
temperatures from PLA to PC.</p>
|
|
<h4 id="calculating-the-temp_coeff-for-z_thermal_adjust">Calculating the <code>temp_coeff</code> for <code>[z_thermal_adjust]</code><a class="headerlink" href="#calculating-the-temp_coeff-for-z_thermal_adjust" title="Permanent link">¶</a></h4>
|
|
<p>The easiest way to do this is to measure at 2 different temperatures.
|
|
Ideally these should be the upper and lower limits of the printing
|
|
temperature range. E.g. 180C and 290C. You can perform a <code>PROBE_ACCURACY</code> at
|
|
both temperatures and then calculate the difference of the <code>average z</code> at both.</p>
|
|
<p>The adjustment value is the change in nozzle length divided by the change in
|
|
temperature. e.g.</p>
|
|
<div class="highlight"><pre><span></span><code>temp_coeff = -0.05 / (290 - 180) = -0.00045455
|
|
</code></pre></div>
|
|
|
|
<p>The expected result is a negative number. Positive values for <code>temp_coeff</code> move
|
|
the nozzle closer to the bed and negative values move it further away.
|
|
Expect to have to move the nozzle further away as it gets longer when hot.</p>
|
|
<h4 id="configure-z_thermal_adjust">Configure <code>[z_thermal_adjust]</code><a class="headerlink" href="#configure-z_thermal_adjust" title="Permanent link">¶</a></h4>
|
|
<p>Set up z_thermal_adjust to reference the <code>extruder</code> as the source of temperature
|
|
data. E.g.:</p>
|
|
<div class="highlight"><pre><span></span><code>[z_thermal_adjust nozzle]
|
|
temp_coeff=-0.00045455
|
|
sensor_type: temperature_combined
|
|
sensor_list: extruder
|
|
combination_method: max
|
|
min_temp: 0
|
|
max_temp: 400
|
|
max_z_adjustment: 0.1
|
|
</code></pre></div>
|
|
|
|
<h2 id="continuous-tare-filters-for-toolhead-load-cells">Continuous Tare Filters for Toolhead Load Cells<a class="headerlink" href="#continuous-tare-filters-for-toolhead-load-cells" title="Permanent link">¶</a></h2>
|
|
<p>Klipper implements a configurable IIR filter on the MCU to provide continuous
|
|
tareing of the load cell while probing. Continuous taring means the 0 value
|
|
moves with drift caused by external factors like bowden tubes and thermal
|
|
changes. This is aimed at toolhead sensors and moving beds that experience lots
|
|
of external forces that change while probing.</p>
|
|
<h3 id="installing-scipy">Installing SciPy<a class="headerlink" href="#installing-scipy" title="Permanent link">¶</a></h3>
|
|
<p>The filtering code uses the excellent <a href="https://scipy.org/">SciPy</a> library to
|
|
compute the filter coefficients based on the values your enter into the config.</p>
|
|
<p>Pre-compiled SciPi builds are available for Python 3 on 32 bit Raspberry Pi
|
|
systems. 32 bit + Python 3 is strongly recommended because it will streamline
|
|
your installation experience. It does work with Python 2 but installation can
|
|
take 30+ minutes and require installing additional tools.</p>
|
|
<div class="highlight"><pre><span></span><code>~/klippy-env/bin/pip<span class="w"> </span>install<span class="w"> </span>scipy
|
|
</code></pre></div>
|
|
|
|
<h3 id="filter-workbench">Filter Workbench<a class="headerlink" href="#filter-workbench" title="Permanent link">¶</a></h3>
|
|
<p>The filter parameters should be selected based on drift seen on the printer
|
|
during normal operation. A Jupyter notebook is provided in scripts,
|
|
<a href="https://github.com/Klipper3d/klipper/blob/master/scripts/filter_workbench.ipynb">filter_workbench.ipynb</a>, to perform a
|
|
detailed investigation with real captured data and FFTs.</p>
|
|
<h3 id="filtering-suggestions">Filtering Suggestions<a class="headerlink" href="#filtering-suggestions" title="Permanent link">¶</a></h3>
|
|
<p>For those just trying to get a filter working follow these suggestions:</p>
|
|
<ul>
|
|
<li>The only essential option is <code>drift_filter_cutoff_frequency</code>. A conservative
|
|
starting value is <code>0.5</code>Hz. Prusa shipped the MK4 with a setting of <code>0.8</code>Hz and
|
|
the XL with <code>11.2</code>Hz. This is probably a safe range to experiment with. This
|
|
value should be increased only until normal drift due to bowden tube force is
|
|
eliminated. Setting this value too high will result in slow triggering and
|
|
excess force going through the toolhead.</li>
|
|
<li>Keep <code>trigger_force</code> low. The default is <code>75</code>g. The drift filter keeps the
|
|
internal grams value very close to 0 so a large trigger force is not needed.</li>
|
|
<li>Keep <code>force_safety_limit</code> to a conservative value. The default value is 2Kg
|
|
and should keep your toolhead safe while experimenting. If you hit this limit
|
|
the <code>drift_filter_cutoff_frequency</code> value may be too high.</li>
|
|
</ul>
|
|
<h2 id="suggestions-for-load-cell-tool-boards">Suggestions for Load Cell Tool Boards<a class="headerlink" href="#suggestions-for-load-cell-tool-boards" title="Permanent link">¶</a></h2>
|
|
<p>This section covers suggestions for those developing toolhead boards that want
|
|
to support [load_cell_probe]</p>
|
|
<h3 id="adc-sensor-selection-board-development-hints">ADC Sensor Selection & Board Development Hints<a class="headerlink" href="#adc-sensor-selection-board-development-hints" title="Permanent link">¶</a></h3>
|
|
<p>Ideally a sensor would meet these criteria:</p>
|
|
<ul>
|
|
<li>At least 24 bits wide</li>
|
|
<li>Use SPI communications</li>
|
|
<li>Has a pin can be used to indicate sample ready without SPI communications.
|
|
This is often called the "data ready" or "DRDY" pin. Checking a pin is much
|
|
faster than running an SPI query.</li>
|
|
<li>Has a programmable gain amplifier gain setting of 128. This should eliminate
|
|
the need for a separate amplifier.</li>
|
|
<li>Indicates via SPI if the sensor has been reset. Detecting resets avoids
|
|
timing errors in homing and using noisy data at startup. It can also help
|
|
users
|
|
track down wiring and grounding issues.</li>
|
|
<li>A selectable sample rate between 350Hz and 2Khz. Very high sample rates don't
|
|
turn out to be beneficial in our 3D printers because they produce so much
|
|
noise
|
|
when moving fast. Sample rates below 250Hz will require slower probing speeds.
|
|
They also increase the force on the toolhead due to longer delays between
|
|
measurements. E.g. a 500Hz sensor moving at 5mm/s has the same safety factor
|
|
as
|
|
a 100Hz sensor moving at only 1mm/s.</li>
|
|
<li>If designing for under-bed applications, and you want to sense multiple load
|
|
cells, use a chip that can sample all of its inputs simultaneously. Multiplex
|
|
ADCs that require switching channels have a settling of several samples after
|
|
each channel switch making them unsuitable for probing applications.</li>
|
|
</ul>
|
|
<p>Implementing support for a new sensor chip is not particularly difficult with
|
|
Klipper's <code>bulk_sensor</code> and <code>load_cell_endstop</code> infrastructure.</p>
|
|
<h3 id="5v-power-filtering">5V Power Filtering<a class="headerlink" href="#5v-power-filtering" title="Permanent link">¶</a></h3>
|
|
<p>It is strongly suggested to use larger capacitors than specified by the ADC chip
|
|
manufacturer. ADC chips are usually targeted at low noise environments, like
|
|
battery powered devices. Sensor manufacturers suggested application notes
|
|
generally assume a quiet power supply. Treat their suggested capacitor values as
|
|
minimums.</p>
|
|
<p>3D printers put huge amounts of noise onto the 5V bus and this can ruin the
|
|
sensor's accuracy. Test the sensor on the board with a typical 3D printer power
|
|
supply and active stepper drivers before deciding on smoothing capacitor sizes.</p>
|
|
<h3 id="grounding-ground-planes">Grounding & Ground Planes<a class="headerlink" href="#grounding-ground-planes" title="Permanent link">¶</a></h3>
|
|
<p>Analog ADC chips contain components that are very vulnerable to noise and
|
|
ESD. A large ground plane on the first board layer under the chip can help with
|
|
noise. Keep the chip away from power sections and DC to DC converters. The board
|
|
should have proper grounding back to the DC supply.</p>
|
|
<h3 id="hx711-and-hx717-notes">HX711 and HX717 Notes<a class="headerlink" href="#hx711-and-hx717-notes" title="Permanent link">¶</a></h3>
|
|
<p>This sensor is popular because of its low cost and availability in the
|
|
supply chain. However, this is a sensor with some drawbacks:</p>
|
|
<ul>
|
|
<li>The HX71x sensors use bit-bang communication which has a high overhead on the
|
|
MCU. Using a sensor that communicates via SPI would save resources on the tool
|
|
board's CPU.</li>
|
|
<li>The HX71x lacks a way to communicate reset events to the MCU. Klipper detects
|
|
resets with a timing heuristic but this is not ideal. Resets indicate a
|
|
problem with wiring or grounding.</li>
|
|
<li>For probing applications the HX717 version is strongly preferred because
|
|
of its higher sample rate (320 vs 80). Probing speed on the HX711 should be
|
|
limited to less than 2mm/s.</li>
|
|
<li>The sample rate on the HX71x cannot be set from klipper's config. If you have
|
|
the 10SPS version of the sensor (which is widely distributed) it needs to
|
|
be physically re-wired to run at 80SPS.</li>
|
|
</ul>
|
|
|
|
|
|
</article>
|
|
</div>
|
|
</div>
|
|
|
|
<a href="#" class="md-top md-icon" data-md-component="top" data-md-state="hidden">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg>
|
|
Back to top
|
|
</a>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<nav class="md-footer__inner md-grid" aria-label="Footer">
|
|
|
|
|
|
<a href="Eddy_Probe.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Eddy Current Inductive probe" rel="prev">
|
|
<div class="md-footer__button md-icon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
|
</div>
|
|
<div class="md-footer__title">
|
|
<div class="md-ellipsis">
|
|
<span class="md-footer__direction">
|
|
Previous
|
|
</span>
|
|
Eddy Current Inductive probe
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
|
|
<a href="Sponsors.html" class="md-footer__link md-footer__link--next" aria-label="Next: Sponsors" rel="next">
|
|
<div class="md-footer__title">
|
|
<div class="md-ellipsis">
|
|
<span class="md-footer__direction">
|
|
Next
|
|
</span>
|
|
Sponsors
|
|
</div>
|
|
</div>
|
|
<div class="md-footer__button md-icon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
|
|
</div>
|
|
</a>
|
|
|
|
</nav>
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
<script id="__config" type="application/json">{"base": ".", "features": ["navigation.top", "search.suggest", "search.highlight", "search.share"], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "assets/javascripts/workers/search.0bbba5b5.min.js"}</script>
|
|
|
|
|
|
<script src="assets/javascripts/bundle.e1a181d9.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |