Go Down

Topic: Amplitude en frequentie van geluidsgolf uitlezen (Read 9195 times) previous topic - next topic

Jarnovis

Nov 21, 2017, 04:59 pm Last Edit: Nov 21, 2017, 05:04 pm by Jarnovis
Na een paar tutorials wou ik toch al snel aan een eigen projectje beginnen.

Ik heb een programmeerbare RGB-LED strip gekocht en deze wil ik graag aansturen door middel van muziek (vanaf 3.5mm audio kabel (laptop/telefoon) naar de arduino). Het doel is eigenlijk:

- Helderheid van de LEDs aansturen dmv volume (amplitude)
- Kleuren van de LEDs aansturen dmv de frequentie

Heb na behoorlijk wat zoeken al aardig wat (engelse) topics gevonden, maar heb geen ervaring met elektro en loop hierop vast. Het aansluiten/opbouwen vanuit een schema lukt me niet en mocht het lukken heb ik geen idee wat ik aan het doen ben, wat ik wel graag wil weten. Het is dus een hobby/leer project voor mij.


Het is mij in ieder geval opgevallen dat de Arduino negatieve spanningen niet leuk vindt en er daarom een DC-offset of een diode nodig is. De diode werd mij afgeraden, omdat hij al 0,6-0,7 V gebruikt en het signaal dat overblijft wel erg klein wordt.

Deze dezelfde problemen worden op de Engelse fora meestal naar http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-realtime-audio-processing/ verwezen, maar ik snap het schema niet.

Ik heb een aantal vragen, namelijk
- Is het mogelijk om de amplitude én de frequentie uit te lezen?;
- Kan iemand in Jip-en-Janneke taal het schema uitleggen(zie link hierboven);

Er zullen naar loop van tijd wel wat vragen bij komen, maar dit zijn momenteel de belangrijkste.

shooter

