Pripojenie trojfarebnej LED k Arduinu. Pripojenie a ovládanie LED pásika k arduinu. Zostavte obvod na doštičku

Na ovládanie týchto zariadení sa používa RGB ovládač. Ale okrem toho sa v posledných rokoch používa doska Arduino.

Arduino - princíp fungovania

Arduino doska

Arduino doska je zariadenie, na ktorom je nainštalovaný programovateľný mikrokontrolér. Sú k nemu pripojené rôzne senzory, ovládače či kodér a podľa daného náčrtu (programu) doska cez SPI protokol ovláda motory, LED diódy a iné aktuátory, vrátane ďalších Arduino dosiek. Zariadenie je možné ovládať pomocou diaľkového ovládača, Bluetooth modulu, HC-06, Wi-Fi, ESP alebo internetu a tlačidiel. Niektoré z najobľúbenejších dosiek sú Arduino Nano a Arduino Uno, ako aj Arduino Pro Mini - zariadenie založené na mikrokontroléri ATmega 328.


Vzhľad Arduino Pro Mini
Vzhľad Arduino Uno
Vzhľad Arduino micro

Programovanie prebieha v open source prostredí Arduino nainštalovanom na bežnom počítači. Programy sa sťahujú cez USB.

Princíp riadenia záťaže cez Arduino


Arduino ovládanie

Doska má veľa výstupov, digitálnych, ktoré majú dva stavy - zapnuté a vypnuté a analógové, ovládané pomocou PWM regulátora s frekvenciou 500 Hz.

Ale výstupy sú dimenzované na prúd 20 - 40 mA s napätím 5 V. To stačí na napájanie RGB indikačnej LED alebo 32x32 mm matricového LED modulu. Pre silnejšiu záťaž to nestačí.

Na vyriešenie tohto problému v mnohých projektoch je potrebné pripojiť ďalšie zariadenia:

  • Relé. Okrem jednotlivých relé s napájacím napätím 5V existujú celé zostavy s rôznym počtom kontaktov, ako aj so zabudovanými štartérmi.
  • Zosilňovače na báze bipolárnych tranzistorov. Výkon takýchto zariadení je obmedzený riadiacim prúdom, ale môžete zostaviť obvod z niekoľkých prvkov alebo použiť zostavu tranzistora.
  • Tranzistory s efektom poľa alebo MOSFET. Dokážu ovládať záťaže s prúdmi niekoľkých ampérov a napätiami do 40 - 50 V. Pri pripojení mosfetu k PWM a elektromotoru alebo inej indukčnej záťaži je potrebná ochranná dióda. Pri pripájaní k LED alebo LED lampám to nie je potrebné.
  • Rozširujúce karty.

Pripojenie LED pásika k Arduinu


pripojenie LED pásika k Arduinu

Odborný názor

Alexej Bartoš

Špecialista na opravu a údržbu elektrických zariadení a priemyselnej elektroniky.

Opýtajte sa odborníka

Arduino Nanos dokáže ovládať viac ako len elektromotory. Používajú sa aj na LED pásy. Ale keďže výstupný prúd a napätie dosky nie sú dostatočné na to, aby sa k nej priamo pripojil pásik s LED diódami, medzi ovládač a pásik LED je potrebné nainštalovať ďalšie zariadenia.

Cez relé


Pripojenie cez relé

Relé je pripojené k zariadeniu cez digitálny výstup. Pásik ovládaný s jeho pomocou má len dva stavy - zapnutý a vypnutý. Na ovládanie červeno-modro-zelenej stuhy sú potrebné tri relé. Prúd, ktorý môže takéto zariadenie ovládať, je obmedzený výkonom cievky (cievka s nízkym výkonom nie je schopná uzavrieť veľké kontakty). Na pripojenie väčšieho výkonu sa používajú reléové zostavy.

Použitie bipolárneho tranzistora


Pripojenie pomocou tranzistora

