Inhaltsverzeichnis:

Measurino: ein Proof-of-Concept-Messrad - Gunook
Measurino: ein Proof-of-Concept-Messrad - Gunook

Video: Measurino: ein Proof-of-Concept-Messrad - Gunook

Video: Measurino: ein Proof-of-Concept-Messrad - Gunook
Video: New Modern Construction Technology Today 2024, November
Anonim
Measurino: ein Proof-of-Concept-Messrad
Measurino: ein Proof-of-Concept-Messrad

Measurino zählt einfach die Anzahl der Umdrehungen eines Rades und die zurückgelegte Strecke ist direkt proportional zum Radius des Rades selbst. Dies ist das Grundprinzip eines Kilometerzählers und ich habe dieses Projekt hauptsächlich begonnen, um zu untersuchen, wie die Schaltung (von einem Arduino-Mikrocontroller gesteuert) mit verschiedenen Entfernungen von Millimetern bis Kilometern kompatibel gehalten werden kann, und um mögliche Probleme oder Verbesserungen zu bewerten.

Schritt 1: Teile und Komponenten

  • Arduino Nano rev.3
  • 128×64 OLED-Display (SSD1306)
  • Inkrementeller optoelektronischer Drehgeber (400P/R)
  • Gummirad für Flugmodelle (51mm Durchmesser)
  • 2 Drucktasten
  • 9V Batterie

Schritt 2: Der Encoder

Der Encoder
Der Encoder
Der Encoder
Der Encoder

Für dieses Projekt habe ich mehrere billige Drehgeber getestet, die ich jedoch aufgrund von Präzisions- / Empfindlichkeitsproblemen sofort verworfen habe. Also ging ich zum inkrementellen photoelektrischen Drehgeber von DFRobot - 400P/R SKU: SEN0230. Dies ist ein industrieller inkrementeller photoelektrischer Drehgeber mit Aluminiummaterial, Metallgehäuse und Edelstahlwelle. Es erzeugt ein orthogonales AB-Zweiphasen-Impulssignal durch die Drehung der Gitterscheibe und des Optokopplers. 400 Pulse/Runde für jede Phase und 1600 Pulse/Runde für Dual-Phase 4-fach-Ausgang. Dieser Drehgeber unterstützt eine maximale Geschwindigkeit von 5000 U/min. Und es kann für Geschwindigkeits-, Winkel-, Winkelgeschwindigkeits- und andere Datenmessungen verwendet werden.

Der photoelektrische Drehgeber hat einen offenen NPN-Kollektorausgang, daher müssen Sie Pullup-Widerstände verwenden oder den internen Pullup des Arduino aktivieren. Es verwendet einen 750L05-Spannungsreglerchip, der über einen DC4,8V-24V-Weitbereichseingang verfügt.

Schritt 3: Empfindlichkeit

Empfindlichkeit
Empfindlichkeit

Dieser optoelektrische Drehgeber hat wirklich eine große Empfindlichkeit, die ihn perfekt für Wellensteuerungs- und Positionierungsanwendungen macht. Aber für meinen Zweck war es zu vernünftig. Mit einem 51-mm-Rad hat dieser Encoder eine Empfindlichkeit von 0,4 mm, was bedeutet, dass wenn Ihre Hand minimale Zittern hat, diese aufgezeichnet werden. Also habe ich die Empfindlichkeit gesenkt, indem ich in der Interrupt-Routine eine Hysterese hinzugefügt habe:

Leere Unterbrechung ()

{ Zeichen ich; i = digitalRead (B_PHASE); wenn (i == 1) zählen +=1; sonst zählen -=1; if (abs(count) >= Hysterese) { flag_A = flag_A+count; zählen = 0; } }

Dieser Trick reichte aus, um dem Maß eine gute Stabilität zu verleihen.

Schritt 4: Messung

Wählen Sie Ihre Maßeinheit (Dezimal oder Imperial) und positionieren Sie dann einfach das Rad mit seinem Kontaktpunkt auf den Anfang Ihrer Messung, drücken Sie die Reset-Taste und lassen Sie es bis zum Ende rotieren. Von links nach rechts erhöht und summiert sich der Takt, von rechts nach links verringert und subtrahiert er. Sie können auch Kurvenobjekte messen (Ihre Autoform, den Handlauf einer Wendeltreppe, die Länge Ihres Armes von der Schulter bis zum Handgelenk mit gebeugtem Ellbogen usw.).

