DISCLAIMER: Dit project is wat je zou noemen een SMOP, een "simpele kwestie van programmering". Dat betekent dat het is triviaal complexiteit maar lange... dus tenzij je verveling in de mate waar het grenst aan zelfvernietiging tolereren kunt, u dit pijnlijk om te werken vindt aan.
Kennis van assembler, basic elektronica en microcontrollers wordt uitgegaan. Dit is niet eenvoudig, maar het is niet rocket chirurgie hetzij.
De muziekdoos heeft 4 etappes: lied opslag, Sound generatie, versterking en macht.
Het kan een volledige 8 octaven blokgolf muziek, dat is amper 100 notities op een logaritmische schaal van 5 kilohertz tot net onder 20 hertz produceren. De kwaliteit is ongeveer die van oude game consoles of de allereerste midi-geluidskaarten.
De rendering van het geluid:
Er is niet veel om te beschrijven. Het parallelle poort invoer via PORTB accepteert, en een variabele frequentie blokgolf op PORTA, PIN1 uitgangen. Draait op een attiny26l-8pu, op 1 Mhz. dubbelspoor klok snelheid verhogingen merkt een octaaf hoger, handig als je hebt gemaakt een misrekening, zoals ik deed (ik verdubbeld naar 2Mhz, het laatste lied klonk veel beter).
Laag stroomverbruik en eenvoud waren essentieel in dit project, dat is de reden waarom ik niet het ontwerp van een soort van seriële/parallelle DAC om me te geven goede sine wave-uitvoer. Ik was ook niet bereid om de Prullenbak een mp3-speler (de andere ontwerp optie voor dit project) voor iets wat ik adequaat met 10 doen kon $ waard van onderdelen.
Het is zodanig ontworpen dat een tweede AVR rechts ernaast zit, en de nummerinformatie bevat.
Song-opslag:
Een atmega16 verzendt 8-bits getallen uit het PORTA voor set looptijden, elk getal dat overeenkomt met een opmerking over de andere AVR... eigenlijk de eenvoudigste mogelijke geluidsindeling is, er is niet zelfs volumeregeling nu, maar als ik toe te zou ik gebruik maken van PORTB voegen op de chip "lied info" om mij 8 niveaus van volume, elke pin hoog aan de orde gesteld zou leiden tot de "lied tolk" chip te gebruiken een extra pin als output. Ze zouden allemaal verbinding maken met een opamp via een netwerk van weerstand, zodat meer pinnen--> meer spanning op het amp ingang.
Ik gebruikte oorspronkelijk een ander attiny26l-8pu voor opslag van het lied, maar het geheugen (2k) was niet voldoende voor het lied van 313 notities (~ 2800 lijnen van code). De enige werkende chip had ik liegen over ongebruikte een atmega16 was.
Aanbevolen versterking:
Een tweetraps-versterker werd gebouwd met behulp van 2 x N2222 NPN-transistors (darlington paar). Het stuurt de uitvoer naar een piëzo-zoemer. Ik zag sommige zoemers gewerkt, anderen niet... altijd gewerkt voor hoofdtelefoon/luidsprekers.
Diep magische: als u verbinding maakt met pin0, poort A bij de basis van de eerste transistor in het paar darlington, krijg je de audio-uitgang. Als u ook pin7 met de eerste fase van het paar darlington verbinden, wordt de output zeer luid. Ik vermoed dat ik per ongeluk pin 7 gedefinieerd als de uitvoer in de bron... maar het paar darlington is gevoelig genoeg te halen sommige lekkage ergens en het nog steeds werkt prima, maar een beetje rustig. Uiteindelijk heb ik de eerste fase van de darlington paar verbinden met pin0, en de tweede fase op zowel de uitgang van de eerste fase en PIN7. Dit produceerde het optimaal volume voor mijn doeleinden. Zie bewerken in de eerste broncode bestand, in de buurt van het begin.
Vermogen:
Niets bijzonders hier. Een 9v batterij en een spanningsregelaar van TL780.