Top Banner
Mikrokrmilnik in zvok V spomladanskem asu opaam na spletnih forumih veliko poveanje takih in dru- ganih proenj, za pomo pri izvedbi razlinih seminarskih in maturitetnih nalog s podroja elektronike, v katerih so pogosto uporabljeni mikrokrmilniki. Zanimalo me je koliko je izvedba takih nalog zahtevna. Namesto zelo pogostih projektov s svetlobnimi uinki, sem se raje odloil za nekoliko zapostavljen zvok. Za uvod naj povem e to, kljub temu, da se z elektroniko ukvarjam e ve dese- tletij, sem prvi mikrokrmilnik sprogramiral ele pred dvema mesecema, prvi pro- gramek zanj pa napisal ele pred slabim mesecem in sem tako pravzaprav zaet- nik, kar se tie poznavanja te tematike. Malo prej to odloitvijo sem zgradil preprost PWM regulator, ki bazira na mikrokr- milniku Microchip PIC12F675, za regulacijo moi 12V spajkalnika, po projektu, katerega avtor je Luhan Monat iz Arizone, ZDA. Celoten projekt, je opisan na avtorjevi spletni strani: http://mondo-technology.com/heater.htm PWM regulator Ta naprava je s priklopom zvonika namestoi spajkalnika sluila za zaetno ugo- tavljanje zahtevnosti te naloge. Ker je moje znanje zbirnika pomankljivo, sem uporabil vije nivojski programski jezik Basic v katerem sem e pisal programe za Commodore C64 in Microsoft DOS, za namen programiranja mikrokrmilnika pa sem uporabil namenski brez- plani in odprtokodni Great Cow Basic (v nadaljevanju GCBasic), verzije 0.9, do- segljiv na: http://gcbasic.sourceforge.net/
6

Mikrokrmilnik in zvok -  · GCBasic je samo prevajalnik in sem si namestil še brezplačno razvojno okolje (In-tegrated Development Environment, krajše IDE) GCBIDE verzije 2.0,

May 01, 2018

Download

Documents