Eine volle Umdrehung eines Rades mit Durchmesser = D misst eine Länge von D*π. In meinem Fall mit einem 51-mm-Rad sind dies 16,02 cm und jeder Tick misst 0,4 mm (siehe Abschnitt Empfindlichkeit).

Schritt 5: Zusammenbauen

Der PoC wurde auf einem Steckbrett erstellt, um die Schaltung zu demonstrieren. Jede Komponente wurde auf der Platine befestigt und der Drehgeber ist mit einem 2x2-poligen Schraubklemmenblock verbunden. Die Batterie ist eine 9-V-Standardbatterie und der Gesamtstromverbrauch der Schaltung beträgt etwa 60 mA.

Schritt 6: Code

Für das Display habe ich die U8g2lib verwendet, die für diese Art von OLED-Displays sehr flexibel und leistungsstark ist und eine große Auswahl an Schriftarten und gute Positionierungsfunktionen ermöglicht. Ich habe nicht viel Zeit damit verschwendet, das Display mit Informationen zu füllen, da dies nur ein Poc war.

Um den Encoder zu lesen, verwende ich Interrupts, die von einer der 2 Phasen erzeugt werden: Jedes Mal, wenn sich die Encoderwelle bewegt, generiert sie einen Interrupt für Arduino, der mit dem Anstieg des Impulses verbunden ist.

AttachInterrupt(digitalPinToInterrupt(A_PHASE), Interrupt, RISING);

Die Anzeige wechselt automatisch von Millimetern zu Metern, zu Kilometern und (wenn mit der Drucktaste ausgewählt) von Zoll, zu Yards zu Meilen, während die RST-Taste das Maß auf Null zurücksetzt.

Schritt 7: Schaltpläne

Schema
Schema

Schritt 8: Vom PoC zur Produktion

Warum ist das ein Proof of Concept? Aufgrund vieler Verbesserungen, die vor dem Bau einer voll funktionsfähigen Ausrüstung durchgeführt werden könnten/sollten. Sehen wir uns alle möglichen Verbesserungen im Detail an:

  • Rad. Die Empfindlichkeit/Präzision von Measurino hängt vom Rad ab. Ein kleineres Rad könnte Ihnen eine bessere Genauigkeit beim Messen kleiner Längen (in der Größenordnung von Millimetern bis Zentimetern) bieten. Ein viel größeres Rad mit einem Verlängerungsausleger ermöglicht es, auf der Straße zu gehen und Kilometer zu messen. Bei kleinen Rädern muss das Material beachtet werden: Ein Vollgummirad könnte sich leicht verformen und die Präzision beeinträchtigen, daher empfehle ich in diesem Fall ein Aluminium-/Stahlrad mit nur einem dünnen Band, um Schlupf zu vermeiden. Mit einer trivialen Softwarebearbeitung (wählen Sie den richtigen Raddurchmesser mit einem Schalter aus) können Sie austauschbare Räder in Betracht ziehen, um sich an jedes Maß anzupassen, indem Sie einen 4-Pin-Anschluss (z. B. USB-Anschluss) verwenden.
  • Software. Durch Hinzufügen einer weiteren Drucktaste könnte sich die Software auch um das Messen von Bereichen von Rechtecken oder Winkelamplituden kümmern. Ich empfehle auch, eine "Hold"-Taste hinzuzufügen, um den Takt am Ende einzufrieren, um zu vermeiden, dass das Rad versehentlich bewegt wird, bevor der Wert auf dem Display abgelesen wird.
  • Ersetzen Sie das Rad durch eine Spule. Für kurze Maßnahmen (innerhalb weniger Meter) könnte das Rad durch eine gefederte Spule mit Faden oder Band ersetzt werden. Auf diese Weise müssen Sie nur am Faden ziehen (wodurch die Encoderwelle rotiert), Maß nehmen und auf das Display schauen.
  • Anzeige des Batteriezustands hinzufügen. Der 3,3-V-Arduino-Referenzpin (mit einer Genauigkeit von 1%) kann als Basis für den ADC-Wandler verwendet werden. Indem wir also eine Analog-Digital-Wandlung am 3,3-V-Pin durchführen (durch Anschließen an A1) und dann diesen Messwert mit dem Messwert vom Sensor vergleichen, können wir einen lebensechten Messwert extrapolieren, unabhängig von der VIN (solange es über 3,4 V liegt). Ein funktionierendes Beispiel könnte in diesem anderen Projekt von mir gefunden werden.

Schritt 9: Bildergalerie

Empfohlen: