Audio uit een arduino

Ja, maar we hebben het niet over standaard telefoniespul, maar over een controller die dat aanroept. Volgens mij noemt mijn audioprogramma dit zelfs letterlijk 'Telephony' als je dit als instellingen zou moeten invoeren als 'ie de indeling niet kan ontdekken.

PCM Unsigned 8 bit stereo is bij mij wel te kiezen bij het opslaan, maar het zou me niets verbazen als menig audioprogramma dat niet ondersteunt als opslagmogelijkheid.

http://www.m-voorloop.nl --- Ik? Welnee! Ik zit nog lang niet achter de germaniums.

Op 20 mei 2021 18:57:16 schreef Aart:
Mijn gok zou zijn dat er iets mis is gegaan bij het voorbereiden van de geluidsbestanden.
Het moet een 8 bits 16 kHz PCM WAV zijn, dat lijkt mij niet erg standaard.

Op 20 mei 2021 19:14:57 schreef benleentje:
IS niet zo standaard maar het programma audacity heeft daar geen problemen mee. Dat staat ook allemaal goed beschreven in de link.

Daar heeft men inderdaad veel over beschreven en die specifieke instellingen binnen Audacity geven een goed resultaat.
Een beetje het WAV bestand versterken in Audacity haalde weinig uit.
Hij kon het niet winnen van de ruis, zeg maar...

Ik ga dat RC netwerkje even proberen.

[edit]
Darwn...
Ik heb een shitload aan 100nF liggen (104), maar geen 10nF.
Morgen maar even via de Eboer.

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Niet teveel filters bouwen als het nu al niet werkt, dat kan achteraf nog altijd als de klank niet voldoet.
Maak eerst dat je wat hoort en begin met een potmeter van 10K..47K om het signaal naar de versterker af te zwakken.

[Bericht gewijzigd door MGP op vrijdag 21 mei 2021 07:53:52 (12%)

LDmicro user.

@MGP: Die versterker gaat het hoe dan ook niet grappig vinden om zo'n blokgolf te versterker, daar is hij lang niet snel genoeg voor, dus waarschijnlijk komt er nu een treurig driehoekgolfje uit. Dat filter heeft dus absoluut wel nut nu.

Een potmeter gaat weinig zinnigs doen als het geluid nu al veel te zacht is, denk je niet?

@TS heb je het gewoon geprobeerd met 100nF? Ja, daarmee gaat de kantelfrequentie een factor 5 omlaag, maar dan nog zou je redelijk geluid moeten krijgen.

Weet je trouwens zeker dat je versterker correct werkt?

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Als je het niet probeert weet je het niet en het is een eenvoudige test, een potmeter of trimmer volstaat en je hebt die waarschijnlijk toch nodig om het geluid te regelen.

LDmicro user.

Heb in het verleden eens een Arduino aan een GSM modem (SIM800) gehangen. Eerst uitbellen, wachten tot er opgenomen wordt en dan een WAV-file afspelen. Soms werden er meerdere WAV-files achter elkaar afgespeelt zodat het mogelijk was om een zin te maken met variabelen. Alle WAV-files stonden op een SD-card.

Als bibliotheek SimpleSDAudio gebruikt. Zie ook https://www.hackerspace-ffm.de/wiki/index.php?title=SimpleSDAudio waar verder naar beneden wat meer informatie staat over de audio output.

Filmpje: https://www.youtube.com/watch?v=XgKXwTjAgXM

Op 20 mei 2021 11:47:26 schreef Fantomaz:

Heb je daar wat meer info over??

Als je googled op DFplayer kom je heel veel tegen,hier alvast een begin:

De DFplayer is dus ook zonder arduino te sturen met behulp van weerstanden en drukknoppen.

[Bericht gewijzigd door Robvansuilen op vrijdag 21 mei 2021 14:26:08 (13%)

Met vriendelijke groet, Rob

Op 21 mei 2021 14:21:38 schreef Robvansuilen:
De DFplayer is dus ook zonder arduino te sturen met behulp van weerstanden en drukknoppen.

Ik moet wel vasthouden aan Arduino ivm nevenzaken.

Op 21 mei 2021 13:54:57 schreef EdbO:
Heb in het verleden eens een Arduino aan een GSM modem (SIM800) gehangen. Eerst uitbellen, wachten tot er opgenomen wordt en dan een WAV-file afspelen. Soms werden er meerdere WAV-files achter elkaar afgespeelt zodat het mogelijk was om een zin te maken met variabelen. Alle WAV-files stonden op een SD-card.

Als bibliotheek SimpleSDAudio gebruikt. Zie ook https://www.hackerspace-ffm.de/wiki/index.php?title=SimpleSDAudio waar verder naar beneden wat meer informatie staat over de audio output.

Filmpje: https://www.youtube.com/watch?v=XgKXwTjAgXM

Leuke dingen. Ik ga me er eens in verdiepen.
Tx

Ik heb nu de 10nF condensatoren.
Even wat proberen, voordat mijn vrije tijd weer wordt gekaapt.

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Mensen, en FET in het bijzonder...
Het is gelukt met het RC netwerkje.
Waarom weet ik niet en ik zou het graag eens uitgelegd zijn zodat het geen voorkauwen is, maar een leermoment :-)

DAt deel werkt nu super!
Zo nu en dan een lichte ruis, maar dat was niet anders met die oude telefoontoestellen. Totaal geen issue.

De volgende stap zal zijn om niet met de tiptoetsen door de WAV bestanden heen te bladeren, maar om een bepaalde pool aan bestanden aan te spreken, afhankelijk van de toetsaanslag.

Een klein ding nog, waarvan ik niet weet of het Arduino programmeer gerelateerd is of een ander bugje, maar zo nu en dan loopt de boel vast en hoor ik een zachte, hoge pieptoon. Ik kan dan niets meer.
De tiptoetsen werken niet maar ook de resetbutton op de Arduino heeft geen effect.
Ik denk dat de brakke verbinding (Breadboard) met de SD cardreader even corrupt raakt.
Een powercycle helpt altijd wel.

Van hieraf ga ik weer verder bouwen!

https://www.uploadarchief.net/files/download/col%20telefoon.jpg

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Frederick E. Terman

Honourable Member

Ha, fijn! Nu kun je verder met dit leuke project.

Het is gelukt. [...] Waarom weet ik niet en ik zou het graag eens uitgelegd zijn

Voorlopig kun je hiermee misschien uit de voeten:

Het PWM-signaal uit de Arduino is een blokgolf tussen 0 en de voedingsspanning. Dat zijn dus vele volts. Maar door de tamelijk hoge frequentie van 16 kHz voor ons (ouderen :)) onhoorbaar. De gemiddelde spanning ervan is in rust de halve voedingsspanning.
Bij het afspelen van geluid nu worden de pulsen breder en smaller gemaakt, zodat de gemiddelde spanning omhoog en omlaag gaat, in het ritme van de weer te geven audio. En dát kunnen we wel horen.