Vraag 1 ja, dat kan, je neemt gewoon een hoop samples, zoals ook in de tekst staat en die ga je dan bewerken zodat je het gemiddelde hoogte kunt bepalen, (dat is dan je volume.

Daarnaast kun je bepalen door te kijken waar het signaal telkens piekt om de frequentie te bepalen.
Dat is allemaal best wel pittig rekenwerk en wordt normaal gedaan met een Digital Signal processor.
Het schema aan de linkerkant is eigenlijk alleen maar dat er een DC spanning bij je lijnsignaal wordt gedaan, de condensatoren zorgen voor het optillen van het signaal, stel even dat de potmeter in het midden staat, dan staat er dus 2.5 Volt op de analoge input.
het lijnsignaal wordt daarbij geteld (want de condensator laat de AC door.
Hierdoor zul je een signaal zien dat om de 2.5 V heen beweegt.

Ik moet je wel even waarschuwen want de voltages zijn erg klein en zul je dus maar heel weinig beweging kunnen meten.
Een luidspreker uitgang is al wat beter, of je moet er een klein versterkertje opamp bijzetten,zoals een 741 dan kun je daarmee ook je signaal optillen en zelfs filteren.

paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Jarnovis

Bedankt voor je antwoord!

Ik heb nog een paar schema's gevonden, dit minder ingewikkeld zijn. In deze schema's staan geen potmeter, maar een diode. Zal ik een diode gebruiken om mijn negatieve spanning weg te werken of een DC offset?

Het simpelste schema staat in de foto.


shooter

leuk bedacht maar dat gaat niet want de golfvorm wordt niet goed hierdoor, de diode blokkeert wel, maar de condensator moet leeg lopen en dat geberut altijd met dezelfde snelheid.
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Jarnovis

Sorry voor de late reactie:(

Bedankt voor je antwoord, ik zal verder gaan met het eerste schema. Nu ik vakantie heb zal ik hier actief mee bezig zijn. Zal eventuele vragen hier vermelden en anders het resultaat.

Jarnovis

Het lijkt erop dat ik steeds random waardes binnenkrijg van 800-1020. Het maakt niet uit of mijn volume nu op 0 staat of 100.

Het kan erg goed aan mijn opstellingen liggen, zal binnenkort een fritzing tekening maken en posten.

Kan je trouwens die opamp(741) zelf programmeren of is dit niet mogelijk?

MAS3

Hoi.

Een opamp is een heel analoog ding.
Daar valt niets aan te programmeren.
En al zeker een oer component als de 741, das zo'n beetje de eerste opamp die ooit beschikbaar kwam.
Daar zit echt absoluut niets digitaals in, behalve de antwoord op je vraag: false.

In het kort dus:
Nee.

Maar misschien bedoelde je wel iets heel anders ?
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Jarnovis

Duidelijk antwoord op de vraag die ik bedoelde.

Jarnovis

Vandaag eindelijk mijn schema gemaakt in Fritzing. Heb in rood omcirkerlt wat ik wil nabouwen. Is dit het correcte schema hiervoor? En is het nog nodig als ik een potmeter gebruikt om een LM741 te gebruiken? Zoja, waar moet deze dan komen?


Mocht de Fritzing niet goed zijn, graag een tip wat ik moet aanpassen.

Alvast hartelijk bedankt.

MAS3

Hoi.

Ik heb maar even je plaatjes gecombineerd en dit is wat ik er van gebakken heb:



Het is een Fritzing! plaatje, dus komt er commentaar op.
Dat programma maakt het eenvoudig om te tekenen wat je wil maken of gemaakt hebt, maar het kan a heel snel een onoverzichtelijk zooitje worden.
Bijvoorbeeld door draden die schuin lopen, en/of elkaar kruisen op cruciale punten.
Dat is hier dan ook gebeurd.
Je (net niet) horizontale gele draad was veel beter uitgekomen als ie wel horizontaal gebleven was, en had dan ook niet de rode draad gehinderd.
Das wat algemeen over dit programma, niet echt waar je op gehoopt had.

Verder heb je de rode kleur gebruikt voor een voedingslijn, maar ook voor een signaal lijn.
En daardoor heb je die twee ook door elkaar gehaald.
Je hebt de rode draad op de Arduino aan de 5 volt aangesloten, en de andere kant op de rode bus van het breadboard.
Die rode bus loopt over de gehele lengte van dat breadboard .
Let goed op of dat op jouw werkelijke breadboard ook wel zo is en dat daar de lijn in het midden niet is onderbroken, want dan is de verbinding op die plaats ook onderbroken !

Links ga je van die rode bus een keer naar je microfoon connector, en met een andere rode draad naar de  condensator.

De condensatoren die je getekend hebt, zien er het zelfde uit.
Maar in het schema is de ene condensator een Electrolytische Condensator (Elco), en de andere niet.
De Elco is polariteit gevoelig en dat moet je niet omdraaien.
Daarom heeft die een zwarte en een witte streep de witte streep gaat naar de negatieve kant en de zwarte aan positief.

In het schema staan 2 weerstanden en op jouw breadboard niet.

De gele draden op je breadbord zijn niet goed.
De ingang van je Arduino is met GND verbonden en zal daarom nooit een signaal zien.

Dat zijn de dingen die mij zijn opgevallen.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Jarnovis

Bedankt voor je uitgebreide reactie.

Het eerste niet waar ik direct op hoopte, maar wel handig voor in de toekomst. Heb nu zoveel mogelijk draden recht gemaakt.

Misschien even een 'noob' vraag, maar wat bedoel je met de rode bus? De gehele horizontale lijn voor de positieve en ground? Snap wat daarna komt ook niet precies over de 'andere kant'. Ik denk zelf dat je de linker- en rechterkant van het breadbord bedoelt, maar weet het niet zeker.

Goed dat ik dat weet van de condensator, heb het gelijk aangepast. De weerstand staat er nu ook in. Nu je het zegt dat ik het signaal van de Ground meet, zie ik het ook, maar heb geen idee hoe ik het moet aansluiten zodat ik wel het correcte signaal meet.

Wat is er niet goed met mijn gele draden? Want het signaal van mijn potmeter gaat toch naar de condensator(kruising op de tekening)?

Heb niet veel aangepast, maar wat ik wist aan te passen is aangepast.

Ik zie uit naar je reactie!

shooter

de sterkte van het signaal is nooit genoeg, er zal echt een opamp tussen moeten.
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

MAS3

Lees even het stukje wat ik geschreven heb over het plaatsen van plaatjes, het staat ergens tussen de bovenste posts in dit Nederlandstalige gedeelte.



Ik zie nog steeds diagonale verbindingen.

De andere kant gaat over de virtuele draden.
Die hebben eerst de ene kant, hier heb ik het over de kant die met de Arduino verbonden is, en dan de andere kant van die draad.
Die andere kant zit dus in je breadbord.
En de bus, daarmee bedoel ik inderdaad de buitenkanten van je breadboard mee, die bedoeld zijn om de voeding op aan te sluiten, en voorzien zijn van een rode en een blauwe streep om daarmee aan te geven wat voor wat bedoeld is.

Er zijn dus breadboards waar de rode en de bleuwe lijn die er op afgebeeld staat, in het midden onderbroken is.
In dat geval is de doorverbinding van de pinnen er naast ook onderbroken.
Dat heeft in het verleden nogal eens tot fouten geleid, dus dat is iets waarvan je even moet bekijken of jouw board dat ook heeft, of dat die lijnen (en dus ook de verbindingen) zijn doorgetrokken.
Die secties van telkens 5 gaatjes zijn dus allemaal met elkaar doorverbonden, het is niet zo dat alleen de 5 gaatjes van de secties met elkaar zijn doorverbonden, wellicht dat je dacht dat dat zo is.
Daarom kun je nu je diagonale rode draden ook als rechte lijnen tekenen.
Zie je dat als je 1 pin in je breadboard gebruikt, dat dan alle daarmee verbonden pinnen in het groen oplichten ?

Je hebt de gele draad van de analoge ingang A0, verbonden met de pin van de condensator die aan ook aan GND van de Arduino hangt.
Dat kan nooit goed zijn.

De rode draad is niet met de weerstand verbonden.

Je kunt de blauwe en de gele draad onderling verwisselen, en de Elco 1 verticale positie opschuiven.
Je kunt de zwarte draad aan de condensator 1 positie opschuiven, en de lange gele draad ook 1 gaatje opschuiven.

Hiermee zul je de problemen hebben opgelost.

Zoals shooter al aankaartte, hiermee krijg je een signaal dat vermoedelijk heen en weer fietst tussen 2 en 3 volt.
Tenzij de laptop direct (dus zonder een extra versterker) een speaker kan aansturen (waarmee het te verwachten signaal juist weer te hard zal zijn en schade kan aanrichten).
Als het een signaal tussen 2 en 3 volt is, is het heel slim om het te versterken, zodat je optimaal van het meetbereik van je Arduino gebruik kunt maken.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Wawa


Jarnovis

#14
Feb 05, 2018, 09:02 am Last Edit: Feb 05, 2018, 09:08 am by Jarnovis Reason: Plaatje toevoegen in post.
Lees even het stukje wat ik geschreven heb over het plaatsen van plaatjes, het staat ergens tussen de bovenste posts in dit Nederlandstalige gedeelte.
Moet het posten als afbeelding in de post en niet als bijlage?


Je hebt de gele draad van de analoge ingang A0, verbonden met de pin van de condensator die aan ook aan GND van de Arduino hangt.
Dat kan nooit goed zijn.
Klopt, maar ik heb geen idee hoe ik het moet aansluiten zodat het wel klopt. Heb nu wat aangepast, maar de GND is nu niet verbonden met de condensator.


De rode draad is niet met de weerstand verbonden.
Opgelost.


Je kunt de blauwe en de gele draad onderling verwisselen, en de Elco 1 verticale positie opschuiven.
Opgelost.

Je kunt de zwarte draad aan de condensator 1 positie opschuiven, en de lange gele draad ook 1 gaatje opschuiven.
Sorry, ik snap niet wat je hier bedoeld.


Zoals shooter al aankaartte, hiermee krijg je een signaal dat vermoedelijk heen en weer fietst tussen 2 en 3 volt.
Tenzij de laptop direct (dus zonder een extra versterker) een speaker kan aansturen (waarmee het te verwachten signaal juist weer te hard zal zijn en schade kan aanrichten).
Als het een signaal tussen 2 en 3 volt is, is het heel slim om het te versterken, zodat je optimaal van het meetbereik van je Arduino gebruik kunt maken.
Heb wat plaatjes op Google opgezocht, hoe ik hem moet aansluiten, maar wil nu eerst bovenstaande werkend hebben voordat ik andere componenten ga toevoegen.



Go Up