Kysymys:
500 LEDin hallinta PWM: llä
littlebirdceo
2009-12-21 13:17:25 UTC
view on stackexchange narkive permalink

Harkitsen sellaisen projektin toteuttamista, joka käsittäisi 500 LEDiä erikseen, optimaalisesti PWM-tuella kullekin.

Suunnittelen Arduinon käyttöä, koska minulla on jo sellainen, mutta olen avoin ehdotuksille, jos joku ajattelee, että jokin muu alusta olisi parempi ottelu.

Vaihtorekisterit sopisivat on käytettävä. Mikä on hyvä vuororekisteri tässä tilanteessa? Jos PWM tekee tästä projektista paljon kalliimman, olen kunnossa tehdä ilman sitä. Haluan yrittää käyttää alle 100 dollaria. Ostaisin irtotavarana 500 lediä pois ebaystä.

Mikä on mielestäsi paras tapa hallita niin paljon LEDejä? Miten aion toimittaa sähkön? Arvostan apua. Olen melko kokenut elektroniikasta, en ole koskaan koskaan tehnyt mitään niin suuressa mittakaavassa.

Viisitoista vastused:
#1
+14
ElcoJacobs
2012-08-10 03:09:16 UTC
view on stackexchange narkive permalink

Olen ShiftPWM-kirjaston kirjoittaja ja päivitin juuri asiakirjat sisällyttäen kaavioita ja paljon yleisempää tietoa normaaleille LEDeille, LED-nauhoille ja suuritehoisille LEDeille.

Olet todennäköisesti jo aloittanut projektisi , mutta koska tämä sivu saa paljon kävijöitä, haluaisin silti antaa yksityiskohtaisen vastauksen.

Jos haluat hallita 500 LEDiä ShiftPWM: n avulla, saat noin 64 kirkkaustasoa LEDiä kohden 60 Hz: ssä. Käytät 64 vuororekisteriä. Omistetut laitteisto-PWM-ohjaimet antavat sinulle enemmän kirkkaustasoja, mutta ovat hieman kalliimpia. Luulen, että kirjastoni tärkein etu on helppokäyttöisyys, koska se sisältää RGB- ja HSV-toiminnot ja paljon esimerkkejä.

Haluaisin henkilökohtaisesti valita TLC5917: n TLC5916: n normaalien siirtorekisterien sijaan, koska ne sinulla on sisäänrakennettu vakiovirran LED-ohjain. Tämä säästää paljon juottamista, koska et tarvitse vastuksia.

Minulla on enemmän verkkosivustollani ( http://www.elcojacobs.com/shiftpwm). tietoa LEDien kytkemisestä ja kuinka käsitellä pitkien signaalijohtojen ajamista Arduinolla suurilla nopeuksilla.

Jos sinulla on vielä kysyttävää, kysy.

Oletko tarkastellut alla olevaa vastaustani? Vaikka kuvaamani tekniikka käyttää ylimääräistä laitteistoa, samaa lähestymistapaa voitaisiin todennäköisesti käyttää kirjastosi nopeuden huomattavaan parantamiseen. En ole ohjelmoinut Arduinoa, joten en ole perehtynyt sen ohjeiden ajoituksiin, mutta yksinkertaisimmassa muodossa voit vähentää suorittimen kuormitusta siihen, mikä vaaditaan, jotta SPI: n yksinkertaisesti räjäytetään (jos olet tällä hetkellä 5 jaksolla) bittiä kohden ja SPI vie 16 jaksoa tavua kohden, se olisi 2,5-kertainen nopeus). Saatat jopa pystyä tekemään hienostuneempia asioita samalla, kun olet käynnissä tällä nopeudella.
Oletetaan esimerkiksi, että haluat olla kahdeksan kirkkaustasoa, jotka edustavat täyttä, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64 ja 1/128. Jos Arduino pystyy suorittamaan "AND" - tai "OR" -operaation osoittimelta haetulle arvolle ja lisäämään osoitinta alle neljässä jaksossa, voit todennäköisesti käyttää kolmea bittiä pikseliä kohden kirkkaustietojen tallentamiseen ja silti saavuttaa siirtonopeuden 16 jaksoa / 8 lediä.
PWM-arvojen laskeminen on päällekkäinen kirjastoni SPI-lähdön kanssa. Suoritan SPI: n taajuudella 4 MHz ja laskelmat vievät vain vähän kauemmin kuin SPI-lähtö. Se vie 43 kellosykliä tavua kohden, joten 8 lähtöä kohti. Tämä on tarpeeksi nopea useimmille asetuksille. Voit saada enemmän nopeutta käyttämällä bittikoodimodulaatiota, jossa sinulla on 8 päivitysjaksoa, jokainen seuraava jakso puolet edellisen ajanjaksosta. Olen kirjoittanut BCM-version, mutta se on herkempi hetkelle, kun päivität kirkkausasetuksen. Se voi aiheuttaa välkkymistä, kun se on kohdistettu väärin. Luultavasti käytän sitä matriisiversiossa.
BCM: llä on lähestymistapasi etu, että voit käyttää 1 / 2,1 / 4 ... -ajastusta, mutta silti tarvitaan vain yksi tappi LEDiä kohden. Jos sinulla on tietojenkäsittelytausta, saatat löytää mielenkiintoisen miten SPI-tavut lasketaan. Saan käyttöjakson muistista (2 kelloa) ja vertaan (1 kello). Vertailutulos tallennetaan kantoon, joten voin siirtää sen tavuun kiertämällä kantoaallon yli (1 kello). Kun teet sen 8 kertaa, kaikki vertailutulokset yhdistetään yhteen tavuun, joka on valmis lähettämään SPI: lle.
#2
+13
Axeman
2009-12-21 13:21:13 UTC
view on stackexchange narkive permalink

