Forum: Mikrocontroller und Digitale Elektronik Stimmgerät-Gitarre / AVR ATmega2560


von Mark R. (mark_r)


Lesenswert?

Hallo alle zusammen,

aktuell versuche ich im Rahmen einer Fallstudie für die Uni ein 
Stimmgerät zu realisieren mit dem myAVR MK3 Board / ATmega2560. Ich 
benutze als Entwicklungsumgebung SiSy/C.

Grundsätzlich funktioniert das Programm, allerdings habe ich Probleme 
beim auswerten der Frequenz. Bzw denke ich das ich das ganze dort 
einfach falsch angehe. Das sind leider meine ersten größeren Erfahrungen 
im Bereich MC-Programmierung.

Das Signal gebe ich über einen Frequenzgenerator/ext. Verstärker auf den 
ADC des Boards. Auch später soll nur über Kabel gestimmt werden.

Durch den Prescale 64 kann der ADC nur ein Maxima von 15 annehmen(?). 
Die werte des ADCs habe ich in ein Array gespeichert und die Maximas 
ausgelesen, gezählt und den Mittelwert einer Samplesize von 400-500 
gebildet und daraus die Frequenz errechnet. Über das LCD lass ich mir 
dann die Werte immer anzeigen zur Kontrolle. Das stimmt dann auch 
abundzu mal mit einer Abweichung von ein paar Herz. Aber grundsätzlich 
liegt ja hier der Hund begraben.

Da der ADC nur positive Werte annehmen kann(?) ist das mit den 
Nulldurchgängen zählen ja nicht so einfach(?).

Was würdet Ihr empfehlen wenn ich den ADC weiter nutzen möchte, wie soll 
ich vorgehen bzw. das Eingangssignal weiter verarbeiten?

Oder besser auf einen anderen IO-Port gehen? Kann ich da einfacher high 
und low edges zählen? Mir fehlt da ein wenig eine sinnvolle, 
verständliche Strukturierung des Programms. Wie zähle ich, wie behandelt 
ich die ISR ggf. richtig oder besser, wie arbeite ich mit den 
Frequenzen/Prescale ect. richtig oder besser. Auf was muss ich beim ADC 
oder später bei der Gitarre achten da die Frequenz ja später nicht mehr 
so sauber wie auf dem Frequenzgenerator ist.

Ich bin Neuling, also wäre es ganz nett wenn Ihr mir ein paar Hilfreiche 
Anregungen und Tipps/Erklärungen geben würdet. Die gängigen Stimmgeräte 
die ich so im Netz finde helfen mir nicht wirklich weiter. Da oft nicht 
mit ADC gearbeitet wird oder wenn, dann, mit einer FFT, wobei das ja 
angeblich nicht notwendig ist. Zu guter letzt gibt es kaum gute 
Dokumentationen diese Nachzuvollziehen als Anfänger. Was mich im 
Verständnis nicht sehr weit gebracht hat.

Schon mal vielen Dank für die Anregungen.

von маленький шумный зомби (Gast)


Lesenswert?

Das Signal AC koppeln (1uF Kondensator) und mit einem Spannungsteiler 
10k/10k auf Ref/2 vorspannen.

von Pastor Braune (Gast)


Lesenswert?

gugst du hier :
http://www.myplace.nu/avr/gtuner/

mfg

von Laura Meische (Gast)


Lesenswert?

Ich würde nicht den AD-Wandler verwenden, sondern den Komparator. Dann 
hat man schöne (rechteckige) Nulldurchgänge mit denen man die Frequenz 
bestimmen kann.

von Mark R. (mark_r)


Lesenswert?

Naja, das hilft mir alles noch nicht weiter.

Jespers Tuner habe ich mal auf meine Hardware angepasst.

Allerdings liefert der nur bei einem konstanten Signal (Generator) ein 
vernünftiges Ergebnis ( Abweichung bei den niedrigen Frequenzen um 
0,4Hz)

Sobald ich die Gitarre anschließe habe ich keine Chance das vernünftig 
zu Stimmen da er auch immer wieder in die ISR springt und die LEDs dann 
nicht konstant bleiben sondern jenach Pegel zwischen den Frequenzen hin 
und her switcht. Google und Foren habe ich schon genug befragt...Also 
brauch ich da ein bisschen detailierter Hilfe...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Laura Meische schrieb:
> Ich würde nicht den AD-Wandler verwenden, sondern den Komparator. Dann
> hat man schöne (rechteckige) Nulldurchgänge mit denen man die Frequenz
> bestimmen kann.

... nach einem Tiefpass, um Oberwellen und Rauschen zu killen, die den 
Zähler irritieren ...

von Bernie (Gast)


Lesenswert?

Stimmgerät für Gitarre:

Wenn dir schon die Tatsache Schwierigkeiten bereitet,
dass ein ADC nur positive Werte ausgibt, hast du ein PROBLEM.

Wenn du nicht weißt, wie ein Gitarrensignal auf dem Oszilloskop
aussieht, hast du NOCH eins.

Wenn du nicht weißt, was der Prescaler des ADC mit seiner
Auflösung der Eingangsspannung zu tun hat, hast du ein
WEITERES.

Bei einem intelligenten UND lernwilligen Menschen würde ich
einige Monate intensiver Arbeit ansetzen, um diese Probleme
zu lösen...

Ist dir klar, dass du eine von 6 Frequenzen zwischen
(rund) 82 Hz und 330 Hz auf mindestens 0,06% = 600 ppm genau
erfassen musst, was ein Hundertstel des Verhältnisses von
einer Note zur nächsten ist?

Das schafft man mit einem µC nicht zwischen zwei
Nulldurchgängen. - Es ist aber mit einem µC leicht zu
machen.

DANN ABER:
Eine Gitarrensaite schwingt vielleicht auf EINER Frequenz,
mit dem Gitarrenkörper daran daran gibt es aber ein Gemisch von
Schwingungen, die es schwierig machen, im Amplitudenverlauf
SICHER zu erkennen, wo eine Schwingung des Grundtons beginnt
bzw. wo sie endet. - Hier wird es erst richtig INTERESSANT!

Gibts an der Uni keine einfacheren Fallstudien?

von kukuk (Gast)


Lesenswert?

tuechtig , Bernie !

von amateur (Gast)


Lesenswert?

Ich schätze mal, dass Du dich zuerst in die Analogtechnik wurschteln 
musst. Dort ganz besonders in die Abteilung: Filter.
Einfach Signal verstärken und ab in den A/D-Wandler verlangt sehr viel 
Rechenleistung. Selbst der einfachste Toni ist eine Mixtur aus allen 
möglichen Frequenzen.
Richtig in Stimmung kommst Du aber nur auf der Grundfrequenz.

von Mark R. (mark_r)


Lesenswert?

Ach leute, ich finde diese Aussagen manchmal echt doof. Die meisten 
Menschen in solchen Foren tuen immer so als hätten Sie die mortz Ahnung 
aber reden einfach nur hochgestochen von irgendwelchen Dingen die sie 
selber vllt garnicht können nur so zu tun als hätten sie Ahnung.

An meinem MC hängt ein Oszzi, was ein Prescale ist weiß ich, wenn der 
allerdings nur 0-x angibt gehe ich davon aus das er nur positive Werte 
ausgibt. Daher die (?) ob ich damit richtig liege. Ich Spiele selber 
Gitarre und kenne jede Frequent auswendig. Wenn ich solche Kommentare 
lesen muss wird mir anderst. Nur weil ich keine Ahnung habe von der 
Code-technischen umsetzung bin ich nicht gleich ein Idiot. Sondern der, 
der denkt, er kann was schlauses schreiben.

Wenn ich dann weiter von lernwillig höte wird mir schlecht, nur weil 
jemand neu im Thema MC ist, heißt das nicht das er nicht lernwillig ist. 
Ich habe eine Ausbildung als Informationselektroniker und studiere im 
Informations- und Eleketrotechnischen bereicht. Das ich in der Materie 
fremd bin hat sicher nichts mit 'lernwillig' oder sonstwas zu tun 
sondern einfach mit der Interesse an der Gitarre und vllt der Dummheit 
solch eine Fallstudie vorzuschlagen und der unerfahrenheit im 
Programmieren mit ASM/C-Routinen. Schenkt euch euer gefassel von wegen 
google und sonstwas. Assembler und MCs sind ein Thema was man in meinem 
Studiengang nur am Rande erfährt, rein aus Neugier und Interesse haben 
wir uns daran versucht. Diese unqualifizierten Kommentare von Leuten die 
dieses Proejekt selber noch nie gemacht haben, aber Klug daher reden 
kann ich mir echt schenken. Schweigt doch einfach wenn Ihr nur 'Bla Bla' 
machen könnt.

Also, wir hatten Lust darauf, dieses Projekt umzusetzen, haben die 
gennante Hardware und die genannten Erfolge ( zb Jespers Tuner ) oder 
unsere eigene mit zählen der Nulls im Array via AD - Die Genauigkeit 
stimmt nicht oder ist nur mit einem Frequenzgenerrator stabil. Allso 
bitte, bitte redet nicht mit mir wie mit einem Idioten, sondern helft 
mir konstruktiv.

Sich die zeit zu nehmen und 10 Zeilen zu schreiben in dennen es darum 
geht wie einfach es ist, ist arm. Es wäre besser jemand zu helfen und 
hilfreiche Tips zu geben. Als in einem Post zu sugerieren wie 'cool' man 
doch selber ist, aber keine Antwort auf gestellte Fragen zu geben.. Herr 
beschütz mich.

von Mark R. (mark_r)


Lesenswert?

Und wenn ich mal davon ausgehe das ich bei einem Frequenzgenerator, mit 
meinem Code eine Genauigkeit von +-0,7 Hz erziehe, nur bei direkten 
Signalen von der Gitarre es nicht ganz klappt, dann muss ich mir echt 
nichts von 'google mal nach Gitarrenfrequenzen' anhören. Ich habe nicht 
einen Schnippsle Code gepostet. Ich frage nach Grundsätzlichen 
Strukturen, Tips für die besser Filterung. What Ever. Wie können manchen 
nur soo ignorant sein. Danke aber an die, die Versucht haben sachliche 
Tipps zu geben.

von F. F. (foldi)


Lesenswert?

Hallo Mark,

wenn du doch Gitarre spielst, dann kennst du auch sicher diese 
elektronischen Stimmgeräte.
Mach doch mal eins auf und schau wie die das so aufgebaut haben.
Ich hatte selbst so ein Teil und weiß, dass das nicht mal 20 Euro 
gekostet hat.
Vielleicht bringt dich das weiter?

von Mikel M. (mikelm)


Lesenswert?

Mark Remark schrieb:
> Ich habe nicht  einen Schnippsle Code gepostet.
 Genau das hast du falsch gemacht, hättest du es gemacht, hättest du 
wohl bessere Antworten bekommen. Was Du oben geschrieben hast klingt so 
als wenn jemand der noch nie Auto gefahren ist morgen ein Formel 1 
rennen fahren will.
 Wie soll man wissen was du evt weist, dein Projekt ist nicht trivial 
und für ein Neuling wenig geeignet. Warum hast du die Gitarrenfrequenzen 
nicht reingeschrieben wenn du sie weist? Wobei das nicht der eigentliche 
Knackpunkt war. macht es leichter für die, die mitdenken wollen aber 
sich mit Gitarre nicht so auskennen. Von google hast du nur geredet. 
Dein Schaltplan fehlt auch. Wenn du soviel gegoogelt hast, wo ist deine 
Ausarbeitung mit der Frequenzbestimmung? Die Frequenz vom Generator zu 
bestimmen ist trivial.

von vampire (Gast)


Lesenswert?

--nur mal so 'ne Idee!
generier Dir die 4/6/12 Töne und vergleich sie analog auf 
"Schwebungs-Null".
(Kannst ja noch für's "wohl temperierte" Stimmen von der math. 
Grundschwingung abweichende Frequenzen vergleichen)
Grundidee:
Ist der Ton(über billig-Micro aufgenommen) der Git.saite annähernd dem 
gewünschten, kommt es zur "Schwebung", die sich , durch eine LED(z.B.) 
anzeigen lässt --
Überdenk mal diesen Ansatz --

von Karl H. (kbuchegg)


Lesenswert?

> aber reden einfach nur hochgestochen von irgendwelchen Dingen
> die sie selber vllt garnicht können

Dein Hauptproblem ist ganz banal.
Du hast eine Annahme getroffen.

Und zwar die Annahme, dass du von deiner Gitarre ein schönes 
Sinusssignal kriegst.

Und da kann man nur sagen: Pustekuchen.

Selbst wenn du es irgendwann mal hinkriegst, aus einem sauber 
anliegendem Sinus die Frequenz zu bestimmen, funktioniert das hinten und 
vorne nicht mit deiner Gitarre. Denn dort, wo dein sauberer Sinus bei 
440Hz 880 Nulldurchgänge hat (oder 440 Maxima), da hat dein 
Gitarrensignal ein paar tausend. Einfach mal ein Mikro samt Verstärker 
an das Oszi anschliessen und eine Saite anzupfen. Oszi entsprechend 
verstärken lassen und darüber staunen, was du am Oszi siehst.

Und solange du dieses 'Problem' nicht löst, ist dein Frequenzmesser zwar 
eine schöne Fingerübung (wie sie begabtere Amateure an einem 
Samstag-Nachmittag durchziehen), mehr aber auch nicht.

von Mark R. (mark_r)


Lesenswert?

Danke für die Antworten.

- Ich habe ein mk3Board. Kein Bausatz. Ein Stimmgerät aufzuschrauben ist 
glaub ich weniger Hilfreich, die Schaltpläne finde ich ja im Netz.