Het komt er dus op neer dat het signaal zowel de bedoelde audio, als ook een gemene blokgolf bevat.
Sluit je rechtstreeks een telefoontje aan, dan geeft dat ook beide weer. Een jong persoon zal die 16 kHz goed horen en erover klagen!
De versterker heeft óók last van die blokgolf. Hij probeert hem te versterken, maar de blok ís al vele volts. De versterker wordt dus totaal overstuurd.

Door nu een laagdoorlaatfilter tussen te schakelen, worden wél de bedoelde audiofrequenties, maar niet (of toch veel minder) de 16 kHz-blokgolf doorgelaten. De versterker kan nu beter zijn werk doen en de audio versterken.

Keramisch, kalibratie, parasitair: woordenlijst.org

Mooi dat het werkt, nu zie ik ook dat de versterkerprint al een potmeter heeft, die foto in uw startpost ware goed geweest..soit

Ik zie dat uw versterkerprint gevoed wordt met de spanning aangeboden aan de Arduino, hopelijk kan uw Arduinovoeding genoeg stroom leveren want een versterkerprint kan nogal wat piekstromen nemen.

LDmicro user.
Arco

Special Member

{

Zo nu en dan een lichte ruis, maar dat was niet anders met die oude telefoontoestellen. Totaal geen issue.

Is meestal bij stille perioden te horen? Wordt veroorzaakt doordat het signaal rond het nulpunt staat te 'zwabberen'
Is op te lossen door bijv. de 2 LSBits in de PWM te negeren, dat hoor je toch niet.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Als je maar 8 bits hebt zou ik er niet ook nog 2 weggooien.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Lambiek

Special Member

Op 21 mei 2021 22:47:41 schreef Fantomaz:
Waarom weet ik niet en ik zou het graag eens uitgelegd zijn zodat het geen voorkauwen is, maar een leermoment :-)

