Სარჩევი:

MSP430 პურის დაფის აუდიო სპექტრის ანალიზატორი: 6 ნაბიჯი
MSP430 პურის დაფის აუდიო სპექტრის ანალიზატორი: 6 ნაბიჯი

ვიდეო: MSP430 პურის დაფის აუდიო სპექტრის ანალიზატორი: 6 ნაბიჯი

ვიდეო: MSP430 პურის დაფის აუდიო სპექტრის ანალიზატორი: 6 ნაბიჯი
ვიდეო: Лекция 6. Обзор контроллера MSP-430 2024, ივლისი
Anonim
Image
Image
MSP430 პურის დაფის აუდიო სპექტრის ანალიზატორი
MSP430 პურის დაფის აუდიო სპექტრის ანალიზატორი

ეს პროექტი დაფუძნებულია მიკროფონზე და მოითხოვს მინიმალურ გარე კომპონენტებს. 2 x LR44 მონეტის უჯრედები გამოიყენება ისე, რომ მე შემიძლია მთელი სტრუქტურა იმუშაოს 170 ჰალსტუხიანი მინი პურის დაფაზე. ADC10, TimerA წყვეტს LPM გაღვიძებას, TimerA PWM მოსწონს გამომავალი, ღილაკების გამოყენება, მთელი რიცხვითი არითმეტიკა გამოიყენება და ნაჩვენებია.

მახასიათებლები

  • 8 ბიტიანი მთელი FFT 16 ნიმუში 500 ჰც -ის გამოყოფაზე
  • გვიჩვენებს 8 ამპლიტუდას 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K არაწრფივი
  • ნაწილობრივი ლოგარითმის რუქა ამპლიტუდების საჩვენებლად, შეზღუდულია, რადგან რეზოლუცია შემცირდა 8 ბიტიანი FFT- ით
  • TLC272 ერთი საფეხურის მიკროფონის გამაძლიერებელი 100x ჯერ 100x მომატებით (შეგიძლიათ განიცადოთ 2 სტადიაზე)
  • მენიუს არჩევითი სურვილისამებრ Hamming ფანჯარა
  • მენიუ შეცვლის 4 დონის სიკაშკაშეს
  • მენიუ დაარეგულირეთ 8 დონის ნიმუშის სიხშირე / რეაგირების დრო
  • 2 x LR44 მონეტის უჯრედი იკვებება "ბორტზე"

ნაბიჯი 1: შეიძინეთ ნაწილები

ქვემოთ მოცემულია რა არის საჭირო ამ პროექტისთვის

  • MSP430G2452 (დამატებითი ჩიპი TI Launchpad G2– დან, ან ნებისმიერი 4K 20 პინიანი MSP430G სერიის MCU)
  • 170 ჰალსტუხიანი მინი პურის დაფა ან პერფის დაფა წინასწარი გამაძლიერებლისთვის
  • TLC272 ორმაგი გამაძლიერებელი
  • მინი ელექტრო მიკროფონი
  • 47k (აწევა), 100k, 2 x 10k, 1k რეზისტორები
  • 1 x 0.1uF
  • ჯუმბერის მავთულები
  • ორმაგი მწკრივი მამრობითი pin სათაური, რომელიც გამოიყენება ბატარეის დამჭერისთვის
  • 2 x LR44 მონეტის უჯრედის ბატარეა

ნაბიჯი 2: კომპონენტების განლაგების დაგეგმვა

პროექტი უნდა აშენდეს 170 ჰალსტუხიანი მინი დაფაზე. კომპონენტების განლაგება ქვემოთ მოცემულია. განსაკუთრებით აღსანიშნავია, რომ 8x8 LED მატრიცა უნდა განთავსდეს MSP430 MCU– ს თავზე. კომპონენტების გარდა, არის ასევე დამაკავშირებელი ჯუმბერის მავთულები, რომლებიც გამოსახულია "+------+" სიმბოლოებით.

