PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tonsteuerung mit ASURO



asuro11
31.03.2009, 13:33
hallo,

möchte mit meinem asuro eine frequenzanalyse machen um dann mithilfe von pfeiftönen den ausro zu steuern, sozusagen eine tonsteuerung.

das hier ist die vorlage an die ich mich halten möchte:http://roboterclub-freiburg.de/TonAsuro/LichtorgelAsuro.html

könnte mich vielleicht jemand sagen, der dass projekt kennt, bzw. selbst schon gemacht hat, was alles auf die platine kommen muss. bzw. hat jemand einen lötplan? ich habe zwar das elektor sonderheft (siehe link) aber angaben zu bauteilen... fehlen...

grüße

KR-500
01.04.2009, 15:31
HI,

ich habe mal ein bisschen Google bemüht und ein paar Sachen gefunden:
http://www.franzis.de/elo-das-magazin/mikrocontroller-und-programmierung/avr-anwendungen/dtmf-decoder
ELO Das Magazin Mikrocontroller und Programmierung AVR-Anwendungen DTMF-Decoder
http://www.mikrocontroller.net/topic/117426
Mikrofon an AVR - Mikrocontroller.net
http://www.mikrocontroller.net/topic/29708
Mikrofon-Kapsel anschließen - Mikrocontroller.net
https://www.roboternetz.de/phpBB2/viewtopic.php?t=44777
RoboterNetz.de :: Thema anzeigen - Schaltung zur Erkennung von Tonfrequenzen

hoffe ich konnte helfen

mfg KR-500

asuro11
03.04.2009, 12:55
das ist ja jetzt schon teilweise realtiv kompliziert die antworten, bräuchte eigentlich nur die information was ich alles auf die platine löten muss.
(der link im 1. beitrag ist die vorlage) weiß da jemand bescheid was dass alles ist? also neben leds....???

asuro11
03.04.2009, 12:56
bräuchte nur die information was hier alles drauf ist: http://roboterclub-freiburg.de/TonAsuro/chLichtorgel.jpg

Herkulase
04.04.2009, 13:30
ömm, was da drauf ist, siehst du ja selber, das sind ein paar vorwiderständer für die LEDs, Kondensatoren etc. nix Besonderes. Die auswertung der Tonhöhen wird im AtMega gemacht. Da musst Du einfach "nur" 8 Bandpassfilter programmieren, und damit die LEDs ansteuern. Ich fürchte, dass Du da um ein bisschen einarbeiten in die Materie nicht rum kommen wirst. Oder Du kaufst Dir eben das angegebene Elektorheft, da steht ja alles drin.

asuro11
04.04.2009, 14:22
ja klar arbeite ich mich da rein und das heft habe ich auch.
aber ich weiß z.b. nicht die größe der wiederstände bzw. was ist dass für ein roter "kasten"??? kann mir vielleicht jemand schreiben was das alles genau ist?

Herkulase
05.04.2009, 12:07
der rote "Kasten" ist ein folienkondensator MKS irgendwas (ebenso der kleinere), die blauen, beigen und grünen "scheiben" sind keramik- o.ä. Kondensatoren. Die grünen "Noppen" am oberen Rand sind LEDs, die schwarze Noppe unten dürfte ne IR-Led oder IR-Empfangsdiode sein. Die Werte der Widerstände kannst Du anhand ihrer Farbcodierung bestimmen. Nur: All das bringt dir nix, wenn du nicht weisst, wie das zeugs miteinander verbunden werden muss. Wenn die Schaltung aus dem Heft ist, dann sollte doch da ein Schaltplan drin sein, wo alles nötige drin steht!

asuro11
06.04.2009, 11:16
dankeschön. ich kann ja mithilfe deiner informationen in einen elektroladen gehen mir die bauteile kaufen und auf die platine löten (wie sie darauf gehören seh ich ja) oder nicht?

Bajuvar
06.04.2009, 12:36
dankeschön. ich kann ja mithilfe deiner informationen in einen elektroladen gehen mir die bauteile kaufen und auf die platine löten (wie sie darauf gehören seh ich ja) oder nicht?

Hallo asuro11

Wie die Bauteile auf die Platine gelötet sind siehst du, aber weist du auch wie sie untereinander auf der nicht-sichtbaren Seite verbunden sind ?!?

Gruß Bajuvar

asuro11
06.04.2009, 13:21
ouh stimmt, deswegen brauch ich ja einen lötplan in diesem elektor sonderheft gibt es zwar einen schaltplan aber der sieht aus wie z.b. dieser hier: http://www.mikrocontroller.net/attachment/20413/Schaltplan.png und damit kann ich nicht so viel anfangen. bräuchte da schon einen lötplan...

Besserwessi
06.04.2009, 17:43
Es lohnt sich schon einen Schaltplan soweit zu verstehen, dass man daraus selber einen "Lötplan" erstellen kann. Interessant ist ja hier erst man nur der Teil mit dem Mikrofon. Das sind also nur die 3 Widerstände, ein Kondesator und das Mikrofon.

Die 50 K Ohm Widerstände können auch 47 K Ohm sein, die sind wesentlich leichter zu bekommen.

Der Rest ist eigentlich nur die Standadbeschaltung des µC mit ein paar LEDs, aber der Teil ist ja schon der Asuro.

Der Schaltplan aus dem ersten Link sieht gut aus, das Programm halte ich für weniger geeigent.

asuro11
06.04.2009, 20:24
glaubst du ich kann mit dem schaltplan in einen elektroladen und der kann mir dann sozusagen einen lötplan daraus zeigen?

aber der schaltplan aus dem 1. link ist ja nicht mal für einen atmega8...
den schaltplan habe ich schon dazu, muss daraus nur den lötplan machen...