Na zosilnenie výstupného prúdu a napätia možno použiť bipolárny tranzistor. Vyberá sa na základe záťažového prúdu a napätia. Riadiaci prúd by nemal byť vyšší ako 20 mA, preto je napájaný cez odpor obmedzujúci prúd 1 - 10 kOhm.

Je lepšie použiť tranzistor n-p-n so spoločným žiaričom. Pre vyšší zisk sa používa obvod s niekoľkými prvkami alebo zostava tranzistora (mikroobvod zosilňovača).

Použitie tranzistora s efektom poľa

Okrem bipolárnych sa na ovládanie pásikov používajú tranzistory s efektom poľa. Iný názov pre tieto zariadenia je MOS alebo MOSFET-tranzistor.

Takýto prvok, na rozdiel od bipolárneho, nie je riadený prúdom, ale napätím na bráne. To umožňuje nízkemu hradlovému prúdu poháňať veľké záťažové prúdy – až desiatky ampérov.

Prvok je pripojený cez odpor obmedzujúci prúd. Okrem toho je citlivý na šum, takže výstup regulátora by mal byť spojený so zemou pomocou 10 kOhm odporu.

Použitie rozširujúcich kariet


Pripojenie Arduina pomocou rozširujúcich dosiek

Okrem relé a tranzistorov sa používajú hotové bloky a rozširujúce dosky.

Môže to byť Wi-Fi alebo Bluetooth, ovládač na ovládanie motora, ako je modul L298N, alebo ekvalizér. Sú určené na ovládanie záťaží rôzneho výkonu a napätia. Takéto zariadenia sú jednokanálové - môžu ovládať iba monochromatický pásik a viackanálové - určené pre zariadenia RGB a RGBW, ako aj pásy s LED WS 2812.

Príklad programu


Arduino a LED pásik

Dosky Arduino sú schopné ovládať LED štruktúry podľa preddefinovaných programov. Ich knižnice si môžete stiahnuť z oficiálnej webovej stránky, nájsť na internete alebo si sami napísať nový náčrt (kód). Takéto zariadenie môžete zostaviť vlastnými rukami.

Tu je niekoľko možností použitia takýchto systémov:

  • Ovládanie osvetlenia. Pomocou svetelného senzora sa svetlo v miestnosti rozsvieti okamžite aj s postupným zvyšovaním jasu pri západe slnka. Zapnutie je možné aj cez wi-fi, s integráciou do systému „smart home“ alebo pripojením cez telefón.
  • Zapnutie svetla na schodoch alebo v dlhej chodbe. Veľmi pekne vyzerá LED osvetlenie každého schodíka zvlášť. Pri pripojení pohybového senzora k doske spôsobí jeho aktivácia sekvenčné, časovo oneskorené zapnutie osvetlenia schodov alebo chodby a vypnutím tohto prvku dôjde k opačnému procesu.
  • Farebná hudba. Privedením audio signálu na analógové vstupy cez filtre bude výstupom farebná a hudobná inštalácia.
  • Počítačové modovanie. Pomocou vhodných senzorov a programov môže farba LED diód závisieť od teploty alebo zaťaženia procesora alebo RAM. Toto zariadenie pracuje s protokolom dmx 512.
  • Ovládanie rýchlosti svetiel pomocou enkodéra. Podobné inštalácie sú namontované na mikroobvodoch WS 2811, WS 2812 a WS 2812B.

Video návod

Minule sme sa pozreli na to, ako pripojiť LED pásik k Arduinu cez ovládač L298. Správa farieb bola vykonaná programovo - funkcia Random. Teraz je čas zistiť, ako ovládať farbu LED pásika na základe údajov snímača teploty a vlhkosti DHT 11.

Príklad je založený na pripojení LED pásika cez ovládač L298. Okrem toho je v príklade pridaný displej LCD 1602, ktorý bude zobrazovať hodnoty snímača DHT 11.

