Whack-A-Mole (projecte de pneumàtica)
Contingut
Introducció
La idea és fer un whac-a-mole més o menys clàssic, amb pistons pneumàtics. Podem fer dues aproximacions / solucions:
- 1a solució: Raspberry Pi i pantalla plana. Es pot treballar molt el tema dels gràfics, videos, efectes visuals. El disseny del score no és problema perquè es score està a la pantalla. El desenvolupament del software és més llarg però el resultat pot ser molt bo.
- 2a solució: Arduino i displays de 7-segments extra-grans. Hi ha més part d'electrònica, i el disseny dels displays de 7 segments tal com es comenta en un enllaç de més avall pot ser molt interessant. A part del display, també hi pot haver un vidre amb un disseny retroil.luminat. El software és més ràpid i fàcil, doncs senzillament es tracta de tenir un score i un high score.
Referències
Ferreteria Mengual. Rambla de Guipúscoa
A.J.M. Hidráulica y Neumática Constitución, 56 Nave 5. Pol. Ind. Les grasses 08980 Sant Feliu de Llobregat. BARCELONA +34 936 851 644 info@ajm.es
good air sl carretera del mig, 144, 08907, hospitalet llobregat l barcelona, barcelona
racores y arandelas condal s.a. calle torrent estadella, 31, 08030, barcelona, barcelona
tecnicas thca sl calle joan guell, 184, 08028, barcelona, barcelona
Display de 7 segments extra-gran (DIY)
Està molt bé aquest projecte.
D'aquesta manera podem fer els nostres propis displays del tamany i disseny que desitgem.
Un altre projecte (implementaré aquesta solució basada en NeoPixels/WS2812B):
NeoPixels/WS2812B
- https://learn.adafruit.com/adafruit-neopixel-uberguide/the-magic-of-neopixels
- http://akirasan.net/como-funciona-un-led-ws2812b/
- https://www.luisllamas.es/arduino-led-rgb-ws2812b/
NeoPixel is Adafruit’s brand for individually-addressable RGB color pixels and strips based on the WS2812, WS2811 and SK6812 LED/drivers, using a single-wire control protocol.
NeoPixels don’t just light up on their own; they require a microcontroller (such as Arduino) and some programming.
NeoPixels aren’t the answer for every project. The control signal has very strict timing requirements, and some development boards (such as Netduino or Raspberry Pi) can’t reliably achieve this. This is why we continue to offer other LED types; some are more adaptable to certain situations.
Consum de corrent
Les tires de LEDs funcionen a 5V. Each NeoPixel can draw up to 60 milliamps at full brightness.
The approximate peak power use (all LEDs on at maximum brightness) per meter is:
30 LEDs: 9 Watts (about 1.8 Amps at 5 Volts). 60 LEDs: 18 Watts (about 3.6 Amps at 5 Volts). 144 LEDs : 43 watts (8.6 Amps at 5 Volts).
Mixed colors and lower brightness settings will use proportionally less power.
Com a regla general, depenent del projecte (per exemple per mostrar els meus números), podem considerar que hi haurà encesos la tercera part dels leds (1/3), i per tant podem considerar que el cosum per led és de 20mA (amb llum blanca, és a dir amb R, G i B activats). En el meu projecte tinc 84 NeoPixels:
84 NeoPixels × 20 mA ÷ 1,000 = 1.7 Amps minimum
The choice of overhead in your power supply is up to you. Maximum safety and reliability are achieved with a more generously-sized power supply, and this is what we recommend. Most power supplies can briefly push a little extra current for short periods. Many contain a thermal fuse and will simply shut down if overworked. So they may technically work, but this is the electronics equivalent of abusing a rental car.
Best Practices
Improper use can damage your NeoPixels. Before diving in, be aware of the following:
- Before connecting NeoPixels to any large power source (DC “wall wart” or even a large battery), add a capacitor (1000 µF, 6.3V or higher) across the + and – terminals as shown above. The capacitor buffers sudden changes in the current drawn by the strip.
- Place a 300 to 500 Ohm resistor between the Arduino data output pin and the input to the first NeoPixel. The resistor should be at the end of the wire closest to the NeoPixel(s), not the microcontroller. Some products already incorporate this resistor…if you’re not sure, add one…there’s no harm in doubling up!
- Try to minimize the distance between the Arduino and first pixel, so the signal is clear. A meter or two is usually no problem. Much longer and things can become unreliable.
- Avoid connecting NeoPixels to a live circuit. If you simply must, always connect ground first, then +5V, then data. Disconnect in the reverse order.
- If powering the pixels with a separate supply, apply power to the pixels before applying power to the microcontroller.
- Observe the same precautions as you would for any static-sensitive part; ground yourself before handling, etc.
- NeoPixels powered by 5v require a 5V data signal. If using a 3.3V microcontroller you must use a logic level shifter such as a 74AHCT125 or 74HCT245. (If you are powering your NeoPixels with 3.7v like from a LiPoly, a 3.3v data signal is OK)
- Make sure that your connections are secure. Alligator clips do not make reliable connections to the tiny solder pads on NeoPixel rings. Better to solder a small pigtail wire to the ring and attach the alligator clips to that.
- If your microcontroller and NeoPixels are powered from two different sources (e.g. separate batteries for each), there must be a ground connection between the two.
Some of our projects don’t make the above precautions…these are typically small battery-powered devices and power spikes aren’t a big concern. Any project with a lot pixels or a large power source should definitely include the power capacitor and data line resistor.
Atmega 2560 vs Arduino micro
Necessito el Arduino Mega 2560 perquè necessito moltes entrades digitals per als relés i els botons. Passa que el Atmega2550, tot i tenir moltes entrades/sortides, no és el que té més RAM (8Kb) ni el més ràpid (16MHz). Hi ha gent que utilitza els NeoPixels per fer coses molt xul.les (video,...) i aquests projectes no es poden fer servir amb el Atmega 2560 perquè no és prou ràpid. Ara bé, pel que jo vull fer (2 display de 3 números de 7 segments), no hi ha d'haver cap problema en utilitzar el Arduino micro.
No necessito tantes entrades per als relés i botons, i els displays només utilitzaran dues sortides digitals. Per tant, aquest projecte de fet s'ha de poder fer amb el Arduino micro.
Implementació de 2 displays de 3 dígits
Segueixo l'exemple de
i adapto el codi per tal d'utilitzar dos displays de 3 dígits (elimino del codi tota la part de thousands).
Mirant el codi es dedueix com s'han de connectar els leds entre ells, l'ordre que s'ha de seguir. Recordar que la idea és 2 leds per segment (i així està en el codi)
video penjat al Youtube
Arduino/microcontrolador
Necessito fins a 18 entrades/sortides digitals:
- 10 sortides: per als relés
- 6 entrades: botons i COIN
- 2 sortides: DATA dels LEDs NeoPixel (2 displays: 2 sortides)
El Arduino Micro i el Arduino Leonardo tenen 20 entrades/sortides digitals, de les quals jo n'he fet funcionar 18.
En els arduino, els pins analògics funcionen també com a pins digitals:
pinMode(A0, OUTPUT); digitalWrite(A0, HIGH); digitalRead() works on all pins. It will just round the analog value received and present it to you. If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0. digitalWrite() works on all pins, with allowed parameter 0 or 1. digitalWrite(A0,0) is the same as analogWrite(A0,0), and digitalWrite(A0,1) is the same as analogWrite(A0,255)
--- 1 (TX) * * 0 (RX) * * GND * * * * Vcc 2 * * 21 3 * * 20 4 * * 19 5 * * 18 6 * * 15 7 * * 14 8 * * 16 9 * * 10
Tinc disponibles 18 pins, i precisament per al projecte del whack-a-mole necessito 18 pins:
- solenoides: 10
- botons: 5
- moneder: 1
- 2 displays neopixels: DATA dels LEDs NeoPixel
Compres
Pistons pneumàtics
Els cilindres o pistons pneumàtics que necessito han de ser d'una sola via, amb retorn de molla. Han de tenir un stroke (llargada) d'uns 5 cm, i el bore (diàmetre) pot ser petit (prim), doncs el mole que hem de moure té poc pes. No és una aplicació de potència.
'bore diameter: és el diàmetre del pistó interior (no confondre amb el diàmetre exterior). Té a veure amb el volum del pistó, i per tant amb la potència.
CDJ2B16-45R-B CDJ2B16-45A-B cilindro de aire SMC tipo estándar simple efecto, retorno por muelle/extender CJ2 serie, tienen acción
ERROR!!. La pàgina de Aliexpress està malament, i aquesta referència CDJ són pistons de doble acció. Els pistons de molla han de tenir una S o una T després del valor del stroke:
Action S: Single acting/Spring return -> és el que m'interessa T: Single acting/Spring extend
Els pistons de dues vies tenen una avantatge respecte els de molla. En l'estat del pistó extès no consumeix pressió/força. Necessito pressió per extendre, i també per recuperar la posició inicial. En canvi, el pistò de molla, per mantenir l'extensió he de subministrar pressió.
Racors, adaptadors
- https://www.ebay.es/itm/Racor-Junta-Adaptador-Conector-de-Orificio-De-Tubo-Neumatica-M5-Rosca-a-6mm/382375130817?hash=item59075576c1:g:1K0AAOSw57xaeuG3
- https://adajusa.es/racores-rectos-/racor-recto-automatico-m5-tubo-o4mm-metal-work.html
Necessito adaptadors: per una banda hi ha rosca (crec que és M5, compovar), i per altra banda es connecta untubo (per exemple, de 6mm).
Els ràcors són tant per als pistons, com per als solenoides (que suposadament he d'escollir pistons i solenoides amb el mateix diàmetre d'entrada).
Diferents models de racors:
Al final he comprat: 7 euros la unitat. 2 unitats són 14e (30 racors)
15pcs Racor Junta Adaptador Conector M5 con Rosca Macho a 6mm Agujero Tubo Recto
Solenoides (vàlvules pneumàtiques)
1/4" 2 Way Normally Closed Pneumatic Aluminum Electric Solenoid Air Valve 12V DC
N'he comprat 6 (8,5e cadascun)
Els solenoides vénen controlats pels relés a 12V, i són els que deixen passar o tancar el pas de l'aire cap als cilindres.
Descripción del producto Specifications: Model Number: 2V025-1/4-12VDC Valve Type: 2 Way Normally Closed (Valve opens with energized) Port Size: 1/4" NPT Female Port Coil Voltage: AC220V, DC24V, DC12V Service Media: Air, Gas, Liquid, Water Operation Model: Direct Acting Flow Model: Uni-Directional Flow Rate: 0.23Cv (Fluid Flow), 22 SCFM at 100 PSI (Air Flow) Response Time: Less than 20 ms Operating Pressure: 0 - 0.7Mpa(can be operated at 0 PSI (Vacuum)) Operating Temperature: -5 to 80 °C Coil Power: 6.5W Coil Class: F Class IP 65 (CE Certification) Coil Certification: CE Certification Coil Duty: 100% ED (Continuous Duty) Material: Body Material: Anodized Aluminum Seal Material: NBR (Buna N) Armature Tube Material: Brass Plunger & Spring Material: Stainless Steel Package included: 1 x Solenoid Valve
Important: 1/4" inches (imperial) és equivalent a M6 (mètric).
Solenoides explained:
Compressor
Relés
Tenim una solució integrada de 8 relés per 10,80 e MODULO 8 RELES 5V ARDUINO OPTOACOPLADOS ELECTRONICA RELAY RELE SHIELD EL0453
Per cada relé tinc el COM (comú, ground), NO (normally open) i NC (normally closed).
El problema és que amb aquests 8 relés no en tinc prou. Els pistons que tinc són de dues vies, i necessito dos vàlvules per cada pistó. En total són 10 vàlvules i necessitaré 10 relés. No és la única solució, i potser no és la millor, doncs la idea original era utilitzar pistons amb molla, i algun altre tipus de vàlvula pneumàtica.
Per tant, també he comprat un mòdul de 2 relés, i així ja tinc els 10 relés.
Aquest mòdul està pensat per a l'Arduino, que vol dir que els relés s'activen amb 5V i el corrent d'activació és de 20mA, que és típicament el que poden donar els pins de l'Arduino. Per ex, l'Arduino micro, que és el que faré servir:
Tira de leds neopixel
Per fer els dos displays seguiré el projecte:
Necessito 84 leds neopixel: 2 displays de 3 dígits. cada dígit són 7 segments. I cada segment són 2 leds de neopixel. Total: 2x3x7x2 = 84 leds
1 M/4 M/5 M WS2812B 30/60/74/96/100/144 píxeles/LEDs/M píxeles LED inteligente, negro/Blanco PCB, WS2812 IC; WS2812B/M, IP30/IP65/IP67 DC5V
De totes les opcions que ofereix aquesta compra d'Aliexpress, m'interessa escollir:
- 30 leds/m
- tira de 5 metros (tindré 150 leds)
- IP30 (no és impermeable, serà el més barato)
Són 13,72e
Els segments del meu disseny són de 3cm, i vull que hi hagi 2 leds a cada segment. Per tant, m'he equivocat amb el 5m 30 IP30 (els leds estan massa separats, estan separats 3cm), i el que necessito és la tira 4m 60 IP30 (el doble de leds per metro linial).
Pressupost
- pistons x 6: 75 e
- solenoides x 6: 50 e
- racors: 14 e (30 unitats)
- mini-compressor: 10 e
- relés: 10,80 e + 4e
- LEDs: 14 e
- Arduino Micro: 7e
- T's: 8 e
creat per Joan Quintana Compte, abril 2018