skg-rob
07.04.2009, 07:47
Nein, so einen Elektroladen wird es nicht geben, da die Angestellten mit dem was sie verkaufen nicht vertraut sind. An welchen Laden hättest du den gedacht? Solche Bauteile wirst du nur bei Conrad und Reichelt finden.

Aber wieso kannst du mit dem Schaltplan ncihts anfangen? Im grunde ist es ncihts anderes als ein "Lötplan".

asuro11
07.04.2009, 09:30
vielleicht kann ich mal hier den schaltplan reinstellen und kann mir dann mit den lötplan helfen?!?

Herkulase
07.04.2009, 12:34
schau: die grünen linien kannst du Dir als Drähte (leitende Verbindungen) zwischen den Bauteilen vorstellen. Du kannst also einfach Drähte nehmen, und sie nach dem Muster, das in dem Schaltplan angegeben ist verlöten. Wenn sich zwei Linien kreuzen, gibts zwei Möglichkeiten: 1. Mit nem dicken, grünen Punkt heisst: hier sind die Drähte mit einander verbunden, also eine richtige Kruzung. 2. Ohne nix: die Drähte kruzen sich halt, ohne sich zu berühren. Mit einer Platine machst Du im Prinzip nix anderes, außer dass Du die Drähte eben in Form von Leiterbahnen auf die Platine "klebst".

Wenn Du das Projekt bauen möchtest 8ich denke es ist eigentlich sehr gut für den Einstieg geeignet, schlage ich Dir vor, dass Du zunächst mal ein paar Euro in ein sog. Steckbrett investierst. Damit kannst Du die schalung erstmal ohne zu löten aufbauen und damit rumprobieren. Da Du scheinbar über wenig-keine Vorkenntnisse verfügst, kannst Du mit diesem Steckbrett auch viele Grundschaltungen aufbauen, und dein Verständnis der Materie erweitern. Dazu würde ich mal das rn-wiki und das www.elektronik-kompendium.de nach Grundlagen durchstöbern. Dann kaufst Du Dir die Bauteile, am besten gleich 5-10 mal soviele wie Du brauchst (sind eh meist spottbillig) und legst los... So wirst Du Dir sehr schnell die Grundlagen angeeignet haben, dann wird Dich dieses Projekt nicht mehr vor größere Schwierigkeiten stelllen.

gruß

gerald

Edit: Der Schaltplan den Du da gepostet hast, ist aber nicht der von deiner Ton_Steuer-Schaltung! Sieht eher nach USB-TTL wandler oder ISP-Schaltung aus, und ist als Einsteigerprojekt auf der Steckplatte nicht geeignet (Bauform und Preis des FT232). Für Dein Projekt bräuchtest Du antürlich noch ein Gerät mit dem Du den AtMega programmieren kannst.

skg-rob
07.04.2009, 18:32
Cool, jetzt weiß ich wie man Schaltpläne liest. Unser Betreuer wird froh sein *gg*
Zu deiner Idee: Pfeiftöne eignen sich mE nach nicht sonderlich für dein Vorhaben, da der Asuro wohl nciht auf den Ton genau analysieren kann. Unter welchen Umständen willst du die Steuerung nutzen?

asuro11
10.04.2009, 16:45
@skg-rob:möchte einfach den asuro mit pfeifen steuern.

@herkulase: werde eher "wrappen" als löten. kennt ihr vielleicht eine internetseite mit infos über wrap? habe nichts gescheites gefunden.

asuro11
10.04.2009, 17:47
kann mir jemand eine mikrofon für das Projekt empfehlen? sollte bei normaler Sprache eine Spannung von 5mV haben...

skg-rob
10.04.2009, 19:00
Sorry wenn ichs nicht weiß aber was ist wrappen?

lg skg-rob

asuro11
11.04.2009, 17:01
http://de.wikipedia.org/wiki/Wickelverbindung

hat jemand einen tipp für das mikrofon??

Herkulase
11.04.2009, 17:09
Im Prinzip kannste eine stinknormale kleine Elektretkapsel verwenden. ansonsten such mal nach: wire-wrap.

asuro11
11.04.2009, 18:49
http://www.endrich.com/de/site.php/56340

hab eher an so was gedacht??

Herkulase
11.04.2009, 19:40
sag ich doch: elektretkapsel... ok elktret-kondensator-kapsel... ;-)

asuro11
12.04.2009, 11:11
achso, ok, ist ja das gleiche. und die sind alle brauchbar?? ich brauche halt eins mit 5 mV Spannung bei "normaler" sprache...sind die da alle in dem bereich?

Herkulase
12.04.2009, 13:41
also bei deinem link versteh ich die Empfindlichkeitsangaben nicht ganz, aber die Kapseln vom Reichelt haben alle 5.6 mV/Pa, also bei 94 dB SPL. "Normale" Sprache hat so ca 40-50 dB, also dürfte dein Ausgangssignal ca. bei ca 5.6 uV liegen, wenn ich mich nicht verrechnet habe. Sorry...

asuro11
13.04.2009, 13:54
das heißt die kann ich vergessen...
kannst du mir denn keines empfehlen??

asuro11
13.04.2009, 14:45
ich habe kurz eine progammtechnische frage:
das ist meine grundidee: der atmgea8 auf der zusatzplatine soll das tonsignal auswerten. wenn dann ein bestimmter frequenzbereich getroffen wurde dann wird ein kommando "erstellt". dieses kommando schickt dann eine ir diode an den asuro. im atmega8 des asuros wird dann angefragt welches kommando empfangen wurde und dann muss doch nur noch auf dem ausro festgelegt werden was bei dem kommando gemacht wird oder?

also brauche ich 2 programme:

1. für zusatzplatine: auswertung des tonsignales und senden des kommandos

2. für asuro: kommando auswerten und sich danach bewegen.

