Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

POV-Zylinder mit Arduino Due

Komponenten und Verbrauchsmaterialien

Arduino Due
× 1
Linearregler mit einstellbarem Ausgang
× 1
Texas Instruments Dual Op-Amp für allgemeine Zwecke
× 1
Widerstand 20k Ohm
× 3
Widerstand 220 Ohm
× 1
Widerstand 1k Ohm
× 2
Allzwecktransistor NPN
× 1
Kondensator 1000 µF
× 1
Kondensator 100 nF
× 1
Kondensator 1 µF
× 1
Widerstand 240 Ohm
× 1
Trimmwiderstand 1k Ohm
× 1
IR-Sender (generisch)
× 1
IR-Empfänger (generisch)
× 1
Breadboard (generisch)
× 1
Styroporzylinder (Durchmesser:20cm, Höhe:10cm)
× 2
Elektromotor, 12V, XDRIVE 545-1
× 1
Kronenzahnrad 60 T 8 MM
× 1
Kronenzahnrad 12 Z, 3,2 MM
× 1
Zahnriemen, 80 T, 6 x 200 MM
× 1
Gewindestange, M8, 125 mm
× 3
Gewindestange, M8, 330 mm
Wird als Schaft verwendet.
× 1
Kontaktring ASL9017
× 1
Klebeband (schwarz, 48 mm)
Zum Aufkleben des Rotors
× 1
Sperrholzscheibe (Ø 150 mm, Dicke:10 mm)
× 2
Aluminiumscheibe ( Ø 200 mm, Dicke:2,5 mm)
× 2

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Rollsäge (allgemein)
Bench Drill (generisch)
Labornetzteil (generisch)
Laptop mit Windows 10 (generisch)

Apps und Onlinedienste

Microchip Technology Microchip Studio
Wird für die Arduino-SW-Entwicklung verwendet
Arduino-IDE
Kann als Alternative zur Atmel Studio IDE verwendet werden
Cygwin
Cygwin bietet ähnliche Funktionen wie eine Linux-Distribution unter Windows. Wird für das PC-Steuerungsprogramm verwendet.
Microsoft Visual Studio 2015
Wird für die grafische Benutzeroberfläche verwendet.

Über dieses Projekt

Einführung

Dies ist mein erstes Arduino-Projekt. Meine Arbeit wurde von mehreren Maker-Projekten inspiriert, die Persistence of Vision Displays erstellt haben [2,3,4].

Beharrlichkeit des Sehens (POV) bezieht sich auf die optische Täuschung, bei der mehrere diskrete Bilder im menschlichen Geist zu einem einzigen Bild verschmelzen und als Erklärung für die Bewegungswahrnehmung in Kino- und Animationsfilmen angesehen werden [1].

Die Projekte [2,3,4] implementieren POV-Globus-Displays mit diskreten LEDs und diskreten Schieberegistern. Stattdessen verwendet mein Gerät einen rotierenden Zylinder und handelsübliche RGB-LED-Streifen als POV-Display.

Die Hauptmerkmale meines POV-Zylinders sind:

  • POV-Anzeige (Persistenz des Sehens)
  • Zeigt animierte GIF-Bilder auf einem rotierenden Zylinder an
  • Die GIF-Bilder werden in Arduinos RAM oder Flash gespeichert
  • Kommunikation mit PC über Bluetooth

Technische Übersicht

  • Zylinderdurchmesser:200 mm
  • Zylinderhöhe:200 mm
  • Zylindermaterial:Styropor
  • Zylindergewicht:420 g
  • 4 RGB-LED-Streifen basierend auf LPD8806
  • Bildschirmgröße 151 x 40 Pixel
  • Basierend auf Arduino Due
  • Inklusive HC06 Bluetooth-Modul
  • Steuerung über Bluetooth von einem PC

Mechanische Konstruktion

Der mechanische Aufbau ist in der Zeichnung unten dargestellt.