FET heeft het ook al uitgelegd, maar hier nog een keer met een plaatje.

Een audio signaal is sinus vormig en dat kan je versterker dus prima versterken, zie bovenste plaatje.

Een PWM of een digitaal signaal is blokvormig en dat pikt je versterker niet. Een blokvormig signaal is 1 of 0, (0 of bijv. 5V) daar zit dus niets tussen in. Door nu een filter toe te passen kun je van bijv. een PWM signaal een 0 tot 5V signaal maken en daar kan je versterker weer wel mee overweg. Achter het filter staat een spanningsvolger getekend, daar kun je eventueel nog een versterkingsfactor aan toevoegen. Of je gebruikt het als een buffer voor het gefilterde signaal.

Hoop dat dit een beetje duidelijk is zo.

Als je haar maar goed zit, GROETEN LAMBIEK.

FET en Lambiek, bedankt voor het verduidelijken.
Ik zit een beetje te dubben of ik ooit een topic ga starten met de vraag wat er precies in zo'n RC filter gebeurt, achter die blokgolf.
Ik zou zodoende dit huidige topic levendig kunnen houden tbv mijn project en de ongetwijfeld opkomende vragen.

Toch blijf ik nog even hangen met dat RC vraagstukje hierzo...
Misschien dat ik wel weer ontopic ga sturen, wanneer het zover is. :-)

Even beredeneerd met mijn beperkte kennis van een RC netwerk:
Is het zo dat de Condensator vertraagd via de eerste weerstand geladen wordt, over de tijd dat dat blok hoog is? Om vervolgens weer te ontladen wanneer die blokgolf null is?

En waarom 3 RC trappen achter elkaar?
Is dat om zaken wat minder scherp te stellen?
Kan zo'n netwerkje ook bestaan uit 3 verschillende R- en C-waardes?

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
benleentje

Golden Member

k zit een beetje te dubben of ik ooit een topic ga starten met de vraag wat er precies in zo'n RC filter gebeurt, achter die blokgolf.

Een 16kHz blokgolf is voor een versterker over het algemeen niet het probleem. Als de blokgolf 16kHz is moet de versterker minimaal 160kHz aankunnen.
Maar om te begrijpen wat een RC netwerk of andere filter nu precies doet met een blokgolf moet je eigenlijk begrijpen dat een blokgolf vrij onnatuurlijk is en eigenlijk zelfs helemaal niet op zichzelf kan bestaan omdat die is opgebouwd uit oneindig veel sinussen van 1ste, 3de 5de 7de enz harmonische. Enkel de oneven dus zie onderstaande plaatje.
https://www.gemex.nl/nl/assets/images/fourier.jpg

http://www.amateurtele.com/print.php?artikel=292
http://www.amateurtele.com/images/Amateurtelecom-harmonics_math_square.jpg
Hoeveel sinussen er precies in een blokgolf zitten word oa bepaald door de flanksteilheid of de stijgtijd ervan. Hoe steiler deze flank hoe hoger de aanwezige frequenties zijn die erin zitten. In een perfecte blokgolf van 1Hz kan dus in theorie een max frequentie van vele Ghz zitten zelf Thz is mogelijk dat 1000Ghz.
Maar het leuke is dus als je voor je perfecte blokgolf van 1Hz een filter bouwt die echt alles boven de 1HZ eruit haalt je een sinus van 1Hz overhoud. En dat is in bovenstaand plaatje dan de oranje sinus. Jouw RC netwerkt haalt dus alle hoge sinussen er al uit waardoor het signaal al veel minder op een blokgolf lijkt. Maar nog belangrijker de flanken van oorspronkelijk blokgolf zijn dan ook veel minder steil en dat vind je versterk nu weer prettig, want jouw versterker was gewoon niet snel genoeg om net zo snel te zijn als je blokgolf.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
Arco

Special Member

Voor telefonie gebruik ik altijd een 3kHz, 4th order low-pass:

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 23 mei 2021 22:26:31 schreef benleentje:
helemaal niet op zichzelf kan bestaan omdat die is opgebouwd uit oneindig veel sinussen van 1ste, 3de 5de 7de enz harmonische. Enkel de oneven dus zie onderstaande plaatje.

Dat klopt alleen voor een blokgolf, dus met 50% pulsbreedte. Hier gaat het om een rechthoek, aangezien de pulsbreedte varieert, en dan krijg je ook andere harmonischen.