noch eine frage: die bandpassfilter die im atmega8 drin stecken können alle einzelnen programmiert werden oder?
weil meine vorgehensweise wäre so: verschiedene frequenzbereiche messen, dann die bandpassfilter auf einen jeweiligen frequenzbereich programmieren. geht dass? z.b. dass bei frequenz von 40dB bandpassfilter 1 aktiv ist, bei 50 dB bandpassfilter 2.... also so in der art. ist das möglich???

wie kann ich den einzelene freqenzbereiche messen??

KR-500
13.04.2009, 15:08
HI,

es gibt mehrere um einen Frequenzbereich zu erfassen.

1.LM2907 --> Frequenzy to Voltage converter
2.NE 567
3.Direkt in den AVR und den Abstand zwischen zwei Flanken messen(weiss ich nicht ob es funktionierte)
Ansonsten kannst du ja ne einfache Lichtorgel nachbauen, da kannst du dann ja einfach abfragen.

mfg KR-500

asuro11
13.04.2009, 15:16
wie meinst du direkt in den avr? kannste des verfahren kurz beschreiben?

ja gut des mit der lichtorgel: ich werde eine lichtorgel drauf bauen aber eigentlich nur um den Benuzer anzuzeigen welcher frequenzbereich getroffen wird. dafür muss ich aber doch vorher wissen welche frequenz ich bei einem bestimmten ton habe. beispiel: 50dB das 3. Lämpchen soll leuchten.
meinst du dann ich soll einfach programmieren: bei 50 dB 3. Lämpchen bei 60dB 4. Lämpchen usw... und dann seh ich ja bei welchem Ton welche Frequenz habe. des ist wahrscheinlich am einfachsten.

und von der Idee fürs Programm ist auch ok oder?

KR-500
13.04.2009, 17:20
HI,

ich meinte ein Verfahren so wie hier:
http://www.franzis.de/elo-das-magaz.....-anwendungen/dtmf-decoder
und an sonsten ist das mit der Lichtorgel am einfachsten.
Einen Schaltplan gibt es z.B hier:
http://www.dieelektronikerseite.de/Circuits/3%20Kanal%20LED-Lichtorgel.htm
Da muss nur noch ein Micro dran und statt der Led tust einfach über nen Widerstand den AVR dran. Dann noch musst du den Pullup aktivieren und nach low abfragen.(Kann sein, dass das Schwachsinn ist, ich bin noch eher Anfänger.)O:)
Oder bei Conrad:
Artikel-Nr.: 116246 - 62

mfg KR-500

oberallgeier
13.04.2009, 17:22
ich habe kurz eine progammtechnische frage ...Ich vermute, dass Du für Dich mehrere Fragen beantworten solltest. Und vielleicht gehst Du mal die Tips vom zweiten Posting durch - und die hübsche Ausarbeitung von den Freiburgern.


... die bandpassfilter die im atmega8 drin stecken können alle einzelnen programmiert werden oder ...Die müssen alle einzeln programmiert werden. Dann flasht man das Programm in den atmega8 - und DANN stecken die drinnen. Der mega8 hat so etwas nicht eingebaut *gggggg* (sorry für mein schadenfrohes Grinsen).


dass bei frequenz von 40dB bandpassfilter 1 aktiv ist, bei 50 dB bandpassfilter 2.... also so in der art. ist das möglich ...Is sich praktisch nicht möglich - würde Radio Erewan sagen - weil sich Frequenz und dB sich was völlig anderes sind.

Das Bel dient zur Kennzeichnung des dekadischen Logarithmus des Verhältnisses zweier gleichartiger Leistungs- bzw. Energiegrößen P1 und P2 (laut Wikipedia).

Mit Frequenz bezeichnet man die Anzahl von Ereignissen innerhalb eines bestimmten Zeitraums (laut Wikipedia).

Herkulase
15.04.2009, 13:01
Nimms mir nicht übel, aber bitte mach dich zunächst mal mit den absoluten Grundlagen vertraut. Sonst wird dir hier nichts von alledem nutzen. Oder kauf dir einfach einen fertigen Bausatz (weiss nicht ob es das für dein Projekt gibt) dann hast kannst du dich aufs Aufbauen und Experimentieren konzentrieren. Wenn du dich aber entscheidest, die Grundlagen zu lernen, dann wirst du sicher bald gezielte Fragen stellen könnne, und darauf auch Antworten bekommen, mit denen du dein Projekt dann weiterbringen kannst.

asuro11
16.04.2009, 17:22
werde das einfach am besten mit der lichtorgel machen...die ist ja sowieso schon auf der platine drauf.

ich wollte eigentlich nur wissen ob dir grundidee ok ist.
also das hier:

das ist meine grundidee: der atmgea8 auf der zusatzplatine soll das tonsignal auswerten. wenn dann ein bestimmter frequenzbereich getroffen wurde dann wird ein kommando "erstellt". dieses kommando schickt dann eine ir diode an den asuro. im atmega8 des asuros wird dann angefragt welches kommando empfangen wurde und dann muss doch nur noch auf dem ausro festgelegt werden was bei dem kommando gemacht wird oder?

ist die grundidee in ordnung oder glaubt ihr dass da schon was nicht passt?

bzw. ist die idee mit den 2 programmen und ihrer jeweiligen aufgabe ok?

ja das mit den bandpassfiltern war schlecht ausgedrückt....aber es ist doch richtig das der atmega8 an sich 6 Bandpassfilter hat oder???bzw. das man 6 bandpassfilter auf einem atmega 8 programmieren kann?? das ist besser formuliert.

@oberallgeier: welche hübsche ausarbeitung der freiburger???

zum schluss: kann mir denn jemand ein geeignetes mikrofon nennen???

Herkulase
17.04.2009, 08:31
die Grundidee ist sicher ok. In einem AtMega kannste auch 100 Filter reinschreiben, nur ob er die dann noch schnell genug berechnen kann... Für das Mikrophon musst du eben selber die Datenblätter wälzen. Oder du baust eben einen größeren Verstärker mit mehr dB - aber diesmal mit "echten" ;-)