Projekt bude vyžadovať nasledujúce prvky Arduino:

  1. Doska Arduino UNO.
  2. Displej LCD 1602 + I2C.
  3. Senzor teploty a vlhkosti DHT
  4. LED pásové svetlo.
  5. Ovládač L298.
  6. Napájanie 9-12V.
  7. Kryt pre Arduino a displej (voliteľné).

Najprv sa pozrime na schému zapojenia (obr. 1). Na ňom môžete vidieť, ako spojiť všetky vyššie uvedené prvky. Pri zostavovaní obvodu a jeho pripájaní nie je nič zložité, ale stojí za zmienku o jednej nuancii, na ktorú väčšina ľudí zabudne, a v dôsledku toho získajú nesprávne výsledky pri práci s LED pásikmi s Arduinom.

Obrázok 1. Schéma zapojenia Arduina a LED pásika so snímačom DHT 11

Aby sa predišlo nesprávnej činnosti LED pásika (blikanie, nesúlad farieb, neúplné žiarenie a pod.), musí byť napájanie celého obvodu spoločné, t.j. kombinujte GND (zem) piny ovládača Arduino a ovládača L298 (LED pás). Ako to urobiť, môžete vidieť na diagrame.

Niekoľko slov o pripojení snímača vlhkosti. Ak si kúpite holý DHT 11 bez páskovania, potom medzi prvým a druhým kontaktom, 5V a Data, musíte spájkovať odpor s nominálnou hodnotou 5-10 kOhm. Rozsah merania teploty a vlhkosti je napísaný na zadnej strane krytu snímača DHT 11. Teplota: 0-50 stupňov Celzia. Vlhkosť: 0-80%.


Obrázok 2. Správne pripojenie snímača vlhkosti DHT 11

Po zostavení všetkých prvkov projektu podľa schémy musíme napísať programový kód, vďaka ktorému bude všetko fungovať tak, ako potrebujeme. A potrebujeme, aby LED pásik menil farbu v závislosti od údajov snímača DHT 11 (vlhkosť).

Na programovanie snímača DHT 11 budete potrebovať dodatočnú knižnicu.

Arduino a RGB programový kód - pásik. Mení farbu pásky v závislosti od vlhkosti.

#include #include //knižnica pre prácu s displejom LCD 1602 #include //knižnica pre prácu so snímačom vlhkosti a teploty DHT 11 int chk; //premenná uloží všetky dáta zo snímača DHT11 int hum; //premenná uloží hodnoty vlhkosti zo snímača DHT11 dht11 DHT; //objekt typu DHT #define DHT11_PIN 4 //Dátový pin snímača DHT11 je pripojený na vstup 4 #define LED_R 9 //pin pre kanál R #define LED_G 10 //pin pre kanál G #define LED_B 11 //pin pre kanál B / /premenné budú ukladať hodnoty farieb //pri zmiešaní všetkých troch farieb sa získa požadovaná farba int led_r=0, led_g=0, led_b=0; //deklarovanie objektu zobrazenia s adresou 0x27 //nezabudnite v projekte použiť displej cez dosku I2C LiquidCrystal_I2C lcd(0x27,16,2); void setup() ( //vytvorenie displeja lcd.init(); lcd.backlight(); // deklarovanie pinov ako výstupov pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); ) void loop () ( chk = DHT.read(DHT11_PIN);//čítanie údajov zo snímača DHT11 //výstup údajov na displej lcd.print("Temp: "); lcd.print(DHT.teplota, 1); lcd.print( " C"); lcd.setCursor(0,1); lcd.print("Hum: "); lcd.print(DHT.vlhkosť, 1); lcd.print(" %"); delay( 1500); / /pre správnu činnosť senzora je potrebné oneskorenie pri pollingu lcd.clear(); hučanie = DHT.vlhkosť; //načítajte hodnoty vlhkosti //v rozsahu od 19 do 30% vlhkosti, zobrazí sa zeleno, ak ((hučanie >= 19) && (hučanie<= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (hum<= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (hum<= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }

Tagy: Tagy