- Ich habe keinen Code gepostet weil das nicht mein Primäres Problem 
ist.
sondern das strukturelle, bzw. mit welcher Methode ich am besten mein 
Signal filter. ADC, Komparator, IO-Pin, Nulldurchgänge oder Amplitude, 
FFT ect.

- Natürlich nehme ich zu Testzwecken erstmal ein Sinusgenerator damit 
ich sehe ob mein Code im Idealzustand auch funktioniert. Die 
Verfeinerung dessen, so dachte ich mir, kommt dann danach.

- Nebenbei, mein Programm funktioniert mit einem Sinusgenerator bis auf, 
wie schon paar mal beschrieben, bei den niedrigen Frequenzen ( das sind 
bei einer Gitarre für die E und A Saite 82,41 Hz und 110,0 Hz) bis auf 
0,7 Hz Abweichung genau.

Mit der Gitarre per Kabel an den IO angeschlossen und einem Oszi zur 
Kontrolle sieht das natürlich nichtmehr sooo gut aus, da ich natürlich 
die Nebenschwingungen und den Amplitudenrückgang habe. Irgendwie mag 
mein Programm nur Eingangsspannung von 2-3V, darunter gehts nicht mehr. 
Da ein Signal von der E-Gtarre aber nur 20-50mV auspuckt ist das eben so 
( läuft über Verstärker um die 'Ue' zu bekommen). Es geht auch nur um 
eine E-Gitarre mit Kabel ans Board, kein Micro.

Generieren eines Referenztons ist vllt eine Idee. Muss ich mal sehen ob 
ich das mit der 'Schwebung' Umsetzen kann. Immo berechnet ich nur ggüber 
der Ref.freq.

Das das ganze nicht einfach ist weiß ich ja selber, aber dann bitte seid 
konstruktiv wenn Ihr Ahnung habt, ansonsten vllt lieber ruhig.

Beste Grüße

von Mark R. (mark_r)


Lesenswert?

> Und da kann man nur sagen: Pustekuchen.
>
> Selbst wenn du es irgendwann mal hinkriegst, aus einem sauber
> anliegendem Sinus die Frequenz zu bestimmen, funktioniert das hinten und
> vorne nicht mit deiner Gitarre. Denn dort, wo dein sauberer Sinus bei
> 440Hz 880 Nulldurchgänge hat (oder 440 Maxima), da hat dein
> Gitarrensignal ein paar tausend. Einfach mal ein Mikro samt Verstärker
> an das Oszi anschliessen und eine Saite anzupfen. Oszi entsprechend
> verstärken lassen und darüber staunen, was du am Oszi siehst.


Danke für die Hinweise, was ein Sinus ist weiß ich, ebenso wie ein 
Gitarrensignal aussieht. Hätte ich damit Probleme wäre ich auf 
Elektronik.net  gegangen, oder ähnliches. Meine Gitarre hängt im übrigen 
an einem Kabel, über Verstärker, Oszi am Board...und die Fingerübung 
läuft fast einwandfrei. Vllt hast du eine Annahme gestellt das ich gar 
keine Ahnung habe: Pustekuchen.

Und wenn du meinen ersten Beitrag nur einmal komplett gelesen hättest, 
dann hättest du unter Umständen auch folgende 'Annahme' von mir 
entdeckt, Herr Moderator, Vorbild und Philosoph:

" Auf was muss ich beim ADC
oder später bei der Gitarre achten da die Frequenz ja später nicht mehr
so sauber wie auf dem Frequenzgenerator ist."

...

von Joe (Gast)


Lesenswert?

Eingangsverstärker, dann parallele 6 RC-Bandpässe, dann ein 
Schmitt-Trigger mit Hysterese, dann über einen IRQ-Eingang einen 
internen Zähler hochzählen und über einen Timergesteuerten Interrupt 
nach jeder Sekunde auslesen und zurücksetzen.

Joe

von vampire (Gast)


Lesenswert?

"In der Akustik ist die Schwebung deutlich zu hören: Erklingen zwei 
Töne, deren Frequenzen sich nur wenig unterscheiden, so ist ein Ton zu 
hören, dessen Frequenz dem Mittelwert der Frequenzen der beiden 
überlagerten Töne entspricht. Dieser Ton ist moduliert, seine Lautstärke 
schwankt mit der sogenannten Schwebungsfrequenz, die der Differenz der 
Frequenzen der beiden Töne entspricht."
aus:
http://de.wikipedia.org/wiki/Schwebung
daraus folgt:
keine Differenz --> kein(oder sehr tiefer) Ton
(jetzt musste den Git.-eingang nur noch an eine Verstärkerschaltung mit 
"normierten" Ausgangspegel legen;)
dann mixen und den entstandenen Schwebe-Ton auswerten --

von Electronics'nStuff (Gast)


Lesenswert?

Warum tust du denn jetzt so arrogant?
Hat dir wohl kaum jemand einen Grund gegeben.

Vllt. irren sich die Leute ja, aber deine Beiträge lesen sich schon so 
als hättest du wenig Ahnung..

Mark Remark schrieb:
> Grundsätzlich funktioniert das Programm, allerdings habe ich Probleme
> beim auswerten der Frequenz.

Dein Problem beginnt schon viel FRÜHER. Wenn du wirklich

Mark Remark schrieb:
>  im Informations- und Eleketrotechnischen bereicht.

studierst, dann weisst du wo du ansetzen musst, bevor du auch nur daran 
denkst einen Controller zu beschreiben: Filterung.

Ein sehr breites Thema, wie du wahrscheinlich weisst. Also entweder 
Eingangsfilter-Schaltungen von existierenden Gitarrenstimmgeräten 
kopieren oder über die Bücher, denn einfach mal einen Bandpass nehmen 
und die obere und untere Grenzfrequenz ausrechnen wird wohl nicht 
drinsein.

Gruss

von vampire (Gast)


Lesenswert?

--du könntest als Referenzton ja den Ton einer (gespeicherten) richtig 
gestimmten Saite(mit all den markanten Oberwellen einer E-Gittare) zum 
mixen heranziehen;

von Karl H. (kbuchegg)


Lesenswert?

Mark Remark schrieb:

> " Auf was muss ich beim ADC
> oder später bei der Gitarre achten da die Frequenz ja später nicht mehr
> so sauber wie auf dem Frequenzgenerator ist."

Das Problem ist, dass sich diese Frage überhaupt nicht stellt, wenn du 
realisiert hast, dass es dir nichts bringt, das Maximum in der 
Kurvenform festzustellen.

Denn um 'runterprügeln des Signals' bis auf die Grundfreuqenz kommst du 
nicht rum. Und dann brauchst du keinen ADC mehr, sondern musst dir 
überlegen, wie du auf analogen Wege aus dieser einen übrig gebliebenen 
Frequenz eine Rechteckschwingung hinkriegst. Und eine Rechteckschwingung 
legst du an einen digitalen Eingang und gut ists.