Wie gesagt, arbeite dich ein und stell konkrete fragen.

asuro11
20.04.2009, 11:59
komisch, habe irgendwo gelesen dass nur 6 irr bandpassfilter realisierbar sind da es sonst zu viel zeit kostet die umsetzung...

asuro11
21.04.2009, 14:46
ich brauche wieder hilfe

und zwar:

kann mir jemand einen link zu einem shop geben wo ich einen wrapper (das werkzeug), ein wire-wrap 25 m (das kabel) und einzelne pins herbekomme???

ist dringend, bei conrad gibt es sowas nicht!!!

asuro11
21.04.2009, 15:49
noch eine frage: benötige für meine zusatzplatine einen atmega8.
wollte einen atmega8 wie auf dem ASURO bestellen.

das ist der ATMEGA8L-8PI. jetzt habe ich mir aber den ATmega8 16 MHz gekauft.

ist das schlimm? was sind da die unterschiede. ich hatte nämlich vor wenn ich den zusätzlichen amtega8 programmiere einfach in den sockel vom asuro zu stecken (dazu den anderen atmega8 raus) und einfach das programm rüberflashen. danach den geflashten atmega8 auf die zusatzplatine und der asuro atmgea8 wieder in seinen sockel zu stecken. geht das??????

und: sind die amtgea8 überhaupt flashbar oder muss ich da noch extra ein programm drauf schmeißen??

oberallgeier
21.04.2009, 16:02
noch eine frage ...In den Dokumentationen steht jede Menge, da sind diese Fragen alle beantwortet . . . .
http://www.atmel.com/dyn/resources/prod_documents/2486S.pdf
Und wenn nicht, da stellen doch fast alle Lieferanten ein Datenblatt bereit. Sonst gibt es ja auch noch diese hübsche Seite:
http://atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=1250&Direction=ASC


... und: sind die amtgea8 überhaupt flashbar oder muss ich da noch extra ein programm drauf schmeißen??Also hast Du doch immer noch viele Fragen zu beantworten. Controller sind fast immer, zumindest im fabrikfrischen und nicht verfusten Zustand, flashbar. Das Beschmeissen von Controllern mit Programmen - - - nutzt eigentlich nicht viel.

Na ja, wenn Du schon so locker schreibst solltest Du wenigstens wissen, wovon Du sprichst.

asuro11
21.04.2009, 16:18
naja das mit dem draufschmeißen 8-[

naja ich habe mir die datenblätter schön durchgeschaut habe aber an sich keinen unterschied festgestellt. ist halt nur wichtig zu wissen ob ich einfach dann den neu gekauften auf den sockel stecken kann und was rüberflashen kann. weil dann dürfte es kein problem sein.

man darf doch noch fragen stellen oder? ich bin halt noch ziemlich am anfang, habe mir aber schon viel angelesen, aber anderes, praxis orientiertes (wie zum beispiel das mit dem reinstecken...) steht halt nicht irgendwo...

aber eins verstehe ich nicht: warum führt denn kein shop (zumindesten keinen den ich kenne) ein wrap wire handwerkzeug und wire wrap draht. weil wenn ich ein handwerkzeug zwar mal finde, gibt es wenn überhaupt nur 250 m draht dazu, bräuchte aber eigentlich halt auch nur 25 ;)

asuro11
21.04.2009, 16:21
http://atmel.com/dyn/products/param.....rderBy=1250&Direction=ASC

auf dieser seite war ich zwar auch, aber hier ist nur von ATmega8 die rede und nicht von Atmega8L-PU8 Atmega8 16 Mhz... daher kann man da nicht wirklich viel rausholen???

oberallgeier
21.04.2009, 17:26
... ich habe mir die datenblätter schön durchgeschaut ...Das soll ich glauben ! ? Nun würde ich gerne sagen: Datenblätter sollte man DURCH LESEN, nicht nur schön durchschauen, es müssen noch nicht mal alle 308 Seiten der Langfassung sein.


nur von ATmega8 die rede und nicht von Atmega8L-PU8 Atmega8 16 Mhz... Die genannte Kurzfassung hat auf Seite 1 was stehen zu ATmega8L und auf Seite 13 etwas zu 8PU. In der Langfassung ist die Seite 1 ähnlich und das mit dem "8PU" steht auf Seite 292. Dann kommt man auch darauf, dass das mit dem 8PU kein 16 MHz-Teil sein kann. Aber ein ATmega8-16PU kann natürlich auch mit 8 MHz betrieben werden - nur ist das kein LowPower . . . . steht eben DOCH alles in den Datenblättern.

asuro11
23.04.2009, 16:16
ich habe eine frage zur Schnelle Fouriertransformation (FFT):
bei der fft wird ja das eingehende signal in seine einzelnen bestandteile zerlegt(also oberwellen...). warum kann denn der amtega8 keine FFT? ist dafür die rechenleistung nicht ausreichend??

Besserwessi
23.04.2009, 21:05
Man kann mit den AVRs auch eine FFT machen. Die Rechenleistung ist da gar nicht mal das Problem. Das ging schließlich auch mit Rechnern wie C64, Apple2 oder so. Die waren gut 20 mal langsamer, bei der Multiplikation sogar noch deulich mehr.

Ein kleines Problem hat man durch das recht begrenzte RAM. Für die FFT braucht man 2 mal den Platz für die Rohdaten. Bei 1 KByte RAM hat man als höchstens rund 500 Byte für Rohdaten das Reicht dann für 256 Werte a 8 Bit oder 128 Werte a 16 Bit. Für das doppelte reicht das nicht ganz, denn man braicht wohl wenigstens etwas Platz für den Stack. Das ist nicht wirklich viel, kann aber für einige Fälle ausreichen. Es gibt auch Beispiele dafür.

Noch was zum Mikrofon:
Die Elektretmikrofone sind schon die richtige Wahl. Wenn man nicht sehr laut ist, wird man aber noch wenigstens eine Verstärkerstufe brauchen. Die Abschätzung oben mit dem 6 µV ist wohl etwas pessimistisch, etwa mehr kann man man schon erwarten. Die 6µV wären für 34 dB, das wäre schon recht leise.

Die Umsetzung von Schall nach IR ist ein etwas ungewöhnlicher Weg. Da sollte es einen besseren Weg geben für die komunication zwischen 2 µCs die Dicht beieinander sind.

Herkulase
24.04.2009, 09:55
Tatsache, sorry. Hab ich doch glatt -40 dB gemeint und -60 dB geschrieben. Ich meinte 54 dB (also eher großzügig), da gib das Mic dann ca. 56 µV ab. Macht die Kuh aber auch nicht fett, einen Vorverstärker wirst Du so oder so brauchen. Wobei ich gestern zufällig mal mein Pfeifen mit dem SPL-Messer gemessen habe. Ist erstaunlich laut, so in 10 cm Entfernung sind es zwischen 100 und 105 dB gewesen.

asuro11
24.04.2009, 10:59
ja vorverstärker habe ich sowieso schon besorgt.

nochmal zur fft: "Für die FFT braucht man 2 mal den Platz für die Rohdaten"
warum das? kannst du mir das kurz erklären???

bei einer periodendauermessung, wird doch einfach nur die periodendauer des sozusagen lautesten ton gemessen oder? wie kann ich denn damit eine frequenzanalyse machen?

Besserwessi
24.04.2009, 11:19
Bei der FFT braucht man für jeden Schritt platz für die alten und die neuen Daten (das Ergebnis). Das heißt man braucht 2 mal den Platz für die Daten. Je nach Form der FFT braucht man sogar noch mehr Platz (für complexe daten).

Mit 128/256 Punkten könnte man aber eventuell auch schon auskommen, oder man müßte einen Mega168 nehmen, dann hat man den doppelten Platz. Viel mehr Kanäle wird man kaum brauchen.

Mit der reinen Periodenmessung kreigt man wirklich nur den lautesten Ton. Bei der Überlagerung mehrere Töne kann es aber auch da schwer werden eine vernünftige Frequenz zu kreigen.

Wenn es darum geht die Amplitude einiger weniger Frequenzen zu bestimmen gibt es dazu alternative algorithmen. Die haben vor allem den Vorteil, das man das bis zu einer gewissen Zahl an Kanälen (z.B. 10) gleich machen kann wenn die Daten reinkommen. Man braucht also nicht viel Speicher und das Einteilen in Zeitklöcke von z.B. 128 Sampels entfällt.

asuro11
24.04.2009, 11:36
erarbeite mir gerade ein bisschen das gebiet analoger/digitaler filter. In wiki wird jetzt angegeben das ein digitaler filter mit einem logikbaustein oder in form eines seqeuntiellen programms mit einem signalprozessor realisiert wird. Bei meinem Projekt arbeite ich ja auch mit digitalen Filtern (IIR). ist der atmega8 dann ein "logikbaustein" oder ein Signalprozessor??

asuro11
26.04.2009, 14:10
hallo eine frage.
es geht um das mikro. im schaltplan hat es 3 ausgänge.
einer geht direkt zur Masse.
einer ist output also signal und geht dann zum OP.
einer geht zu VCC+ in meinem schaltplan aber so, dass vom mikro die verbindung rausgeht, dann wird das gekoppelt. auf der einen seite kommt dann ein Widerstand und dann VCC+ und auf der anderen seite kommt ein Kondensator und Ground.

habe mir jetzt das mikro gekauft mit dieser schaltung:

http://www2.produktinfo.conrad.com/datenblaetter/325000-349999/335412-da-01-en-EMY_63M_38_DB_10MM_PINS.pdf

ok vom terminal 2 zum Ground. ist klar, wie beim schaltplan.
dann output (also signal): da bau ich doch dann einfach den C hin und der rest wie auf meiner schaltung also den OP danach...

und jetzt das problem: der VCC+. hier in der schaltung kommt ja einfach nur ein widerstand und dann VCC+ (bzw. Vs). bei mir ist ja jetzt das gleiche, blos mit ner abzweigung, zu nem Kondensator und GROUND.

soll ich jetzt einfach dass so bauen wie in dem Datenblatt ohne Abzweigung, oder wie in meiner Schaltung??? weil es könnte ja sein dass sich meine Schaltung nur auf EIN bestimmtes Mikrofon bezieht (ist keins angegeben)....ist halt komisch ob ich da jetzt noch ne abzweigung machen soll oder nicht??

und beim output kommt ja ein Kondensator. ich habe bei meiner schaltung auch einen kondensator als erstes vor den OPs, das ist dann der oder soll ich dann 2 kondensatoren reinbauen? einmal der von meiner schaltung und einmal der von der mikroschaltung??

ich glaube es ist richtig wenn ich nur einen Kondensator nehme, aber bei dem VCC+ hab ich kein plan???

asuro11
26.04.2009, 15:57
eine frage: wenn ich einen oszillator an den atmega8 anschließen will (also glaub an pin 9 und 10) mit wieviel Hz kann denn der gespeißt sein? habe zwar die datenblätter durchgeschaut aber nichts gefunden (bzw. nicht verstanden oder überlesen)

Thomas$
26.04.2009, 16:12
man muss doch eigentlich nur nen Frequensmesserbauen (timer und takte zählen) der eine verstellbare triggerschwelle hat, oder.

asuro11
26.04.2009, 16:27
hä? ist das auf meine frage mit dme oszillator bezogen??