Už sme to skúšali v predchádzajúcej lekcii. Teraz sa pozrime na viacfarebnú LED, ktorá sa často nazýva skratkou: RGB LED.

RGB je skratka, ktorá znamená: červená - červená, zelená - zelená, modrá - modrá. To znamená, že vo vnútri tohto zariadenia sú umiestnené tri samostatné LED diódy. V závislosti od typu môže mať RGB LED spoločnú katódu alebo spoločnú anódu.

Miešanie farieb

Prečo je RGB LED lepšia ako tri bežné? Je to všetko o schopnosti našej vízie miešať svetlo z rôznych zdrojov umiestnených blízko seba. Ak napríklad vedľa seba umiestnime modré a červené LED, tak na vzdialenosť niekoľkých metrov sa ich žiara spojí a oko uvidí jeden fialový bod. A ak pridáme aj zelenú, bodka sa nám bude zdať biela. Presne tak fungujú počítačové monitory, televízory a vonkajšie obrazovky.

TV matica pozostáva z jednotlivých bodov rôznych farieb. Ak si vezmete lupu a pozriete sa cez ňu na zapnutý monitor, tieto bodky ľahko uvidíte. Ale na vonkajšej obrazovke nie sú bodky umiestnené veľmi husto, takže sa dajú rozlíšiť voľným okom. Ale zo vzdialenosti niekoľkých desiatok metrov sú tieto body na nerozoznanie.

Ukazuje sa, že čím bližšie sú viacfarebné bodky k sebe, tým menšiu vzdialenosť oko potrebuje na zmiešanie týchto farieb. Z toho vyplýva záver: na rozdiel od troch samostatných LED je miešanie farieb RGB LED viditeľné už vo vzdialenosti 30-70 cm, RGB LED s matnou šošovkou je mimochodom ešte lepší.

V mnohých aplikáciách, amatérskych aj profesionálnych, je niekedy potrebné generovať farby rôznych odtieňov. Použitie samostatných jednofarebných LED je v takýchto prípadoch konštrukčne a ekonomicky neopodstatnené. Preto boli na takéto účely vyvinuté RGB LED diódy.



RGB LED (skratka znamená RED, GREEN, BLUE) je kombináciou kryštálov schopných produkovať červenú, zelenú a modrú farbu. Vďaka tejto kombinácii dokážu tieto LED diódy reprodukovať 16 miliónov odtieňov svetla. RGB LED sa ľahko ovládajú a dajú sa bez problémov použiť v Arduino projektoch. Tento materiál ukáže príklad ovládania RGB LED pomocou Arduina.


Keďže RGB LED, ako je uvedené vyššie, je kombináciou kryštálov troch rôznych základných farieb, je v obvodoch znázornená ako tri LED diódy. Štrukturálne má takáto LED jednu spoločnú svorku a tri svorky pre každú farbu. Nižšie je uvedený diagram, ako pripojiť RGB LED k Arduinu. Obvod tiež obsahuje 16x2 alfanumerický LCD displej, potenciometre a odpory v sérii s RGB LED linkami. Tieto odpory (R1 = 100 ohmov, R2 = 270 ohmov, R3 = 330 ohmov) obmedzujú prúd LED diód, aby nezlyhali. Variabilné odpory (potenciometre) VR1-VR3 s odporom 10 KOhm sa používajú na ovládanie intenzity RGB LED, to znamená, že je možné pomocou nich nastaviť farbu LED zmenou intenzity červenej, zelenej a modrej. kryštály. Potenciometer VR1 je pripojený k analógovému vstupu A0, VR2 k analógovému vstupu A1 a VR3 k analógovému vstupu A2.



LCD displej v tomto prípade slúži na zobrazenie hodnoty farby a hexadecimálnej hodnoty farebného kódu. Hodnota farebného kódu je zobrazená na 1. riadku LCD (ako Rxxx Gxxx Bxxx, kde xxx je číselná hodnota) a hexadecimálny kód je zobrazený na 2. riadku LCD (ako HEXxxxxxx). 100 ohmový odpor R4 sa používa na obmedzenie prúdu aplikovaného na podsvietenie LCD a 10 k ohmový premenlivý odpor VR4 sa používa na nastavenie kontrastu LCD.


