Radio konstruktoru - aşağı tezlikli siqnal səviyyəsinin LED göstəricisi. ATmega8-də iki kanallı pik VU sayğacı Dizayna keçək

10.09.2021

Salam. Tətil bitdi və yenidən işə başlaya bilərsiniz. Yəqin ki, çoxları LED səviyyə göstəricisinin fotoşəkillərini artıq görmüşdür - WS2812B smart LED-lərində dayaqlar. Sizə sütunlar haqqında daha çox məlumat vermək qərarına gəldim. Üstəlik, həmkarlarım mənə boş bir baxışla baxırlar: bu gözəl şeydir, lakin bu barədə çox az adam bilir. Biz bunu düzəltmək lazımdır.

Hardan başlayacağımı düşündüm və elə əvvəldən qərar verdim. Səviyyə göstəricisi və ya VU da deyilir -metr, biz çoxdandır ki, LEDləri olan birini almaq istəyirik. O, bəzək kimi uğurla istifadə edilə bilər, məsələn, gücləndiricilərə quraşdırılmış, audio avadanlıqların və ya kompüter monitorunun yanında yerləşdirilmişdir. Bəyəndiyimiz heç bir hazır həll tapmadıq, ona görə də özümüz hazırlamalı olduq VU-metr.

İlk inkişaf belə görünürdü:

Bu səviyyə göstəricisini həmkarım edib Konstantin M. və dirçəlmək üçün mənə verildi. Hər biri 16 tək rəngli LED-dən ibarət iki kanal, iki 8 bitlik sürüşmə registrləri vasitəsilə ATmega8 mikro nəzarətçisi tərəfindən idarə olunurdu. İqtisadiyyat və rahatlıq üçün dinamik göstərici istifadə edilmişdir: bir sütunun yalnız 16 LED-i eyni vaxtda yana bilər. Şərfi işə saldım, hər şey onun üzərində işlədi, amma nədənsə sütunların səviyyəsindəki dəyişikliyi gözəl edə bilmədim.

Bundan qısa müddət sonra əvvəlkindən daha maraqlı səviyyəli göstəricinin inkişafı ortaya çıxdı:

Konstantin Mən bunu ilk növbədə özüm üçün etmişəm. Bəzi bayramlarda işə saldım, amma heç bir nəticə göstərmədən ayırdım. Təbii ki, sonra özüm sınamaq üçün lövhələri götürdüm. Prototip olaraq səviyyə göstəricisinin yalnız bir kanalı istehsal edilmişdir. Sütun özü 32-dən ibarətdir RGB LEDlər modul şəklində. O, idarəetmənin həyata keçirildiyi 4 növbəli registr ilə başqa modula qoşulur. Hmm... Bahasına dinamik ekran Nəzarətlər çox unikaldır. Dörd 8 bitlik registr yanan LED-lərin seçilməsinə nəzarət edir Bu an vaxt və üç sancaqdan istifadə edərək rəng (R, G və ya B) təyin edilir. Qalır ki, mikro nəzarətçi ilə bir lövhə əlavə etmək və davam etməkdir. Burada biz daxil olduğundan daha da irəli gedə bildik əvvəlki versiya sütunlar. Əvvəlcə Arduino Due istifadə edərək hər şeyi etməyə çalışdım:

İçərisində Arm arxitekturasına malik 84 MHz tezliyində işləyən mikrokontroller, məncə, düzgün idi. Sütun özü hər bir LED rəngi (R, G və B) üçün 8 parlaqlıq dərəcəsini dəstəklədi. Eyni anda yalnız bir rəng yandırıla bilər, buna görə də hər 1 ms-dən bir LED-lərə 24 dəyər birləşməsindən birini ötürmək lazım idi. Bundan əlavə, ADC ilə işləmək, onluq loqarifm hesablamalarını və digər hesablamaları yerinə yetirmək lazım idi. Arduino mühiti istisna olmaqla Bu mikro nəzarətçi ilə işləmək şansım olmadı, ona görə də optimallaşdırılmamış oldu Arduino -kod. Lakin buna baxmayaraq,yaxşı öhdəsindən gəldi.

Niyə bəzi az tanınan Arm kontroller üçün proqram yazırıq? Bu barədə düşündük və STM8S105C6T6 mikrokontrolöründə debug lövhəsini götürdük:

Hər şey problemsiz başladı. Bu dəfə kod şəffaf idi və buna görə də optimallaşdırılmışdır. Sütunun bir neçə iş rejimi var idi, lakin alqoritmlər tam olaraq işlənməmişdi və buna baxmayaraq, səviyyə göstəricisini artıq bəyəndik. Sadəcə, bu tellərlə nə etmək lazımdır, kimə lazımdır və kim onu ​​birləşdirmək istəyir? Nəsə fikirləşmək lazımdır...

Bizim bir həllimiz var idi, amma bu dəfə onu həyata keçirə bilmədik. Çünki bir gün - adi bir cümə axşamı idi - aşağıdakılar baş verdi: başqa, heç də dəyərli olmayan həmkarlarım Denis V. məftunedici sözünü söylədi:"Görün nə gözəl şey tapdım"! Bu, WS2812B ağıllı LED-lərinin zolağı idi:


Qoşulmaq üçün yalnız 3 naqil lazımdır (siqnal, 5 V güc və ümumi tel). Sərin, bir neçə əlavə naqillə vidalaşın - düşündük və sınaq üçün bir lent sifariş etdik:



İnternetdə bu WS2812B LED şeridi haqqında çox şey deyilib - həmişə maraqlı və uyğun bir şey tapa bilərsiniz. Əsasən insanlar ondan müxtəlif “işıqlar” düzəldirlər. Gözəl çıxır - əlbəttə ki, istehlak"ağ-isti"LED 40 mA-dır. Lent uzundursa, üçün USB portu Siz onu kompüterə qoşa bilməzsiniz. Kifayət qədər güclü bir enerji mənbəyi tələb olunur - həll edilməli olan bir problem. Bu mürəkkəbliyə baxmayaraq, bir teldən istifadə edərək postları idarə etmək rahatlığı məni cəlb etdi. Niyə bu lentdən səviyyə göstəricisi konstruktoru düzəltməyəsən ki, rəng sxemlərini dəyişə, rejimləri dəyişə biləsən... Və bu, bu işdə kömək edəcək. Arduino lövhəsi ATmega328 mikro nəzarətçisində Pro Mini. UART-USB adapterindən istifadə edərək proqramlaşdırmaq asandır. Başqa bir çətinlik var idi: məlumatların yüklənməsi arasında çox qısa vaxtlar."İşıqlar" , əlbəttə ki, insanlar uğur qazandılar... Amma məlumat göndərərkən biz hələ də ADC-dən dəyərlər götürmək, yaddaşdan oxumaq, saxlamaq, hesablamalar aparmaq üçün vaxtımız olsun istəyirdik... Buna görə də lent yolda olarkən, istifadə etmək imkanını nəzərdən keçirdik hardware SPI, daha doğrusu, fasilələrlə ötürülmənin təşkili üçün MOSI siqnalı. Nəzarətçi hər şeylə ayaqlaşacaqmı? Yoxsa kodu optimallaşdırmalı, birtəhər yaradıcılıqla məşğul olmalı, assemblerə girməli olacağıq - bunu öyrənmək lazım idi. Ancaq biz artıq əmin idik və təsdiq etdiyimiz sütunun son tətbiqindən: hər kanalda LED-lərin sayı 32 ədəd olacaqdır. Ümumilikdə, iki sütun üçün 64 ağıllı atəşböcəyi emal etmək lazım idi. İrəliyə baxaraq demək istəyirəm ki, WS2812B mənimsənilib. Mən hələ də əziyyət çəkəcəyəm proqram hissəsi, sizə aparat otağı haqqında məlumat verəcəyəm - davamı olacaq.

P.S. Sütunların daha bir inkişafı ortaya çıxdı. WS2812B-nin kəşfi səbəbindən bir müddət təxirə salınan eyni həll, lakin onun sayəsində modernləşdirilmiş və sadələşdirilmişdir. Bu, istənilən adi LED-lərdən (tək rəngli və RGB) və daha güclü işıqlandırmadan: hətta spot işıqlardan istifadə etməyə imkan verəcək. Üstəlik, çubuqlar ideyamızdan çıxa biləcək şeylərin kiçik bir hissəsidir. Bu barədə başqa vaxt.

