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

Arduino met NeoPixel Optocouplers die veel relais besturen

Componenten en benodigdheden

SparkFun LilyPad Rainbow LED (strip van 7 kleuren)
of vergelijkbaar (gesneden uit een ledstrip 5m/rol DC5V ws2812b 300led Individueel adresseerbaar 60leds/m 5050 RGB ), diverse leveranciers
× 1
Weerstand 10k ohm
27 k Ohm
× 4
Fotoweerstand
ook wel LDR (Light Dependent Resistor) genoemd https://en.wikipedia.org/wiki/Photoresistor
× 4
RobotGeek Relay
of https://www.conrad.nl/p/relaiskaart-5vdc-4-voudig- voor-arduino-raspberry-pi-etc-095841
× 4
LED-lamp
× 1
Arduino UNO
elk Arduino-type kan worden gebruikt, in deze toepassing heb ik een Node MCU ESP32 gebruikt
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
Algemene hulpmiddelen
zoals beschikbaar zal zijn in een normaal huishouden/werkplaats

Apps en online services

Film

Over dit project

Dit project gaat over het besturen van meerdere relais of andere actuatoren vanaf een enkele Arduino-uitgangspin.

Deze oplossing kan worden gebruikt voor typische situaties waarin het aantal beschikbare Arduino-uitgangspinnen onvoldoende is en meer actuatoren zoals relais parallel moeten worden bestuurd vanaf een enkele uitgangspin.