vandat
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Mikrokrmilnik in zvok

    V spomladanskem asu opaam na spletnih forumih veliko poveanje takih in dru-ganih proenj, za pomo pri izvedbi razlinih seminarskih in maturitetnih nalog spodroja elektronike, v katerih so pogosto uporabljeni mikrokrmilniki.

    Zanimalo me je koliko je izvedba takih nalog zahtevna. Namesto zelo pogostihprojektov s svetlobnimi uinki, sem se raje odloil za nekoliko zapostavljen zvok.

    Za uvod naj povem e to, kljub temu, da se z elektroniko ukvarjam e ve dese-tletij, sem prvi mikrokrmilnik sprogramiral ele pred dvema mesecema, prvi pro-gramek zanj pa napisal ele pred slabim mesecem in sem tako pravzaprav zaet-nik, kar se tie poznavanja te tematike.

    Malo prej to odloitvijo sem zgradil preprost PWM regulator, ki bazira na mikrokr-milniku Microchip PIC12F675, za regulacijo moi 12V spajkalnika, po projektu,katerega avtor je Luhan Monat iz Arizone, ZDA.

    Celoten projekt, je opisan na avtorjevi spletni strani:

    http://mondo-technology.com/heater.htm

    PWM regulator

    Ta naprava je s priklopom zvonika namestoi spajkalnika sluila za zaetno ugo-tavljanje zahtevnosti te naloge.

    Ker je moje znanje zbirnika pomankljivo, sem uporabil vije nivojski programskijezik Basic v katerem sem e pisal programe za Commodore C64 in MicrosoftDOS, za namen programiranja mikrokrmilnika pa sem uporabil namenski brez-plani in odprtokodni Great Cow Basic (v nadaljevanju GCBasic), verzije 0.9, do-segljiv na:

    http://gcbasic.sourceforge.net/

    http://gcbasic.sourceforge.net/http://mondo-technology.com/heater.htm

  • GCBasic je samo prevajalnik in sem si namestil e brezplano razvojno okolje (In-tegrated Development Environment, kraje IDE) GCBIDE verzije 2.0,

    Izgled GBCIDE

    saj je z njim pisanje programa laje, kot z uporabo Beleke (Notepad). GCBIDE,poenostavlja uporabo samega prevajalnika, omogoa lahek dostop do datoteke spomojo za GCBasic in z barvno shemo omogoa bolj pregleden izgled zapisanekode. Program je dosegljiv na spletnem naslovu:

    http://sites.google.com/site/gcbide/

    Sedaj je bilo samo e potrebno spisati program, eprav se je s samim programomza PWM krmilnik (ki je rahlo spremenjen glede na izvirnik), e slial zvok frekven-ce malo pod 1kHz, kar je frekvenca PWM krmilnika v tem programu, vendar takopoenostavljanje ni ustrezna reitev.

    GCBasic ima za ustvarjanje zvoka namre namenski ukaz ToneToneTone, ki mu sleditadve tevilki, prva pomeni frekvenco zvoka v Hz, druga pa as trajanja tega zvokav milisekundah.

    Tako ukaz.

    Tone 1000, 500Tone 1000, 500Tone 1000, 500

    proizvede zvoni signal frekvence 1kHz v trajanju pol sekunde. na e prej defini-ranemu pinu mikrokrmilnika, ki se doloi z ukazom SoundOuSoundOuSoundOut

    Zapisal sem preprost program, ki oponaa sireno za vzvratno vonjo:

    http://sites.google.com/site/gcbide/

  • '*******************************'*******************************'*******************************'**** Piska *****'**** Piska *****'**** Piska *****'*******************************'*******************************'*******************************#chip#chip#chip 'Vnesti podatke o izbranem uC#define SoundOut IO.x#define SoundOut IO.x#define SoundOut IO.x 'x = pin uC,,, kjer se bo pojavil signal zvokaDoDoDoTone 1000, 500Tone 1000, 500Tone 1000, 500 'zvok 1kHz, pol sekundeWait 500 msWait 500 msWait 500 ms 'pavza pol sekundeLoopLoopLoop

    Program sem s pomojo GCBIDE prevedel v hex datoteko in je s pomojo progra-matorja zapisal v mikrokrmilnik. Po vklopu vezja so se zasliali prodorni inglasni pol sekundni piski.s pol sekundnim premorom, tono tako kot je bilo zami-ljeno.

    Toda, bi bilo mogoe dosei e kaj ve, kot samo oponaati enostavno sireno? Bibilo mogoe iz mikrokrmilnika izvabiti melodijo?

    Stareji bralci se bodo spomnili, da je bila podobna sintaksa ukazov v program-skem jeziku Basic uporabljena tudi v Spectrum Basic za raunalnik ZX Spectrum,popularni Mavrici:

    (ZX Spectrum)

    Na spletu sem poiskal navodila za uporabo tega raunalnika:

    http://www.worldofspectrum.org/ZXBasicManual/

    in v poglavju 19, ki je posveeno uporabi zvoka, nael primer melodije korani-ce Frere Gustav iz Mahlerjeve prve simfonije:

    10 PRINT "Frere Gustav"20 BEEP 1,0: BEEP 1,2: BEEP .5,3: BEEP.5,2: BEEP 1,030 BEEP 1,0: BEEP 1,2: BEEP .5,3: BEEP.5,2: BEEP 1,040 BEEP 1,3: BEEP 1,5: BEEP 2,750 BEEP 1,3: BEEP 1,5: BEEP 2,760 BEEP .75,7: BEEP .25,8: BEEP .5,7: BEEP .5,5:BEEP .5,3: BEEP.5,2: BEEP 1,070 BEEP .75,7: BEEP .25,8: BEEP .5,7: BEEP .5,5: BEEP .5,3: BEEP .5,2: BEEP 1,080 BEEP 1,0: BEEP 1,-5: BEEP 2,0 90 BEEP l,0: BEEP 1,-5: BEEP 2,0

    Vsekakor se sintaksa ukazov na prvi pogled mono razlikuje od te v GCBasic, ven-dar videz vara. Najveja razlika je v zapisu frekvence tona, saj Spectrum Basic za

    http://www.worldofspectrum.org/ZXBasicManual/http://en.wikipedia.org/wiki/Sinclair_Spectrum

  • zapis zvoka uporablja tonsko lestvico, katere osnovni ton oznaen z 0 (mone sovariacije od -62.5 do +62.5) predstavlja noto srednji C (261.626 Hz) in ne fre-kvenco v Hz, kot GCBasic. Ostale razlike so majhne. ukaz BEEPBEEPBEEP je enakovredenukazu ToneToneTone, vendar prva tevilka pomeni as trajanja zvoka v sekundah in drugaton.

    Z malo iskanja po Wikipediji (http://en.wikipedia.org/wiki/Piano_key_frequencies) semsintakso prilagodil za GCBasic, za proenje izkoristi potenciometer, program pre-vedel v hex datoteko in prekopiral v mikrokrmilnik.

    In zvok, podoben zvoku glasbenih estitk ali raunalnika ZX Spectrum je bil tu:

    (klik na ikono za predvajanje zvoka)

    Vezje kot tako se e lahko uporabi za zvoni efekt, vendar ima ve pomanjkljivo-sti, napajalna napetost za zanesljivo delovanje mora biti vija od 7V in v mirova-nju ima preveliko porabo za dolgotajno baterijsko napajanje (okoli 4 mA) in bi bi-lo potrebno v takem primeru uporabiti usmernik, napajan iz elektrinega omreja,kar napravo dodatno zaplete, poleg moteega poka ob vklopu, ki je posledicasame zasnove monostnega dela.

    Mikrokrmilnik PIC12F675 je grajen tako, da lahko deluje v napetostnem razponuod 2.2 do 5.5 V in ima v mirovanju porabo le nekaj 10 A in je tako zelo primernoza baterijsko napajanje.

    e se vezje PWM regulatorja poenostavi in izkoristi funkcije mikrokrmilnika, selahko izdela glasbeni gong (zvonec) z minimumom materiala, kot prikazuje shema

    (shema je bila izrisana s programom ExpressSCH 7.0.2)

    http://www.expresspcb.com/ExpressPCBHtm/HowWorks.htmhttp://en.wikipedia.org/wiki/Piano_key_frequencies

  • Poraba v mirovanju pri tej izvedbi ne predstavlja ve ovire pri uporabi baterijskega na-pajanja., saj je v mirovanju imel prototip porabo manjo od 70A, v delovanju pa po-raba ni presegla 45mA, kar pomeni, da bosta pri normalni uporabi dve alkalni bateriji ve-likosti AA zdrali vsaj leto, e ne ve.

    Namesto kot v prvi razliici, kjer melodijo sproi dovolj nizek nivo na pinu AD pretvor-nika, sem tu uporabil reset funkcijo, na pinu MCLR.

    Tem zahtevam prilagojen program izgleda tako:

    '********************************'********************************'********************************'* Gong z melodijo Frere Gustav *'* Gong z melodijo Frere Gustav *'* Gong z melodijo Frere Gustav *'********************************'********************************'********************************

    '****'****'**** Back Friderik ******Back Friderik ******Back Friderik ******'**** 8.4.2010 *******'**** 8.4.2010 *******'**** 8.4.2010 *******'********************************'********************************'********************************'Za PIC12F675 z internim oscilatorjem, MCLR omogoen'Za PIC12F675 z internim oscilatorjem, MCLR omogoen'Za PIC12F675 z internim oscilatorjem, MCLR omogoen#chip 12F675, 4#chip 12F675, 4#chip 12F675, 4#config osc = int#config osc = int#config osc = int#config MCLR = ON#config MCLR = ON#config MCLR = ON'Izhod za zvonik je pin 2 (GP5)'Izhod za zvonik je pin 2 (GP5)'Izhod za zvonik je pin 2 (GP5)#define SoundOut GPIO.5#define SoundOut GPIO.5#define SoundOut GPIO.5'melodija Frere Gustav'melodija Frere Gustav'melodija Frere GustavTone 261, 1000Tone 261, 1000Tone 261, 1000Tone 294, 1000Tone 294, 1000Tone 294, 1000Tone 311, 500Tone 311, 500Tone 311, 500Tone 294, 500Tone 294, 500Tone 294, 500Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 294, 1000Tone 294, 1000Tone 294, 1000Tone 311, 500Tone 311, 500Tone 311, 500Tone 294, 500Tone 294, 500Tone 294, 500Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 311, 1000Tone 311, 1000Tone 311, 1000Tone 349, 1000Tone 349, 1000Tone 349, 1000Tone 391, 2000Tone 391, 2000Tone 391, 2000Tone 311, 1000Tone 311, 1000Tone 311, 1000Tone 349, 1000Tone 349, 1000Tone 349, 1000Tone 391, 2000Tone 391, 2000Tone 391, 2000Tone 391, 750Tone 391, 750Tone 391, 750Tone 415, 250Tone 415, 250Tone 415, 250Tone 391, 500Tone 391, 500Tone 391, 500Tone 349, 500Tone 349, 500Tone 349, 500Tone 311, 500Tone 311, 500Tone 311, 500Tone 261, 500Tone 261, 500Tone 261, 500Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 164, 1000Tone 164, 1000Tone 164, 1000Tone 261, 2000Tone 261, 2000Tone 261, 2000Tone 261, 1000Tone 261, 1000Tone 261, 1000Tone 164, 1000Tone 164, 1000Tone 164, 1000Tone 261, 2000Tone 261, 2000Tone 261, 2000endendend

  • Seveda to ni nujno dokonna verzija projekta, nekaj pinov mikrokrmilnika je eprostih in tudi celoten pomnilnik e ni izkorien. Tako bi se lahko dodalo stikaloza izbiranje razlinih melodij ali drugih dopolnitev, kot na primer izboljanju resetvezja na pinu MCLR, ki sedaj poskrbi, da se zvok prekine, ko se pritisne tipko inse zane predvajati znova od zaetka, ko se tipko spusti.

    Zakljuek

    eprav na prvi pogled naloga izgleda zahtevna, sploh za nekoga, ki esa takegae n poel, temu ni tako, e se le uporabi vsaj priblino primerna orodja. Brezpravih izkuenj, samo z branjem priloene datoteke s pomojo, sem delujo pro-gram spisal v slabi uri, izdelati vse ostalo, skupaj z dokumentacijo, pa je brez hi-tenja mogoe prej kot v enem tednu.

    Seznam virov:

    SlikeZX Spectrum: http://commons.wikimedia.org/wiki/File:ZX_Spectrum.jpgOstale slike: avtor.

    Primer za zvoni efekt za ZX Spectrum:BASIC ProgrammingSinclair Research Limited 1982by Chris Owen on behalf of Amstrad plc Amstrad plc 1995 - all rights reserved

    Podatki za lanek pridobljeni iz dokumentacije:Podatkovni list PIC12675 http://ww1.microchip.com/downloads/en/devicedoc/41190c.pdfGCBasic 0.9GCBIDE 2.0

    lanek je nastal tudi s pomojo naslednjih programov:Audacity 1.2.4 (zajem zvoka)ExpresSCH 7.0.2 (izris sheme)IrfanView 4.10 in Slikar (obdelava slik)PDF-XChange Viewer 2.0 in FoxIt Reader 3.1.4 (izdelava pdf datoteke)TextMaker 2008 (urejevalnik besedila)Willem Eprom Programmer 0.97 (programiranje mikrokrmilnika)

    Copyright April 2010, Friderik Back

    V primeru ohranitve tega obvestila so brez plaila licennine dovoljeni dobesedno ko-piranje in distribucija celotnega besedila na kateremkoli mediju, ter uporaba infor-macij iz tega lanka v neprofitne namene.

    http://ww1.microchip.com/downloads/en/devicedoc/41190c.pdfhttp://commons.wikimedia.org/wiki/File:ZX_Spectrum.jpg

    Tone 1000, 50060 BEEP .75,7: BEEP .25,8: BEEP .5,7: BEEP .5,5:BEEP .5,3: BEEP.5,2: BEEP 1,0

    Z malo iskanja po Wikipediji (http://en.wikipedia.org/wiki/Piano_key_frequencies) sem sintakso prilagodil za GCBasic, za proenje izkoristi potenciometer, program prevedel v hex datoteko in prekopiral v mikrokrmilnik.