Da liegt deines Rätsels Lösung und nicht darin, ob es bei einem ADC 
etwas zu beachten gibt!

Dein Fisch fängt schon ganz vorne am Kopf zu stinken an. Da kannst du an 
der Schanzflosse drehen soviel du willst.

von Bernie (Gast)


Lesenswert?

Hallo Mark Remark,

jetzt hast du also mitbekommen, wie man angepflaumt wird,
wenn man den hifswilligen Menschen hier nur zu einem
Bruchteil schildert, was man möchte - und welche Voraussetzungen
da sind.

Falls du noch interessiert bist, könnten wir ja mal
versuchen, an dein Problem ranzugehen:

Fangen wir ruhig bei Adam und Eva an!

Du schickst dein Tonsignal in einen ADC-Eingang des µC.

1) Der Prescaler des ADC hat nichts mit dem Signalpegel zu tun,
sondern soll nur dafür sorgen, dass der ADC mit seinem
geeigneten Arbeitsakt versorgt wird. Der ist 50...200 kHz und
muss mit dem Prescaler vom Prozessortakt abgeleitet werden.
(µC-Takt = 8 MHz, Prescaler = 64: ADC-Takt = 125 kHz - OK)

2) Damit ein Wechselspannungssignal 0 V +/- û vom ADC verarbeitet
werden kann, muss es auf die halbe Referenzspannung des ADC
angehoben werden. Dies erreicht man mit einem Spannungsteiler
aus zwei gleichen Widerständen (z.B. 100 kOhm) zwischen 
Versorgungsspannung und Masse (GND), sowie der Einkopplung des
Tonsignals über einen Kondensator.

3) Der 10-Bit-ADC liefert Werte von 0...1023. Hast du das Signal
wie oben geschidert eingespeist, kommen ADC-Werte von etwa 512
heraus, wenn die Wechselspannug = NULL ist. Positive Spannungen
liegen vor, wenn der ADC größere Werte liefert, und umgekehrt.

- Falls dir das nicht klar ist: FRAGE NACH!

Bis dann!

von Mark R. (mark_r)


Lesenswert?

Danke Bernie,

also bedeutet das, das Werte unterhalb 512 eigl den negativen Teil der 
Wechselspannung darstellen? Das würde mir helfen, da ich in meinem 
ersten Versuch via ADC immer davon ausgegangen bin das bei einem 
Prescale von 64, der ADC Werte von 0-15 liefert und die 0 des ADC der 
tatsächliche 0 ist. Was ja, wenn ich das richtig verstanden habe aber 
die negative Spitze des Signals darstellt? Ich habe in meinem ersten 
Versuch die Werte des ADCs in ein Array gepumpt und die 15 als Maxima 
angenommen. Mir hat das natürlich relativ gute Ergebnisse geliefert, mit 
Abweichungen um einige Herz.

Aktuell benutze ich Referenzfrequenzen und zähle in der ISR overflow die 
hi-counts. Das liefert mir wie gesagt bis zu 0,7 Hz Abweichung ein 
genaues Ergebnis bei einer Generatorfrequenz. Mit der Gitarre allerdings 
nichts. Wie gehe ich am besten mit diesem Gitarren Signal um, das ja in 
seiner Amplitude sinkt. Ein gespeichertes Signal, einer korrekt 
gestimmten Tonlage erscheint mir im ersten Moment plausibel, aber nicht 
mit fallender Amplitude. Da müsste ich ja proportional zur fallenden 
Amplitude nachverstärken, oder so? Da ich über ein fertiges Board ( 
avrmk3 ) einspeiße weiß ich nicht wie ich das machen soll. Oder ob das 
überhaupt so nötig ist. Die frequenz bleibt ja die selbe, nur die 
Routine, der Überprüfung von Maximas unterscheidet sich ja dann im 
Zeitverlauf. Daher müsste ich ja eigl eher Nulldurchgänge zählen, da 
diese ja unabhängig von der Amplitude immer gleich bleiben sollten. Es 
bleibt letztlich nurnoch die Störfrequenzen, bzw unsauberer Frequenz, 
die ja dann die Berechnung nicht exakt werden lassen. Hilft mir da einer 
größere Samplerate? Mehrere Mittelwerte  oder ähnliches ? Oder gibt es 
da einen exakteren Wert.

Grüße

von Mark R. (mark_r)


Lesenswert?

Achso, Immo spiele ich das Signal auf einen normalen IO/Pin.
Nah angelegt ab diesen Tuner
http://www.myplace.nu/avr/gtuner/

Aber wie gehabt, damit erreiche ich nur im 'Labor' mit Generator ein 
annehmbares Ergebnis. Mit einer E-Gitarre ist das nicht gut...Die LEDs 
flackern wild. Sind to high/ to low. Ich komme leider auch erst die Tage 
wieder dazu daran zu Arbeiten. Ich dachte auch an eine Schwelle, die 
niedere Amplituden nicht mehr berücksichtigen, damit ich das flackern 
raus bekomme. Das muss ich nocht testen.

Grüße

von vampire (Gast)


Lesenswert?

--warum übernimmst Du nicht 1:1 den Ansatz von Jesper Hansen(2001!)
2 LUT werten die Counterimpulse zwischen 2 L/H - Flanken des 
Eingangssignals aus(nichts mit Nulldurchgängen). Einer bestimmt die 
Saite, nachder im 2. gesucht wird.
Da die Werte in den LUT empirisch ermittelt wurden, ist die 
tatsächliche(gemessene) Frequenz ohne Bedeutung.
(Es kann/wird sogar eine harmonische sein!);

von Michael (Gast)


Lesenswert?

Hallo,

ich würde nicht die Nulldurchgänge zählen. Sondern:

Vergleichston mit einer DDS erzeugen.
  - Geleicher Sampletakt wie ADC
  - Sinus und Cosinus

DQ Mischer mit ADC Signal

Filter mit 10 Hz? Grenzfrequenz.

Phasenwinkel bestimmen.

Phasenwinkel drehgeschwindigkeit bestimmen durch Differenzierung.

Mfg

Michael

von Simon K. (simon) Benutzerseite


Lesenswert?

Theoretiker? ;-)

von Walter S. (avatar)


Lesenswert?

Mark Remark schrieb:
> Nur weil ich keine Ahnung habe von der
> Code-technischen umsetzung bin ich nicht gleich ein Idiot. Sondern der,
> der denkt, er kann was schlauses schreiben.

zum einen solltest Du lernen mit Kritik umzugehen und zum anderen nicht 
andere als Idioten zu bezeichen.

Trotzdem ein schlauer Tipp von mir: versuch es vielleicht mal mit 
Autokorrelation

von Arc N. (arc)


Lesenswert?

Walter S. schrieb:
> Mark Remark schrieb:
>> Nur weil ich keine Ahnung habe von der
>> Code-technischen umsetzung bin ich nicht gleich ein Idiot. Sondern der,
>> der denkt, er kann was schlauses schreiben.
>
> zum einen solltest Du lernen mit Kritik umzugehen und zum anderen nicht
> andere als Idioten zu bezeichen.
>
> Trotzdem ein schlauer Tipp von mir: versuch es vielleicht mal mit
> Autokorrelation

Der Goertzel-Algorithmus wäre noch eine Idee, ansonsten Autokorrelation:
http://stackoverflow.com/questions/5044289/how-to-find-the-fundamental-frequency-of-a-guitar-string-sound

http://en.wikipedia.org/wiki/Pitch_detection_algorithm
http://en.wikipedia.org/wiki/Frequency_estimation

von Walter S. (avatar)


Lesenswert?

Arc Net schrieb:
> Der Goertzel-Algorithmus wäre noch eine Idee

der ist halt nicht dafür gedacht eine Frequenz zu bestimmen, sondern 
mehr zum Bestimmen ob eine bestimmte Frequenz vorhanden ist

von Arc N. (arc)


Lesenswert?

Walter S. schrieb:
> Arc Net schrieb:
>> Der Goertzel-Algorithmus wäre noch eine Idee
>
> der ist halt nicht dafür gedacht eine Frequenz zu bestimmen, sondern
> mehr zum Bestimmen ob eine bestimmte Frequenz vorhanden ist

Das schon, aber entsprechend ausbaufähig...

von Mark R. (mark_r)


Lesenswert?

vampire schrieb:
> --warum übernimmst Du nicht 1:1 den Ansatz von Jesper Hansen(2001!)
> 2 LUT werten die Counterimpulse zwischen 2 L/H - Flanken des
> Eingangssignals aus(nichts mit Nulldurchgängen). Einer bestimmt die
> Saite, nachder im 2. gesucht wird.
> Da die Werte in den LUT empirisch ermittelt wurden, ist die
> tatsächliche(gemessene) Frequenz ohne Bedeutung.
> (Es kann/wird sogar eine harmonische sein!);

Hab den so eingebunden. Aber irgendwas passt nicht wenn ich das Signal 
der Gitarre über einen Verstärker einspeise. Ich lass ca 2,5V an den Pin 
ankommen. So wie er es mit seiner Schaltung realisiert. Mit dem 
Generator wie gesagt sehr gut. Aber irgendwie nicht bei der Gitarre 
dann.

Kann es sein das mir da einfach wie in seiner Schaltung ein RC Glied 
fehlt zum vorfiltern? Müsst ich ja bei meinem Board dann code technisch 
realisieren?

Die Sache ist: Wenn ich die Gitarre dran hänge, dann flackern die LEDs, 
was denke ich durch den fallenden Pegel passiert. Vllt hilft es mir ja 
schon wenn ich eine Wait-Schleife drin habe, oder nur LEDs ansteuer wenn 
es in einem bestimmten Pegel ist. Aber ich sehe halt das er immer toHigh 
toLow leuchtet und sich nie richtig einstimmt, wie es bei einem 
konstanten Signal der Fall ist. Daher gehe ich gerade davon aus, das die 
Berechnung oder ähnliches mit dem unsauberen Sinus ein Problem hat.

von John (Gast)


Lesenswert?

Mark Remark schrieb:
> Kann es sein das mir da einfach wie in seiner Schaltung ein RC Glied
> fehlt zum vorfiltern?

Dieser Tip kam schon vorgestern:
amateur schrieb:
> Ich schätze mal, dass Du dich zuerst in die Analogtechnik wurschteln
> musst. Dort ganz besonders in die Abteilung: Filter.

Und in den Posts davor gab es auch entsprechende Hinweise.

von Simon K. (simon) Benutzerseite


Lesenswert?

Mark Remark schrieb:
> Kann es sein das mir da einfach wie in seiner Schaltung ein RC Glied
> fehlt zum vorfiltern? Müsst ich ja bei meinem Board dann code technisch
> realisieren?

Ohje ohje ohje.

von Mark R. (mark_r)


Lesenswert?

John schrieb:
> Mark Remark schrieb:
>> Kann es sein das mir da einfach wie in seiner Schaltung ein RC Glied
>> fehlt zum vorfiltern?
>
> Dieser Tip kam schon vorgestern:
> amateur schrieb:
>> Ich schätze mal, dass Du dich zuerst in die Analogtechnik wurschteln
>> musst. Dort ganz besonders in die Abteilung: Filter.
>
> Und in den Posts davor gab es auch entsprechende Hinweise.

Wenn man halt erstmal ein paar Tage und unzählige Beiträge brauch, in 
denen man nur ließt man wäre nicht lernwillig, wisse nicht was ein Sinus 
ist und ähnliches überließt man diese allgemeinen Dinge leicht aus 
ärger.

Aber ja, du hast Recht, Tiefpass um Oberwellen und Rauschen zu killen 
stand da schon dabei. Das werde ich mal probieren.

Simon K. schrieb:
> Mark Remark schrieb:
>> Kann es sein das mir da einfach wie in seiner Schaltung ein RC Glied
>> fehlt zum vorfiltern? Müsst ich ja bei meinem Board dann code technisch
>> realisieren?
>
> Ohje ohje ohje.

Du bist mein Held!

von vampire (Gast)


Lesenswert?

-- ein RC-Glied ist mit den Arbeitspunkt-Widerständen R1/R2 und C3 schon 
geg.;
Es klappt aber nur, wenn Du den Timer genauso wie Jesper einstellst!
(11059200Hz-Quarz - prescaler Timer 64)
so das (172.8 kHz @ 11.0592 MHz) die Timerfrequ. rauskommt;
Bei anderen Quarzen und IC's musst Du anpassen --
-- sonst stimmen die counts nicht(LUT);

und nochwas:
-ich denke die "Auswertung" sollte erst verzögert, (ohne 
Plektrum-klick), nach Einschwingzeit der Saite erfolgen.
manuell gestartet oder zeitverzögert - delaytime nach erstem 
Tonereignis(ST*);
ST* -Schmittrigger + monoflop

von vampire (Gast)


Lesenswert?

--aber, wie oben schon angemerkt:
besser wären 6 Filter(anal. oder digit.) auf die jeweilige Grundfrequenz 
und wandeln der aktuellen sinuiden in definierte Rechteck-impulse mit 
genau der Periodenlänge des angelegten Tones --
dann Timertakte zählen und LUT(wie schon Jesper);

von Mark R. (mark_r)


Lesenswert?

vampire schrieb:
> -- ein RC-Glied ist mit den Arbeitspunkt-Widerständen R1/R2 und C3 schon
> geg.;

Die meinte ich, in seiner Schaltung. Aber ich hab ja ein fertig 
bestücktes myAVR mk3 Board. Da müsste ich ja dann in C den filter 
schreiben, oder halt unschön davorklemmen.

> Es klappt aber nur, wenn Du den Timer genauso wie Jesper einstellst!
> (11059200Hz-Quarz - prescaler Timer 64)
> so das (172.8 kHz @ 11.0592 MHz) die Timerfrequ. rauskommt;

Stimmt. Da habe ich angepasst. Beim Generator bekomme ich +-0,7 Hz 
Abweichung. Also recht annehmbar. Dann müsste ja mein Timer stimmen?
Bleibt halt der fehlende Tiefpass.


> und nochwas:
> -ich denke die "Auswertung" sollte erst verzögert, (ohne
> Plektrum-klick), nach Einschwingzeit der Saite erfolgen.
> manuell gestartet oder zeitverzögert - delaytime nach erstem
> Tonereignis(ST*);
> ST* -Schmittrigger + monoflop

Ja, das macht Sinn. Werde ich noch einbauen. Danke vampire für deinen 
Einsatz.

Grüße

von Michael S. (mikel_x)


Lesenswert?

Hi,

Ich denke eine freischwingende Saite hat von Natur aus nach wenigen 
Sekunden Einschwingzeit einen sinusoidalen Grundton, der weit genug über 
das Obertonspektrum hinausreicht, um mit nem einfachen Filter 
ausreichend gesäubert und weiterverarbeitet zu werden. So "dreckig" wie 
manche es darstellen, ist das Gitarrensignal nach Abklingen der 
Anschlag-Artefakte garnicht.

Ein Vorverstärker mit AGC bzw. Sustain am Gitarrenausgang, welche die 
el. Ausgangsamplitude erstmal auf einige V verstärken und konstant 
halten, wären dabei hilfreich.

Diesen Ton AC-gekoppelt auf die verbundenen Eingänge (Trigger und 
Threshold) eines cmos 555 geben, so dass eine Schmitttriggerfunktion mit 
Hysterese zwischen 1/3 und 2/3 Vcc entsteht, die am Ausgang ein sauberes 
Rechteck mit Vcc 5V breitstellt...

...oder gleich ein Effektmodul dazwischen hängen, welches den Grundton 
filtert und mit stark übersteuerten Verstärkerstufen sowohl 
Rechtecksignal wie auch langanhaltende Sustainfunktion erzeugt. Der 
Jimmy Page-Effekt... :-)

Damit kann dann µC-seitig per Flankenauswertung digital weitergewurstelt 
werden....

von Mark R. (mark_r)


Lesenswert?

Eine Frage hab ich allerdings noch.

Wieso nimmt Jesper für die Strings immer das doppelte der eigl Frequenz?

E_STRING - 164.8Hz, real schwingt diese Saite aber auf 82,41Hz.

Werf ich 164,81 rein, zeigt die LEDs auch 'in tune' an. Änder ich die 
#defines in die richtige Frequenz, werfe dann zum Beispiel 82,41Hz rein, 
hab ich Abweichung. Liegt dann doch sicher noch am Timer, den 
Einstellungen der CPU Clock..hm?

von vampire (Gast)


Lesenswert?

Mark Remark schrieb:
> Wieso nimmt Jesper für die Strings immer das doppelte der eigl Frequenz?

100n Kondensator und R1/R2  = 1. Oberwelle ?

von vampire (Gast)


Lesenswert?

Michael Sch. schrieb:
> Diesen Ton AC-gekoppelt auf die verbundenen Eingänge (Trigger und
> Threshold) eines cmos 555 geben, so dass eine Schmitttriggerfunktion mit
> Hysterese zwischen 1/3 und 2/3 Vcc entsteht, die am Ausgang ein sauberes
> Rechteck mit Vcc 5V breitstellt...

--so ähnlixh war mein Gedankengang;
-allerdings muss dann der Wert in den LUT(gezählte Timertakte) empirisch 
mit einer gestimmten Gitarre ermittelt und eingetragen werden
(beste Lösung - denke ich!)

von Michael (Gast)


Lesenswert?

Simon K. schrieb:
> Theoretiker? ;-)

Nein jemand der solche Sachen professionel realisiert. Ist alles nur ein 
Stück Software und kostet nichts. Braucht aber keine aufwendigen Filter 
in Hardware. Lässt sich durch keinen Oberton beeinflussen. Braucht nicht 
für jede Frequenz eigene Filterparameter. Und ist unabhängig von der 
Amplitude. Messzeit ist Minimal. Einzelne Störungen werden stark 
unterdrückt ...

Wenn man weis was mann macht ist das alles in 2-3 Stunden realisiert.

Mfg

Michael

von Simon K. (simon) Benutzerseite


Lesenswert?

Michael schrieb:
> Simon K. schrieb:
>> Theoretiker? ;-)
>
> Nein jemand der solche Sachen professionel realisiert. Ist alles nur ein
> Stück Software und kostet nichts. Braucht aber keine aufwendigen Filter
> in Hardware. Lässt sich durch keinen Oberton beeinflussen. Braucht nicht
> für jede Frequenz eigene Filterparameter. Und ist unabhängig von der
> Amplitude. Messzeit ist Minimal. Einzelne Störungen werden stark
> unterdrückt ...
>
> Wenn man weis was mann macht ist das alles in 2-3 Stunden realisiert.

Also ich hab da jetzt nicht so die Ahnung von, aber ich glaube kaumst, 
dass man das ohne DSP hinbekommt in Software. Und wenn doch, braucht das 
Ding ne ganze Stange mehr Leistung als so ein kaufbares simples 
Gitarrenstimmgerät.

von Michael (Gast)


Lesenswert?

Hallo,

passt locker in einen neueren PIC. Rechnen wir mal:

Höchste Frequenz 329,6 Hz.

=> Abtastrate 2000 Hz

DDS:
  1x 32bit Addition
  2x Nachschlagen in Tabelle

=> ca. 20 Takte

DQ Mischer:
  2x 16bit Multiplikation

=> ca 10 Takte

Filter:

  2x IIR Biquad 2 Stufen aus LIB
=> ca 50 Takte

Winkelbestimmung:
  atan2 aus Lib
=> ca 50 Takte

Ableiten
=> ca 20 Takte

Macht 150 mal 2000 MIPS = 300000 MIPS = 30kMIPS

Abtastrate kann also noch um einiges höher gewält werden und ein Display 
reichts auch noch. Hardwaremultiplizierer wäre schön.

Mfg

Michael

von Michael S. (mikel_x)


Lesenswert?

@Mark

Kannst Du mal darlegen, wie der Stimmvorgang Deiner Vorstellung nach in 
der Praxis aussehen soll. Also musikalisch/praktisch, nicht Code- oder 
HW-bezogen.

Was soll das Gerät genau können bzw. machen (anzeigen, generieren, 
analysieren) und was muss der Musiker/Anwender dabei tun?

Du schliesst das Teil an die Gitarre an, schlägst ein Saite an.... und 
dann...? ...zeigt das Display: "April, April, das war kein G, sondern 
G#.., sorry!"  Oder wie soll das aussehen..? :-)

Skizzier mal tabellarisch die Abfolge, die du dir vorstellst.

von Michael (Gast)


Lesenswert?