Die Vorrichtung umfasst ein Chassis und einen Rotor. Das Chassis besteht aus zwei runden Sperrholzscheiben, die über drei Gewindestangen verbunden sind. Der Abstand zwischen den Scheiben beträgt 120 mm. In der Mitte befinden sich zwei Kugellager und die Welle. Für die Welle wird ebenfalls eine Gewindestange verwendet. Die Welle wird von einem Elektromotor über zwei Kronenräder und einen Zahnriemen angetrieben. Die Rotationsgeschwindigkeit beträgt bis zu 1300 U/min (22 Hz).

Der Rotor besteht aus zwei Styroporzylindern und zwei kreisförmigen Aluminiumscheiben. Die Styroporzylinder sind auf die untere Scheibe geklebt. Die obere Scheibe kann entfernt werden. Es wird verwendet, um den Rotor an der Welle zu befestigen.

Die Elektronik befindet sich im oberen Teil des Rotors. Es enthält die folgenden Teile:

  • Arduino Due Board
  • Selbstgemachtes Schild für das Arduino Due Board
  • Netzteil (PS)-Platine
  • HC-06 Bluetooth-Modul

Die Stromversorgung (7,5V) wird über Schleifkontakte und einen Kontaktring auf die Netzteilplatine geführt.

Es werden vier LED-Streifen mit insgesamt 40 RBG-LEDs verwendet. Sie sind mit Kabeln mit dem Arduino Shield verbunden.

Die vier LED-Streifen werden wie in der Abbildung unten gezeigt platziert. Durch die Verwendung von vier versetzten LED-Streifen wird der Abstand in der Y-Achse zwischen den LEDs durch 4 geteilt. Der Abstand in der X-Achse wird von SW übernommen. Die SW aktualisiert alle 40 LEDs 151 Mal pro Umdrehung. Das Raster in der Zeichnung entspricht den sichtbaren Pixeln.

Elektronische Schaltung

Die elektronische Schaltung ist im beigefügten PDF-Schema dargestellt.

Es gibt eine Stromversorgungsplatine mit einem Spannungsregler LM317. Die Eingangsspannung beträgt 7,5 Volt und die Ausgangsspannung beträgt 4,6 Volt. Der Spannungsregler versorgt das Arduino Due Board und die LED-Streifen.

Es gibt auch ein selbstgebautes Shield für den Arduino. Es enthält die Anschlusskabel zu den LED-Streifen und eine Schaltung für den IR-Empfänger. Der IR-Empfänger dient zur Erfassung der Rotorposition. Es ist mit einem Timer-/Interrupt-Eingang des Arduino verbunden.

Es gibt vier LED-Streifen namens STRIP0 bis STRIP3. Jeder Streifen verfügt über 5 LPD8806 LED-Treiber und 10 RBG-LEDs. STRIP0 ist mit USART0 verbunden und STRIP1 ist mit USART1 verbunden. Beide USARTs arbeiten im SPI-Modus. STRIP2 und STRIP3 sind in Reihe geschaltet und werden von der SPI-Schnittstelle des Arduino angesteuert.

Zur Kommunikation mit einem PC wird ein HC-06 Bluetooth-Modul an USART3 angeschlossen. Das Bluetooth-Modul wird mit den 3,3 Volt des Arduino-Boards versorgt.

Arduino-Software

Die Arduino-Software besteht aus dem Hauptprogramm (mpc.ino ) und die folgenden Bibliotheken:

  • bt - Treiber-SW für Bluetooth-Modul
  • LDP8806 - Treiber-SW für LED-Streifen
  • Speicherfrei - Funktionen zum Erkennen des verfügbaren freien RAM-Speichers
  • mpcgif - Wiedergabe von GIF-Dateien, die sich im RAM oder Flash-Speicher befinden
  • Bilder - Interne GIF-Bilder, die in Flash gespeichert sind
  • Spur - Funktionen zum SW-Debugging

Die periodische Ausgabe der Bilder an die LED-Streifen erfolgt unterbrechungsgesteuert. Es gibt zwei Toggle-Frame-Puffer. Jeder Framebuffer enthält ein Bild mit 40 x 151 Pixeln. Jedes Pixel ist ein Ein-Byte-Farbpalettenindex. Während ein Framebuffer per Interrupt und DMA an die LED-Streifen ausgegeben wird, wird der andere Framebuffer vom Hauptprogramm vorbereitet (z.B. durch die Funktion Dekodierung der GIF-Bilder). Das Umschalten der Frame-Puffer erfolgt durch die Frame-Interrupt-Routine.

Es gibt einen Frame-Interrupt pro Umdrehung, der vom IR-Sensor ausgelöst wird. Die Rahmenunterbrechungsroutine misst (über einen Hardwarezeitgeber) die Entwicklungsgeschwindigkeit und programmiert periodische Spaltenunterbrechungen (eine pro Spalte, d. h. 150 Unterbrechungen pro Umdrehung) mit einem Hardwarezeitgeber. Die Spaltenunterbrechungsroutine gibt die aktuelle Spalte an die LED-Streifen aus. Aus Performancegründen erfolgt die Ausgabe über drei DMA-Kanäle, die vollständig parallel arbeiten.

Der vollständige Arduino-Quellcode ist bei github verfügbar.

PC-Steuerungsprogramm

Das PC-Steuerungsprogramm (pccp ) ist ein in C++ geschriebenes Befehlszeilentool. Es läuft unter Cygwin und kommuniziert über Bluetooth mit dem Arduino. Die pccp ermöglicht die Steuerung des POV-Zylinders mit den folgenden Einzelzeichenbefehlen:

  • 0-7 - Bildschirm mit Farbe füllen (Schwarz, Rot, Gelb, Grün, Cyan, Blau, Violett, Weiß)
  • t - Dreieckskurve zeichnen (als Testbild)
  • s - Aktivieren oder deaktivieren Sie die Drehung des angezeigten Bildes
  • r - eine einzelne Zeile zeichnen 
  • c - einzelne Spalte zeichnen
  • y - internes GIF-Bild wiedergeben, das im Flash-Speicher gespeichert ist
  • f - Laden Sie eine externe GIF-Datei vom PC über BT herunter
  • x - Heruntergeladene externe GIF-Datei wiedergeben

Das pccp stellt auch eine Schnittstelle zu einer grafischen Benutzerschnittstelle bereit. Außerdem zeigt es die aktuelle Rotationsgeschwindigkeit (in Hz und µs) und einen Framezählerwert an.

Der vollständige Quellcode ist auf github verfügbar.

Grafische Benutzeroberfläche

Die grafische Benutzeroberfläche ist eine universelle Windows-App. Es ermöglicht die Auswahl der GIF-Datei, die vom POV-Zylinder angezeigt werden soll. Die App wurde von der FilePicker-App aus den "Microsoft Windows Universal Samples" [5] abgeleitet.

Der vollständige Quellcode ist auf github verfügbar.

Referenzen

[1] https://en.wikipedia.org/wiki/Persistence_of_vision

[2] RGB-LED-KUGEL – POV – 40 x 200

[3] POV-Globe-Display RGB

[4] POV Globe Display RGB – Projektbeschreibung

[5] https://github.com/Microsoft/Windows-universal-samples

Code

Arduino-Quellcode für POV-Zylinder
https://github.com/hanoba/povc-arduino
PC-Steuerungsprogramm für POV-Zylinder
Dies ist ein C++-Befehlszeilenprogramm, das unter Cygwin läufthttps://github.com/hanoba/povc-pccp
Grafische Benutzeroberfläche für POV-Zylinder
Dies ist eine universelle Windows-Apphttps://github.com/hanoba/povc-win-app

Schaltpläne

Dies ist der Schaltplan.

Herstellungsprozess

  1. Arduino-Pov-Vision-Uhr
  2. DIY Einfaches 20-kHz-Arduino-Oszilloskop auf Nokia 5110 LCD
  3. Smart Blinds
  4. Arduino Due TIC TAC TOE mit Touchscreen
  5. Münzprüfer mit Arduino steuern
  6. italienische Wordclock
  7. Arduino mit Bluetooth zur Steuerung einer LED!
  8. Einfacher Hindernissensor mit Arduino
  9. Sigfox-kWh-Zähler
  10. Ein isolierter Analogeingang für Arduino