Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bouw een indrukwekkende POV-cilinder met Arduino Due – Stapsgewijze handleiding

Onderdelen en benodigdheden

Onderdeel Aantal
Arduino Due 1
HC-06 Bluetooth-module 1
1 m LPD8806 LED RGB-strip IP20 60 LEDs/m - 30 ICs/m 1
Lineaire regelaar met instelbare uitgang (LM317) 1
Texas Instruments Dual Op-Amp (general purpose) 1
Weerstand 20k ohm 3
Weerstand 220 ohm 1
Weerstand 1k ohm 2
Algemene NPN-transistor 1
Condensator 1000 µF 1
Condensator 100 nF 1
Condensator 1 µF 1
Weerstand 240 ohm 1
Trimweerstand 1k ohm 1
IR-zender (generiek) 1
IR-ontvanger (generiek) 1
Breadboard (generiek) 1
Styroporcilinder (Diameter: 20 cm, Hoogte: 10 cm) 2
Elektromotor 12V, XDRIVE 545-1 1
Kroontandwiel 60T 8mm 1
Kroontandwiel 12T, 3,2mm 1
Tandriem, 80T, 6 x 200 mm 1
Draadstang M8, 125 mm 3
Draadstang M8, 330 mm (als as) 1
Contactring ASL9017 1
Zwart plakband (48 mm) 1
Multiplexschijf (Ø 150 mm, Dikte: 10 mm) 2
Aluminiumschijf (Ø 200 mm, Dikte: 2,5 mm) 2

Benodigde tools en machines

  • Solderbout (generiek)
  • Dekzaag (generiek)
  • Pilboormachine (generiek)
  • Labovoeding (generiek)
  • Laptop met Windows 10 (generiek)

Apps en online services

  • Microchip Studio (voor Arduino softwareontwikkeling)
  • Arduino IDE (alternatief voor Atmel Studio)
  • Cygwin (Linux-achtige omgeving op Windows, voor PC-besturingsprogramma)
  • Microsoft Visual Studio 2015 (voor grafische gebruikersinterface)

Over dit project

Inleiding

Dit is mijn eerste Arduino-project. Mijn werk is geïnspireerd door verschillende maker-projecten die Persistence of Vision (POV)-displays creëerden. Persistence of vision (POV) verwijst naar de optische illusie waarbij meerdere discrete afbeeldingen in de menselijke geest samensmelten tot een enkele afbeelding, wat wordt beschouwd als de verklaring voor bewegingsperceptie in cinema en animatiefilms.

De gerefereerde projecten implementeren POV-globedisplays met discrete LEDs en schuifregisters. Mijn apparaat gebruikt daarentegen een rotterende cilinder en kant-en-klare RGB-ledstrips als POV-display.

Hoofdkenmerken

  • POV (Persistence of Vision) display
  • Toont geanimeerde GIF-afbeeldingen op een rotterende cilinder
  • GIF-afbeeldingen opgeslagen in Arduino's RAM of Flash-geheugen
  • Communicatie met PC via Bluetooth

Technisch overzicht

  • Cilinderdiameter: 200 mm
  • Cilinderhoogte: 200 mm
  • Cilindermateriaal: Styrofoam
  • Cilindergewicht: 420 g
  • 4 RGB-ledstrips gebaseerd op LPD8806
  • Schermresolutie: 151 x 40 pixels
  • Gebaseerd op Arduino Due
  • Inclusief HC-06 Bluetooth-module
  • Bestuurbaar via Bluetooth vanaf een PC

Mechanische constructie

De mechanische constructie is weergegeven in de tekening hieronder. Het apparaat bestaat uit een chassis en een rotor.

Bouw een indrukwekkende POV-cilinder met Arduino Due – Stapsgewijze handleiding

Het chassis bestaat uit twee ronde multiplexschijven verbonden door drie draadstangen (afstand 120 mm). In het midden zitten twee kogellagers en de as (ook een draadstang). De as wordt aangedreven door een elektromotor via twee kroontandwielen en een tandriem. De draaisnelheid bedraagt maximaal 1300 RPM (22 Hz).

De rotor bestaat uit twee styroporcilinders en twee ronde aluminiumschijven. De styroporcilinders zijn gelijmd op de onderste schijf. De bovenste schijf is demontabel en dient om de rotor aan de as te bevestigen.

Bouw een indrukwekkende POV-cilinder met Arduino Due – Stapsgewijze handleiding

De elektronica zit in het bovenste deel van de rotor en omvat:

  • Arduino Due-board
  • Zelfgemaakte shield voor de Arduino Due
  • Voedingsprint (PS-board)
  • HC-06 Bluetooth-module
Bouw een indrukwekkende POV-cilinder met Arduino Due – Stapsgewijze handleiding

De voeding (7,5 V) wordt via glijcontacten en een contactring toegevoerd aan het voedingsprint. Er worden vier ledstrips met in totaal 40 RGB-leds gebruikt, aangesloten met kabels op de Arduino-shield.

Bouw een indrukwekkende POV-cilinder met Arduino Due – Stapsgewijze handleiding

De vier ledstrips zijn geplaatst zoals in de onderstaande tekening. Door vier verschoven ledstrips wordt de afstand in de Y-as tussen de leds gedeeld door 4. De afstand in de X-as wordt door software afgehandeld. De software update alle 40 leds 151 keer per omwenteling. Het rooster in de tekening correspondeert met de zichtbare pixels.