Eigenlijk had ik verwacht dat die versterker, met zijn beperkte bandbreedte en slew-rate, zelf een filter zo zijn.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
blackdog

Golden Member

Hi,

Ik wilde nog een toevoeging doen op het filter wat F.E.T liet zien, wat hij aangaf om me te starten en daarna goed te berekenen.

Dit filter wat F.E.T liet zien komt goed overheen met wat je veel met Google kan vinden als je een PWM filter zoekt.
Vaak voor de weerstanden en de condensatoren de zelfde waarde.
Maar dat is helemaal geen goed filter, filterd het? jazeker maar de banddoorlaat is belabbert voor audio.

Hieronder een filter dat ook passief is en dat audio goed doorlaat voro een PWM frequentie het liefst boven de 16KHz en met een audio bandbreedte van 4,1KHz bij -3dB.

https://www.bramcam.nl/Diversen/3e-Orde-Lowpass-4KHz.png

.
Wat zijn de uitgangspunten geweest voor het opsetten van dit filter:
Sturing van uit een digitale uitgang zoals een Microcontroler of digitale poort, die gevoed wordt vanuit max 5V voeding spanning.(de voeding goed ontkoppelen)
De 100Ω aan de ingang levert dat heel kort tijdens de flanken 50mA piekstroom, monteer daarom het filter vlak bij de uitgang met korte bedrading.

Bij dit derde orde filter kan je zien dat het filter in dus drie secties is opgebouwd en dat de impedantie ook bij iedere sectie 10x omhoog gaan.
Dit om de voorgaande sectie niet te zwaar te belasten, dat resulteerd dan in een redelijk mooie afval aan de uitgang van het filter.
Zie wat dit betreft het lijstje aan de rechter zijde van het filter.

Het filter zou minimaal moeten worden afgesloten met een belasting van zeg 50K en het liefst nog hoger, een 100K logpotmeter voor het b.v. een audio eindtrapje in gaat, zoals een LM386.

Met dit filter is een mooie audio doorlaat te krijgen op een passieve manier, maar heeft dus als negatieve eigenschappen een lage aanstuur impedantie en een hoge uitgangs impedantie.
Als je daar rekening mee houd is het verder goed toe te passen.
Ook is de 10x impedantie verhouding tussne de secties wel wat lager te maken, zeg tot ongeveer minimaal 5x maar die mooie karakteristiek van het lijstje haal je dan niet meer.
Je krijgt dan dat het filter eerder gaat afvallen en een minder scherpe knie krijgt.

Wat ik hier laat zien heb ik gemeten door de onderdelen even op een breadboard te prikken en de uitgang aan mijn Fluke 8920A RMS meter te hangen.

Wil je het echt beter hebben en niet met de beperkingen zitten, dan zal je er een paar opamps tegenaan moeten gooien zoals Arco het liet zien.

Groet,
Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.

Op 23 mei 2021 22:26:31 schreef benleentje Een 16kHz blokgolf is voor een versterker over het algemeen niet het probleem. Als de blokgolf 16kHz is moet de versterker minimaal 160kHz aankunnen....

Het kostte me wat moeite om dit even te behappen en te zien waarom ik dit niet in me op kon nemen...

Ik heb het volgens mij gevonden. :-)

Dat je bitrate hoger is wanneer je een strakkere blokgolf wilt creëren, snap ik.
Maar de issue is niet dat ik een analoog geluidsbestand wil digitaliseren...
Ik heb een gedigitaliseerd geluidsbestand (.WAV file) die ik analoog in een versterker wil duwen.

Als ik dan de tijd dat het digitale signaal "hoog" is gebruik om een condensator te laden, zal de RC tijd stijgen.
Hoe langer het signaal hoog is, hoe meer geladen de C is. Wanneer het digitale signaal weer laag is, zal de C zich (afhankelijk van de R waarde) weer ontladen. Daardoor worden de flanken glooiender.
* Fantomaz wil jullie geen les gaan voorkauwen

* Fantomaz beredeneerd luidop.

Ik denk dat (gebaseerd op de uitleg die eerder is gedaan over het oversturen van de versterker door een strak en hard digitaal signaal) het digitale signaal door dat RC netwerk weer wat analoger wordt en daarbij beter te behappen.

Wat ik nog niet begrijp is waarom het een cascadering van een aantal weerstanden en condensatoren moet zijn. Theoretisch denk ik dat elke stap de zaak wat meer glooiender maakt zodat het een vloeiend geheel wordt, maar dat is weer luidop redeneren.