Thomas$
26.04.2009, 16:35
nein algemein auf die frage tonsteuerung ne da können die 16,00 mHz das ist doch xtal1 und xtal2

asuro11
26.04.2009, 18:13
ok, danke also einer mit 16mHz... warum denn gerade der? ist das in einem datenblatt vorgegeben?

Besserwessi
26.04.2009, 18:34
Die meisten Elektretmikrofone haben nur 2 Anschlüsse. Die Normale beschaltung ist: Der GND - pin nach GND (ist oft mit am Gehäuse). Der andere Pin mit einem Widerstand (ca. 2-5 K bei 5 V) an VCC als Stromversorgung. Für den Ausgang mit einem Kondensator das Signal vom 2 ten Pin abnehmen.

Thomas$
26.04.2009, 19:23
von 0 -16mhz kannste ranhängen

Besserwessi
26.04.2009, 19:31
Einen externen Oszillator nutzt man eher selten. Meistens wird ein externe Quarz (Resonator) benutzt. Der Frequenzbereich steht gleich mehrfach im Datenblatt. Die maximale Frequenz hängt auch von der Spannung ab. Je nach Frequenz sollten auch die Fuses entsprechend gesetzt werden.

asuro11
27.04.2009, 16:02
ist das dann realtiv egal ob er z.b. 4mHz oder 8mHz hat???

Thomas$
27.04.2009, 16:34
alles unter 16mhz 4 mhz oder 8 oder 6 ist egal
nehm am besten einen uhrquarz wegen des prescaler und timer der ist dann genauer.

asuro11
27.04.2009, 17:14
dankeschön. werde mir den beorgen!

Besserwessi
27.04.2009, 17:19
Für die Tonsteuerung reicht ein normaler Quarz. Das bischen extra Genauigkeit der Uhrenquarze braucht man nicht. Da die Tondekodierung doch schon etwas aufwendiger ist wohl ein recht schneller Quarz: z.B. 16 MHz. Wenn der Code schon fertig ist und man weiss wie schnell er sein muß, dann gehts auch langsamer.

asuro11
27.04.2009, 18:09
dankeschön :)

könntet ihr mir kurz das mit der periodenmessung erklären? ich stelle mir das so vor: von dem lautesten ton wird die periodendauer gemessen. jeder ton hat seine eigene periodendauer. daher kann man frequenzen anhand ihrer periodendauer erkennen... leider wird es im internet nirgends wirklich beschrieben....

zur stromversorgung: auf dem gibt es ja 4 anschlüsse die dann mit den 2 motoren verbunden werden. muss ich da sozusagen den strom abzapfen oder gibt es noch wo anders freie stellen wo ich den strom abnehmen kann? weil wenn ich das bei der stelle für den motor mache würde ich ja nur strombekommen wenn auch der motor läuft oder???

oberallgeier
27.04.2009, 19:18
Von Uhrenquarzen würde ich einfach schon deswegen abraten, weil die handelsüblichen nicht so wirklich schnell sind - ich glaube überwiegend bekommt man da Quarze von 36+verquetschte Kiloherz - meine Controller laufen mit 20 MHz - MEGA !

Besserwessi
27.04.2009, 19:47
Es gibt auch ein paar Quarze für Uhren mit 4.192 Mhz oder so ähnlich (2^22 Hz), ist aber schon seltener.

Wenn man im wesentlichen einen Ton hat, dann könnte man die periodendauer messen. Bei eher komplexen Geräuschen mit mehreren Frequenzen Gleichzeitig müßte man aber wohl einige Perioden messen und dann nur die Periodendauern nehmen die häufiger gemessen werden.
Beispielcode zur Zeitmessung ist z.B. im Wiki Bereich unter timer zu finden.

Eine Stromversorgung sollte man am Asuro auch woanders finden. Direkt am mort abnehmen ist so ziehmlich der schlechteste Punkt.
Man muß aber aufpassen, der Ausro hat im original keine Spannungsregelung. Die neueren Chips wie Mega168, Mega324 reagieren empfindlicher als der alte Mega8 auf überspannung. Man sollte also eventuell einen Spannungsregler vorsehen.

asuro11
28.04.2009, 14:42
MHz (also mega hertz) oder? nicht mHz(milli hertz)

Thomas$
28.04.2009, 15:46
mili herz :-) da kanste mitzählen mit geduld. MHz (also mega hertz) ist schon richtig

asuro11
03.05.2009, 14:31
ich erarbeite mir gerade das ganze zeug mit den iir bandpassfiltern. In dem Heft ist jetzt angegeben dass die benötigte Bandpasscharakterisitik durch diese Gleichung dargestellt wird:

y0 = b1*x0 + b2*x1 + b3*x2 – a2*y1 – a3*y2

soweit so gut, ich denke mal das ist einfach so festgelegt...

aber jetzt ist weiterbeschrieben dass b1 und b3 gleich groß sind und b2 0 ist.
kann mir kurz jemand erklären warum dass so ist???

asuro11
05.05.2009, 23:13
hat keiner antwort auf meine frage?

noch was: ich habe jetzt mal ein online tool ausprobiert zum erstellen von iif filtern. da muss ich halt die filtercharakterisitiken eingeben. z.b. bandpass abtastrate grenzfreuquenz... dann bekomme ich einen programm code.
z.b.:

Recurrence relation:
y[n] = ( -1 * x[n- 2])
+ ( 0 * x[n- 1])
+ ( 1 * x[n- 0])

+ ( -0.8836653232 * y[n- 2])
+ ( 1.5246695906 * y[n- 1])

das ist ja dann die gleichung für ein bandpass. das bedeutet ich muss dann das für alle bandpässe machen so das ich für jeden bandpass eine gleichung habe oder??

Thomas$
06.05.2009, 15:05
Bandpass filter kannst du dir sparen wenn du nur einen Ton immer und nicht in zwei Pfeifen pfeifst.
Statt den Bandpassfilter würd ich mir einen triger nehmen und den so einstellen das er bei normal lautstärke noch nicht schaltet sondern erst bei lauten tönen. (so jetz ham wir erstmal den Pfeif ton und der rest is weg) jetze würd ich den ersten impuls nehmen und dann die Zeit messen bis zu zweiten impuls und dan die Frequens erechnen. (Frequens des Pfeifen haben wir jetzt) und dann die differenz zum gewünschten ton erechnen und dan stellst du die genauig keit ein. z.B. Pfeife 440 hz (a`) und mist 430 herz dann sagste ok das ist die Pfeife wenn es 300hz sagste das is ne andre)
ich hoffe es ist verständlich.

und bandpass würd ich später machen.
mfg thomas

asuro11
06.05.2009, 16:04
das ziel heißt aber: frequenzanalyse mit bandpassfilter.

asuro11
09.05.2009, 13:58
kann mir jemand einen tipp geben wie ich dann die 6 gleichungen in ein programm pack??

asuro11
15.05.2009, 13:39
hat jemand eine idee wie ich meine platien auf dem asuro befestigen kann? sie soll auf die motoren plaziert werden.

asuro11
15.05.2009, 14:59
hab mich mal an des programm für die zusatzplatine rangemacht. der plan: erstmal alles festlegen wie im heft. dann eine for schleife dass er zuerst i=1 hat mit den werten von koeff und gain für den bandpass 1 und rechnet dann die 2. for schleife aus, wie im heft. nachdem er das gemacht hat is i=2 usw. bis alle eingangswerte mit jedem filter berechnet wurden.


#include "myasuro.h"
#include "asuro.h"
#include "inttypes.h"

/* Teil 1. Bandpassfilter*/

void bpfilter(int_8 *input,int8_t *output, uint16_t *length, int32_t koeff)

int32_t a2; /* a2 als Integervariable festlegen*/
int32_t a3; /* a3 als Integervariable festlegen*/
int32_t GAIN_FRAC; /* GAIN_FRAC als Integervariable festlegen*/
int32_t x0,x1,x2; /* x0,x1,x2 als Integervariable festlegen*/
int32_t y0,y1,y2; /* y0,y1,y2 Integervariable festlegen*/
uint16_t n; /* n Integervariable festlegen*/
uint16_t i; /* i als Integervariable festlegen*/

x1=0; /* Wert für x1 festlegen*/
x2=0; /* Wert für x2 festlegen*/
y0=0; /* Wert für y0 festlegen*/
y1=0; /* Wert für y1 festlegen*/
y2=0; /* Wert für y2 festlegen*/
x0=1; /* Wert für x0 festlegen*/
length=100; /* Wert für length festlegen*/

for i=1;i<7;i++; /* Schleife zählt bis 6 hoch, um die Werte mit jedem Bandpass zu filtern*/
{
if i=1; /* Schleife 1 mit den Werten für Bandpass 1*/
{
a2=2
a3=3
GAIN_FRAC=4
}
if i=2; /* Schleife 2 mit den Werten fü Bandpass 2*/
{
a2=1
a3=2
GAIN_FRAC=3
}
if i=3; /* Schleife 3 mit den Werten für Bandpass 3*/
{
a2=3
a3=2
GAIN_FRAC=1
}
if i=4; /* Schleife 4 mit den Werten für Bandpass 4*/
{
a2=4
a3=2
GAIN_FRAC=3
}
if i=5; /* Schleife 5 mit den Werten für Bandpass 5*/
{
a2=1
a3=1
GAIN_FRAC=1
}
if i=6; /* Schleife 6 mit den Werten für Bandpass 6*/
{
a2=2
a3=4
GAIN_FRAC=3
}

for n=0;n<length;n++; /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
{
x0=input; /* x0 als Eingang festlegen*/
y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/
x2=x1;
x1=x0;
y2=y1;
y1=y0;

output[n]=((y0*GAIN_FRAC)>>16); /* Gleichung um Ausgang zu berechnen*/
}

printf(output[n]); /* Ergebnis soll am Bildschirm angeszeigt werden*/
}


/* Teil 2. LEDs ANSTEUERN und Befehl erstellen*/

/* Teil 3. Versenden des Befehls über IR-DIODE*/


hab da aber ganze 17 errors drinne:

../ZUSATZ155.c:3:1: warning: "/*" within comment
../ZUSATZ155.c:4:1: warning: "/*" within comment
../ZUSATZ155.c:5:1: warning: "/*" within comment
../ZUSATZ155.c:6:1: warning: "/*" within comment
../ZUSATZ155.c:14: error: expected ')' before '*' token
../ZUSATZ155.c:20: warning: built-in function 'y0' declared as non-function
../ZUSATZ155.c:20: warning: built-in function 'y1' declared as non-function
../ZUSATZ155.c:24: warning: data definition has no type or storage class
../ZUSATZ155.c:24: warning: type defaults to 'int' in declaration of 'x1'
../ZUSATZ155.c:24: error: conflicting types for 'x1'
../ZUSATZ155.c:19: error: previous declaration of 'x1' was here
../ZUSATZ155.c:25: warning: data definition has no type or storage class
../ZUSATZ155.c:25: warning: type defaults to 'int' in declaration of 'x2'
../ZUSATZ155.c:25: error: conflicting types for 'x2'
../ZUSATZ155.c:19: error: previous declaration of 'x2' was here
../ZUSATZ155.c:26: warning: data definition has no type or storage class
../ZUSATZ155.c:26: warning: type defaults to 'int' in declaration of 'y0'
../ZUSATZ155.c:26: error: conflicting types for 'y0'
../ZUSATZ155.c:20: error: previous declaration of 'y0' was here
../ZUSATZ155.c:27: warning: data definition has no type or storage class
../ZUSATZ155.c:27: warning: type defaults to 'int' in declaration of 'y1'
../ZUSATZ155.c:27: error: conflicting types for 'y1'
../ZUSATZ155.c:20: error: previous declaration of 'y1' was here
../ZUSATZ155.c:28: warning: data definition has no type or storage class
../ZUSATZ155.c:28: warning: type defaults to 'int' in declaration of 'y2'
../ZUSATZ155.c:28: error: conflicting types for 'y2'
../ZUSATZ155.c:20: error: previous declaration of 'y2' was here
../ZUSATZ155.c:29: warning: data definition has no type or storage class
../ZUSATZ155.c:29: warning: type defaults to 'int' in declaration of 'x0'
../ZUSATZ155.c:29: error: conflicting types for 'x0'
../ZUSATZ155.c:19: error: previous declaration of 'x0' was here
../ZUSATZ155.c:30: warning: data definition has no type or storage class
../ZUSATZ155.c:30: warning: type defaults to 'int' in declaration of 'length'
../ZUSATZ155.c:32: error: expected identifier or '(' before 'for'
../ZUSATZ155.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
../ZUSATZ155.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before '++' token
../ZUSATZ155.c:33: error: expected identifier or '(' before '{' token


kann mir helfen die erros zu beseitigen? bekomm die irgendwie net weg. außerdem: ist die grundidee richtig? TEIL 2 wäre halt dann, dass er die bestimmte LED für einen bestimmten Bandpass ansteuert der gerade aktiv ist. aber wie kann ich im programm festlegen wann welcher bandpass aktiv ist? da muss doch output dann einen bestimmten wert haben. vermutlich den wert der mittenfrequenz eines bandpasses oder???

oberallgeier
15.05.2009, 19:14
... wie ich meine platien auf dem asuro befestigen kann? sie soll auf die motoren plaziert werden.Zwischen dem Controller und dem Gatterbaustein IC3 CD4081 ist in der Asuroplatine ein hübsches Loch. Da passt eine Gewindestange M3 rein. Auf diese Weise habe ich (m)eine Zusatzplatine(n) (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=394191#394191) befestigt. Die ragen zwar über den Controller, aber nach "hinten" ist natürlich auch noch Platz. Diese Gewindestange wird an der Platine mit zwei Muttern - eine drunter, eine oben - befestigt und hält eine ganze Menge aus. Ähnlich habe ich die Erweiterungsplatine auch mit zwei Muttern befestigt. Die Bilder zeigen die Situation (https://www.roboternetz.de/phpBB2/files/macir_1601.jpg) nicht sehr groß, aber Du siehst sicher, wie ich das meine.

asuro11
16.05.2009, 16:48
das problem ist, dass ich dort ein kugellager hingeschraubt habe (als anternative zum tischtennisball). aber ist eine gute idee. notfalls schraube ich halt das kugellager ab. gibt es sonst noch ideen?

asuro11
05.07.2009, 14:36
hallo habe noch kurz fragen zum projekt:

1. bei der resurce relation ausm internet sind ja die koeff verdreht mit anderen vorzeichen. wenn man jetzt aber die koeff für seine filtergleichung haben will muss man doch daher die vorzeichen der koeffs wechseln und ebenso die reihenfolge oder? weil das mikrocontroller heft hat bei dem einem koeff (ich glaub a2) nicht das vorzeichen gedreht. es ist ja in der resurce relation einmal + und - , aber beide sind dann in "wirklichkeit" positv in der iir filtergleichung??? wo ist denn hier der fehler???

2. im programm. was bedeutet denn genau void bpfilter(......) was ist dass denn???

3. die signallänge. ist da die voraussetzung im mikrocontrollerheft das 10kHz 100 Mikrosek Abtastzeit beudeuten. woher kommt diese voraussetzung??? und dann ist klar das bei 1kHz die Zietdauer für 10 Schwingungen 10 ms dauern. aber warum teilt man dann 10ms/10mikrosek??? dass dann 100 werte rauskommen? das hab ich net ganz gerafft...

4. was genau ist ein phasengang??

Besserwessi
05.07.2009, 16:36
zu 2. : mit void bpfilter(...) wird ein Unterprogramm definiert. Das ist ein elementarer Teil der Sprache C.

zu 4.: Mit Phasengang wird die Abhängigkeit der Phase von der Frequenz bezeichnet.

In dem Programm ist ein normaler digitaler filter beschrieben. Da kommt also wieder sie Frequenz herraus. Hier ist aber mehr so etwas wie eine Bestimmung der Amplitude gebraucht. Das wäre z.B. der Goertzel-Algorithmus:
http://de.wikipedia.org/wiki/Goertzel-Algorithmus

asuro11
05.07.2009, 17:07
hallo danke für deine antworten,

hätte noch eine frage und zwar:

mein bandpass benötigt bei 1kHz mittenfrequenz 10 Schwingungen beim Einschwingen.
dann ist als voraussetzung festgelegt: 10 kHz entsprechen 100 Mikosekunden Abtastzeit bei 1 kHz Signalfrequenz benötigte Zeitdauer für 10 Schwingungen: 10 ms
signallänge= 10ms/100 mikroskeunden=100 werte.

woher kommt denn dass 10 kHz 100 Mikrosekunden entsprechen?und woher weiß ich dass bei 1kHz ich für 10 Schwinungen 10 ms benötige???
und wie ist die rechnung 10ms/100mikrosek gemeint???

Besserwessi
05.07.2009, 18:03
Wenn der AD wandler mit 10 kHz abtastrate arbeitet kommt halt alle 100 µs ein neuer Wert: 100µs = 1 / ( 10 kHz)

Bei 1 kHz braucht eine Schwingung 1/ (1kHz) = 1 ms.