Sisällysluettelo:
- Vaihe 1: Tavallinen Ukelele -viritys
- Vaihe 2: Luo puhtaasti digitaalinen teoreettinen malli
- Vaihe 3: Seuraavaksi analoginen piiri
- Vaihe 4: Analogisten signaalien lukeminen DAQ Assistantin avulla
- Vaihe 5: Johtopäätös
Video: Ukelele-viritin LabView'n ja NI USB-6008: n avulla: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Ongelmapohjaisena oppimisprojektina LabVIEW & Instrumentation -kurssilleni Humber Collegessa (elektroniikkatekniikka) loin ukulele-virittimen, joka ottaisi analogisen tulon (ukulele-merkkijonoäänen), löytää perustaajuuden ja päättää, mitä nuottia yritettiin viritettäväksi ja kerro käyttäjälle, onko merkkijono viritettävä ylös tai alas. Laite, jota käytin analogisen tulon kääntämiseen digitaalituloon, oli National Instruments USB-6008 DAQ (tiedonkeruulaite), ja käyttöliittymä toteutettiin LabVIEW: n avulla.
Vaihe 1: Tavallinen Ukelele -viritys
Ensimmäinen askel oli selvittää nuottien perustaajuudet ja se, millä alueella ukulele -kielet tyypillisesti viritetään. Käytin näitä kaavioita ja päätin, että asetan äänialueeni 262 Hz (C) - 494 Hz (High B). Kaikki alle 252 Hz: n katsottiin olevan liian alhainen, jotta ohjelma voisi tulkita, mitä nuottia yritettiin soittaa, ja mitä tahansa yli 500 Hz: n katsottiin olevan liian korkea. Ohjelma kuitenkin ilmoittaa käyttäjälle edelleen, kuinka monta Hz he ovat etäisyydellä lähimmästä tulkittavasta nuotista, ja onko merkkijono viritettävä ylös (nuotti liian alhainen) tai alas (nuotti liian korkea), jotta saavutetaan käytettävissä oleva nuotti.
Lisäksi olen luonut alueet kullekin nuotille eikä vain yhtä taajuutta, jotta ohjelman olisi helpompi löytää soitettava nuotti. Ohjelma esimerkiksi kertoisi käyttäjälle, että C: tä soitetaan, jos nuotin perustaajuus on välillä 252 Hz (B: n puolivälissä) ja 269 Hz (C#: n puolivälissä), mutta päättääkseen, onko se viritettävä tai alas, se silti vertaa soitettavaa nuottia C: n perustaajuuteen, joka on 262 Hz.
Vaihe 2: Luo puhtaasti digitaalinen teoreettinen malli
Ennen sukellusta projektin analogiselle puolelle halusin nähdä, voisinko luoda LabVIEW -ohjelman, joka suorittaisi ainakin ääninäytteen pääkäsittelyn, kuten äänen.wav -näytteen lukemisen, perustaajuuden löytämisen ja tarvittavat vertailut taajuuskaavioon sen selvittämiseksi, pitäisikö ääntä virittää ylös tai alas.
Käytin LabVIEW -ohjelmassa saatavilla olevaa SoundFileSimpleRead. VI -ohjelmaa lukemaan.wav -tiedoston valitsemaltani polulta, laitoin signaalin indeksoituun taulukkoon ja syötin signaalin HarmonicDistortionAnalyzer. VI: hen perustaajuuden löytämiseksi. Otin myös signaalin SoundFileSimpleRead. VI: sta ja liitin sen suoraan aaltomuotokaavion ilmaisimeen, jotta käyttäjä voi nähdä tiedoston aaltomuodon etupaneelissa.
Luin kaksi tapausrakennetta: yhden analysoidaksesi mitä nuottia soitettiin, ja toisen selvittääksesi, onko merkkijono käännettävä ylös tai alas. Ensimmäisessä tapauksessa loin alueet kullekin nuotille, ja jos HarmonicDistortionAnalyzer. VI: n perustaajuussignaali oli tällä alueella, se kertoi käyttäjälle, mitä nuottia soitettiin. Kun nuotti oli määritetty, soitetun nuotin arvo vähennettiin nuotin todellisella perustaajuudella, ja sitten tulos siirrettiin toiseen tapaukseen, joka määritti seuraavan: jos tulos on yli nollan, merkkijono on viritettävä alas; jos tulos on epätosi (ei yli nollan), tapaus tarkistaa, onko arvo yhtä suuri kuin nolla, ja jos totta, ohjelma ilmoittaa käyttäjälle, että huomautus on viritetty; jos arvo ei ole nolla, se tarkoittaa, että sen on oltava pienempi kuin nolla ja että merkkijono on viritettävä. Otin tuloksen absoluuttisen arvon näyttääkseni käyttäjälle kuinka monta Hz he ovat kaukana todellisesta nuotista.
Päätin, että mittarin ilmaisin olisi paras osoittamaan käyttäjälle visuaalisesti, mitä on tehtävä muistiinpanon virittämiseksi.
Vaihe 3: Seuraavaksi analoginen piiri
Tässä projektissa käyttämäni mikrofoni on CMA-6542PF-kondensaattorielektrettimikrofoni. Tämän mikrofonin tietolomake on alla. Toisin kuin useimmat tämän tyyppiset kondensaattorimikrofonit, minun ei tarvinnut huolehtia napaisuudesta. Tietolomake osoittaa, että tämän mikrofonin käyttöjännite on 4,5 - 10 V, mutta 4,5 V on suositeltava ja sen virrankulutus on enintään 0,5 mA, joten on syytä olla varovainen, kun suunnittelet sille esivahvistinpiiriä. Toimintataajuus on 20 Hz - 20 kHz, mikä on täydellinen ääni.
Toteutin yksinkertaisen esivahvistinpiirisuunnittelun leipälevylle ja säädin tulojännitettä varmistaen, että mikrofonin yli ei ollut yli 0,5 mA. Kondensaattoria käytetään suodattamaan DC -kohinaa, joka voidaan kytkeä sähköisten signaalien (lähtö) kanssa, ja kondensaattorilla on napaisuus, joten muista liittää positiivinen pää mikrofonin ulostulotappiin.
Kun piiri oli valmis, liitin piirin ulostulon USB-6008: n ensimmäiseen analogiseen tulonastapaan (AI0, nasta 2) ja liitinlevyn maadoitus analogiseen maadoitusnastaan (GND, nasta 1). Liitin USB-6008: n tietokoneeseen USB: llä ja oli aika tehdä muutoksia LabVIEW-ohjelmaan todellisen analogisen signaalin vastaanottamiseksi.
Vaihe 4: Analogisten signaalien lukeminen DAQ Assistantin avulla
SoundFileSimpleRead. VI: n ja HarmonicDistortionAnalyzer. VI: n käyttämisen sijaan käytin DAQ Assistant. VI: tä ja ToneMeasurements. VI käsitelläksesi analogista tuloa. DAQ Assistant -asennus on melko suoraviivaista, ja VI itse vie sinut vaiheiden läpi. ToneMeasurements. VI sisältää monia lähtöjä (amplitudi, taajuus, vaihe), joten käytin taajuuslähtöä, joka antaa tuloäänen perustaajuuden (DAQ Assistant. VI). ToneMeasurements. VI: n tulos oli muunnettava ja asetettava matriisiksi, ennen kuin sitä voitiin käyttää kotelorakenteissa, mutta muu LabVIEW -ohjelmointi/indikaattori pysyi samana.
Vaihe 5: Johtopäätös
Projekti oli onnistunut, mutta siinä oli varmasti monia puutteita. Kun käytin viritintä meluisassa luokkahuoneessa, ohjelman oli erittäin vaikea määrittää, mikä oli kohinaa ja mikä ääni. Tämä johtuu todennäköisesti siitä, että esivahvistinpiiri on hyvin yksinkertainen ja mikrofoni on erittäin halpa. Hiljaisuudessa ohjelma kuitenkin toimi luotettavasti määrittäessään soitettavan nuotin. Aikarajoitusten vuoksi en tehnyt muita muutoksia, mutta jos toistan projektin, ostaisin paremman mikrofonin ja viettäisin enemmän aikaa esivahvistinpiiriin.
Suositeltava:
Hallitse talon valoja Google Assistantin avulla Arduinon avulla: 7 vaihetta
Hallitse talon valoja Google Assistantin avulla Arduinon avulla: (Päivitys 22.8.2020: Tämä ohje on 2 vuotta vanha ja perustuu joihinkin kolmansien osapuolien sovelluksiin. Kaikki heidän puolellaan tehdyt muutokset saattavat tehdä projektista toimimattoman. Se voi olla tai ei työskentele nyt, mutta voit seurata sitä viitteenä ja muokata sen mukaan
Useiden ESP-keskustelujen tekeminen ESP-NOW: n avulla ESP32: n ja ESP8266: n avulla: 8 vaihetta
Useiden ESP-keskustelujen tekeminen ESP-NYT: n avulla ESP32: n ja ESP8266: n avulla: Käynnissä olevassa projektissani tarvitsen useita ESP: itä puhuakseni keskenään ilman reititintä. Tätä varten käytän ESP-NOW-ohjelmaa langattoman viestinnän tekemiseen keskenään ilman ESP: n reititintä
Ihmisen ja tietokoneen käyttöliittymä: Function a Gripper (valmistaja Kirigami) ranneliikkeen avulla EMG: n avulla: 7 vaihetta
Ihmisen ja tietokoneen käyttöliittymä: Function a Gripper (valmistaja Kirigami) ranneliikkeen avulla EMG: n avulla: Joten tämä oli ensimmäinen kokeiluni ihmisen ja tietokoneen välisessä käyttöliittymässä. pythonin ja arduinon kautta ja käytti origamipohjaista tarttujaa
Suuntautumisen opiskelu Raspberry Pi: n ja MXC6226XU: n avulla Pythonin avulla: 6 vaihetta
Suuntautumisen opiskelu Raspberry Pi: n ja MXC6226XU: n avulla Pythonin avulla: Äänet ovat yksinkertaisesti osa ajoneuvon työskentelyä. Hyvin viritetyn ajoneuvomoottorin humina on upea ääni. Renkaiden kulutuspinnat nurisevat tietä vasten, tuuli huutaa peilien, muovikappaleiden ja kojelaudan kappaleiden ympäri
Ohjaa lediä kaikkialla maailmassa Internetin avulla Arduinon avulla: 4 vaihetta
Ohjaa johtoa ympäri maailmaa Internetin avulla Arduinon avulla: Hei, olen Rithik. Aiomme tehdä Internet -ohjattavan ledin puhelimellasi. Aiomme käyttää ohjelmistoja, kuten Arduino IDE ja Blynk. Se on yksinkertainen ja jos onnistuit, voit hallita niin monta elektronista komponenttia kuin haluat Asioita, joita tarvitsemme: Laitteisto: