PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wav-datei am ADC auswerten



funkheld
16.07.2010, 14:55
Hallo, ich möchte eine Wav-datei 32000hz am ADC auswerten.
Kopfhörerausgang verstärkt an den ADC:
Ich habe einen Atmega32 mit 16mhz.

Geht das überhaupt mit dem ADC vom Atmega32, 32000hz auswerten?
Schafft das Bascom überhaupt ?

Wie kann man das realisieren ?

Gruss

radbruch
16.07.2010, 16:18
Hallo

Ich hatte hier mal ein Kopfhörersignal verstärkt an einem ADC-Eingang versucht:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=36754

Der RP6 verwendet einen mit 8MHz getakteten Mega32 und sampelt das Kopfhörersignal mit dem ADC. Nach der "Aufnahme" wird das Gespeicherte endlos abgespielt:

http://www.youtube.com/watch?v=-XpAL3PlMAw

Gruß

mic

funkheld
16.07.2010, 16:48
Jup, danke für den Hinweis.

Wo ist jetzt die Datei mit dem ADC und den Wav-werten?

Gruss

Che Guevara
16.07.2010, 17:05
Also ich bin sicher kein Experte in Sachen Geschwindigkeit und ADC, allerdings denke ich, das ganze sollte bei 16Mhz durchaus machbar sein. Um das Signal überhaupt abtasten zu können, muss deine Abtastfrequenz mindestens 32000hz*4 = 128000hz, also 128khz betragen.
Um das in BASCOM zu realisieren, würde ich den ADC im Free-Run Modus laufen lassen und immer nur zu bestimmten Zeitpunkten (in ner Timer-isr alle 8µs) die hochwertigen 8-Bit des ADC auslesen (also linksbündig einstellen und dann das ADCL-Register auslesen).

Evtl. brauchst du dazu aber noch n'bisschen Inline-Assembler.
Wie gesagt, ist nur eine grobe Vermutung von mir, da können dir andere sicher besser helfen! Viel Zeit bleibt dann aber nicht mehr für anderen Sachen.

Gruß
Chris

radbruch
16.07.2010, 17:32
Hallo

Der ADC ist sehr viel schneller:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=33228
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=47232
http://www.rn-wissen.de/index.php/RP6_Kamera_-_Mitmach-Projekt
https://www.roboternetz.de/phpBB2/viewtopic.php?p=510690#510690

Gruß

mic

funkheld
16.07.2010, 20:19
Ich möchte jetzt mit den Daten eine weisse Leuchtdiode ansteuern für ein Nipkowbild. Es besteht aus y=80 Pixel und x=32 Pixel.
Also 2560 Pixel. Pro Sekunde werden 12,5 Bilder benötigt. Sind also 32000 Datenwerte pro Sekunde.
Wie kann man es mit dem Timer jetzt realisieren in 0.00003125 sec 1 Wert in PWM einzuspeisen um damit eine bestimmte Helligkeit der Leuchtdiode zu erzeugen?

Atmega32 mit 16mhz.

Gruss

radbruch
16.07.2010, 20:35
Hallo

Ach, das gehört zum mechanischem Fernsehen (https://www.roboternetz.de/phpBB2/viewtopic.php?t=55197). Das habe ich nicht gleich zugeordnet. Inzwischen habe ich mir dazu auch ein paar Gedanken gemacht. Mit einem µC sollte das recht einfach sein. Allerdings nur zur Drehzahlregelung der Scheibe, das Signal würde ich direkt auf das Leuchmittel geben. Der Avr kann das Signal zwar ohne Probleme einlesen, ausgeben kann er es aber leider nicht so einfach, weil der keinen DA-Wandler besitzt.

Ich befürchte, im Moment kann ich dir hier nicht weiterhelfen.

Gruß

mic

Besserwessi
16.07.2010, 21:28
Der AD Wandler kann mit 30 kHz Abtastrate noch arbeiten, aber wohl nicht mehr mit den vollen 10 Bits. Auch in Bascom könnte man das wohl noch hinbekommen, man hat ja schließlich rund 300 Zyklen pro AD sample zur verfügung (bein 10 MHz Takt).

Die Wandlung vom Digitalen in ein analoges Signal sollte bis etwa 32 kHz auch noch per PWM gehen (ca. 8 Bit). Man hat dann aber pro Wert nur noch 1 oder 2 Zyklen des PWM Signals und müßte die Ausgangbare wohl schon mit der PWM Frequenz Syncron haben. Eine Alternative wäre sonst ein externen DA Wandler oder bei geringer Anforderung ggf. auch ein R2R Widerstandskette an 7 oder 8 IO Pins.

funkheld
17.07.2010, 08:37
das Signal würde ich direkt auf das Leuchmittel geben.


Das wollte ich auch.
Den ADC-Wert zum PWM, der dann die Leuchtdiode ansteuert.

Dazu suche ich eine Zeit-Routine um 32*80*12,5 Punkte zu realisieren.
Vom ADC zum PWM zur Leuchtdiode.

So wird das Bild Zeitlich beschrieben:
About the Pictures
The pictures were generated as Windows Bitmaps, then converted to WAV files on a PC using "Cool Edit 96" by Syntrillium Software.

* Each bitmap was made to the NBTVA 32 line standard (Narrow Band TeleVision Association).
* The sync pulse height is 30 percent, 77/255, or 4D(Hex).
* The sync pulse duration chosen was 6/80 line period, 187.5 microseconds.
* The bitmap format chosen was width 80 x height 32, 8 bit monochrome.
* This results in a 32 line scan, with 2560 samples, bytes or pixels per frame.

This was converted to a WAV file at a sampling rate of 32000 samples per second:

* It produces 32000/2560 = 12.5 frames per second, and
* A frequency spectrum with a bandwidth of 16 kHz.


Hier die Nipkow-Variante:
http://www.sptv.demon.co.uk/nbtv/

funkheld
17.07.2010, 08:43
bei geringer Anforderung ggf. auch ein R2R Widerstandskette an 7 oder 8 IO Pins.


Wie sieht das denn aus???

Gruss

funkheld
17.07.2010, 08:59
Oder die Daten von der SD-karte auf PWM.

Ich habe mir ein Programm entwickelt in GFA32 um Wavdaten Blockweise zu packen. In einem Block packe ich 80*6 Byte, also 6 Zeilen drauf plus die Sync-Daten.

Diese lese ich dann vom Avr Blockweise ein und gebe die auf PWM.

Müsste eigentlich klappen.

radbruch
17.07.2010, 09:05
http://www.avr-asm-tutorial.net/avr_de/avr_dac.html

http://www.google.de/search?q=digital+analog+avr

Mit "Signal direkt auf Leuchtmittel" meinte ich ohne AD-DA-Wandlung dazwischen. Aber mach wie du willst, viele Wege führen hier wohl zum Ziel.

Gruß

mic