klipper/Eddy_Probe.html

1833 lines
No EOL
53 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>Eddy Current Inductive probe - 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&&gtag("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="#eddy-current-inductive-probe" 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">
Eddy Current Inductive probe
</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 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">
Eddy Current Inductive probe
<span class="md-nav__icon md-icon"></span>
</label>
<a href="Eddy_Probe.html" class="md-nav__link md-nav__link--active">
Eddy Current Inductive probe
</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="#homing-correction-macros" class="md-nav__link">
Homing correction macros
</a>
</li>
<li class="md-nav__item">
<a href="#tap-calibration" class="md-nav__link">
Tap calibration
</a>
</li>
<li class="md-nav__item">
<a href="#thermal-drift-calibration" class="md-nav__link">
Thermal Drift Calibration
</a>
</li>
<li class="md-nav__item">
<a href="#errors-description" class="md-nav__link">
Errors description
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="Load_Cell.html" class="md-nav__link">
Load Cells
</a>
</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="#homing-correction-macros" class="md-nav__link">
Homing correction macros
</a>
</li>
<li class="md-nav__item">
<a href="#tap-calibration" class="md-nav__link">
Tap calibration
</a>
</li>
<li class="md-nav__item">
<a href="#thermal-drift-calibration" class="md-nav__link">
Thermal Drift Calibration
</a>
</li>
<li class="md-nav__item">
<a href="#errors-description" class="md-nav__link">
Errors description
</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/Eddy_Probe.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="eddy-current-inductive-probe">Eddy Current Inductive probe<a class="headerlink" href="#eddy-current-inductive-probe" title="Permanent link">&para;</a></h1>
<p>This document describes how to use an
<a href="https://en.wikipedia.org/wiki/Eddy_current">eddy current</a> inductive
probe in Klipper.</p>
<p>Currently, an eddy current probe can not precisely home Z (i.e., <code>G28 Z</code>).
The sensor can precisely do Z probing (i.e., <code>PROBE ...</code>).
Look at the <a href="Eddy_Probe.html#homing-correction-macros">homing correction</a>
for further details.</p>
<p>Start by declaring a
<a href="Config_Reference.html#probe_eddy_current">probe_eddy_current config section</a>
in the printer.cfg file. It is recommended to set the <code>z_offset</code> to
0.5mm. It is typical for the sensor to require an <code>x_offset</code> and
<code>y_offset</code>. If these values are not known, one should estimate the
values during initial calibration.</p>
<p>The first step in calibration is to determine the appropriate
DRIVE_CURRENT for the sensor. Home the printer and navigate the
toolhead so that the sensor is near the center of the bed and is about
20mm above the bed. Then issue an <code>LDC_CALIBRATE_DRIVE_CURRENT
CHIP=&lt;config_name&gt;</code> command. For example, if the config section was
named <code>[probe_eddy_current my_eddy_probe]</code> then one would run
<code>LDC_CALIBRATE_DRIVE_CURRENT CHIP=my_eddy_probe</code>. This command should
complete in a few seconds. After it completes, issue a <code>SAVE_CONFIG</code>
command to save the results to the printer.cfg and restart.</p>
<p>Eddy current is used as a proximity/distance sensor (similar to a laser ruler).
The second step in calibration is to correlate the sensor readings to
the corresponding Z heights. Home the printer and navigate the
toolhead so that the nozzle is near the center of the bed. Then run a
<code>PROBE_EDDY_CURRENT_CALIBRATE CHIP=my_eddy_probe</code> command. Once the
tool starts, follow the steps described at
<a href="Bed_Level.html#the-paper-test">"the paper test"</a> to determine the
actual distance between the nozzle and bed at the given location. Once
those steps are complete one can <code>ACCEPT</code> the position. The tool will
then move the toolhead so that the sensor is above the point where the
nozzle used to be and run a series of movements to correlate the
sensor to Z positions. This will take a couple of minutes. After the
tool completes it will output the sensor performance data:</p>
<div class="highlight"><pre><span></span><code>probe_eddy_current: noise 0.000642mm, MAD_Hz=11.314 in 2525 queries
Total frequency range: 45000.012 Hz
z_offset: 0.250 # noise 0.000200mm, MAD_Hz=11.000
z_offset: 0.530 # noise 0.000300mm, MAD_Hz=12.000
z_offset: 1.010 # noise 0.000400mm, MAD_Hz=14.000
z_offset: 2.010 # noise 0.000600mm, MAD_Hz=12.000
z_offset: 3.010 # noise 0.000700mm, MAD_Hz=9.000
</code></pre></div>
<p>issue a <code>SAVE_CONFIG</code> command to save the results to
the printer.cfg and restart.</p>
<p>After initial calibration it is a good idea to verify that the
<code>x_offset</code> and <code>y_offset</code> are accurate. Follow the steps to
<a href="Probe_Calibrate.html#calibrating-probe-x-and-y-offsets">calibrate probe x and y offsets</a>.
If either the <code>x_offset</code> or <code>y_offset</code> is modified then be sure to run
the <code>PROBE_EDDY_CURRENT_CALIBRATE</code> command (as described above) after
making the change.</p>
<p>Once calibration is complete, one may use all the standard Klipper
tools that use a Z probe.</p>
<p>Note that eddy current sensors (and inductive probes in general) are
susceptible to "thermal drift". That is, changes in temperature can
result in changes in reported Z height. Changes in either the bed
surface temperature or sensor hardware temperature can skew the
results. It is important that calibration and probing is only done
when the printer is at a stable temperature.</p>
<h2 id="homing-correction-macros">Homing correction macros<a class="headerlink" href="#homing-correction-macros" title="Permanent link">&para;</a></h2>
<p>Because of current limitations, homing and probing
are implemented differently for the eddy sensors.
As a result, homing suffers from an offset error,
while probing handles this correctly.</p>
<p>To correct the homing offset.
One can use the suggested macro inside the homing override or
inside the starting G-Code.</p>
<p><a href="Config_Reference.html#force_move">Force move</a> section
have to be defined in the config.</p>
<div class="highlight"><pre><span></span><code>[gcode_macro _RELOAD_Z_OFFSET_FROM_PROBE]
gcode:
{% set Z = printer.toolhead.position.z %}
SET_KINEMATIC_POSITION Z={Z - printer.probe.last_probe_position.z}
[gcode_macro SET_Z_FROM_PROBE]
gcode:
{% set METHOD = params.METHOD | default(&quot;automatic&quot;) %}
PROBE METHOD={METHOD}
_RELOAD_Z_OFFSET_FROM_PROBE
G0 Z5
</code></pre></div>
<h2 id="tap-calibration">Tap calibration<a class="headerlink" href="#tap-calibration" title="Permanent link">&para;</a></h2>
<p>The Eddy probe measures the resonance frequency of the coil.
By the absolute value of the frequency and the calibration curve from
<code>PROBE_EDDY_CURRENT_CALIBRATE</code>, it is therefore possible to detect
where the bed is without physical contact.</p>
<p>By use of the same knowledge, we know that frequency changes with
the distance. It is possible to track that change in real time and
detect the time/position where contact happens - a change of frequency
starts to change in a different way.
For example, stopped to change because of the collision.</p>
<p>Because eddy output is not perfect: there is sensor noise,
mechanical oscillation, thermal expansion and other discrepancies,
it is required to calibrate the stop threshold for your machine.
Practically, it ensures that the Eddy's output data absolute value
change per second (velocity) is high enough - higher than the noise level,
and that upon collision it always decreases by at least this value.</p>
<div class="highlight"><pre><span></span><code>[probe_eddy_current my_probe]
# eddy probe configuration...
# Recommended starting values for the tap
#samples: 3
#samples_tolerance: 0.025
#samples_tolerance_retries: 3
tap_threshold: 0 # 0 means tap is disabled
</code></pre></div>
<p>Before setting it to any other value, it is necessary to install <code>scipy</code>:</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>
<p>The suggested calibration routine works as follows:</p>
<ol>
<li>Home Z</li>
<li>Place the toolhead at the center of the bed.</li>
<li>Move the Z axis far away (30 mm, for example).</li>
<li>Run <code>PROBE METHOD=tap</code></li>
<li>If it stops before colliding, increase the <code>tap_threshold</code>.</li>
</ol>
<p>Repeat until the nozzle softly touches the bed.
This is easier to do with a clean nozzle and
by visually inspecting the process.</p>
<p>You can streamline the process by placing the toolhead in the center once.
Then, upon config restart, trick the machine into thinking that Z is homed.</p>
<div class="highlight"><pre><span></span><code>SET_KINEMATIC_POSITION X=&lt;middle&gt; Y=&lt;middle&gt; Z=0
G0 Z5 # Optional retract
PROBE METHOD=tap
</code></pre></div>
<p>Here is an example sequence of threshold values to test:</p>
<div class="highlight"><pre><span></span><code>1 -&gt; 5 -&gt; 10 -&gt; 20 -&gt; 40 -&gt; 80 -&gt; 160
160 -&gt; 120 -&gt; 100
</code></pre></div>
<p>Your value will normally be between those.</p>
<ul>
<li>Too high a value leaves a less safe margin for early collision -
if something is between the nozzle and the bed, or if the nozzle
is too close to the bed before the tap.</li>
<li>Too low - can make the toolhead stop in mid-air
because of the noise.</li>
</ul>
<p>You can estimate the initial threshold value by analyzing your own
calibration routine output:</p>
<div class="highlight"><pre><span></span><code>probe_eddy_current: noise 0.000642mm, MAD_Hz=11.314
...
z_offset: 1.010 # noise 0.000400mm, MAD_Hz=14.000
</code></pre></div>
<p>The estimation will be:</p>
<div class="highlight"><pre><span></span><code>MAD_Hz * 2
11.314 * 2 = 22.628
</code></pre></div>
<p>To further fine tune threshold, one can use <code>PROBE_ACCURACY METHOD=tap</code>.
The range is expected to be about 0.02 mm,
with the default probe speed of 5 mm/s.
Elevated coil temperature may increase noise and may require additional tuning.</p>
<p>You can validate the tap precision by measuring the paper thickness
from the initial calibration guide. It is expected to be ~0.1mm.</p>
<p>Tap precision is limited by the sampling frequency and
the speed of the descent.
If you take 24 photos per second of the moving train, you can only estimate
where the train was between photos.</p>
<p>It is possible to reduce the descending speed. It may require decrease of
absolute <code>tap_threshold</code> value.</p>
<p>It is possible to tap over non-conductive surfaces as long as there is metal
behind it within the sensor's sensitivity range.
Max distance can be approximated to be about 1.5x of the coil's narrowest part.</p>
<h2 id="thermal-drift-calibration">Thermal Drift Calibration<a class="headerlink" href="#thermal-drift-calibration" title="Permanent link">&para;</a></h2>
<p>As with all inductive probes, eddy current probes are subject to
significant thermal drift. If the eddy probe has a temperature
sensor on the coil it is possible to configure a <code>[temperature_probe]</code>
to report coil temperature and enable software drift compensation. To
link a temperature probe to an eddy current probe the
<code>[temperature_probe]</code> section must share a name with the
<code>[probe_eddy_current]</code> section. For example:</p>
<div class="highlight"><pre><span></span><code>[probe_eddy_current my_probe]
# eddy probe configuration...
[temperature_probe my_probe]
# temperature probe configuration...
</code></pre></div>
<p>See the <a href="Config_Reference.html#temperature_probe">configuration reference</a>
for further details on how to configure a <code>temperature_probe</code>. It is
advised to configure the <code>calibration_position</code>,
<code>calibration_extruder_temp</code>, <code>extruder_heating_z</code>, and
<code>calibration_bed_temp</code> options, as doing so will automate some of the
steps outlined below. If the printer to be calibrated is enclosed, it
is strongly recommended to set the <code>max_validation_temp</code> option to a value
between 100 and 120.</p>
<p>Eddy probe manufacturers may offer a stock drift calibration that can be
manually added to <code>drift_calibration</code> option of the <code>[probe_eddy_current]</code>
section. If they do not, or if the stock calibration does not perform well on
your system, the <code>temperature_probe</code> module offers a manual calibration
procedure via the <code>TEMPERATURE_PROBE_CALIBRATE</code> gcode command.</p>
<p>Prior to performing calibration the user should have an idea of what the
maximum attainable temperature probe coil temperature is. This temperature
should be used to set the <code>TARGET</code> parameter of the
<code>TEMPERATURE_PROBE_CALIBRATE</code> command. The goal is to calibrate across the
widest temperature range possible, thus its desirable to start with the printer
cold and finish with the coil at the maximum temperature it can reach.</p>
<p>Once a <code>[temperature_probe]</code> is configured, the following steps may be taken
to perform thermal drift calibration:</p>
<ul>
<li>The probe must be calibrated using <code>PROBE_EDDY_CURRENT_CALIBRATE</code>
when a <code>[temperature_probe]</code> is configured and linked. This captures
the temperature during calibration which is necessary to perform
thermal drift compensation.</li>
<li>Make sure the nozzle is free of debris and filament.</li>
<li>The bed, nozzle, and probe coil should be cold prior to calibration.</li>
<li>The following steps are required if the <code>calibration_position</code>,
<code>calibration_extruder_temp</code>, and <code>extruder_heating_z</code> options in
<code>[temperature_probe]</code> are <strong>NOT</strong> configured:<ul>
<li>Move the tool to the center of the bed. Z should be 30mm+ above the bed.</li>
<li>Heat the extruder to a temperature above the maximum safe bed temperature.
150-170C should be sufficient for most configurations. The purpose of
heating the extruder is to avoid nozzle expansion during calibration.</li>
<li>When the extruder temperature has settled, move the Z axis down to about 1mm
above the bed.</li>
</ul>
</li>
<li>Start drift calibration. If the probe's name is <code>my_probe</code> and the maximum
probe temperature we can achieve is 80C, the appropriate gcode command is
<code>TEMPERATURE_PROBE_CALIBRATE PROBE=my_probe TARGET=80</code>. If configured, the
tool will move to the X,Y coordinate specified by the <code>calibration_position</code>
and the Z value specified by <code>extruder_heating_z</code>. After heating the extruder
to the specified temperature the tool will move to the Z value specified
by the<code>calibration_position</code>.</li>
<li>The procedure will request a manual probe. Perform the manual probe with
the paper test and <code>ACCEPT</code>. The calibration procedure will take the first
set of samples with the probe then park the probe in the heating position.</li>
<li>If the <code>calibration_bed_temp</code> is <strong>NOT</strong> configured turn on the bed heat
to the maximum safe temperature. Otherwise this step will be performed
automatically.</li>
<li>By default the calibration procedure will request a manual probe every
2C between samples until the <code>TARGET</code> is reached. The temperature delta
between samples can be customized by setting the <code>STEP</code> parameter in
<code>TEMPERATURE_PROBE_CALIBRATE</code>. Care should be taken when setting a custom
<code>STEP</code> value, a value too high may request too few samples resulting in
a poor calibration.</li>
<li>The following additional gcode commands are available during drift
calibration:<ul>
<li><code>TEMPERATURE_PROBE_NEXT</code> may be used to force a new sample before the step
delta has been reached.</li>
<li><code>TEMPERATURE_PROBE_COMPLETE</code> may be used to complete calibration before the
<code>TARGET</code> has been reached.</li>
<li><code>ABORT</code> may be used to end calibration and discard results.</li>
</ul>
</li>
<li>When calibration is finished use <code>SAVE_CONFIG</code> to store the drift
calibration.</li>
</ul>
<p>As one may conclude, the calibration process outlined above is more challenging
and time consuming than most other procedures. It may require practice and several attempts to achieve an optimal calibration.</p>
<h2 id="errors-description">Errors description<a class="headerlink" href="#errors-description" title="Permanent link">&para;</a></h2>
<p>Possible homing errors and actionables:</p>
<ul>
<li>Sensor error<ul>
<li>Check logs for detailed error</li>
</ul>
</li>
<li>Eddy I2C STATUS/DATA error.<ul>
<li>Check loose wiring.</li>
<li>Try software I2C/decrease I2C rate</li>
</ul>
</li>
<li>Invalid read data<ul>
<li>Same as I2C</li>
</ul>
</li>
</ul>
<p>Possible sensor errors and actionables:</p>
<ul>
<li>Frequency over valid hard range<ul>
<li>Check frequency configuration</li>
<li>Hardware fault</li>
</ul>
</li>
<li>Frequency over valid soft range<ul>
<li>Check frequency configuration</li>
</ul>
</li>
<li>Conversion Watchdog timeout<ul>
<li>Hardware fault</li>
</ul>
</li>
</ul>
<p>Amplitude Low/High warning messages can mean:</p>
<ul>
<li>Sensor close to the bed</li>
<li>Sensor far from the bed</li>
<li>Higher temperature than was at the current calibration</li>
<li>Capacitor missing</li>
</ul>
<p>On some sensors, it is not possible to completely avoid amplitude
warning indicator.</p>
<p>You can try to redo the <code>LDC_CALIBRATE_DRIVE_CURRENT</code> calibration at work
temperature or increase <code>reg_drive_current</code> by 1-2 from the calibrated value.</p>
<p>Generally, it is like an engine check light. It may indicate an issue.</p>
</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="Hall_Filament_Width_Sensor.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Hall filament width sensor" 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>
Hall filament width sensor
</div>
</div>
</a>
<a href="Load_Cell.html" class="md-footer__link md-footer__link--next" aria-label="Next: Load Cells" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Load Cells
</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>