P.P.S. Aşağıdakı yazıda səs siqnal xəttini səviyyə ölçən cihaza necə qoşmaq barədə diaqram göstəriləcək. Maraqlananlar və hansı sütunları əldə etdiyimizi görmək üçün səbirsizlənənlər bu videoya baxa bilərlər:


Hörmətlə, Nikita O.

Gücləndirici və ya digər audio avadanlığı üçün başqa sadə stereo audio səviyyə ölçən cihazını sizə təqdim edirəm. Göstəricidə 20 LED-dən ibarət 2 sütun və maksimum səviyyəni göstərmək imkanı var. Mikrokontroller IO1 tərəfindən idarə olunur - Atmel AVRATmega8A və ya daha yaşlı ATmega8 və ya ATmega8L. Bu, hər iki səs kanalının göstəricisini təmin edən cihazda yeganə inteqrasiya edilmiş sxemdir.

Göstəricinin hər kanalda 20 LED bölməsi var, 1 bölmə 2 dB-ə uyğundur. Ekran diapazonu -34 ilə +4 dB. Səs siqnalının səviyyəsi 0 dB (18-ci LED) keçdikdə, həddindən artıq yüklənmə baş verir. Göstərici LED kimi monolitik sütunlardan (LED-lərin xətləri) və ya fərdi LED-lərdən istifadə edə bilərsiniz. LED-lər 10 addımda multipleks şəkildə idarə olunur, hər addımda 4 LED, multipleksləmə tezliyi təxminən 100 Hz-dir. Rezistorlar R1 ... R4 LED-lərin cərəyanını və buna görə də parlaqlığını müəyyən edir. Sol və sağ kanal siqnalları girişlərə qoşulur analoqdan rəqəmə çevirici ADC0 və ADC1. Şkalanın düşmə vaxtı (zəifləmə) təxminən 600 ms-dir.

Cihaz həmçinin IM (Maksimum Göstəricisi) etiketli lövhədə tullanandan istifadə etməklə aktivləşdirilə bilən pik səviyyə göstəricisi ilə təchiz olunub. Səs səviyyəsini ölçən cihaz 5V enerji təchizatı ilə təchiz edilmişdir və bütün LED-lərin istehlakı təxminən 45mA-dır. C1 və C2 kondansatörləri IO1 mikrokontrolörünə mümkün qədər yaxın yerləşdirilməlidir.

"Atmega8-də audio siqnal səviyyəsinin göstəricisi 2x20 LED" məqaləsi üçün arxiv
Təsvir: Mənbə kodu (Assembler), mikrokontroller proqram təminatı faylı
Fayl ölçüsü: 2,64 KB Yükləmələrin sayı: 798

Sizə sadə bir audio siqnal göstərici layihəsi təqdim edirəm, fərqləndirici xüsusiyyət Başqalarından olan bu layihə odur ki, dövrədə hər kanal üçün 32 LED istifadə etdim, bu da uzun bir xətt oldu. Cihazın ürəyində - AVR mikro nəzarət cihazı ATmega8535, ULN2803 - 8 kanallı Darlington açarı, həmçinin istifadə olunur əməliyyat gücləndiricisi, məncə onun məqsədi də bir o qədər aydındır. Göstəricinin həssaslığı hər bir kanal üçün ayrıca R32 və R33 rezistorları tərəfindən tənzimlənir. Bu layihə mənimdir tezis, bir neçə il əvvəl etdiyim, kompüterimdə qovluqları vərəqləyən zaman bir diaqrama rast gəldim və onu sayta göndərmək qərarına gəldim.

Diaqram olduqca həcmlidir, LED-lərin təyinatını ixtisar etməmişəm, aşağıdakı diaqramı görə bilərsiniz:

LED-lərə gəldikdə, onları xüsusi LED zolaqları ilə əvəz etmək rahatdır və onlar daha yaxşı görünəcəkdir.

Bütün cihaz çörək lövhəsində yığılmışdı, çap dövrə lövhəsi Mən çəkməmişəm, amma layihəni bəyənən hər kəs çap dövrə lövhəsini çəkib foruma göndərə bilər. Dövrədəki bütün radio komponentləri oxşar olanlarla əvəz edilə bilər, rezistorların və kondansatörlərin dəyərləri oxşar dəyərlərə təyin edilə bilər. Transistorlar hər hansı digər oxşarlarla əvəz edilə bilər. Kristal osilator Onu 14-16 MHz-ə təyin edə bilərsiniz, kritik deyil. Aşağıdakı cihazın fotoşəkilləri:

Mikrokontrolleri proqramlaşdırarkən, qoruyucuları təyin etməyə ehtiyac yoxdur, yəni. proqramda bizə lazım olan kontrolleri seçin, firmware proqramını açın və flash düyməsini basın. Cihaz səhvsiz yığılarsa, dövrə dərhal işləyəcəkdir.

Radioelementlərin siyahısı

Təyinat Növ Denominasiya Kəmiyyət QeydMağazaMənim bloknotum
IC1 MK AVR 8 bitlik

ATmega8535

1 Notepad üçün
IC2, IC3 Kompozit tranzistor

ULN2803

2 Notepad üçün
IC4A, IC4B Əməliyyat gücləndiricisi

LM358

1 Notepad üçün
Q1-Q4 Bipolyar tranzistor

BD140

4 Notepad üçün
Q5 Kvars rezonatoru16 MHz1 Notepad üçün
C1-C4, C11, C14 Kondansatör100 nF6 Notepad üçün
C5-C8 Kondansatör10 nF4 Notepad üçün
C9, C10, C15, C16 Kondansatör220 nF4 Notepad üçün
C12, C13 Elektrolitik kondansatör10 µF2 Notepad üçün
S17, S18 Kondansatör22 pF2 Notepad üçün
R1-R16 Rezistor

68 ohm

16 Notepad üçün
R17-R20, R23, R24, R30, R31, R36, R37 Rezistor

1 kOhm

10 Notepad üçün
R21, R22, R29 Rezistor

1,5 kOhm

3 Notepad üçün
R25, R26, R34, R35 Rezistor

47 kOhm

4 Notepad üçün
R27 Trimmer rezistoru100 Ohm1 Notepad üçün
R28 Rezistor

470 Ohm

1 Notepad üçün
R32, R33 Trimmer rezistoru20 kOhm2

"Tənzimlənən LED" mövzusunu davam etdirmək və ağıllı bir sınamaq məqsədini güdmək LED şeridiəsasında W.S.2812 B(NeoPixels) yeni bir cihaz doğuldu - Tənzimlənənzolaq— qabaqcıl səviyyə göstəricisi!

Mağaza mənə sınaq üçün lent təqdim etdi, əgər cihazı bəyənirsinizsə və onu təkrarlamaq istəyirsinizsə, Ukraynadakı lenti eyni mağazada almaq olar. lentlərə keçid. Rusiya üçün onu mənim digər tərəfdaşlarımdan, TIXER.RU-dan almaq olar (onlar yaxın gələcəkdə çeşidi artıracaqlarını vəd etdilər).


Gəlin dizayna keçək.

Dövrə elementardır - yalnız bir neçə hissə və ATtyni13. Ümid edirəm ki, MK-ya proshivka yazmağı bilirsinizmi? Yox? Sonra sən.

Standart lent uzunluğu 30 pikseldir. Ekran piksellərinin sayı mənbədə real piksel sayına bərabər olan “Number_Pixels” sabitinin dəyərini göstərməklə dəyişdirilə bilər (effektlər avtomatik olaraq yeni dəyərə yenidən hesablanacaq).

Rəğmən sadə diaqram, səviyyə göstəricisi maraqlı çıxdı! Hökmdar ekran seçimlərinin böyük seçimi ilə. Cihaz alov kimi stilizə edilmiş xüsusi palitradan istifadə edir. Müvafiq olaraq, hər səviyyə dəyərinin palitradan öz rəngi olacaq:


Qurğu
– lentdə vizual olaraq göstərilir giriş səviyyəsi. Bu bir növ böyük LED sütunudur.

Göstərici 9 giriş səviyyəsində ekran rejimində işləyə bilər. Rejimlər arasında keçid etmək üçün " düyməsini basın. Rejim" Seçilmiş rejim qeyri-sabit yaddaşda saxlanılır və cihaz yenidən işə salındıqda avtomatik aktivləşdiriləcək.