Nižšie je uvedený kód (náčrt), ktorý vám umožňuje ovládať zmenu farby RGB LED pomocou dosky Arduino a k nej pripojených potenciometrov.


#include // knižnica pre LCD displej LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Arduino linky na pripojenie LCD displeja int Radj; int Gadj; int Badj; int Rval=0; int Gval=0; int Bval=0; int R = 9; int G = 10; int B = 11; void setup() ( pinMode(R, OUTPUT); // Riadok 9 je nasmerovaný na výstup pinMode(G, OUTPUT); // Riadok 10 je smerovaný na výstup pinMode(B, OUTPUT); // Riadok 11 je smerovaný na výstup lcd.begin (16,2); // Inicializácia oneskorenia zobrazenia(1); lcd.setCursor(0,0); lcd.print("RGB COLOUR"); lcd.setCursor(4,1); lcd.print("GENERATOR" ); delay(2000); lcd.setCursor(0, 0); lcd.print(" R G B "); lcd.setCursor(3,1); lcd.print("HEX= ") ; ) void loop() ( Radj = analogRead(0); Gadj = analogRead(1); Badj = analogRead(2); Rval=Radj/4; // Prevod rozsahu z (0-1023) na (0-255 ) Gval=Gadj/4; // Konverzia rozsahu z (0-1023) na (0-255) Bval=Badj/4; // Konverzia rozsahu z (0-1023) na (0-255) lcd.setCursor (2,0); if (Rval<10) { lcd.setCursor(2,0); lcd.print("00"); lcd.print(Rval); } else if(Rval<100) { lcd.setCursor(2,0); lcd.print("0"); lcd.print(Rval); } else { lcd.setCursor(2,0); lcd.print(Rval); } lcd.setCursor(8,1); if (Rval<16) { lcd.print("0"); lcd.print(Rval, 16); } else { lcd.print(Rval, 16); } lcd.setCursor(7,0); if (Gval<10) { lcd.setCursor(7,0); lcd.print("00"); lcd.print(Gval); } else if(Gval<100) { lcd.setCursor(7,0); lcd.print("0"); lcd.print(Gval); } else { lcd.setCursor(7,0); lcd.print(Gval); } lcd.setCursor(10,1); if (Gval<16) { lcd.print("0"); lcd.print(Gval, 16); } else { lcd.print(Gval, 16); } lcd.setCursor(12,0); if (Bval<10) { lcd.setCursor(12,0); lcd.print("00"); lcd.print(Bval); } else if(Bval<100) { lcd.setCursor(12,0); lcd.print("0"); lcd.print(Bval); } else { lcd.setCursor(12,0); lcd.print(Bval); } lcd.setCursor(12,1); if (Bval<16) { lcd.print("0"); lcd.print(Bval, 16); } else { lcd.print(Bval, 16); } analogWrite(R, Rval); // ШИМ-выход для красного цвета analogWrite(G, Gval); // ШИМ-выход для зеленого цвета analogWrite(B, Bval); // ШИМ-выход для синего цвета }

Modulácia šírky impulzu (PWM) je zábavná a najmä zábavná na ovládanie serv, ale dnes ju aplikujeme na trojfarebnú LED. To nám umožní kontrolovať jeho farbu a dosiahnuť určitú krásu.

PWM

Definícia PWM je dômyselne sformulovaná vo Wikipédii, takže ju odtiaľ len skopírujem: "PWM - aproximácia požadovaného signálu (viacúrovňový alebo spojitý) skutočným binárnym signálom (s dvoma úrovňami - zapnuté vypnuté ), takže v priemere za určité časové obdobie sú ich hodnoty rovnaké. <...> Sh IM je pulzný signál konštantnej frekvencie a premennej pracovný cyklus , teda pomer periódy opakovania pulzu k jeho trvaniu. Nastavením pracovného cyklu (trvanie impulzu)môžete zmeniť priemerné napätie na výstupe PWM. "