Habe mir gerade noch überlegt das auch 6 mal gleichzeitig geht. Tan und 
Diffenzieren geht ja in einem langsameren Takt. So könnte man immer 
bestimmen auf welchem Ton der größte Pegel kommt. So ist eine 
automatische Tonwahl sehr einfach möglich.

Mfg

Michael

von amateur (Gast)


Lesenswert?

Ich bin kein Musikus!

Dein Problem stellt sich mir folgendermaßen dar:

1. Eine angepasste Eingangsstufe - wahrscheinlich umschaltbar.
   Es ist ein riesiger Unterschied (im wahrsten Sinne des Wortes)
   ob Du Dich mit dem Signal eines Pick-Up oder eines Mikrofones
   herumschlägst.

2. Ein Bandfilter mit möglichst großer Güte.
   Deine (jede) Saite hat sogenannte Obertöne. Die auf der einen
   Seite den eigentlichen Klang des Instruments ausmachen, auf der
   anderen Seite Dir das (Mess-)leben schwer machen.
   Bildhaft: Stell Dir einen wunderschönen, sauberen Sinus vor. Die
             Frequenz berechnet sich aus den Zwei Nulldurchgängen,
             von mir  aus auch den zwei Maxima.
             Auf dem Sinus lümmelt eine Oberwelle rum (im Grunde der
             Klang). Diese bewirkt, zufällig, das die Spitzen oder
             Nulldurchgänge mal früher oder später erreicht werden.
             Da es kein starres Verhältnis der Oberwellen zur
             Grundwelle gibt, kann man mit diesen Fixpunkten nicht
             viel anfangen.
             Fazit: Platzverweis bzw. Filtern.

3. Eine Saite braucht, nach dem Anschlag einige Zeit "ihren" Ton zu
   erreichen. Auch bewirkt Dein Anschlag selber eine leichte
   Verstimmung. Dummerweise ist sie in diesem Moment aber fast am
   Lautesten und wird ab diesem Moment sehr schnell leiser. Aus
   diesem Grunde brauchst Du auch noch einen Verstärker der hiermit
   umgehen kann. Das Stichwort hierzu lautet: Variable Verstärkung.
   Alternativ: Verstärkung bis in die Begrenzung.
   Keine Ahnung, was da der bessere Weg ist. Mit Sicherheit wirst Du
   dass aber herausbekommen, wenn alle diesen Beitrag zerrissen
   haben.

4. Erst ab diesem Punkt, kannst Du das Thema A/D-Wandlung oder
   Vergleicher auf den Tisch bringen. Ist dein Eingang einseitig, so
   wirst Du wohl auch um eine Gleichrichtung nicht herumkommen.

5. Erst ab hier bist Du im Computer.

von Jobst M. (jobstens-de)


Lesenswert?

Mark Remark schrieb:
> vampire schrieb:
>> -- ein RC-Glied ist mit den Arbeitspunkt-Widerständen R1/R2 und C3 schon
>> geg.;
>
> Die meinte ich, in seiner Schaltung. Aber ich hab ja ein fertig
> bestücktes myAVR mk3 Board. Da müsste ich ja dann in C den filter
> schreiben, oder halt unschön davorklemmen.

Eine Arbeitspunkteinstellung kannst Du eben nicht in C schreiben. Das 
Ding MUSST Du davor setzen, denn der ADC kann keine negativen Spannungen 
wandeln. Das ist das, was Du nicht verstehst und was Dir die Leute die 
ganze Zeit versuchen zu sagen!


Gruß

Jobst

von Simon K. (simon) Benutzerseite


Lesenswert?

Jobst M. schrieb:
> Mark Remark schrieb:
>> vampire schrieb:
>>> -- ein RC-Glied ist mit den Arbeitspunkt-Widerständen R1/R2 und C3 schon
>>> geg.;
>>
>> Die meinte ich, in seiner Schaltung. Aber ich hab ja ein fertig
>> bestücktes myAVR mk3 Board. Da müsste ich ja dann in C den filter
>> schreiben, oder halt unschön davorklemmen.
>
> Eine Arbeitspunkteinstellung kannst Du eben nicht in C schreiben. Das
> Ding MUSST Du davor setzen, denn der ADC kann keine negativen Spannungen
> wandeln. Das ist das, was Du nicht verstehst und was Dir die Leute die
> ganze Zeit versuchen zu sagen!

Das war auch der Grund für meine Resignation ;-)

Mark Remark schrieb:
> Simon K. schrieb:
>> Mark Remark schrieb:
>>> Kann es sein das mir da einfach wie in seiner Schaltung ein RC Glied
>>> fehlt zum vorfiltern? Müsst ich ja bei meinem Board dann code technisch
>>> realisieren?
>>
>> Ohje ohje ohje.
>
> Du bist mein Held!

Aber der Zaunpfahl war wohl immer noch nicht groß genug.

von Bernie (Gast)


Lesenswert?

Ok - ich hoffe du hast das jetzt mit dem Prescaler
richtig aufgegriffen und nachgesehen, ob der Prescaler
so eingestellt ist, dass der ADC richtig arbeiten kann.

Wenn du (erst mal!!!) ein Sinussignal (über den Kondensator
und den Spannungsteiler) einspeist, müsstest du die
Sinusperiode ordentlich messen können, indem du nach den
Zeitpunkten suchst, wo das ADC-Signal von < 512 nach >= 512
wechselt (positive Nulldurchgänge).

Aber nicht genau genug.

Warum? - jede AD-Wandlung benötigt 13 µC-Takte, somit ist
die zeitliche Auflösung zu grob.

Trick:
Nimm nicht die Zeit von einem zum nächsten pos. Nulldurchgang,
sondern zähle, wieviel davon in z.B. 0,2 s auftreten.
Dann kann die Frequenz schon um ein bis zwei Größenordnungen
genauer berechnet werden! (Also 0,07 Hz...0,007 Hz statt
0,7 Hz Abweichung)

Wenn du das probiert hast, gehts weiter.

von Hauspapa (Gast)


Lesenswert?

Ich habe in diesem Breich keine Erfahrung, würde aber aus dem Bauch 
heraus erstmal folgenden Ansatz wählen:
Analoger Signalpfad: Kräftiges Tiefpassfilter um unten alles 
loszuwerden, Regelbare Verstärkerstufe (AGC oder vo uC gesteuert) AC 
gekoppelt auf den ADC der DC mässig auf 1/2 des Messbereichs vorgespannt 
wird.

ADC rennen lassen was er kann und per FFT den klingenden Ton ermitteln.
Dann Abastrate in die Nähe des klingenden Tones und FFT auf die 
Aliasingfrequenzen.

Begrenzend wird vermutlich das verfügbare RAM sein.
Gibt allerdings eine ziemliche Rechenschlacht.

schönen Abend
Hauspapa

von Simon K. (simon) Benutzerseite


Lesenswert?

Ein AGC ist vermutlich nicht so wichtig. Eine einfache Emitterschaltung 
mit Stromgegenkopplung und überbrückenden Kondensator wirds schon tun. 
Ist doch egal, ob das Ding nachher rechteckig ist, wenn es sowieso 
digital weiterverarbeitet wird.