Kopioi vain :-)

http://www.evilmadscientist.com/article.php/peggy2

Tänään julkaisemme päivityksen avoimen lähdekoodin "Peggy" LED Pegboard -projektiimme. Peggy-versio 2 on uudistettu alusta asti. Ja se näyttää ... melkein täsmälleen samalta. Hupun alla tehdyt muutokset ovat kuitenkin merkittäviä, ja mielestämme se on suuri parannus monin tavoin.

Ensinnäkin Peggy 2.0 tekee edelleen saman pirun: se tarjoaa tehokkaan virran 25 x 25 joukko LED-sijainteja. Peggy on suunniteltu ottamaan osa pistosta, monimutkaisuudesta ja sotkusta pois LED-peleistä. Se on monipuolinen ja tehokas valoa säteilevä pegboard, jonka avulla voit ajaa tehokkaasti satoja ledejä missä tahansa kokoonpanossa, laskematta yhtä kuormitusvastusta. Voit asentaa mihin tahansa yhdestä 625 lediin, ja Peggy syttyy ne puolestasi.


Peggy 2.0 on nyt myös Arduino-yhteensopiva: se tukee ohjelmointia USB-TTL-kaapeli suosittua Arduino-ohjelmistoympäristöä käyttäen.

Ihana linkki! Lisää kirjanmerkkeihin. En aikonut työskennellä tällaisen projektin parissa, mutta minun on tehtävä se nyt, näin sen pienen videon :-)
@NicolaeSurdu Ei rikki. Avasin sen juuri.
Vaikka tämä voi teoreettisesti vastata kysymykseen, [olisi parempi] (http://meta.stackexchange.com/q/8259) sisällyttää vastauksen olennaiset osat tähän ja tarjota linkki viitteeksi.
#3
+6
davr
2009-12-21 15:09:54 UTC
view on stackexchange narkive permalink

Mihin asetteluun haluat LEDien? Voit säästää paljon työtä, jos ostat joitain LED-matriiseja, saat yksiväriset 8x8 LED-matriisit (64 LEDiä) hintaan tai kahteen.

Et saa todellista PWM: ää AVR- ja siirtorekistereillä tälle monelle LEDille, mutta saatat pystyä puristamaan 2-4 kirkkaustasoa. Sinun on suoritettava numerot ja katsottava, mikä on mahdollista.

Allegro tekee käteviä vakiovirtapesun siirtorekistereitä, jotka on erityisesti suunniteltu LED-ryhmien ohjaamiseen, jotta et tarvitsevat ylimääräisiä vastuksia, mikä tekee asioista myös yksinkertaisempia. Et ehkä pysty ajamaan LED-valoja suoraan AVR-lähdöstä, jos se ei tuota riittävästi virtaa, joten sinun on käytettävä transistoreita. Voit saada ne taulukkoihin yhdessä IC: ssä, mikä säästää myös työtä.

kaikki erittäin hyvät pisteet!
#4
+5
Len Holgate
2009-12-21 17:49:47 UTC
view on stackexchange narkive permalink

Minulla ei ole aavistustakaan LED: lle tarvitsemastasi PWM-alueesta, mutta olen työskennellyt 64-kanavaisella PWM-ohjaimella servo-ohjaussovellusta varten, joka antaa minulle pulsseja välillä 600 - 2,4 ms. Tämä käyttää CD74HCT238E: tä (3-8 linjan demultipleksoria) 64 kanavan luomiseen ATMega168: n 8 I / O-nastasta ja sitä voidaan ohjata yksinkertaisilla sarjakomennoilla. Luulen, että voisit ketjua tämän ohjaimen muokatun version useita versioita sarjaväylälle ja osoittaisi kaikki 500 LEDiä ... Voit todennäköisesti käyttää ohjaimen ATTiny2313-versiota, koska laiteohjelmistovaatimuksesi olisivat yksinkertaisempia.

Oma blogini sisältää kokoonpanolähteen, kaaviot ja yksityiskohdat suunnitteluprosessista.

#5
+5
David Brenner
2009-12-21 21:57:17 UTC
view on stackexchange narkive permalink

Tutustu hiiren / digikeyn "LED-ohjain" -piireihin. Esimerkiksi TI tuottaa joukon ohjaimia, joissa on erilaisia ​​käyttöliittymiä (I2C, SPI), jotka varmasti vastaavat tarpeitasi. Suurin osa näistä ohjaimista on suunniteltu ketjutettaviksi, joten yhden sarjan sarja syötetään toisen sarjaan.

Esimerkiksi TLC5940: n kaltainen tarjoaa 16 kanavan PWM-ohjauksen. Joten pohjimmiltaan se on vakiovirtainen 16-bittinen siirtorekisteri 12-bittisellä harmaasävyisellä PWM-ohjauksella. Voin suositella kyseistä mikropiiriä, koska autoin suunnitella 80x16 -näytön sen kanssa.

#6
+4
Lepton
2010-07-29 11:09:17 UTC
view on stackexchange narkive permalink

Mondomatrix valmistaa joitain sarjaan (rs-485) osoitettavia LED-ohjainkortteja ja perustuu Arduino-alustaan: http://www.displayduino.com/ laitteistoa melko helposti

#7
+4
supercat
2011-03-16 22:38:26 UTC
view on stackexchange narkive permalink

Jos et halua liikaa PWM-ohjauksen bittiä kullekin LED-valolle ja haluat välttää prosessorin joutumisen 500 LED: n kanssa jokaisessa PWM-jaksossa, voit ohjata 8 LEDiä N kirkkaudella bitillä N 74HC595: n avulla tai vastaavia pelimerkkejä. Kytke kaikkien N sirujen lähdöt yhteen ja johda mahdollistukset joihinkin piireihin, jotka mahdollistavat vain yhden kerrallaan sopivalla ajoituksella. Järjestä niin, että ensimmäinen siru otetaan käyttöön puolet ajasta, toinen otetaan käyttöön puolet jäljellä olevasta ajasta jne.

Kaikki siirtorekistereiden uudelleenlataukset tulisi synkronoida PWM-nopeuden kanssa, jotta minimoidaan aliasing vaikutukset (esim. jos kirkkaustaso muuttui nopeasti välillä 0111 ja 1000, PWM-syklin kohta, jolloin kytkin tapahtui, voi hetkellisesti muuttaa näennäiskirkkautta).

Vaikka jokaiselle LEDille olisi käytettävä useita 74HC595-lähtöjä saattaa olla ärsyttävää, tämä lähestymistapa on luultavasti yksinkertaisin tapa, jolla voitaisiin ylläpitää erilaisia ​​kirkkaustasoja ilman jatkuvaa suorittimen toimintaa.

#8
+3
Ricardo
2013-12-12 18:57:24 UTC
view on stackexchange narkive permalink

Tämä ei vastaa suoraan kysymykseen, mutta toinen näkökohta, joka sinun on ehkä harkittava, on 500 erän LEDien mahdollinen kirkkauden vaihtelu . Tämä on erityisen tärkeää, jos nämä LEDit on asennettu lähelle toisiaan, kuten matriisiin tai 7-segmenttisiin näyttöihin. Katso tämä vastaus saadaksesi lisätietoja ongelman ratkaisemisesta, erityisesti pistekorjauksen käytöstä kompensoimaan LED-kirkkauden vaihtelut.

Olen kokenut tämän ongelman, kun sain 200 1 mm: n punaista LEDiä suurille seitsemän segmentin näytöille, joita rakennin. Halpa ratkaisuni ongelman ratkaisemiseen tarkoitti seuraavaa:

  1. Rakensin LED-testerin leipätaululle luokittelemaan ledisarjoja erilaisiin kirkkausluokkiin
  2. Asensin jokaisen segmentin käyttämällä Saman luokan ledit (suunnittelussa kukin segmentti koostui viidestä sarjaan asennetusta LEDistä)
  3. Korjasin kunkin segmentin kirkkauden eron käyttämällä erilaisia ​​virranrajoitusvastuksia. Esimerkiksi kirkkaammilla ledeillä varustetulle segmentille käytän 100 ohmin vastusta, kun taas toiselle himmennin-LED-segmentille käytän 120 ohmin vastuksia.
Voimassa oleva kohta, mutta ei vastaa kysymykseen.
@MattYoung suostui. Kysymykseen vastaavat suurelta osin kaikki muut vastaukset. Halusin vain täydentää näitä vastauksia käsittelemällä sivukysymystä, joka voi vaikuttaa OP: n suunnitteluun.
#9
+2
x4mer
2011-09-17 22:47:29 UTC
view on stackexchange narkive permalink

Ehdotan, että käytät tässä artikkelissa kuvattua binaarikulman modulaatiotekniikkaa. http://www.artisticlicence.com/WebSiteMaster/App%20Notes/appnote011.pdf

Tai tarkista ShiftPWM kirjasto http://www.elcojacobs.com/shiftpwm/

Vaikka tämä voi teoreettisesti vastata kysymykseen, [olisi parempi] (http://meta.stackexchange.com/q/8259) sisällyttää vastauksen olennaiset osat tähän ja tarjota linkki viitteeksi.
#10
+1
Leon Heller
2009-12-21 22:36:52 UTC
view on stackexchange narkive permalink

XMOS käyttää Macroblock MBI5026: tä LED-laattasarjojensa kanssa. Luulen, että niitä käytetään useimmissa muissa ammattijärjestelmissä.

Leon

#11
+1
XTL
2010-07-28 18:52:59 UTC
view on stackexchange narkive permalink

Erilliset ohjainpiirit ja sarjaliitännät ovat todennäköisesti paras reitti. Yksittäisten siirtorekistereiden käsittely tarkoittaa todennäköisesti hyvin monimutkaista piiriä. Ainakin Maxim ja TI tekevät joitain. En muista, onko kummankaan malli erityisen sopiva niin paljon.

Se vie silti paljon laitteistoa.

Tehon, ohjelmoinnin ja väylien osalta tietolomake jokaisella kuljettajalla on todennäköisesti eniten tarvitsemiasi tietoja.

#12
+1
supercat
2012-08-13 21:19:11 UTC
view on stackexchange narkive permalink

Jos tarvitsemiesi erillisten kirkkausasetusten määrä ei ole ohjelmistoalueella liian suuri, voi olla hyödyllistä tallentaa tiedot "bittitasomaisessa" muodossa (kuten muussa laitteistopohjaisessa vastauksessani on kuvattu) ja anna sitten lähtörutiinien käyttää Boolen operaattoreita toimimaan 8 pikselillä kerralla. Suurimman tehokkuuden saavuttamiseksi tämä edellyttää useiden erillisten lähtörutiinien käyttöä PWM-syklin eri osissa; Esimerkiksi, jos halutaan käyttää 4-bittisiä kirkkausarvoja, käytettäisiin kahdeksan muodon rutiinia:

 movf bit0Comp, w; Pitäisi olla 00 tai FF riippuen vertailun bitistä 0 (FF, jos selkeä) iorwf POSTINCF, w; Datan bitti 0; käytä aina IORWF andwf POSTINCF, w; Datan bitti 1; käytä IORWF: ää, jos vertailun bitti 1 on asetettu; ANDWF jos selkeä jawf POSTINCF, w; Datan bitti 2; Käytä IORWF: ää, jos vertailun bitti 1 on asetettu; ANDWF jos selkeä jawf POSTINCF, w; Datan bitti 2; Käytä IORWF: ää, jos vertailun bitti 1 on asetettu; ANDWF jos kirkas movwf SPIREG; Tallenna tuloksena oleva tavu (bitit asetetaan, jos> = vertaa) 

Käytettäisiin erilaisia ​​IORWF- ja ANDWF-yhdistelmiä vertailun arvosta riippuen. Huomaa, että tätä lähestymistapaa kuvatulla tavalla voidaan päivittää pikselien kirkkausarvot missä tahansa PWM-syklin kohdassa ilman välkkymistä edellyttäen, että kaikki neljä bittiä kirjoitetaan näytön siirtorutiiniin soitettujen puheluiden väliin, tai antamalla pikselin päivitysrutiinin määrittää, onko seuraava siirto tuottaa "1" tai "0" pikselille, joko asettamalla tai tyhjentämällä kaikki pikselin bitit (mikä toiminto saisi sen tekemään mitä ikinä tekisi) ja sitten kirjoittamaan kaikki bitit, joiden arvon pitäisi olla olla päinvastainen. Huomaa myös, että voidaan saavuttaa mielivaltaiset epälineaariset kirkkausasteikot vaihtelemalla näytön päivitysten ajoitusta tai käyttämällä joitain vertailuarvoja useammin kuin kerran PWM-syklissä. Epälineaariset kirkkausasteet ovat usein hyödyllisiä LEDien kanssa, koska 1/128 ja 2/128 välinen kirkkausero on yleensä paljon näkyvämpi kuin ero 127/128 ja 128/128 (tai jopa 7/8 ja 12 välillä). 8/8).

#13
+1
Carl
2012-08-15 02:25:06 UTC
view on stackexchange narkive permalink

FPGA: t tai CPLD: t voivat olla hyviä tällaisiin tehtäviin, koska ne tarjoavat monia I / O-nastoja. Valitse yksinkertaisin ja halvin. Jos yksi ei riitä, käytä paria.

Voitteko antaa meille muutamia lisätietoja siitä, miksi tämä on hyvä vaihtoehto, tiedän nyt siitä, mutta tiedän, mitkä vaihtoehdot ovat ja mitä lueteltuja ehdotettuja tekniikoita on, Alkuperäisessä julisteessa (OP) ei todennäköisesti ole sellaista tausta.
En ole varma, onko se paras vaihtoehto, mutta halusin, että se mainitaan täydellisyyden vuoksi. Jos ohjataan 500 LEDiä PWM: llä tavalla tai toisella, lopulta tarvitaan 500 erikseen ohjattavaa johtoa. On vaikea löytää mikro-ohjainta, jossa on niin monta ulostulonasta. Siellä on paljon tapoja käyttää edelleen mikrokontrollereita, mutta yksi tai pari halpaa CPLD: tä / FPGA: ta voisi helposti antaa näille lähtöneuloille.
#14
+1
Rocketmagnet
2012-08-15 05:35:08 UTC
view on stackexchange narkive permalink

Voit melkein varmasti tehdä tämän helposti PSoC3: n tai PSoC5: n avulla.

PSoC-sirut ovat mikro-ohjaimia, jotka sisältävät uudelleen konfiguroitavia digitaalisia laitteistoja, vähän kuin FPGA tai CPLD. Tämä tarkoittaa, että voit tehdä monimutkaisia ​​piirejä epätavallisten asioiden tekemiseen, kuten 500 LEDin ajamiseen PWM: llä. Lisäksi voit todennäköisesti toteuttaa koko asian käyttämällä uudelleen konfiguroitavia digitaalilohkoja, mikä tarkoittaa, että sirun CPU-osan tarvitsee vain kirjoittaa haluamasi LED-kirkkaudet taulukkoon.

504 LEDiä mahtuu suorakulmio 21 x 24. Jos sinulla olisi 24 PWM-kanavaa ja 21 GPIO, voit saada tämän toimimaan. Arvaa mitä? PSoC: llä on muutakin.

Voit määrittää 24 PWM-kanavaa helposti PSoC: lle ja määrittää 21 muuta nastaa osaksi siirtorekisteriä. Määritä seuraavaksi jotkut DMA-kanavat pumppaamaan tavuja muistista PWM-lähtöihin, ja naurat. CPU: n tarvitsee vain luoda grafiikka. PSoC3: lla on 8-bittinen 8051-ydin, kun taas PSoC5: llä on 32-bittinen ARM. Valitse. Ainoat ulkoiset mikropiirit, joita tarvitset, ovat joitain ULN2803: ita, jotta rivillä olisi suuri käyttövirta. PWM-lähdöissä tulisi olla riittävä virtalähde yksittäisille LEDeille.

Tämä on täydellinen ylivalo LEDien ajamisessa. On olemassa omistettuja, halpoja, ennalta suunniteltuja LED-ajureita, jotka on tehty ketjutettaviksi suuria määriä, joita käytetään jatkuvasti jättimäisiin näyttöihin. Kaikkea sitä ei tarvitse keksiä uudestaan ​​ja suuremmista kustannuksista.
@nemik - Itse asiassa pelimerkkien kokonaiskustannukset (kalliilta Farnellilta) ovat vain 6,80 puntaa.
#15
  0
nemik
2012-08-14 09:54:08 UTC
view on stackexchange narkive permalink

Käytä mittakaavaetuja. Kiinalaiset sivustot, kuten Aliexpress, myyvät WS2811-pohjaisia ​​LED-säikeitä hintaan ~ 15 dollaria / 50 lediä. Ne ovat yksilöllisesti osoitettavissa, kirkkaita, yleensä vedenpitäviä, ja niiden kirkkaus on PWM. Ei juotos- tai siirtorekistereitä, joiden kanssa sekaisin. Kun teet kaiken tämän itse, lyön vetoa, että se maksaa sinulle enemmän, vie paljon enemmän aikaa ja ole erittäin turhauttavaa. Lisäksi olet Ozissa, joten toimitus Kiinasta ei ole liian kallista.

Nämä on tehty jättimäisten LED-näyttöjen valmistamiseksi, joten ne ovat yleensä melko halpoja. Varmista, että syötät virtaa uudelleen noin 50 LEDin välein parhaan suorituskyvyn saavuttamiseksi.

Mukana on myös Arduino-kirjastoja, jotka helpottavat niiden käyttöä.

15 dollaria 50 LEDiä kohden? Joten 500 LEDille tämä on 150 dollaria? Ja sinulla on hermoa kertoa minulle, että ratkaisuni on kallis? -1
Voitko myös antaa linkin tähän. WS801 ei Google-palvelu, eikä se myöskään osu haulle [Aliexpress] (http://www.aliexpress.com/wholesale?SearchText=WS801&catId=0&manual=y)
Anteeksi, tarkoitin WS2811: tä, kuten näitä: mitoitettu / 701799_581805567.htmlor, ilman PWM-himmennystä, nämä http://www.aliexpress.com/store/product/DC5V-input-Square-type12mm-led-string-light-RGB-color-50pcs-a-string/701799_605976057 .html
Yksi sarjasignaali 50 LED: n käyttämiseen PWM-himmennyksellä.Kiitos, tämä on mitä minä kaipaan.Mutta tavallinen siirtorekisteri tarjoaa "salpa" -nastan puskuroidun datan kopioimiseksi lähdöihin sen jälkeen, kun koko kehys on lähetetty.Täällä ei ole salpaa, joten odotan huomattavaa melua suurilla virkistystaajuuksilla.Sirut tukevat 400 kbps: n dataa 15 bitillä / pikseli, joten ruutu näyttää hölynpölyä 1,9 millisekunnin ajan, kun kehys päivittyy.


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 2.0-lisenssistä, jolla sitä jaetaan.
Loading...