Hang generálása

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
sz332
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2006. december 14. csütörtök, 7:00

Hang generálása

HozzászólásSzerző: sz332 » 2006. december 24. vasárnap, 9:54

Sziasztok!

Először is kellemes karácsonyi ünnepeket kívánok mindenkinek!

Egy vívás menetjelző cuccot csinálok, ami azt tudja, hogy egy
menüben be lehet állítani a menetek idejét, a menetek közötti időt, és amikor elindul, akkor a menetidő lejártával egy hangjelzést ad. utána megvárja a menetek közötti időt, és utána megint hangjelzést ad.

már kész van az egész cucc, dobozban, lcd-vel, 80% assembly / 20% basic programmal (hiába, 2k az 2k:)), a hanggenerálást próbálom belőni.

Ehhez egy i2c buszra illesztett pcf8591-es ic-t használok, aminek az aout lába egy erősítőre van kötve, az pedig a hangszóróra. Hangot kiválóan tudok generálni a példaprogi segítségével, azonban valami ilyesmit szeretnék kapni, mint ennek a 300k-s mp3 végén van:

http://canne.tritonis.hu/images/duda.mp3

Van valami ötletetek, hogy lehetne ilyen hangot generálni?

Üdv.

Zsolti

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10013
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2006. december 24. vasárnap, 11:21

Hát ezt a legegyszerűbb. Ha van 12V akkor a kontroller egyik lábára egy relé, ami 12V 2A-t tud. Erre a relére meg egy autódudát:).

Amúgy az a baj, hogy ezt a hangot le kell szintetizálni:(

A Gond: I2Cn hajtod. ez 100khz buszfreki, így a kiküldött minta (10 bit/jellel számolva) max! 10kHz-s lehet. Ha nem kell címezni az eszközt és a és a tömeges megszólítást elfogadja... ha nem, akkor ez 5kHz-ra csökken:(. Közben persze valahol a hangmintát el is kell tárolni... (úgy sacc ez lehet ~2 mp 8kHz/8bit ez pedig 16 kByte hely:(...

Én pofátlan módon a következőt tenném: ISD hangchip (hamár a kürt nem jó) Bár pénból 24V-os hajókürtöt raknék fel:) Esetleg ha az nincs kamionkürtöt. Végső esetben autódudát - bontóból....
A hanggenerálás után még erősítened is kell a jelet és hangszóró is kell.... Ez meg nem biztos hogy már megéri (vacak TDA2003 (10W) egy vívóteremben édeskevés..... És ekkor még hangszóró sehol...
Vagy berakni égy kézihangszóró elvű szénmikrofon szerűt. Azaz az 5V-l feszerősítőn át a 12V-t kapcsolgatni 4R hangszóróra. Ez ugye 12V esetén 8ideálisan: 12V*3A=36W. Hát ippeghogy....

Amúgy a legegszerűbb: bedigizni a hangmintát 8 biten, a duda lehet 3kHz-s, így 6-8kHz mintavételi frekin. Ezt a bedigizett hangmintát tárolni EEPROMban és innen kilökdösni a DA konverterre.
Tárolásra 24LC64 chip (8k tárhely) I2C-s.

I2C buszfrekit 400kHz-ra felpiszkálni (elvileg bírja a 24LC64 és a PCF DA chiped is). De DA heyett mehetne a uPC Timer1/2/0 PWMje is, 256bitese modban, magas frekin. Így I2C helyett elegendő lenne a I2C oldas, majd PWM1a=data. És kész is. Gyorsabb a rutin, és megúszod a DA konverzíót. A PWM-re meg egy aluláteresztő LC tagot rakni....

I2C-s kód, kb. vázlatként:

Kód: Egész kijelölése

for i= 1 to 16384
 ReadI2C EEPROM, adat
 WriteI2C DAconv, adat
 waitus valamennyi
next i


PWM-s kód, kb. vázlatként:

Kód: Egész kijelölése

for i= 1 to 16384
 ReadI2C EEPROM, adat
 PWM1A=adat
 waitus valamennyi
next i

Avatar
sz332
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2006. december 14. csütörtök, 7:00

HozzászólásSzerző: sz332 » 2006. december 24. vasárnap, 20:42

Szia!

Köszi a gyors választ. Most elkezdtem azon dolgozni,
hogy audacity-ben létrehoztam (copypaste) egy olyan
hangminta részletet, amit megsokszorozva kb. olyan
hangot kapok, mint az eredeti. Ezt a mintát tervezem
felhasználni alapnak, és ezt próbálom majd kiküldeni
a d2a ic-n. A duda egyébként működik, tutul, elég
hangos is (12v-ról megy).

Na, próbálkozom egy kicsit, hátha sikerül valamit
ügyeskedni :)

Avatar
sz332
Újonc
Újonc
Hozzászólások: 8
Csatlakozott: 2006. december 14. csütörtök, 7:00

HozzászólásSzerző: sz332 » 2007. január 4. csütörtök, 15:40

Helló!

Ezt találtam:

ISD1416P

http://pdf1.alldatasheet.co.kr/datashee ... 1416P.html

A chipre fel lehet venni több, mint 10 másodperc hangot, ez pedig nekem teljesen jó, úgyhogy szerintem egy ilyent fogok beintegrálni a termékbe :)

Szerintetek?

Üdv.

Zsolti

Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00
Kapcsolat:

HozzászólásSzerző: norbi » 2007. január 4. csütörtök, 16:28

Hali!

Én eddig csak az ISD2560-at próbáltam, elég jól bevált, bár a 8Khz-es mintavételezés nem túl sok (attol függ, mire szeretnéd használni), ezért inkább ajánlom az újabb ISD chipeket.

Üdv!

Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

HozzászólásSzerző: nobody_hun » 2007. január 5. péntek, 10:57

Ha lenne időm (ahogy nincs), akkor megpróbálkoznék régi, 8 bites hang IC-k programozásával, pölö Commodore-ból kitermelt 6581 vagy a klasszikus AY-3-8912.

Avatar
Ubul
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2006. január 6. péntek, 7:00

Hang generálása

HozzászólásSzerző: Ubul » 2007. január 6. szombat, 17:27

Sziasztok!

http://atmel.com/dyn/resources/prod_doc ... oc1456.pdf

Itt találtok egy doksit, az ATMEL uC-es hangtárolásról.
Alapból, tudja azt amit egy régebbi ISD IC.

8Mhz es uC-re van tervezve, amit ha kicseréltek 20Mhz
esre, 40Khz es PWM frekvencia mellett, igen jó hangminőséget
kaphattok.

Nagysebességű üzemmódban pedig 80Khz es PWM mellett,
leht hogy jobban fog szólni mint a CD lejátszó.

Egyedült az aluláteresztő részt kell átszámolni a kapcsolásban és
nagyobb frekvenciájú uC kell beépíteni.

Peti


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég