Skip to content

Commit 3a1e4da

Browse files
committed
Waage
1 parent 5439002 commit 3a1e4da

2 files changed

Lines changed: 292 additions & 0 deletions

File tree

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>W&auml;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">&lt;HX711_ADC.h&gt;</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">&quot;Sensor antwortet nicht, prüfe die Verkabelung und die Pins&quot;</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">&quot;Kalbrierungsfaktor auf 1.0 gesetzt&quot;</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>
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Wägesensor
2+
3+
## Quellen
4+
5+
Die Theorie zum Wägesensor ist auf folgenden Internetseiten von Wolfgang Ewald erklärt:
6+
[Dehnungsmessstreifen](https://wolles-elektronikkiste.de/dehnungsmessstreifen)
7+
[HX711 basierte Waage](https://wolles-elektronikkiste.de/hx711-basierte-waage)
8+
9+
Eine Druckvorlage für eine einfache Waage findest du hier:
10+
[Load cell housing](https://www.thingiverse.com/thing:5448276)
11+
12+
## Messprinzip
13+
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.
14+
15+
## Sketch
16+
```C++
17+
#include <HX711_ADC.h>
18+
19+
/*--------------------------------------------------------------
20+
Pin‑Belegung für den HX711
21+
--------------------------------------------------------------*/
22+
const int HX711_dout = 4; // Datenleitung (DOUT) des HX711, verbunden mit Pin 4 des MCU
23+
const int HX711_sck = 5; // Taktleitung (SCK) des HX711, verbunden mit Pin 5 des MCU
24+
25+
/*--------------------------------------------------------------
26+
Objektinstanz des HX711‑ADC
27+
--------------------------------------------------------------*/
28+
HX711_ADC sensor(HX711_dout, HX711_sck);
29+
30+
/**
31+
* @brief Initialisiert die serielle Schnittstelle und den HX711,
32+
* führt die Start‑Sequenz inkl. Tara‑Durchführung aus
33+
*/
34+
35+
void setup() {
36+
Serial.begin(9600); // Serielle Kommunikation mit 9600 baud starten
37+
38+
sensor.begin(); // HX711‑Modul initialisieren
39+
delay(500);
40+
/*
41+
Sensor wird eingeschaltet und tariert, d.h. auf 0 gesetzt
42+
2000 = Pause zum Stabilisieren
43+
true = Tarierung soll durchgeführt werden.
44+
*/
45+
sensor.start(2000, true);
46+
47+
// Prüfen, ob beim Start ein Timeout aufgetreten ist
48+
if (sensor.getTareTimeoutFlag() || sensor.getSignalTimeoutFlag()) {
49+
Serial.println("Sensor antwortet nicht, prüfe die Verkabelung und die Pins");
50+
while (true)
51+
; // Endlosschleife bei Fehlfunktion
52+
} else {
53+
sensor.setCalFactor(1.0); // Anfangs‑Kalibrierungsfaktor (kann später überschrieben werden)
54+
Serial.println("Kalbrierungsfaktor auf 1.0 gesetzt");
55+
}
56+
}
57+
58+
/**
59+
* @brief Hauptschleife: Liest Messwerte aus, gibt sie seriell aus
60+
*/
61+
62+
void loop() {
63+
// Prüfen, ob neue Messdaten verfügbar sind
64+
if (sensor.update()) {
65+
float i = sensor.getData(); // Messwert lesen
66+
Serial.println(i);
67+
delay(1);
68+
}
69+
}
70+
```
71+
72+
## Experimente
73+
1. Notiere den Wert, den der Sensor ohne Belastung liefert.
74+
2. Lege anschließend bekannte Gewichte auf den Sensor und notiere ihre Messwerte.
75+
**ACHTUNG: Der Sensor darf höchstens mit 1kg belastet werden!**
76+
3. Erstelle ein Diagramm aus Gewicht- und Sensorwerten und leite ab, wie sie zusammenhängen.

0 commit comments

Comments
 (0)