Het werkingsprincipe is gebaseerd op het gebruik van een LED-strip van een aantal NeoPixels (SMD5050 LED's met WS2812B-controllerchips). Elke pixel wordt samengevoegd met een LDR (Light Dependent Resistor), waardoor een doe-het-zelf-optocoupler ontstaat (zoveel als je wilt, alleen beperkt door de lengte van de ledstrip, bijv. 300 pixels, en beschikbare 5V-voeding). Op deze manier wordt een serie-naar-parallel conversie gemaakt (van 1 naar veel)

Elke individuele LED wordt geadresseerd vanaf één en dezelfde Arduino-uitgangspin. Elke LDR (in serie met een 27kOhm-weerstand) is aangesloten op een 5V-relais. Op deze manier kunnen veel NeoPixel/LDR-combinaties worden bestuurd vanaf 1 Arduino-uitgangs-PIN met behulp van de Adafruit NeoPixel-bibliotheek. In plaats van relais kunnen ook andere actuatoren worden aangesloten, waarbij de LDR's worden gebruikt als invoer voor welk circuit dan ook.

Voor dit project, dat deel uitmaakt van een groter plan, wordt een ESP32 (NodeMCU) gebruikt; maar een normale Arduino Uno (of bijna elk ander model) zal het werk doen.

Stap 1:De NeoPixel Optocouplers maken

De doe-het-zelf optocoupler is gemaakt van de volgende materialen:

  • een stuk LED-strip bestaande uit 10 WS2812 LED's (uit een langere strip gesneden) slechts 4 worden daadwerkelijk gebruikt in het project
  • een stuk donkergrijs schuim
  • een strook breadboard
  • zwarte ducktape

Let op:de scheiding van de punten is gelijk aan de scheiding van de LED's.

Het is belangrijk om het licht van elke individuele LED te scheiden van de LDR's van de andere om "lichtoverspraak te voorkomen ." Het bleek dat dit in de praktijk bijna onmogelijk is en daarom is de hoeveelheid licht die door elke LED in de "aan" stand wordt uitgestraald in de software op een laag niveau gezet.

De gebruikte LED-strip is 10 LED's lang, maar er worden in dit project slechts 4 pixels gebruikt in combinatie met 4 LDR's (om het simpel te houden)

Stap 2:De elektronische installatie

In de opstelling van het breadboard heb ik een ESP32s (NodeMCU) gebruikt, maar elke Arduino kan het werk doen.

Het schakelschema (gemaakt met Fritzing) is als volgt:

In de praktijk ziet dit er als volgt uit:

Zoals u kunt zien, wordt slechts 1 uitgangspen gebruikt om 4 relais parallel te besturen. Dit aantal kan oplopen tot 300! (zoveel LED's als beschikbaar in een 5 m lange strip).

Het ESP32-apparaat werkt op 3,3 Volt-niveaus (een ingebouwde 3.3V-spanningsregelaar), terwijl de LED-strip met 5050 leds op 5 V werkt. De ESP32 wordt gevoed met 5 V-voeding (via de USB-poort van een 5V-adapter of 5V powerbank). De NeoPixel LED's krijgen de 5V voeding rechtstreeks van de 5 volt pin van de ESP32 en de gebruikte relais zijn ook 5V types.

In dit voorbeeld worden 4 optocoupler-circuits gebruikt die 4 relais aansturen die elk zijn aangesloten op een 230V-lamp.

De gebruikte uitgangspin is GPIO PIN 21 en de relais worden bestuurd via pixelnummers 1, 2, 3, 4.

Stap 3:De software maken

De lusfunctie in de Arduino Sketch is eenvoudig en bestaat uit een aantal "voor"-lussen om verschillende patronen van het schakelen van de lampen te laten zien door elk van de relais te besturen.

Om een ​​bepaald relais aan te sturen, wordt de volgende functie aangeroepen vanuit de luscode:

void ControlRelais (int RelaisNo, bool RelaisState) { strip.setPixelColor(RelaisNo, RelaisState*15, RelaisState*15, RelaisState*15); // zet de LED die bij RelaisNo strip.show() hoort aan/uit; Serial.print(" RelaisNo "); Serial.print(RelaisNee); Serieel.print(" ="); Serial.println(RelaisState); } 

In feite is het enige wat deze functie doet ofwel een bepaalde LED aanzetten of uitschakelen.

Een LED-adres komt overeen met het betreffende relaisnummer. De LED's branden op een laag lichtniveau, net genoeg om het relais via de LDR te activeren en zo lichtvervuiling te voorkomen (hierboven ook wel "light cross talk" genoemd.

Het resultaat van alle moeite en de specifieke schets wordt getoond in de volgende film:

Code

  • Schets voor het aansturen van meerdere relais via zelfgemaakte NeoPixel Optocouplers
Schets voor het aansturen van meerdere relais via zelfgemaakte NeoPixel OptocouplersArduino
Deze schets laat zien hoe een aantal relais kan worden bestuurd via meerdere optocouplers gemaakt met NeoPixels die worden bestuurd vanaf 1 ARDUINO-uitgangspen
/* Deze code voor het aansturen van meerdere relais of andere actuatoren vanaf een enkele Arduino-uitgangspen, is ontwikkeld en geproduceerd door Pierre Pennings (december 2018) Deze oplossing kan worden gebruikt voor typische situaties waar het aantal beschikbare Arduino-uitgangspinnen onvoldoende is en meer actuatoren zoals Relais parallel moeten worden aangestuurd. Het werkingsprincipe is gebaseerd op het gebruik van een strip van een aantal Neopixels (SMD5050 LED's met WS2812B-controllerchips) Elke pixel wordt samengevoegd met een LDR (Light Dependent Resistor), waardoor een DIY Optocoupler ontstaat. Elke individuele LED wordt aangesproken vanaf één en dezelfde ARDUINO-uitgangspin en de LDR (in serie met een 27kOhm-weerstand ), is aangesloten op een 5V Relais. Op deze manier kunnen veel Neopixel/LDR-combinaties worden bestuurd vanaf 1 Arduino-uitgangs-PIN met behulp van de Adafruit Neopixel-bibliotheek. Voor dit project, dat deel uitmaakt van een groter plan, wordt een ESP 32 (NodeMCU) gebruikt, maar een normale ARDUINO UNO (of bijna elk ander model) zal het werk doen (natuurlijk moeten de instellingen in de code worden aangepast o.a. door verschillende Pin-toewijzingen) Het ESP 32-apparaat werkt op 3,3 Volt-niveaus (een on-board 3.3V-spanningsregelaar), terwijl de LED-strip met 5050 leds op 5 V werkt. De ESP 32 wordt gevoed met 5 V-voeding (via de USB-poort van een 5V-adapter of 5v powerbank) De Neopixel LED's krijgen de 5V-voeding rechtstreeks van de 5 volt-pin van de ESP 32 en de gebruikte relais zijn ook 5V-types. In dit voorbeeld is een LED strip van 10 LED's gebruikt, voor de eenvoud zijn er slechts 4 optocoupler circuits gemaakt die 4 relais aansturen die zijn aangesloten op elk een 230V LEDLamp. De gebruikte output-pin is GPIO PIN 21 en de RELAIS wordt bestuurd via Pixel-nummers 1,2,3,4. Deze code is in licentie gegeven onder GPL3+-licentie.*/#include #define NUM_LEDS 10////// /////////////////////////////////////////// initialiseer de GPIO pinconst int RelaisPin =21; // pin 21 stuurt besturingsgegevens (0 -3,3 V) naar de Relaisint RelaisNo =0; // Variabele voor het te controleren Relais RelaisState =false;int r =0;Adafruit_NeoPixel strip =Adafruit_NeoPixel(NUM_LEDS, RelaisPin, NEO_RGB + NEO_KHZ800);///////////////// ////////////////////////////////// de setup-code die volgt, wordt één keer uitgevoerd na "Power On" of na een RESETvoid setup() { Serial.begin(115200); pinMode (RelaisPin, UITGANG); // Initialiseert de RelaisPin als output strip.begin(); // Initialiseer alle LED's op "uit" voor (int t =0; t <10; t++) { strip.setPixelColor (t, 15, 15, 15); // Na het inschakelen worden alle LED's van de strip eenmaal getest strip.show(); // merk op dat de volgorde van kleuren van de WS2812 LED-strip R,G,B vertraging (500) is; strip.setPixelColor(t, 0, 0, 0); // En weer uit }}////////////////////////////////////////// ///////// de luscode die volgt, wordt herhaaldelijk uitgevoerd tot "Power Off" of een RESETvoid loop(){ for (int r =1; r <5; r++) // schakel de 4 Relais in de een na de ander telt van 1 tot 4 { vertraging (500); ControlRelais (r , waar); vertraging (500); ControlRelais (r , onwaar); }for (int k =4; k> 0; k--) // schakel de 4 Relais een voor een in en tel van 4 tot 1 { vertraging (500); ControlRelais (k , waar); vertraging (500); ControlRelais (k , onwaar); } for (int r =1; r <5; r++) // schakel de 4 Relais in een patroon in { for (int k =4; k> 0; k--) { delay (500); ControlRelais (r , waar); ControlRelais (k , waar); vertraging (500); ControlRelais (r , onwaar); ControlRelais (k , onwaar); } }}//////////////////EINDE van LUS////////////////////////// ////////////////////////////////// //////////////// /////////////////////////////////// Hierna volgt de functie voor het besturen van het relais (aangeroepen vanuit de lus) void ControlRelais (int RelaisNo, bool RelaisState) { strip.setPixelColor (RelaisNo, RelaisState * 15, RelaisState * 15, RelaisState * 15); // zet de LED die bij RelaisNo strip.show() hoort aan/uit; Serial.print(" RelaisNo "); Serial.print(RelaisNee); Serieel.print(" ="); Serial.println(RelaisState); }

Schema's

Instellen voor het aansturen van meerdere relais of andere actuatoren vanaf een enkele Arduino-pin neopixel_optocoupler_relais__hNIrhGIMtD.fzz

Productieproces

  1. Een effect besturen met echte sensoren
  2. LCD-paneel met Arduino voor Flight Simulator
  3. Schakel/LED-paneel met Arduino voor FS2020
  4. Gyroscoopplezier met NeoPixel Ring
  5. Slimme jaloezieën
  6. Arduino met Bluetooth om een ​​LED te bedienen!
  7. Eenvoudige obstakelsensor met Arduino
  8. Een Roomba-robot besturen met Arduino en Android-apparaat
  9. Arduino Quadruped
  10. Besturing van servomotor met Arduino en MPU6050
  11. LED-helderheid regelen met Bolt en Arduino