Teraz poďme zistiť, čo to znamená. Nech existuje obyčajný obdĺžnikový signál, ako je tento:




Má pevnú frekvenciu a pracovný cyklus 50 %. To znamená, že v polovici periódy je napätie maximálne a v druhej polovici je nulové. Po integrácii tohto signálu počas periódy vidíme, že jeho energia sa rovná polovici maxima. To bude ekvivalentné tomu, keby sme celý čas bolo použité polovičné napätie.


Ak je naše maximálne napätie 5 V, potom sa napätie získané na výstupe PWM rovná pracovnému cyklu vynásobenému 5 V (a delené 100 %, aby sa formálni nacisti nepripojili):


Arduino umožňuje zapísať na PWM výstup hodnotu od 0 do 255, čo znamená, že môžeme získať napätie s rozlíšením približne 20 mV.


Trojfarebná LED dióda

Tu je, štvornohý pekný muž:


Najdlhšia noha je spoločná anóda a všetky ostatné sú katódy, z ktorých každá zodpovedá za svoju farbu: (pozri obrázok) spodná je červená, druhá zhora zelená, horná modrá.

Ak použijete +5V na dlhú nohu a 0V na všetky ostatné, dostanete biele svetlo (prosím vás, chráňte sa - nainštalujte obmedzovacie odpory!). Aká je biela, môžete posúdiť podľa nasledujúceho videa:


Ale dostať naň bielu farbu jednoducho nie je zaujímavé. Pozrime sa, ako to urobiť trblietavým v rôznych farbách.

PWM na Arduine

Frekvencia PWM na Arduine je približne 490 Hz. Na doske Arduino UNO sú kolíky, ktoré možno použiť na PWM, 3, 5, 6, 9, 10 a 11. Na doske je na to náznak - pred číslami pinov PWM je vlnovka alebo ostrosť. .

Nie je nič jednoduchšie ako ovládať PWM na Arduine! Na tento účel použite jednu jedinú funkciu analogWrite(pin, hodnota), Kde špendlík- číslo PIN a hodnotu- hodnota od 0 do 255. V tomto prípade nemusíte nič zapisovať void setup()!

Viac si o tom môžete prečítať v angličtine a.

Pracujeme dosť málo

Urobme trblietanie LED v rôznych farbách. Nechajte jednu farbu vyblednúť, zatiaľ čo druhá sa rozžiari. Vystriedame pár farieb a farba sa bude pohybovať v kruhu od červenej k zelenej, od zelenej k modrej, od modrej k červenej.

Zostavme si jednoduchý diagram:


A napíšme jednoduchý kód:

//pomenujte špendlíky podľa farby
int REDpin = 9;
int GREENpin = 10;
int BLUEpin = 11;

neplatné nastaviť (){}

neplatné slučka (){
for (int hodnota = 0 ; hodnota<= 255; value +=1) {
//červený jas klesá
analogWrite(REDpin, hodnota);
//zelený jas sa zvyšuje
analogWrite(GREENpin, 255-hodnota);
//modrá je vypnutá
analogWrite(BLUEpin, 255);
//pauza
oneskorenie(30);
}

for (int hodnota = 0 ; hodnota<= 255; value +=1) {
//červená je vypnutá
analogWrite(REDpin, 255);
//jas zelenej farby klesá
analogWrite(GREENpin, hodnota);
//Zvýši sa jas modrej
analogWrite(BLUEpin, 255-hodnota);
//pauza
oneskorenie(30);
}

for (int hodnota = 0 ; hodnota<= 255; value +=1) {
//červený jas sa zvyšuje
analogWrite(REDpin, 255-hodnota);
//zelená je vypnutá
analogWrite(GREENpin, 255);
//jas modrej sa zníži
analogWrite(BLUEpin, hodnota);
//pauza
oneskorenie(30);
}
}