1+ <!DOCTYPE html>
2+ < html >
3+ < head >
4+ < meta charset ="UTF-8 ">
5+ < title > Wägesensor</ title >
6+ < style >
7+ /* From extension vscode.github */
8+ /*---------------------------------------------------------------------------------------------
9+ * Copyright (c) Microsoft Corporation. All rights reserved.
10+ * Licensed under the MIT License. See License.txt in the project root for license information.
11+ *--------------------------------------------------------------------------------------------*/
12+
13+ .vscode-dark img [src $= \#gh- light- mode-only ],
14+ .vscode-light img [src $= \#gh- dark- mode-only ],
15+ .vscode-high-contrast : not (.vscode-high-contrast-light ) img [src $= \#gh- light- mode-only ],
16+ .vscode-high-contrast-light img [src $= \#gh- dark- mode-only ] {
17+ display : none;
18+ }
19+
20+ </ style >
21+
22+ < link rel ="stylesheet " href ="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css ">
23+ < link rel ="stylesheet " href ="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css ">
24+ < style >
25+ body {
26+ font-family : -apple-system, BlinkMacSystemFont, 'Segoe WPC' , 'Segoe UI' , system-ui, 'Ubuntu' , 'Droid Sans' , sans-serif;
27+ font-size : 14px ;
28+ line-height : 1.6 ;
29+ }
30+ </ style >
31+ < style >
32+ .task-list-item {
33+ list-style-type : none;
34+ }
35+
36+ .task-list-item-checkbox {
37+ margin-left : -20px ;
38+ vertical-align : middle;
39+ pointer-events : none;
40+ }
41+ </ style >
42+ < style >
43+ : root {
44+ --color-note : # 0969da ;
45+ --color-tip : # 1a7f37 ;
46+ --color-warning : # 9a6700 ;
47+ --color-severe : # bc4c00 ;
48+ --color-caution : # d1242f ;
49+ --color-important : # 8250df ;
50+ }
51+
52+ </ style >
53+ < style >
54+ @media (prefers-color-scheme : dark) {
55+ : root {
56+ --color-note : # 2f81f7 ;
57+ --color-tip : # 3fb950 ;
58+ --color-warning : # d29922 ;
59+ --color-severe : # db6d28 ;
60+ --color-caution : # f85149 ;
61+ --color-important : # a371f7 ;
62+ }
63+ }
64+
65+ </ style >
66+ < style >
67+ .markdown-alert {
68+ padding : 0.5rem 1rem ;
69+ margin-bottom : 16px ;
70+ color : inherit;
71+ border-left : .25em solid # 888 ;
72+ }
73+
74+ .markdown-alert > : first-child {
75+ margin-top : 0
76+ }
77+
78+ .markdown-alert > : last-child {
79+ margin-bottom : 0
80+ }
81+
82+ .markdown-alert .markdown-alert-title {
83+ display : flex;
84+ font-weight : 500 ;
85+ align-items : center;
86+ line-height : 1
87+ }
88+
89+ .markdown-alert .markdown-alert-title .octicon {
90+ margin-right : 0.5rem ;
91+ display : inline-block;
92+ overflow : visible !important ;
93+ vertical-align : text-bottom;
94+ fill : currentColor;
95+ }
96+
97+ .markdown-alert .markdown-alert-note {
98+ border-left-color : var (--color-note );
99+ }
100+
101+ .markdown-alert .markdown-alert-note .markdown-alert-title {
102+ color : var (--color-note );
103+ }
104+
105+ .markdown-alert .markdown-alert-important {
106+ border-left-color : var (--color-important );
107+ }
108+
109+ .markdown-alert .markdown-alert-important .markdown-alert-title {
110+ color : var (--color-important );
111+ }
112+
113+ .markdown-alert .markdown-alert-warning {
114+ border-left-color : var (--color-warning );
115+ }
116+
117+ .markdown-alert .markdown-alert-warning .markdown-alert-title {
118+ color : var (--color-warning );
119+ }
120+
121+ .markdown-alert .markdown-alert-tip {
122+ border-left-color : var (--color-tip );
123+ }
124+
125+ .markdown-alert .markdown-alert-tip .markdown-alert-title {
126+ color : var (--color-tip );
127+ }
128+
129+ .markdown-alert .markdown-alert-caution {
130+ border-left-color : var (--color-caution );
131+ }
132+
133+ .markdown-alert .markdown-alert-caution .markdown-alert-title {
134+ color : var (--color-caution );
135+ }
136+
137+ </ style >
138+
139+ </ head >
140+ < body class ="vscode-body vscode-light ">
141+ < h1 id ="wägesensor "> Wägesensor</ h1 >
142+ < h2 id ="quellen "> Quellen</ h2 >
143+ < p > Die Theorie zum Wägesensor ist auf folgenden Internetseiten von Wolfgang Ewald erklärt:< br >
144+ < a href ="https://wolles-elektronikkiste.de/dehnungsmessstreifen "> Dehnungsmessstreifen</ a > < br >
145+ < a href ="https://wolles-elektronikkiste.de/hx711-basierte-waage "> HX711 basierte Waage</ a > </ p >
146+ < p > Eine Druckvorlage für eine einfache Waage findest du hier:< br >
147+ < a href ="https://www.thingiverse.com/thing:5448276 "> Load cell housing</ a > </ p >
148+ < h2 id ="messprinzip "> Messprinzip</ h2 >
149+ < p > Der Sensor wird an einem Ende fest mit der Bodenplatte verschraubt. Das andere Ende schwebt frei in der Luft. Wird auf dieses Ende ein Gewicht aufgelegt, dann verbiegt sich der Sensor leicht. Die Dehnungsmessstreifen verändern ihren Abstand. Diese Änderung bewirkt eine geringe Änderung des elektrischen Widerstands des Systems.</ p >
150+ < h2 id ="sketch "> Sketch</ h2 >
151+ < pre > < code class ="language-C++ "> < span class ="hljs-meta "> #< span class ="hljs-keyword "> include</ span > < span class ="hljs-string "> <HX711_ADC.h></ span > </ span >
152+
153+ < span class ="hljs-comment "> /*--------------------------------------------------------------
154+ Pin‑Belegung für den HX711
155+ --------------------------------------------------------------*/</ span >
156+ < span class ="hljs-type "> const</ span > < span class ="hljs-type "> int</ span > HX711_dout = < span class ="hljs-number "> 4</ span > ; < span class ="hljs-comment "> // Datenleitung (DOUT) des HX711, verbunden mit Pin 4 des MCU</ span >
157+ < span class ="hljs-type "> const</ span > < span class ="hljs-type "> int</ span > HX711_sck = < span class ="hljs-number "> 5</ span > ; < span class ="hljs-comment "> // Taktleitung (SCK) des HX711, verbunden mit Pin 5 des MCU</ span >
158+
159+ < span class ="hljs-comment "> /*--------------------------------------------------------------
160+ Objektinstanz des HX711‑ADC
161+ --------------------------------------------------------------*/</ span >
162+ < span class ="hljs-function "> HX711_ADC < span class ="hljs-title "> sensor</ span > < span class ="hljs-params "> (HX711_dout, HX711_sck)</ span > </ span > ;
163+
164+ < span class ="hljs-comment "> /**
165+ * @brief Initialisiert die serielle Schnittstelle und den HX711,
166+ * führt die Start‑Sequenz inkl. Tara‑Durchführung aus
167+ */</ span >
168+
169+ < span class ="hljs-function "> < span class ="hljs-type "> void</ span > < span class ="hljs-title "> setup</ span > < span class ="hljs-params "> ()</ span > </ span > {
170+ Serial.< span class ="hljs-built_in "> begin</ span > (< span class ="hljs-number "> 9600</ span > ); < span class ="hljs-comment "> // Serielle Kommunikation mit 9600 baud starten</ span >
171+
172+ sensor.< span class ="hljs-built_in "> begin</ span > (); < span class ="hljs-comment "> // HX711‑Modul initialisieren</ span >
173+ < span class ="hljs-built_in "> delay</ span > (< span class ="hljs-number "> 500</ span > );
174+ < span class ="hljs-comment "> /*
175+ Sensor wird eingeschaltet und tariert, d.h. auf 0 gesetzt
176+ 2000 = Pause zum Stabilisieren
177+ true = Tarierung soll durchgeführt werden.
178+ */</ span >
179+ sensor.< span class ="hljs-built_in "> start</ span > (< span class ="hljs-number "> 2000</ span > , < span class ="hljs-literal "> true</ span > );
180+
181+ < span class ="hljs-comment "> // Prüfen, ob beim Start ein Timeout aufgetreten ist</ span >
182+ < span class ="hljs-keyword "> if</ span > (sensor.< span class ="hljs-built_in "> getTareTimeoutFlag</ span > () || sensor.< span class ="hljs-built_in "> getSignalTimeoutFlag</ span > ()) {
183+ Serial.< span class ="hljs-built_in "> println</ span > (< span class ="hljs-string "> "Sensor antwortet nicht, prüfe die Verkabelung und die Pins"</ span > );
184+ < span class ="hljs-keyword "> while</ span > (< span class ="hljs-literal "> true</ span > )
185+ ; < span class ="hljs-comment "> // Endlosschleife bei Fehlfunktion</ span >
186+ } < span class ="hljs-keyword "> else</ span > {
187+ sensor.< span class ="hljs-built_in "> setCalFactor</ span > (< span class ="hljs-number "> 1.0</ span > ); < span class ="hljs-comment "> // Anfangs‑Kalibrierungsfaktor (kann später überschrieben werden)</ span >
188+ Serial.< span class ="hljs-built_in "> println</ span > (< span class ="hljs-string "> "Kalbrierungsfaktor auf 1.0 gesetzt"</ span > );
189+ }
190+ }
191+
192+ < span class ="hljs-comment "> /**
193+ * @brief Hauptschleife: Liest Messwerte aus, gibt sie seriell aus
194+ */</ span >
195+
196+ < span class ="hljs-function "> < span class ="hljs-type "> void</ span > < span class ="hljs-title "> loop</ span > < span class ="hljs-params "> ()</ span > </ span > {
197+ < span class ="hljs-comment "> // Prüfen, ob neue Messdaten verfügbar sind</ span >
198+ < span class ="hljs-keyword "> if</ span > (sensor.< span class ="hljs-built_in "> update</ span > ()) {
199+ < span class ="hljs-type "> float</ span > i = sensor.< span class ="hljs-built_in "> getData</ span > (); < span class ="hljs-comment "> // Messwert lesen</ span >
200+ Serial.< span class ="hljs-built_in "> println</ span > (i);
201+ < span class ="hljs-built_in "> delay</ span > (< span class ="hljs-number "> 1</ span > );
202+ }
203+ }
204+ </ code > </ pre >
205+ < h2 id ="experimente "> Experimente</ h2 >
206+ < ol >
207+ < li > Notiere den Wert, den der Sensor ohne Belastung liefert.</ li >
208+ < li > Lege anschließend bekannte Gewichte auf den Sensor und notiere ihre Messwerte.< br >
209+ < strong > ACHTUNG: Der Sensor darf höchstens mit 1kg belastet werden!</ strong > </ li >
210+ < li > Erstelle ein Diagramm aus Gewicht- und Sensorwerten und leite ab, wie sie zusammenhängen.</ li >
211+ </ ol >
212+
213+
214+
215+ </ body >
216+ </ html >
0 commit comments