{"id":494,"date":"2021-02-17T18:46:18","date_gmt":"2021-02-17T17:46:18","guid":{"rendered":"https:\/\/followthescore.org\/schueler-labor\/?p=494"},"modified":"2022-01-28T13:53:03","modified_gmt":"2022-01-28T12:53:03","slug":"pendel","status":"publish","type":"post","link":"https:\/\/followthescore.org\/schueler-labor\/pendel\/","title":{"rendered":"Pendel"},"content":{"rendered":"\n<p>Wir wollen einen frei gelagerten Stab mit einem Motor in Schwung vesetzen, ihn gleichm\u00e4\u00dfig pendeln lassen, ihn bis zum \u00dcberschlag aufschaukeln und wenn m\u00f6glich sogar auf der Spitze balancieren.<\/p>\n\n\n\n<p>Angetrieben wird das Pendel \u00fcber einen Schrittmotor und einen kurzen Steuerhebel (ca. 10 cm). Dieser Hebel sitzt auf der Achse des Motors und hat am anderen Ende eine Achse mit einem inkrementellen Winkelgeber, an dem das Pendel gelagert ist.<\/p>\n\n\n\n<p>Wir benutzen einen ESP32 (LILY TTGO) und einen Treiberbaustein (Pololu DRV8255 oder A4988) sowie ein Steckbrett. Au\u00dferdem ben\u00f6tigen wir einen Schrittmotor, einen Kondensator, den Drehgeber und evtl. eine Tastatur sowie entsprechende Kabel. Zur Stromversorgung nutzen wir neben der USB-Versorgung  (5Volt) noch ein zweites Netztteil (24Volt, 1 A). Au\u00dferdem k\u00f6nnen wir nat\u00fcrlich das Display des TTGO f\u00fcr Ausgaben verwenden.<\/p>\n\n\n\n<p>Vervollst\u00e4ndigt wird die Hardware durch ein Keyboard mit 16 Tasten und einen Sensor (Infrarot-N\u00e4herungssensor, Gabellichtschranle oder Reed-Relais), der als Bezugspunkt f\u00fcr die Kalibrierung der absoluten Position des Motorarms dient.<\/p>\n\n\n\n<p>Das Experiment hat viele Facetten: Man muss die elektrischen Teile ausw\u00e4hlen und beschaffen, die Mechanik konstruieren, einen Schaltplan entwerfen, die beiden Platinen auf dem Steckbrett montieren und verdrahten (Schaltplan!). Au\u00dferdem muss man die Peripherie anschlie\u00dfen (Motor, Drehgeber, Sensor, Tastatur, 24V-Netzteil) und nat\u00fcrlich die Software entwickeln.<\/p>\n\n\n\n<p>Das Ganze eignet sich als Demonstrationsobjekt f\u00fcr einen Tag der offenen T\u00fcr, vielleicht auch als Facharbeit in der Schule und auf alle F\u00e4lle als Nachweis von Interessen, Fachwissen und Geschicklichkeit bei einer Bewerbung.<\/p>\n\n\n\n<h2 id=\"hinweise\">Hinweise<\/h2>\n\n\n\n<p>Der mechanische Aufbau muss solide sein, der Motor wird an der Kante der Tischplatte mit einer Klammer befestigt, so dass das Pendel frei schwingen kann. Das Pendellager kann der Drehgeber \u00fcbernehmen, wenn er mechanisch daf\u00fcr ausgelegt ist, Andernfalls eignet sich ein Kugellager (8mm Innendurchmesser, 22 mm Au\u00dfendurchmesser, 7mm dick). Einfach nur Kunststoff als Gleitlager w\u00fcrde zu viel Reibung erzeugen und ausleiern. Das Lager wird in den Steuerhebel eingepresst. Der Pendelstab hat eine fest verbundene Achse, die durch das Lager gesteckt wird (strammer Sitz). Auf dieser Achse sitzt der Drehgeber (sofern er nicht selbst die Pendelachse zur Verf\u00fcgung stellt).<\/p>\n\n\n\n<p>Der Motor sollte im 1\/8 oder 1\/16 Schritt-Betrieb angesteuert werden, damit er ruckfrei l\u00e4uft und genau positionieren kann (3200 Schritte pro Umdrehung  bei 1\/16-Modus). Wenn das Pendel schwingt, dann muss der Motor ein gewisses Haltemoment aufbringen. Au\u00dferdem soll er trotz der hohen Schrittzahl den Steuerhebel ziemlich rasch beschleunigen k\u00f6nnen, vor allem, wenn es darum geht, den Stab in der Balance zu halten. Deshalb benutzen wir als Motorspannung 24 Volt (12 Volt w\u00fcrden zur Not auch gehen). Den Motorstrom stellen wir mit dem Trimmpoti auf dem Treiberbaustein auf ca. 700 mA ein. Das ist so wenig, dass der Motor nicht hei\u00df wird und auch der K\u00fchlk\u00f6rper des Motortreibers wird nicht zu warm. Es reicht aber aus, weil unser Pendel ja nicht viel wiegt. Falls der Drehgeber relativ schwer ist, sollten wir einen mechanischen Gewichtsausgleich vorsehen und m\u00fcssen den Motorstrom evtl. noch etwas h\u00f6her einstellen. In diesem Fall sollten wir den Motor nicht komplett mit Kunststoff umkleiden, damit die W\u00e4rme abgef\u00fchrt werden kann.<\/p>\n\n\n\n<p>Die Elektrik wird auf einem Steckbrett (Breadboard) aufgebaut:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"717\" height=\"1024\" src=\"https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-717x1024.jpg\" alt=\"\" class=\"wp-image-501\" srcset=\"https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-717x1024.jpg 717w, https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-210x300.jpg 210w, https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-768x1097.jpg 768w, https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-1075x1536.jpg 1075w, https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-1433x2048.jpg 1433w, https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-300x429.jpg 300w, https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-850x1215.jpg 850w, https:\/\/followthescore.org\/schueler-labor\/wp-content\/uploads\/2021\/02\/pendel2-scaled.jpg 1792w\" sizes=\"(max-width: 717px) 100vw, 717px\" \/><\/figure>\n\n\n\n<p>Am oberen Rand sieht man den DRV8255 mit dem Trimmpoti (rechte untere Ecke) und dem kleinen K\u00fchlk\u00f6rper (Mitte oben). Die vier Motorleitungen geh\u00f6ren zu dem Stecker oben links. Auf der rechten Seite des DRV8255 sind seine Steuereing\u00e4nge, die \u00fcber einige Dr\u00e4hte mit dem TTGO verbunden sind, der den gr\u00f6\u00dften Teil des Steckbretts einnimmt.<br>Damit man den TTGO auf das Breadboard stecken kann, muss man auf beiden Seiten eine Reihe sekrechter Stifte anl\u00f6ten. Vorsicht beim Einpressen! Man braucht einigen Druck und darf dabei das Display nicht besch\u00e4digen. Links oben ist noch ein kleiner Kondensator f\u00fcr die Motorspannung zu sehen. Der Drehgeber ist mit den Pins 2 und 15 verbunden. Rechts unten ist noch ein LED Streifen angesteckt, \u00fcber den wir optional die Stellung des Pendels andeuten.<\/p>\n\n\n\n<p>Man kann zus\u00e4tzlich noch eine Tastatur vorsehen, \u00fcber die der Benutzer den Motor direkt steuern kann. Dabei muss man nat\u00fcrlich die automatische Positionsregelung deaktivieren. N\u00e4heres zu einer Tastatur mit 16 Tasten findet sich in einem <a href=\"https:\/\/followthescore.org\/schueler-labor\/?page_id=722\" data-type=\"page\" data-id=\"722\">gesonderten Beitrag<\/a>.<\/p>\n\n\n\n<p>Man sollte noch eine Halterung f\u00fcr das Breadboard konstruieren, damit es nicht lose herumh\u00e4ngt. Dort k\u00f6nnen auch die Drucktaster Platz finden.<\/p>\n\n\n\n<h2 id=\"software\">Software<\/h2>\n\n\n\n<h3 id=\"drehgeber\">DREHGEBER<\/h3>\n\n\n\n<p>Wir entwickeln die Software in mehreren Etappen. Zun\u00e4chst befassen wir uns mit dem <strong>Drehgeber<\/strong>. Wir m\u00fcssen absolut alle Signal\u00e4nderungen an den beiden Signalleitungen des Drehgebers in der Software auffangen und verarbeiten, denn der Drehgeber arbeitet INKREMENTELL. Nur wenn wir richtig z\u00e4hlen, wissen wir, in welcher Stellung sich die Achse befindet, Au\u00dferdem m\u00fcssen wir eine Initialposition als 0 festlegen.<\/p>\n\n\n\n<p>Der optische Drehgeber hat zwei open-collector Ausg\u00e4nge, die man direkt mit GPIOs des ESP32 verbinden kann. Dabei ist wichtig, dass die GPIOs als Input mit Pullup-Widerstand konfiguriert sind. Keinesfalls d\u00fcrfen diese Pins als Output definiert sein, da sie ansonsten den Drehgeber besch\u00e4digen k\u00f6nnten, wenn sie HIGH Potential annehmen. Wir verwenden Pin 2 und Pin 15.<\/p>\n\n\n\n<p>Der Drehgeber hat zwei Ringe mit jeweils 600 feinen Strichen auf einer Scheibe, die optisch abgetastet werden. Die beiden Ringe sind leicht gegeneinander verschoben. Die Signale des Drehgebers sehen daher so aus:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n   +---------+         +---------+         +---  1\n   |         |         |         |         |\n---+         +---------+         +---------+     0\n\n        +---------+         +---------+          1\n        |         |         |         |\n--------+         +---------+         +--------  0\n   A    B    C    D    A    B    C    D    A\n<\/pre><\/div>\n\n\n<p>Es handelt sich um zwei Rechteck-Funktionen, die um 90\u00b0 phasenverschoben sind. Wir detektieren jeden Wechsel an irgendeiner der beiden Signalleitungen. Das bedeutet, dass wir bei einer vollen Umdrehung 4*600 = 2.400 Interrupts bekommen. Bei jedem Interrupt aktualisieren wir die Position. Eine volle Umdrehung geht also von Position 0 bis 2400. Wenn das Pendel 60 cm lang ist, dann sehen wir einen Impulswechsel bei einer Bewegung der Spitze um ca. 1 mm (tan alpha = sin alpha = alpha bei kleinen Winkeln, 600 Pulse f\u00fcr 90\u00b0, also 1 Puls bei einem Seitenverh\u00e4ltnis von 600mm: 1mm).<strong> Das ist f\u00fcr unsere Zwecke sicher eine ausreichende Aufl\u00f6sung.<\/strong><\/p>\n\n\n\n<p>Wenn sich die Achse im Uhrzeigersinn dreht, sehen wir an den beiden Pins die Signale in folgender Reihenfolge A-B-C-D-A-..<br>Dreht sich die Achse umgekehrt, so sehen wir auch die umgekehrte Reihenfolge, also  D-C-B-A-D &#8230;<br>Jedesmal, wenn sich irgendeines der beiden Signale \u00e4ndert, l\u00f6sen wir einen Interrupt aus und betrachten dann die Zust\u00e4nde der beiden Pins. Wir vergleichen diese Zust\u00e4nde mit dem zuletzt vorher beobachteten Zust\u00e4nden und k\u00f6nnen so die Drehrichtung erkennen.<\/p>\n\n\n\n<p>Beispiel: Unser letzter Zustand war (0 0), d.h. wir haben uns zwischen D und A befunden (aus welcher Richtung wir dorthin gelangt waren, ist egal). Wir erhalten einen Interrupt und stellen fest, dass das untere Signal auf 1 gewechselt hat, d.h. wir befinden uns jetzt zwischen C und D. Daraus k\u00f6nnen wir schlie\u00dfen. dass eine Drehung entgegen dem Uhrzeigersinn vorliegt. Wir dekrementieren daher die aktuelle Position. H\u00e4tte die obere Leitung nach 1 gewechselt, so m\u00fcssten wir die Position inkrementieren. W\u00fcrden wir allerdings (1 1) sehen, so h\u00e4tten wir ein Problem, denn dieser Zustand kann nicht direkt nach (0 0) auftreten.<br>Ob man in der Software versucht, eine solche Fehlersituation zu erkennen, ist eine Frage der Abw\u00e4gung, denn auch das Pr\u00fcfen auf das Vorliegen eines Fehlers kostet Zeit. Aber es macht die Software nat\u00fcrlich robuster. Es ist auch schwierig zu testen: Wie soll man einen Fehler absichtlich hervorrufen, der eigentlich nicht auftreten darf? Man m\u00fcsste dazu beim Test innerhalb der Interruptbehandlung irgendetwas tun, was solange dauert, dass man den n\u00e4chsten Impulswechsel verpasst. <\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Hier kommt ein Programm, das den Drehgeber ausliest und die Position mitverfolgt. Bei Tests mit &#8222;normalen&#8220; Pendelgeschwindigkeiten (mehrfacher \u00dcberschlag inclusive) sind keine Z\u00e4hlfehler aufgetreten auf einem ESP32. Mit einem Arduino m\u00fcsste man noch separat testen.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ A sample program to read pulses from an optical encoder\n\n\/\/ on an ARDUINO you MUST use pins #2 and #3\n#define WHITE_WIRE_PIN 15\n#define GREEN_WIRE_PIN 2\n\nvoid setup() {\n\t\/\/ Arduino UNO should use 9600 baud\n  Serial.begin (115200);\n  Serial.println(&quot;angle tracker 1.0&quot;);\n\n\t\/\/ the encoder has open collector connections, so we need a pullup resistor.\n\t\/\/ caution : NEVER connect the WHITE or GREEN WIRE to a GPIO which is configured as OUTPUT\n\t\/\/           because if the OUTPUT IS HIGH it might burn the transistor inside the encoder\n\tpinMode(WHITE_WIRE_PIN, INPUT_PULLUP); \/\/ internal pullup input pin 2 \n\tpinMode(GREEN_WIRE_PIN, INPUT_PULLUP); \/\/ internal\u0e40\u0e1b\u0e47\u0e19 pullup input pin 3\n\n\t\/\/ Use two interrupt function to catch rising pulses\n\tattachInterrupt(digitalPinToInterrupt(WHITE_WIRE_PIN), onRotaryChange, CHANGE);\n\tattachInterrupt(digitalPinToInterrupt(GREEN_WIRE_PIN), onRotaryChange, CHANGE);\n}\n\n\/\/ the position of the axis; changes whenever an interrupt happens due to rotation of the encoder\nvolatile int pos=0, posM1=0;\n\nunsigned long showTime = millis(); \/\/ returns the number of milliseconds passed since the Arduino board began running the current program\n\nvolatile int lastState= (digitalRead(GREEN_WIRE_PIN)==HIGH ? 1 : 0) + (digitalRead(WHITE_WIRE_PIN)==HIGH ? 2:0); \/\/ condition ? result_if_true : result_if_false\n\nvoid loop() {\n  if (millis()&gt;=showTime) {\n    Serial.println(String(showTime)+&quot;\\t&quot;+String(pos)+&quot;\\t&quot;+String(i1)+&quot;\\t&quot;+String(i2));\n    showTime+=5000;\n  }\n  posM1=pos;\n}\n\nvoid onRotaryChange() {\n  \/\/ state = 0 .. 3 depending on input signal level\n  int state = (digitalRead(GREEN_WIRE_PIN)==HIGH ? 1 : 0) + (digitalRead(WHITE_WIRE_PIN)==HIGH ? 2:0);\n  if      (lastState==0) pos += state==1 ? 1 : -1;\n  else if (lastState==1) pos += state==3 ? 1 : -1;\n  else if (lastState==2) pos += state==0 ? 1 : -1;\n  else if (lastState==3) pos += state==2 ? 1 : -1;\n  lastState=state;\n}\n<\/pre><\/div>\n\n\n<p><\/p>\n\n\n\n<h3 id=\"simulation\">SIMULATION<\/h3>\n\n\n\n<p>Es gibt eine <a href=\"https:\/\/www.ningelgen.eu\/Simulation\/mPendel.html\">sehr sch\u00f6ne Webseite<\/a>, auf der ein starres Pendel simuliert wird. Ich habe den Code analysiert und umgearbeitet, so dass wir ihn vielleicht auf dem Arduino verwenden k\u00f6nnen. Der Einfachkeit halber habe ich allerdings vorerst JavaScript benutzt. Um das Script laufen zu lassen, muss man unter Windows oder Unix &#8222;NodeJS&#8220; installieren. Das Programm gibt Zeitstempel und die zugeh\u00f6rigen Winkelpositionen des Pendelstabs aus. Wenn man die Zahlen ansieht, kann man sehr gut erkennen, wie sich das Pendel bewegt und auch einen \u00dcberschlag macht.<\/p>\n\n\n\n<p>Das Programm enth\u00e4lt den allgemeinen Code f\u00fcr die Simulation und drei Beispiele, die nacheinander ausgef\u00fchrt werden.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\/\/ simulate position of a pendulum with fix bar\n\/\/ numerical approximation of w&#039;&#039; = -K sin(w) by Symplectic Euler.\n\nvar g \t\t\t= 9.81;\t\t\t\t\t\/\/ gravitation\n\nvar len\t\t\t= 1; \t \t\t\t\t\/\/ length of pendulum (meters)\nvar K \t\t\t= len \/ g;\n\nvar t \t\t\t= 0;\t\t\t\t\t\/\/ simulation time\nvar dt \t\t\t= 0.01;\t\t\t\t\t\/\/ time step size (sec)\n\nvar damping \t= 1;\t\t\t\t\t\/\/ e.g. 0.999;  speed loss per step; 1 = no damping\n\nvar pos, posOld, speed, speedOld;\t\t\/\/ position of pendulum (rad, 0 = hanging down) and angle speed (rad\/sec)\n\n\nfunction step() {\n\tpos \t\t= posChange(posOld, speedOld);\n\tspeed \t\t= speedChange(posOld, speedOld, damping);\n\tposOld \t\t= pos;\n\tspeedOld \t= speed;\n\tt+=dt;\n\n\tif (Math.round(t*100) % 10 == 1) process.stdout.write(&quot;\\nt=&quot;+Math.round(t*100)\/100+&quot;\\t&quot;);\n\tprocess.stdout.write(Math.round(pos\/Math.PI*180)+&quot;\\t&quot;);\t\/\/ show in degrees\n}\n\nfunction posChange(p,s) {\n\t\/\/Symplectic Euler in p and s\n\tvar pp =(p + dt*s) ;\n\tif (pp &gt; Math.PI) {\n\t\tconsole.log (&quot;turnover CW&quot;);\n\t\tpp = -2*Math.PI + pp;\t\/\/ keep within -PI &lt; pos &lt; PI\n\t}\n\telse if (pp &lt; -Math.PI) {\n\t\tconsole.log (&quot;turnover CCW&quot;);\n\t\tpp = 2*Math.PI + pp;\t\/\/ keep within -PI &lt; pos &lt; PI\n\t}\n\treturn pp ;\n}\n\nfunction speedChange(p,s,damp) {\n\treturn damp * (s - (K * Math.sin(p+dt*s) ));\n}\n\n\/\/ EXAMPLE (A):\n\/\/ ============\n\n\/\/ damped pendulum starting in horizontal position\n\/\/ with a medium strength downward kick\n\/\/ we see one turnover\u00b4, then it reverses direction at a peek of 165 degrees,\n\/\/ and after 10 seconds the pendulum has calmed down\n\ndamping\t\t= 0.99\nposOld \t\t= Math.PI\/2;\nspeedOld \t= -15;\nt\t\t\t= 0;\n\nconsole.log(&quot;\\nExample A:\\n\\n&quot;+Math.round(t*100)\/100+&quot;\\t&quot;+Math.round(posOld\/Math.PI*180));\t\/\/ show in degrees\n\n\/\/ watch 1.000 steps = 10 seconds\nfor (var s=0;s&lt;1000;s++) step();\n\n\n\n\/\/ EXAMPLE (B):\n\/\/ ============\n\n\/\/ using a pendulum with a very small damping\n\/\/ this time we start from top position with a small kick\n\/\/ we observe one full turn around, the next time it \n\/\/ doesn\u00b4t quite reach 180 degrees (only 176), but it keeps swinging\n\/\/ for a long time with the peeks decreasing slowly\n\ndamping\t\t= 0.9999;\nposOld \t\t= Math.PI;\nspeedOld \t= 1;\nt\t\t\t= 0;\nconsole.log(&quot;\\n\\n&quot;+Math.round(t*100)\/100+&quot;\\t&quot;+Math.round(posOld\/Math.PI*180));\t\/\/ show in degrees\n\n\/\/ watch 10.000 steps = 100 seconds\nfor (var s=0;s&lt;10000;s++) step();\n\n\/\/ the pendulum is still almost horizontal (85 degrees) at its peek\nconsole.log(&quot;\\nExample B:\\n\\n&quot;);\n\n\/\/ watch another 10.000 steps\nfor (var s=0;s&lt;10000;s++) step();\n\n\n\/\/ EXAMPLE (C)\n\/\/ ===========\n\n\/\/ to measure the damping of a real pendulum we should \n\/\/ let it drop from a horizontal position and wait until\n\/\/ it has come to a standstill ~ after 60 seconds - we\n\/\/ should ignore very tiny movements (+\/- 3 degrees) at the end\n\/\/ because real friction is not linear for very small movements\n\ndamping\t\t= 0.999;\nposOld \t\t= Math.PI\/2;\nspeedOld \t= 0;\nt\t\t\t= 0;\nconsole.log(&quot;\\n\\nExample C:\\n\\n&quot;+Math.round(t*100)\/100+&quot;\\t&quot;+Math.round(posOld\/Math.PI*180));\t\/\/ show in degrees\n\n\/\/ watch 10.000 steps = 100 seconds\nfor (var s=0;s&lt;10000;s++) step();\n\n<\/pre><\/div>\n\n\n<p><\/p>\n\n\n\n<h3 id=\"motoransteuerung\">MOTORANSTEUERUNG<\/h3>\n\n\n\n<p>Wir schreiben ein kleines Programm, das die Motorachse von 0 (= Hebel zeigt nach unten) nach PI\/2 (Hebel zeigt nach rechts) bewegt.<br>Wir benutzen ene Winkelgeschwindigkeit, die etwa doppelt so hoch ist wie das Pendel f\u00fcr eine Viertel-Schwingung ben\u00f6tigt.<br>Wenn ein Viertel der Schwingungsdauer (voller Zyklus) des Pendels vorbei ist, bewegt sich der Motor (wieder mit der doppelten Geschwindigkeit des Pendels) zur\u00fcck nach 0. Das Ganz machen wir dreimal. Auf diese Weise sollte es gelingen, das Pendel bis zu einer gewissen H\u00f6he aufzuschaukeln. Sp\u00e4testens, wenn die Auslenkung 45\u00b0 betr\u00e4gt, wird die Schwingungsdauer des Pendels deutlich zunehmen; wir m\u00fcssen daher immer l\u00e4ngere Pausen zwischen unseren Bewegungen einlegen. Mit ein wenig Probieren kann man die Motorbwegungen so vorgeben, dass das Pendel einen \u00dcberschlag macht. Das ist unser erses gro\u00dfes Ziel.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir wollen einen frei gelagerten Stab mit einem Motor in Schwung vesetzen, ihn gleichm\u00e4\u00dfig pendeln lassen, ihn bis zum \u00dcberschlag aufschaukeln und wenn m\u00f6glich sogar auf der Spitze balancieren. Angetrieben wird das Pendel \u00fcber einen Schrittmotor und einen kurzen Steuerhebel (ca. 10 cm). Dieser Hebel sitzt auf der Achse des Motors und hat am anderen&hellip; <a class=\"more-link\" href=\"https:\/\/followthescore.org\/schueler-labor\/pendel\/\"><span class=\"screen-reader-text\">Pendel<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"template-page-builder-no-sidebar.php","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/posts\/494"}],"collection":[{"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/comments?post=494"}],"version-history":[{"count":24,"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/posts\/494\/revisions"}],"predecessor-version":[{"id":723,"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/posts\/494\/revisions\/723"}],"wp:attachment":[{"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/media?parent=494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/categories?post=494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/followthescore.org\/schueler-labor\/wp-json\/wp\/v2\/tags?post=494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}