Rejimlər:
0 – Off – lent sönür
1 – Sadə – adi bir rəngli zolaq
2 – Bar – palitraya görə mavidən ağa qədər olan xətkeş
3 – Inv_Bar – palitraya görə ağdan maviyə qədər hökmdar
4 – Rəng – bütün xətt uzunluqdan asılı olaraq bir rəngdə vurğulanır
5 – Nöqtə – səviyyəni göstərən rəngli nöqtə
6 – Solid_Color – səviyyə dəyərindən asılı olaraq bütün piksellər rəngdə yanır
7 – Yanğın – stilizə edilmiş yanğın – səviyyə nə qədər yüksəkdirsə, alov da bir o qədər böyük olur
8 – Xaos – xaotik piksel işıqlandırması (səviyyədən asılı olaraq dəyişir)
9 – Scroll – zolaq boyunca səviyyə sürüşməsi

Cihaz, giriş siqnalının səviyyəsini göstərməklə yanaşı, həm də işləyə bilər avtomatik rejim. Bunu etmək üçün "Demo" keçidini yerə bağlamalısınız. Demo rejimində cihazın səviyyəsi təsadüfi olaraq avtomatik dəyişir.

Cihaz elementar olduğundan, imkanlarını nümayiş etdirmək üçün onu bir neçə dəqiqəyə çörək lövhəsinə yığdım:

Və belə oldu:



Cihazı yığmaq üçün materiallar:
- Cihazın yığılması üçün materiallar

Səviyyə göstəricisinin tətbiq dairəsiTənzimlənənzolaq:

— Ağla gələn ilk şey musiqinin vizuallaşdırılmasıdır.
— Həmçinin, düşünürəm ki, onlardan avtomobildə taxometri işıqlandırmaq üçün istifadə edilsəydi, əla görünərdi (sürətdən asılı olaraq işıqlandırma rəngini dəyişəcək).
— Sonra səviyyəyə nəzarət düymələrinin işıqlandırılmasıdır.
— Həmçinin orijinal lampaların yaradılması batareyanın ömrü demo rejimində (yanğın rejimi hətta tək başına çox təsir edici görünür).
— Temperaturun vizuallaşdırılması (məsələn, ucuz analoq LM35 termometrindən istifadə edə bilərsiniz) ...


Yeniləmə 2016
viktor001 edildi əla işdir səsi cihaza qoşmaq üçün. Əla çıxdı. Firmware də bir qədər dəyişdirildi - arxivə baxın.


Göstərici üçün dövrə inanılmaz dərəcədə sadə oldu və əslində qarşıda duran vəzifəyə uyğundur - prostat, asanlıqla əldə edilə bilən komponentlər və 100 faiz təkrarlanabilirlik. Düzgün yığıldıqda dərhal işləyir. Bütün quraşdırma sıxılma və çıxış səviyyələrini təyin etməyə gəlir mikrofon gücləndiricisi. Əsas və yeganə tələb qazancı maksimuma təyin etməməkdir. Kompressorun olması hər şeyin müalicəsi deyil və mikrofondan işləyərkən onun hələ də öz tənzimləmə məhdudiyyətləri var. Əlbəttə ki, siqnalı sıxılma tənzimləyicisi ilə "çimdik" edə bilərsiniz, lakin sonra ekranın hərəkətliliyi əziyyət çəkir. Ən yaxşı çarə, aşağı keçid filtrinin ilk op-amp-da təmin edilmiş qazanc nəzarəti Kudur. Xətti girişdən işləyərkən, kompressor əlavə tənzimləmələr olmadan olduqca yaxşı işləyir.

Enerji təchizatı ilə sxemlər daha sadədir. Enerji təchizatı seçimi WS2812B lentinin tələblərinə, daha doğrusu cari istehlaka, üstəlik kiçik bir ehtiyata əsaslanırdı. DC/DC çeviricisi vasitəsilə 10 volt alırıq.