En omdat de Tau (RC) afhankelijk is van de combinatie van Weerstand- en condensatorwaarde, is daarmee natuurlijk te spelen door beide waarden hoger te maken.
Is er een reden voor dat gekozen is voor 3k3 en 10nF?
Bv omdat dat de frequentie ten goede komt (zoiets kwam terloops voorbij)?
Of misschien omdat de uitgangsinpedantie hoog moet zijn? (3x 3K3 = ~10K?).
Waarbij in beide voorbeelden het andere component zich aanpast aan de keuze van het ene component, om wel op de juiste C waarde uit te komen natuurlijk...

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
blackdog

Golden Member

Hi, :-)

Een functie generator en een scoop kan je mooi laten zien hoe de RC secties werken.
Misschien ook goed om wat te gaan leren over filters zodat je het beter gaat begrijpen.
Dat hoeft zeker niet met veel wiskunde gepaard te gaan.

Ik heb de kennis opgedaan door veel te bouwen en te meten wat filters betreft, berekenen gebruik is software voor.
De link hieronder is voor een serie video's betreffende filter eigenschappen uitgelegt door Matt Duff van Analog Devices.

https://www.youtube.com/watch?v=4hULtnsw60g

Verder kan je met een simpele goed berekende opamp schakeling een heel mooi 4e orde low pass filter maken.
Hiervoor gebruik ik de software van Conrad Hoffman en die software heet: 4-Pole Single Op Amp Lowpass Filter Calculator

Ik heb hiermee een 4e orde low pass filter voor je berekend met enigzins "ronde" waarde voor de componenten.
Hoe hoger de orde van het filter hoe nauwkeriger de componenten moeten zijn.
En dit geld voor al voor de in rood aangegeven weerstanden deze zijn in dit schema 2000 en 2195,7Ω.
Het gaat om de verhouding tot elkaar, dus 1000 en 1097,85 mag ook. voor het filter gedrag is dat het zelfde alleen de opamp moet dan wat meer stroom leveren.
En dan nog iets bij zit zoort hogere orde 1-OpAmp filters, het versterkt iets meer dan 6dB en daar moet je dus rekening mee houden.
De kromme waarde van R7 van 2195,7Ω bepaald vooral de rimpel in de doorlaat, dit is een 0,5dB rimpel Cheb. filter.
Ik zet dan als ik het filter doormeet een kleine trimpot in serie met R7 die ik dan iets lager in waarde kies.
Met de trimpot regel ik dan het filter af op een zo mooimogelijke karakteristiek, met een functie generator en scoop of mV meter is dat eeen klein klusje.

Otnkoppeling en voeding heb ik weggelaten dit zullen jullie zelf moeten toevoegen.

Groet,
Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.

Hoe interessant deze materie ook is, ik zal me er niet snel nog meer in gaan verdiepen.
Ik heb daar gewoon geen tijd voor.
Ik zal een scoop moeten aanschaffen, hoewel die ook voor andere facetten van de hobby misschien nog wel eens handig kan zijn.

Daar is overigens wel een heel breed scala aan modellen in te vinden.
Iemand een aanrader voor beperkt (lees: minder intensief) gebruik?

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
bprosman

Golden Member

De jongere generatie loopt veel te vaak zijn PIC achterna.

Op 21 mei 2021 21:59:17 schreef Fantomaz:
[...]

Ik moet wel vasthouden aan Arduino ivm nevenzaken.

Hoewel ik met geringe kennis van de praktische uitvoering van jouw project me toch af vraag of je bovenstaande bewering inderdaad echt zo is, (een oude telefoon bevat immers alleen maar hoorn van de haak detectie en de drukknoppen voor de cijfers, wellicht kom je al een heel eind door de df player rechtstreeks aan te sturen), is de DF player zoals je kunt zien in de links ook prima serieel en dus met een arduino aan te sturen.

Maar goed inmiddels ben je zover gevorderd op je huidige pad (op het vastlopen na) dat compleet omdenken wellicht wat lastig en tijdrovend is.

Aan de andere kant , als ik zie dat er nu veel tijd en energie gaat zitten in het bedenken en bouwen van het juiste filter, blijft het misschien een optie. Het is maar waar je de uitdaging zoekt. Blijft in ieder geval een leuk project.

[Bericht gewijzigd door Robvansuilen op donderdag 27 mei 2021 11:27:32 (14%)

Met vriendelijke groet, Rob