En aquest projecte desenvoluparem un generador de tons amb Arduino Uno. Tindrem botons interfaciats amb l’ONU i cadascun d’ells genera una intensitat de to diferent. La freqüència de to generada per l’ONU és la mateixa a cada intern. És la intensitat del so que canvia amb cada premsa. Aquesta és la manera més senzilla de fer un piano amb Arduino Uno. Consulteu també aquest circuit de piano.
Els tons es poden augmentar fins a 20. Això proporciona la millor variació de to i canvis molt més suaus. La intensitat del to es modifica mitjançant PWM (Pulse Width Modulation). A la gràfica següent es mostra un exemple de PWM.

A PWM, la freqüència del senyal o el període de temps del senyal (Ton + Toff) sempre és constant. Només canvia la relació entre el temps d’ACTIVAR i APAGAR. Per exemple, al segon gràfic de la figura anterior, el temps d’ACTIVACIÓ és del 80% i el temps d’APAGAT és del 20% de la durada completa.
Al tercer gràfic, el temps d’ACTIVACIÓ és del 50% i el temps d’APAGAT és del 50% de la durada completa. Així doncs, en el primer cas tenim una ràtio d’impostos del 80% i en el segon cas tenim una ràtio d’impostos del 20%.
Amb aquest canvi en la relació de treball tenim un canvi en Vrms (valor mitjà quadrat de la tensió), quan aquesta tensió es dóna al brunzidor fa un soroll diferent sempre que hi hagi un canvi en la relació de treball.
Programarem l’ONU per proporcionar un senyal PWM de diferent relació de treball per a cadascun dels botons. Així doncs, tenim a la mà un generador de tons que genera un to diferent amb cada pulsació de botó.
Components necessaris
Maquinari: Arduino Uno, font d'alimentació (5v), condensador de 1000 uF, condensador de 100 nF, timbre, botons (8 peces).
Programari: AURDINO nightly o Atmel studio 6.2
Diagrama de circuits i explicació de treball
El circuit per al generador de tons es mostra al diagrama següent.

Per filtrar el soroll de la tensió de subministrament es col·loquen condensadors a través dels terminals tal com es mostra al diagrama.
El PWM d'Arduino Uno es pot aconseguir en qualsevol dels pins simbolitzats com a "~" a la placa PCB. Hi ha sis canals PWM a l’ONU. Tot i això, no podem utilitzar pins PWM establerts sobre els PINS 0-7, ja que es prefereixen els PINS per a la interfície de botons.
Hi ha una raó per seleccionar PINS 0-7 com a entrades, perquè els PINS 0-7 representen el PORTD del microcontrolador. Per tant, en aquest darrer cas podem obtenir el BYTE complet de PORTD.
Ara per obtenir un PWM de relació de deures diferent, farem servir l'ordre següent.
|
analogWrite (9, VALOR); |
Des de la condició anterior podem obtenir directament el senyal PWM al pin corresponent. El primer paràmetre entre claudàtors és per triar el número de pin del senyal PWM. El segon paràmetre és per a la relació d'escriptura.
El valor PWM d'Arduino Uno es pot canviar de 0 a 255. Amb "0" com a mínim a "255" com a màxim. Amb 255 com a ràtio de treball, obtindrem 5V al PIN9. Si la relació d’impostos és de 125, obtindrem 2,5 V al PIN9. Dividirem la relació de treball de 0-250 entre 8 botons interfaciats a PORTD de l’ONU. Aquí trio 25 increments per a cada botó, però és la vostra elecció.
Amb això tindrem un senyal PWM la relació de treball canvia amb cada botó. En ser donat a buzzer, tenim un generador de tons. El funcionament d’aquest generador de tons basat en Arduino s’explica pas a pas en el codi C que es mostra a continuació.