G V + Gnd (1 ეტაპის განლაგება) ჩვენ ვიყენებთ ამ განლაგებას + =================================== =================+ c0 ………… c7 | MIC რა რა რა რა რა რა + -----++-+. რა რა რა | r0 o o o o o o o | | o || o + ----- [100k] --------------- +. რა რა რა რა | r1 X o o o o o o o | რა +--------------+-+. C7 C6 R1 C0 R3 C5 C3 R0 | რა ო ო ო ო ო ო | რა რა რა რა რა რა | რა რა | b6 a7 | | c0 და r1 იზიარებს ერთსა და იმავე პინს და არ გამოჩნდება | + +-+-+-+| +-+-+-+-+-+-+-+-+-+-+| *შესაძლებელია განაცხადი ჰქონდეს c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | ეს გაათავისუფლებს b6 32khz xtal საათისათვის | | | TLC272 | | | | | | | გარეთ - + G | | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2 | | | + +-+-+-+| +-+-+-+-+-+-+-+-+-+-+| | ო || ო ო ო. +-+ რა R4 R6 C1 C2 R7 C4 R5 R2 | | რა რა რა რა o- [10k]-o. რა რა რა რა რა რა რა რა | | რა o- [1k] o o o. რა რა რა რა რა რა რა რა._. | | o ---- [10k] ----------- o. რა რა რა რა რა რა ო ო | +================================================== ====+.1uF 100k 10k ADC ღილაკი+ -----------------+

ჩვენ ვიყენებთ მხოლოდ TLC272– ის ერთ საფეხურს

ნაბიჯი 3: შეკრება

შეკრება
შეკრება
შეკრება
შეკრება

თქვენ შეგიძლიათ დაიწყოთ კომპონენტების განთავსება პურის დაფის განლაგების საფუძველზე. როგორც ეს ASCII ხელოვნებაა, შეიძლება არც ისე ნათელი იყოს. თქვენ შეგიძლიათ დააწყვილოთ ფოტოები ამ ნაბიჯში, რათა დაადგინოთ ყველა კავშირი.

ზრუნვა უნდა იქნას მიღებული IC ჩიპების პოზიციონირებაზე. ჩვეულებრივ, ერთ კუთხეში არის წერტილი, რომელიც მიუთითებს მოწყობილობის 1 პინზე.

მე გამოვიყენე CAT5 Ethernet საკაბელო მავთულები და ისინი ძალიან ადვილად მუშაობენ პურის დაფაზე. თუ თქვენ გაქვთ ძველი CAT5 კაბელები, შეგიძლიათ გაჭრათ და ნახავთ, რომ შიგნით არის 6 გრეხილი მავთული. ისინი შესანიშნავია პურის დაფებისთვის.

ნაბიჯი 4: შეადგინეთ და ჩატვირთეთ firmware

წყაროს კოდი ჩვეულებრივ ცხოვრობს ჩემს github საცავებში.

ამ კონკრეტული პროექტისთვის, ერთი C წყაროს ფაილი nfft.c შეფუთულია ჩემს breadboard კოლექციების საცავში. თქვენ უბრალოდ გჭირდებათ nfft.c

მე ვიყენებ mps430-gcc firmware– ის შესადგენად, მაგრამ ის კარგად უნდა შეესაბამებოდეს TI CCS– ს. თქვენ შეგიძლიათ თავიდან აიცილოთ IDE- ების ან შემდგენლების დაყენების ყველა უბედურება TI CCS ღრუბელზე გადასვლით, რომელიც არის ვებ დაფუძნებული IDE. ის კი გადმოწერს firmware თქვენს სამიზნე მოწყობილობას.

ეს არის ბრძანების შედგენის მაგალითი გადამრთველებით

msp430 -gcc -Os -Wall -ფუნქცია -სექციები -fdata -section -fno -inline -small -functions -Wl, -Map = nfft.map, -cref -Wl, --relax -Wl, -gc- სექციები -I/energia -0101E0016/აპარატურა/msp430/ბირთვები/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

მე ვიყენებ TI Launchpad G2– ს, როგორც პროგრამისტს MCU– ის დასაპროგრამებლად.

ნაბიჯი 5: გაიგეთ წრე

გაიგე წრე
გაიგე წრე
გაიგე წრე
გაიგე წრე

სქემის სქემა მოცემულია ქვემოთ

MSP430G2452 ან მსგავსი, საჭიროა 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 მომატება, გამტარობა 17Khz– მდე

* ჩვენ ვიყენებთ მხოლოდ TLC272– ის ერთ საფეხურს

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | | | Vcc | | | | გადასაწევი (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | | | | | ^.--- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _+\ / / | | /| --- (იხ. პურის დაფის განლაგება) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1-P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | მატრიცა | ((O)) |. | | / | | _ | | MIC | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ _ _ _ /// /// /// ///

LED მართვა

LED მატრიცა არის 8 x 8 ელემენტისგან. მათ ამოძრავებს 15 GPIO ქინძი. ისინი მრავლდება 8 სტრიქონით და 8 სვეტის სქემით. მას შემდეგ, რაც ADC შეყვანისთვის 1 პინის გამოყენების შემდეგ არის მხოლოდ 15 ქინძისთავები, მულტიპლექსს აქვს 1 სტრიქონი და 0 სვეტი ერთ პინზე. ეს ნიშნავს, რომ 1 -ლი და სვეტი 0 -ის კონკრეტული LED არ შეიძლება იყოს განათებული. ეს არის კომპრომისი, რადგან უბრალოდ არ არის საკმარისი GPIO ქინძისთავები ყველა LED ელემენტის მართვისთვის.

ხმის გადაღება

ხმის ჩამორთმევა ხდება კონდენსატორის მიკროფონის საშუალებით საგანმანათლებლო BoosterPack– ზე. რადგან მიკროფონის სიგნალები მცირეა, ჩვენ უნდა გავაძლიეროთ ის იმ დონეზე, რომ msp430 ADC10- ს შეეძლოს გონივრული გარჩევადობის გამოყენება. ამ მიზნით მე გამოვიყენე ორსაფეხურიანი გამაძლიერებელი გამაძლიერებელი.

Op-amp გამაძლიერებელი შედგება ორი ეტაპისგან, თითოეული w/ a დაახლოებით 100x მოგებით. მე მივიღე TLC272, რადგან ის ასევე ძალიან გავრცელებული ნაწილია და მუშაობს 3V/ დვ. მოგების გამტარობა დაახლოებით 1.7 მჰც ნიშნავს იმას, რომ ჩვენი მომატებისთვის 100x, ჩვენ შეგვიძლია მხოლოდ გარანტია, რომ ის მშვენივრად იმუშავებს (ანუ შეინარჩუნებს მოგებას, რაც გვსურს) 17 კჰც -ზე. (1.7 მჰც / 100).

თავდაპირველად ვაპირებდი, რომ ეს სპექტრის ანალიზატორი გამეზარდა 16-20 კჰც-მდე, მაგრამ საბოლოოდ აღმოვაჩინე, რომ დაახლოებით 8 კჰც საკმარისია მუსიკის საჩვენებლად. ეს შეიძლება შეიცვალოს LM358– ით აუდიო რეიტინგის შემცველობით და შერჩევის მაჩვენებლის შეცვლით. უბრალოდ მოძებნეთ თქვენი არჩეული ოპ-ამპერების გამტარუნარიანობა.

შერჩევა და FFT

გამოყენებული FFT ფუნქცია არის "fix_fft.c" კოდი, რომელიც ბევრმა პროექტმა მიიღო, ის უკვე წლებია ტრიალებს ინტერნეტში. მე ვცადე 16 ბიტიანი ვერსია და 8 ბიტიანი ვერსია. საბოლოოდ მე დავთანხმდი 8 ბიტიან ვერსიაზე, როგორც ჩემი მიზნისთვის, მე ვერ ვნახე დიდი წინსვლა 16 ბიტიან ვერსიაზე.

მე არ მაქვს კარგად გააზრებული FFT მექანიზმი, გარდა იმისა, რომ ეს არის დროის დომენი სიხშირის დომენის გარდაქმნისა. ეს ნიშნავს, რომ ხმის ნიმუშების სიჩქარე (დრო), FFT გამოთვლის ფუნქციის კვების შემდეგ, გავლენას მოახდენს ამპლიტუდის სიხშირეზე, რომელსაც მე ვიღებ შედეგად. ასე რომ, სიჩქარის მორგება ხმის ნიმუშზე, შემიძლია განვსაზღვრო სიხშირის დიაპაზონი, როგორც შედეგი.

TimerA 0 CCR0 გამოიყენება შერჩევის დროის შესანარჩუნებლად. ჩვენ პირველ რიგში განვსაზღვრავთ რაოდენობას, რომელიც გვჭირდება დიაპაზონის სიხშირის მისაღწევად (შეესაბამება ჩვენი DCO საათის სიხშირეს 16 MHz). ანუ TA0CCR0 დაყენებულია (8000/((BAND_FREQ_KHZ*2))-1; სადაც BAND_FREQ_KHZ არის 8 ჩემთვის. ის შეიძლება შეიცვალოს, თუ თქვენ გაქვთ უკეთესი ოპ-გამაძლიერებელი და / ან გინდათ რომ ის განსხვავებული იყოს.

სიხშირის ზოლები და ამპლიტუდის სკალირება

Firmware ამუშავებს 16 ზოლს ერთი გადახვევისას და გადაღების დრო ამ ბანკებს შორის 500 ჰც -ის გამიჯვნას წარმოშობს. LED მატრიცა არის 8 სვეტი და აჩვენებს მხოლოდ 8 ზოლს / ამპლიტუდას. ნაცვლად იმისა, რომ აჩვენოთ ყოველ ორ ზოლში, არაწრფივი სიხშირის დიაპაზონის სია გამოიყენება უფრო დინამიური სიხშირის ზოლების საჩვენებლად (მუსიკალური თვალსაზრისით). სიაში არის 500 ჰც -იანი ხარვეზები დაბალ ბოლოში, 1 კჰც ხარვეზი შუა ზოლში და 1.5 კჰც ზოლები მაღალ სიმაღლეებზე.

ინდივიდუალური ზოლების ამპლიტუდა მცირდება 8 დონემდე, რომლებიც წარმოდგენილია LED მატრიცის ეკრანზე ჰორიზონტალური 'წერტილებით'. ამპლიტუდის დონე მცირდება არაწრფივი რუქის საშუალებით, რომელიც FFT შედეგებს თარგმნის ერთ-ერთ 8-ში წერტილები ერთგვარი ლოგარითმული სკალირება გამოიყენება, რადგან ის საუკეთესოდ წარმოადგენს ხმის დონის ჩვენს აღქმას.

არსებობს ჩაშენებული AGC ლოგიკა და სპექტრის ანალიზატორი შეეცდება ამპლიტუდის დონის შემცირებას, როდესაც წინა ციკლებში გამოვლენილია პიკის მრავალი დონე. ეს კეთდება მოცურების მმართველი ცხრილის შესადარებლად.

ნაბიჯი 6: მოწყობილობის ფუნქციონირება

  • მოკლე ღილაკის დაჭერა ჩვენების რეჟიმში გადადის წერტილის გარეშე, ერთი წერტილი, 2 წერტილი და 3 წერტილის ჩვენება.
  • გრძელი დაჭერა გადადის დაყენების რეჟიმში, შემდგომი გრძელი დაჭერით ბრუნავს მენიუში.
  • მენიუს ელემენტები ციკლდება "Hamming Window Option", "Dimmer", "Sampling / Refresh Rate".
  • 'Hamming Window' კონფიგურაციის რეჟიმში, მოკლე დაჭერით ციკლდება ჩაქუჩის გარეშე, hamming 1, hamming 2, hamming 3, გრძელი დაჭერით ადასტურებს პარამეტრს.
  • "Dimmer" დაყენების რეჟიმში, მოკლე დაჭერით ციკლდება ხელმისაწვდომი სიკაშკაშის დონიდან 0 -დან 3 -მდე, გრძელი დაჭერით ადასტურებს პარამეტრს.
  • "შერჩევის / განახლების სიხშირის" დაყენების რეჟიმში, მოკლე დაჭერით ციკლდება არსებული განახლების განაკვეთები 0 -დან 7 -მდე, 0 ნიშნავს შეფერხებას, გრძელი დაჭერა ადასტურებს პარამეტრს.
  • Led სეგმენტის მულტიპლექსირება მოიცავს დროის შეფერხებებს ინდივიდუალური რიგების სიკაშკაშის განსხვავებების კომპენსაციისთვის.

გირჩევთ: