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

Servomotor-kunstwerk

Componenten en benodigdheden

Arduino UNO
× 1
Adafruit 16-kanaals PWM servomotorcontroller
× 3
SG90 Micro-servomotor
× 36
5 volt 30 watt schakelende voeding
× 1
Servomotorkabelverlengingen
× 1
24 in. x 48 in. Peg Board
× 1
IJslollystokjes, gesneden tot 3 1/4 inch
× 36
Ultrasone sensor - HC-SR04 (algemeen)
Deze componenten zijn optioneel - alleen vereist als u de interactieve functie toevoegt.
× 5

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
Hot lijmpistool (algemeen)

Apps en online services

Arduino IDE

Over dit project

De onderstaande video toont de actie terwijl 36 servomotoren een elektronisch kunstwerk creëren. Achter de schermen werken een Arduino Uno en drie 16-kanaals PWM-servocontrollers. De oorspronkelijke inspiratie hiervoor was een veel grotere versie met 450 servo's die ik zag in een museum voor moderne kunst. Maar zelfs deze kleine versie met slechts 36 servo's zorgt voor enkele interessante effecten.

Er is een optionele functie die ik niet in de video heb laten zien, maar deze kan worden toegevoegd om de weergave interactief te maken. Het is puur optioneel en de software werkt prima zonder. Voor deze optie zijn vijf ultrasone afstandssensoren gemonteerd langs de achterkant van de bovenrand van het display. Wanneer u uw hand boven de middelste sensor plaatst, gaat de Uno in de interactieve modus en proberen alle servo's uw hand te volgen terwijl u deze boven de afstandssensoren beweegt. Wanneer u uw hand een paar seconden verwijdert, keert het programma terug naar de displayweergave. Nogmaals, u kunt deze optie toevoegen als u dat wilt. Als je dat niet doet, werkt de software prima zonder.

Hardware

Zoals je kunt zien, is dit project gebouwd op een stuk pegboard van 24 bij 48 inch. De breedte werd teruggebracht tot 32 inch. Servo's zijn 4 inch uit elkaar gemonteerd en met hete lijm aan de achterkant van het pegboard bevestigd. Ijslollystokjes, verkleind tot 3 1/4 inch, worden op de assen van de servo's gemonteerd, opnieuw met behulp van hete lijm.

De SG90 servomotoren zijn het enige kostbare item in dit project. Je kunt een set van 8 krijgen voor $ 20 op Amazon. Toch moet je $ 100 investeren in servo's. SG90's zouden allemaal 180º servo's zijn, maar de meeste halen het niet helemaal. Een paar komen veel te kort en moeten worden weggegooid. Als u 5 sets van 8 koopt, zou u 36 goederen moeten kunnen vinden die minstens 160º reizen.

De servo's moeten worden ingesteld op hun minimumpositie (positie op PWM 150), en de ijslollystokjes moeten horizontaal en naar rechts worden gemonteerd in deze minimale positie, van voren gezien. Ik heb een klein programma geleverd dat u kunt gebruiken om te verzekeren dat de servo's zich in deze minimale positie bevinden:SetServosToMinimum.

De foto hierboven toont de lay-out van de achterkant. De drie PWM-controllers zijn aan de linkerkant van de servo's gemonteerd. Helemaal rechts zit de 30 watt 5 volt voeding. De Arduino wordt afzonderlijk van stroom voorzien via een USB-stroomadapter. Ik doe het alleen op die manier zodat ik de USB-kabel kan loskoppelen en, via een USB-verlengkabel, op mijn computer kan aansluiten voor programmawijzigingen. Het ziet er een beetje raar uit, maar ik vind het handig.

U kunt ook de optionele ultrasone afstandssensoren aan de bovenkant van het scherm zien. Hete lijm en extra ijslollystokjes werden gebruikt om ze te monteren. Het kleine prototypebord dat je onder de Uno ziet, is er gewoon om de stroom en aarde naar alle ultrasone sensoren te vergemakkelijken.

Software

Ik gebruik de PWM Servo Driver-bibliotheek van Adafruit om de 16-kanaals servocontrollers te bedienen, dus je moet die van Adafruit halen en in de Arduino-bibliotheken installeren. Mijn software kan worden gebruikt zoals het is, met of zonder de optionele ultrasone sensoren. Het presenteert een verscheidenheid aan effecten in een show die iets meer dan drie minuten duurt voordat het wordt herhaald. Als de optionele sensoren zijn geïnstalleerd, wordt de interactieve modus geactiveerd wanneer er een hand op de middelste sensor wordt geplaatst.

Er zit veel in de software. Ik zal niet proberen het hele ding hier uit te leggen, maar ik zal je een beetje informatie geven over hoe het werkt. Ik heb twee tafels. De curPos-tabel slaat de huidige positie van elke servo op, gedeeld door drie. De tarPos-tabel slaat de gewenste positie van elke servo op, gedeeld door drie. Ze zijn om twee redenen door 3 gedeeld. Ten eerste kunnen ze worden opgeslagen in een byte, en ten tweede verplaats ik de servo's altijd in stappen van 3 stappen.

De Uno kent in eerste instantie niet de posities van elke servo, dus de setup-routine stelt alle servo's in op een verticale positie en stelt alle curPos- en tarPos-variabelen in op die verticale positie. We kunnen de servo's dan van daar naar andere posities verplaatsen door de gewenste posities in tarPos te wijzigen.

Een subroutine genaamd goToTargets() is de primaire manier waarop de servo's worden verplaatst. We bepalen waar de servo's heen gaan door de doelen op tarPos in te stellen. Vervolgens kunnen we bepalen hoe snel ze daar gaan met de goToTargets-routine. Het heeft twee manieren om de snelheid te regelen. Het beweegt de servo's naar hun doelen in stappen van 15 stappen, waarbij de herhalingen die in de subroutine worden ingevoerd je veelvouden van 15 stappen geven. De andere invoer is mydelay, die gewoon een vertraging in milliseconden toevoegt aan elke aanroep van goToTargets.

Er is een heleboel andere dingen, maar eigenlijk is al het andere gewoon verschillende opstellingen en implementaties van de verschillende gepresenteerde effecten.

De optionele interactieve functie wordt afgehandeld door een subroutine genaamd trackRoutine. Het wordt aangeroepen wanneer de goToTarget-routine een object (uw hand) ergens boven de middelste ultrasone sensor ziet. Het probeert alle servo's de beweging van uw hand te laten volgen terwijl deze over de sensoren beweegt. Als het een paar seconden geen hand heeft gedetecteerd, keert het terug en wordt het normale programma hervat.

Code

  • ServosArt-software voor Arduino Uno
ServosArt-software voor Arduino UnoArduino
Geen voorbeeld (alleen downloaden).

Schema's

Laat zien hoe Uno en servo's worden aangesloten via drie 16-kanaals controllers Verbindt 5 ultrasone afstandssensoren met Uno zodat servo's handbewegingen kunnen volgen.

Productieproces

  1. Raspoulette-prototype
  2. Simple Pi Robot
  3. Experts in Fanuc-servomotorreparatie
  4. Deskundige Siemens servomotorreparatie
  5. Tips voor servomotorreparaties en probleemoplossing
  6. MOSMusic
  7. Wat is een lineaire motor?
  8. De schoonheid van planetaire versnellingsbak voor servomotor:
  9. Een inleiding tot servopers
  10. Wat is een servomotor?
  11. Wat is servomotorreductor?