Der Schieberegler
Für interaktive Zeitleisten oder um auf einer Strecke einen Punkt zu markieren gibt es für Exponiert einen Schieberegler mit ungefähr 100 Schritten. Der Aufbau braucht etwas Platz aber ist dafür sehr stabil und wasserfest machbar. Die Fotos zeigen ein Muster.
Am Schiebeknopf hängt ein weißer Zylinder, der von einem Distanzsensor beobachtet wird. Gegen Störungen ist das Gehäuse von innen mit stark streuender schwarzer Schultafel-Farbe bemalt. Die analoge Ausgangsspannung geht direkt an ein Exponiert-Analog-Board. Es ist keine weitere Elektronik nötig.
Die Box hat einen Querschnitt von 80mm × 80mm. Der Sensor sieht einen Bereich von 40mm × 40mm, wobei sich dieser Querschnitt mit der Entfernung kaum verändert. Die Box ist also selbst bei leicht verdreht aufgeklebtem Sensor ausreichend groß.
Der Zylinder aus Holz hat einen Durchmesser von 70mm und das aufgeklebte Papier 70mm Höhe. Damit füllt es die Box im Wesentlichen aus. Die zylindrische Form hat den Vorteil, dass eine Drehkraft am Knopf nichts zerstören kann.
Der Knopf und der Zylinder sind mit Filzgleitern gelagert. Die M6 Schlossschraube passt gut in den auf 6mm gefrästen Spalt.
In diesem Testaufbau ist der Sensor Sharp GP2Y0A02YK0F installiert. Er misst die Entfernung zu Gegenständen zwischen 200mm und 1500mm, zum Ende immer unpräziser. Bei der Positionierung muss von der Achse des Knopfs noch der Radius des Zylinders abgezogen werden. Der Schiebeweg beginnt daher bei 250mm und endet bei 1250mm ab der Befestigung vom Sensor.
Auf der anderen Seite der Box wurde der Entfernungsmesser Sharp GP2Y0A21YK0F eingebaut. Er ist für eine Entfernung 100mm bis 800mm ausgelegt. Die Wand ist daher 100mm vom Papier-Zylinder entfernt. Auch dieser Sensor funktioniert gut in seinem Messbereich und ist für kleinere Aufbauten geeignet.
Diese Sensoren gibt es auch für mehrere Meter Reichweite und damit riesige Schieberegler!
Die Idee liegt nahe, für präzisere Messwerte beide Sensoren gleichzeitig zu betreiben. Allerdings stören sie sich optisch, die Spannungen am Ausgang schwanken. Der große Zylinder in der Mitte und die schwarze Farbe mildern die Störungen kaum.
Auswertung
'use strict' // Hardware connection to devices const i2c = require('i2c-bus') // Open connection on i2c bus 1 const i2c1 = i2c.openSync(1) const i2cStatus = {} function readI2cByte (deviceI2cAddress) { let result try { result = i2c1.readByteSync(deviceI2cAddress, 0x41) // 0x40 = Sensor Input 0 // 0x41 = Sensor Input 1 // 0x42 = Sensor Input 2 // 0x43 = Sensor Input 3 if ((!(deviceI2cAddress in i2cStatus)) || (i2cStatus[deviceI2cAddress] !== 'ok')) { i2cStatus[deviceI2cAddress] = 'ok' console.log('I2C device', deviceI2cAddress, 'working.') } } catch (e) { if ((!(deviceI2cAddress in i2cStatus)) || (i2cStatus[deviceI2cAddress] !== 'broken')) { i2cStatus[deviceI2cAddress] = 'broken' console.log('I2C device', deviceI2cAddress, 'broken.') } return false } return result } (() => { // Test on command line: i2cget -y 1 0x48 0x41 const deviceI2cAddress = 0x48 let readings = [] let lastValue = 0 setInterval(() => { const newReading = readI2cByte(deviceI2cAddress) if (newReading === false) { // Connection broken return } readings.push(newReading) if (readings.length === 20) { readings.sort() lastValue = (readings[8] + readings[9] + readings[10] + readings[11]) / 4 console.log('New reading:', lastValue, readings) readings = [] } }, 0) })()
Der Sensor und auch der Chip PCF8591 auf dem Board Exponiert Analog liefern die Daten grob alle 20ms, also mit 50Hz. Schnelle Bewegungen lassen sich also erkennen. Zur Bestimmung der exakten Position hat es sich bewährt 20 Messwerte zu sammeln und dann den Median zu verwenden. Ausreißer nach oben und unten sind damit zuverlässig ausgefiltert.
Text und Fotos: The MIT License 2022 Kastanie Eins GmbH