Bouw een indrukwekkende POV-cilinder met Arduino Due – Stapsgewijze handleiding

Elektronische schakeling

De elektronische schakeling is te zien in het bijgevoegde PDF-schema. Er is een voedingsprint met een LM317-spanningsregelaar. De invoerspanning is 7,5 V, de uitgangsspanning 4,6 V. De regelaar voedt de Arduino Due en de ledstrips.

Er is ook een zelfgemaakte shield voor de Arduino met connectorenkabels voor de ledstrips en een schakeling voor de IR-ontvanger. De IR-ontvanger detecteert de rotorpositie en is aangesloten op een timer/interrupt-ingang van de Arduino.

Er zijn vier ledstrips: STRIP0 tot STRIP3. Elke strip heeft 5 LPD8806-driver-IC's en 10 RGB-leds. STRIP0 is verbonden met USART0 en STRIP1 met USART1 (beide in SPI-modus). STRIP2 en STRIP3 zijn in serie geschakeld en worden aangestuurd via de hardware-SPI-interface van de Arduino.

Voor communicatie met een PC is een HC-06 Bluetooth-module aangesloten op USART3, gevoed door de 3,3 V van de Arduino.

Arduino-software

De Arduino-software bestaat uit het hoofdprogramma (mpc.ino) en de volgende bibliotheken:

  • bt – Driver voor Bluetooth-module
  • LDP8806 – Driver voor ledstrips
  • MemoryFree – Functies om beschikbaar RAM-geheugen te detecteren
  • mpcgif – Afspelen van GIF-bestanden uit RAM of Flash
  • pictures – Interne GIF-afbeeldingen in Flash
  • trace – Functies voor software debugging

Periodieke uitvoer naar de ledstrips gebeurt interrupt-gestuurd. Er zijn twee framebuffers die elk een afbeelding van 40 x 151 pixels bevatten (elke pixel is een één-byte kleurpalette-index). Terwijl de ene buffer via interrupt en DMA wordt uitgevoerd, wordt de andere voorbereid door het hoofdprogramma (bijv. GIF-decodering). Tussen de buffers wordt gewisseld door de frame-interrupt-routine.

Er is één frame-interrupt per omwenteling, getriggerd door de IR-sensor. Deze meet de draaisnelheid (via hardware-timer) en programmeert periodieke kolom-interrupts (150 per omwenteling). De kolom-interrupt-routine stuurt de huidige kolom naar de ledstrips. Uitvoer gebeurt via drie DMA-kanalen die volledig parallel werken.

De volledige Arduino-broncode is beschikbaar op GitHub.

PC-besturingsprogramma

Het PC-besturingsprogramma (pccp) is een command-line tool in C++ die onder Cygwin draait en via Bluetooth communiceert met de Arduino. Het stelt de POV-cilinder in met single-character commando's:

  • 0-7 – Scherm vullen met kleur (zwart, rood, geel, groen, cyaan, blauw, violet, wit)
  • t – Driehoeckcurve tekenen (testafbeelding)
  • s – Rotatie van getoonde afbeelding in/uitschakelen
  • r – Enkele rij tekenen
  • c – Enkele kolom tekenen
  • y – Interne GIF uit Flash afspelen
  • f – Extern GIF-bestand van PC via BT downloaden
  • x – Gedownloade externe GIF afspelen

De pccp biedt ook een interface naar een grafische gebruikersinterface en toont de huidige draaisnelheid (in Hz en µs) en een frame-teller.

De volledige broncode is beschikbaar op GitHub.

Grafische gebruikersinterface

De GUI is een Universal Windows App waarmee de GIF-te-bestand geselecteerd kan worden. De app is afgeleid van de FilePicker-app uit de "Microsoft Windows Universal Samples".

Bouw een indrukwekkende POV-cilinder met Arduino Due – Stapsgewijze handleiding

De volledige broncode is beschikbaar op GitHub.

Referenties

  1. https://en.wikipedia.org/wiki/Persistence_of_vision
  2. RGB LED GLOBE - POV - 40 x 200
  3. POV Globe Display RGB
  4. POV Globe Display RGB - Projectbeschrijving (Duits)
  5. https://github.com/Microsoft/Windows-universal-samples

Code

Schema's

Het schema is beschikbaar in de projectdocumentatie.

Productieproces

  1. Arduino POV-klok: Bouw een Persistence-of-Vision LED-display
  2. Bouw een 20 kHz Arduino Oscilloscoop op een Nokia 5110 LCD – Eenvoudige DIY Handleiding
  3. Slimme Jaloezieën: Geautomatiseerd Lichtbeheer met Arduino & Zonne-energie
  4. Bouw een Touchscreen Boter-Kaas-en-Eieren Spel op Arduino Due
  5. Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
  6. Bouw een Italiaanse Woordklok met Arduino Nano, NeoPixel, LCD en RTC
  7. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  8. Een eenvoudige obstakelsensor bouwen met Arduino – IR LED & Fotodiodo Tutorial
  9. Bouw een Betrouwbare Sigfox kWh Meter met Arduino MKR Fox 1200
  10. Bluetooth Temperatuurmeter met Arduino Nano
  11. Geïsoleerde analoge ingangsschakeling voor Arduino bouwen