von wosnet (Gast)


Lesenswert?

AGC halte ich für problematisch bei Signalen mit vielen spektralen 
Anteilen, genauso wie Begrenzen zum Rechtecksignal. Die AGC/Begrenzer 
wirkt wie ein Mischer und erzeugt damit auch 
Intermodulationsverzerrungen. Wenn man später z.B. mit FFT auswertet und 
die Auflösung zu gering ist (was bei einer FFT auf AVR wohl immer so 
ist), dann verschieben die Intermodulationsanteile eventuell die 
Hauptkeule die man detektieren will und das Stimmgerät wird ungenau.
Was allerdings geht ist, die AGC zum Training kurz laufen zu lassen und 
den Pegel dann festhalten, das Signal wird ja mit der Zeit eher 
abklingen.

von Jobst M. (jobstens-de)


Lesenswert?

Hauspapa schrieb:
> Analoger Signalpfad: Kräftiges Tiefpassfilter um unten alles
> loszuwerden,

Dann ist der Tiefpass aber falsch ...


Ich würde das Signal über eine gewisse Dauer samplen und dann mit der 
gesuchten Frequenz mischen (Multiplikation). Auf die Ergebnisse einen 
Tiefpass anwenden und die Schwebung ist die Abweichung von der 
Sollfrequenz.
Nix mit Nulldurchgängen oder FFT!


Gruß

Jobst

von Hauspapa (Gast)


Lesenswert?

>Dann ist der Tiefpass aber falsch ...

Da hast Du ganz klar Recht.

>Ich würde das Signal über eine gewisse Dauer samplen und dann mit der
>gesuchten Frequenz mischen (Multiplikation).
Die Lösung gefällt mir. Geschickt gemacht geht das mit sehr wenig 
Rechenaufwand und vor allem mit sehr wenig RAM, was meiner Meinung nach 
schnell begrenzend wirkt. Rechenschritte kann der uC ein paar Millionen 
bis zum nächsten Displayupdate, RAM ist irgendwann voll wenn man z.B. 
für FFT einen Haufen Messwerte zwischenspeichern muss. Wobei Atmel hier 
mit 8k für einen 8Bitter nicht geizig war.

schönen Tag
Hauspapa

von Simon K. (simon) Benutzerseite


Lesenswert?

Jobst M. schrieb:
> Hauspapa schrieb:
>> Analoger Signalpfad: Kräftiges Tiefpassfilter um unten alles
>> loszuwerden,
>
> Dann ist der Tiefpass aber falsch ...
>
>
> Ich würde das Signal über eine gewisse Dauer samplen und dann mit der
> gesuchten Frequenz mischen (Multiplikation). Auf die Ergebnisse einen
> Tiefpass anwenden und die Schwebung ist die Abweichung von der
> Sollfrequenz.

> Nix mit Nulldurchgängen oder FFT!
Wo ist der Unterschied zwischen einer FFT und einer Korrelation, so wie 
du sie vor hast? ;-) Außer in der Frequenzauflösung natürlich.

Dieses Prinzip war oben von Michael schon erwähnt wurden und ich bin 
immer noch nicht so ganz im Klaren, ob man damit ne gute Anzeigefrequenz 
erreicht, weil das doch nicht ganz so trivial ist für einen 
Mikrocontroller. Immerhin muss man das ganze Prozedere mit jeder 
möglichen Saite durchziehen.

von Michael (Gast)


Lesenswert?

Die FFT liefert dir nie eine exakte Frequenz. Sie eignet sich also gar 
nicht zur Frequenzmessung. Beim Mischen mit der exakt richtigen Frequenz 
kommt die Differenzfrequenz hinten raus. DQ Mischer braucht man um das 
Vorzeichen zu bestimmen. Ist die Differenzfrequenz 0 (DC), dann bist du 
exakt auf der richtigen Frequenz.

PS Mit einer FFT kann man auch messen. Dann solte die Abtastfrquenz aber 
ein exaktes vielfaches des Tones sein. PPL Regelkreis. So kann man auch 
alle Obertöne exakt erfassen. Macht man zumbeispiel bei der Analyse von 
Harmonischen im Energieversorgungsnetz so. Ist aber auch eine ganz 
andere Aufgabe.

Mfg

Michael

von Mark R. (mark_r)


Lesenswert?

Oje, danke danke für die zahlreichen Antworten. War ein paar Tage 
verhindert.
Die Woche hab ich wieder Zeit daran zu sitzen und werden die nützlichen 
Hinweisen mal abarbeiten.


>> Die meinte ich, in seiner Schaltung. Aber ich hab ja ein fertig
>> bestücktes myAVR mk3 Board. Da müsste ich ja dann in C den filter
>> schreiben, oder halt unschön davorklemmen.
>
> Eine Arbeitspunkteinstellung kannst Du eben nicht in C schreiben. Das
> Ding MUSST Du davor setzen, denn der ADC kann keine negativen Spannungen
> wandeln. Das ist das, was Du nicht verstehst und was Dir die Leute die
> ganze Zeit versuchen zu sagen!


Bin doch schon lange weg vom ADC ( das ist was du nicht verstanden hast 
und mir keiner die ganze Zeit erklärt;)). Sondern beim Input über einen 
normalen IO-Pin. Das man einen Tiefpass in C-Realisieren kann finde ich 
ja hier sogar erklärt im Forum, hatte mich aber noch nicht weiter damit 
beschäftigen können ob das für meinen Fall auch Sinn macht. Und da ich 
wie gesagt ein fertig bestücktes Board habe werde ich auch nichts 
anklemmen und Co. Sondern dann ggf. einen anderen, besseren Weg gehen. 
Scheint ja X zu geben. Ich werde das morgen alles mal hier sichten und 
dann werdet ihr sicher wieder von mir hören. Bis dahin, danke für die 
Mühe.

Grüße

von Jobst M. (jobstens-de)


Lesenswert?

Mark Remark schrieb:
> Bin doch schon lange weg vom ADC ( das ist was du nicht verstanden hast
> und mir keiner die ganze Zeit erklärt;))

Und Du glaubst nun, dass Du das Problem damit erschlagen hättest? Du 
bekommst ehr mehr Probleme ... egal ...


Mark Remark schrieb:
> Das man einen Tiefpass in C-Realisieren kann finde ich ja hier sogar
> erklärt im Forum.

Stimmt, dagegen hat auch nie jemand etwas gesagt. Aber der hilft Dir 
nicht dabei, das Signal in den µC zu bekommen. Dafür benötigst Du 
Hardware. Egal, ob Du das möchtest oder nicht oder nicht verstehst oder 
Dich mit den Fäusten auf den Boden schlagend hinwirfst.


Simon K. schrieb:
> Das war auch der Grund für meine Resignation ;-)

Warte, ich komme mit!



Gruß

Jobst

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.