Göstərici üçün dövrə inanılmaz dərəcədə sadə oldu və əslində qarşıda duran vəzifəyə uyğundur - prostat, asanlıqla əldə edilə bilən komponentlər və 100 faiz təkrarlanabilirlik. Düzgün yığıldıqda dərhal işləyir. Bütün quraşdırma sıxılma səviyyələrini və mikrofon gücləndirici çıxışını təyin etməyə başlayır. Əsas və yeganə tələb qazancı maksimuma təyin etməməkdir. Kompressorun olması hər şeyin müalicəsi deyil və mikrofondan işləyərkən onun hələ də öz tənzimləmə məhdudiyyətləri var. Əlbəttə ki, siqnalı sıxılma tənzimləyicisi ilə "çimdik" edə bilərsiniz, lakin sonra ekranın hərəkətliliyi əziyyət çəkir. Ən yaxşı çarə, aşağı keçid filtrinin ilk op-amp-da təmin edilmiş qazanc nəzarəti Kudur. Xətti girişdən işləyərkən, kompressor əlavə tənzimləmələr olmadan olduqca yaxşı işləyir. Enerji təchizatı seçimi WS2812B lentinin tələblərinə, daha doğrusu cari istehlaka, üstəlik kiçik bir ehtiyata əsaslanırdı. DC/DC çeviricisi vasitəsilə 10 volt alırıq.

Yeri gəlmişkən, izlər arasında fasilə zamanı ilk piksellərin parlamaması üçün MK-nın girişində yerə nisbətən 100k rezistor qoyulmalıdır. Diaqramı çəkərkən bu məqamı qaçırdım.


Arxivdə gücləndirici möhürlər var. Mikrofon gücləndirici hissələrinin yerini göstərmədim. Buna görə də, MU lövhəsini ayrıca bir vahid kimi əlavə edirəm. Üzərində hər şey göstərilib. Atlayıcılara diqqət yetirin.


(21 101 dəfə ziyarət edilib, bu gün 1 ziyarət)

ATMEGA8-də siqnal gücü göstəricisi 2 x 20 LED.

Xarici saytların birində Atmel AVR ATmega8A mikrokontroller və ya köhnə Atmega8 və ya Atmega8L üzərində qurulmuş siqnal səviyyəsinin göstəricisinin yığılması ilə bağlı material tapdım. Məqaləni hərfi tərcümə etməyin mənası yoxdur, çünki müəllif dövrəni çörək lövhəsində yığıb, lakin buna baxmayaraq, arxivdə tapa biləcəyiniz videoda göstəricini işləyə bilərsiniz. Göstəricinin hər bir kanalda 20 LED bölməsi var. Ekran diapazonu -34 ilə +4 dB arasındadır. Göstərici LED-lər olaraq, xüsusilə bunlar üçün DC20/20GGGWA kimi monolit dirəklərdən istifadə edə bilərsiniz. LED matrisləri Mən dövrə lövhəsini çəkdim. Başlamaq üçün sizə verəcəyəm sxematik diaqram siqnal səviyyəsinin göstəricisi:

Sxemi həyata keçirərkən, 20 adi LED-in iki xəttini də istifadə edə bilərsiniz. Rezistorlar R1 ... R4 LED-lərin cərəyanını və buna görə də parlaqlığını müəyyən edir. Sol və sağ kanal siqnalları ADC0 və ADC1 analoqdan rəqəmsal çevirici girişlərinə qoşulur. Şkalanın düşmə vaxtı (zəifləmə) təxminən 600 ms-dir. Cihazın pik siqnal səviyyələrini göstərmək funksiyası var; o, keçidin yerinə “IM” (Maksimum göstəricisi) keçidini bağlamaqla aktivləşdirilə bilər, siz ON/OFF düyməsini quraşdıra bilərsiniz;

LED montajının növü və ölçüləri aşağıdakı şəkillərdə göstərilmişdir:

LAY6 formatında LED siqnal səviyyəsinin göstərici lövhəsinin görünüşü:

Arxivdə mikrokontroller proqram təminatını tapa bilərsiniz (hex uzadılmış fayl). PonyProg-da konfiqurasiya bitlərinin qurulması aşağıdakı şəkildə göstərilmişdir.
(Onaltılıq dəyərlər: Aşağı Sigorta: A4, Yüksək Qoruyucu: D9.)

Xəbərdarlıq!!! Mən dövrəni aparatda sınamamışam.

AVR Atmega8A 2 x 20 LED-də siqnal səviyyəsinin göstəricisi üzrə materiallarla arxivin ölçüsü 4,8 Mb təşkil edir.

Səhvlər tapsanız və ya təklifləriniz varsa, şərh yazmaqdan çəkinməyin.