Documente Academic
Documente Profesional
Documente Cultură
DE SONIDO
Sistema
de
medicin
cinemtico
para
altoparlantes
de
baja
frecuencia.
Noviembre 2015
"Sin
duda
alguna,
la
ciencia
y
la
vida
ampliarn
an
ms,
dentro
de
tres
o
cuatro
aos,
el
horizonte
de
sus
pensamientos
y
de
sus
aspiraciones,
y
si,
despus
de
la
Universidad,
quiere
usted
volver
a
su
idea,
nada
se
lo
impedir"
Fidor
Dostoyevski
-
El
adolescente
Agradecimientos
Agradezco
a
mis
padres
Hugo
Ramn
y
Patricia
Iglesias
por
el
apoyo
incondicional
y
a
mis
hermanos
por
estar
siempre
presentes.
A
mis
amigos,
docentes
y
guas
que
me
ayudaron
a
concretar
este
trabajo.
En
particular
a
Ing.
Francisco
Ruffa,
Ing.
Eduardo
Sacerdoti,
Ing.
Carlos
Maiocchi
y
Alberto
Escria.
A
los
Sres.
Lic.
Anbal
Y.
Jozami,
Lic.
Martn
Kaufmann,
Dr.
Jos
Mara
Berraondo,
Ing.
Carlos
Mundt
e
Ing.
Alejandro
Bidondo.
Agradezco
tambin
a
la
gran
comunidad
online
que
aporta
tiempo
y
dedicacin
a
la
generacin
de
conocimiento
libre
y
gratuito:
GitHub,
ProcessingForum,
StackOverFlow
y
ArduinoForum.
Tabla
de
contenido
Resumen
.......................................................................................................................
III
Abstract
........................................................................................................................
IV
1
Introduccin
............................................................................................................
1
1.1
Fundamentacin
...........................................................................................................
1
1.2
Objetivo
........................................................................................................................
3
1.3
Metodologa
.................................................................................................................
4
- I -
- II -
Resumen
En
el
presente
trabajo
se
expone
el
desarrollo
de
un
sistema
capaz
de
cuantificar
y
digitalizar
la
aceleracin,
velocidad
y
desplazamiento
mecnico
de
un
altoparlante
de
bobina
mvil
de
baja
frecuencia
(20Hz
a
500Hz).
El
sistema
utiliza
un
acelermetro
MPU6050,
un
micro
controlador
ATMega
328
en
una
placa
programadora
Arduino
UNO
y
un
software
dedicado
que
cuantifica
la
aceleracin
en
dominio
temporal
y
calcula
la
velocidad
y
desplazamiento
en
dominio
espectral.
Se
logr
corroborar
una
resolucin
de
0.1mm
en
la
medicin
de
desplazamiento.
El
ancho
de
banda
de
trabajo
es
de
aproximadamente
500Hz
con
una
resolucin
espectral
de
0.12Hz.
La
principal
limitacin
se
encuentra
en
el
dispositivo
MEMS,
por
lo
cul
se
decidi
trabajar
de
forma
que
este
sea
fcilmente
reemplazable
en
un
futuro.
- III -
Abstract
In
this
paper
the
development
of
a
system
for
measuring
the
acceleration,
speed
and
mechanical
displacement
of
a
low-frequency
moving
coil
(20Hz
to
500Hz
)
loudspeaker
is
presented.
The
system
uses
a
MPU6050
accelerometer,
micro
controller
ATMega
328
in
Arduino
UNO
programming
board
and
dedicated
software
that
quantifies
the
acceleration
in
time
domain
and
calculates
the
velocity
and
displacement
in
spectral
domain.
The
displacement
measurement
resolution
was
prooved
to
be
0.1mm
and
the
spectral
resolution
is
0.12Hz.
The
main
limitation
of
the
system
is
caused
by
the
MEMS
device,
therefore,
it
was
desing
so
the
accelerometer
can
be
easily
replaced
in
the
future.
- IV -
1 Introduccin
1.1 Fundamentacin
El
desarrollo
de
sistemas
de
refuerzo
sonoro
es
una
tarea
compleja
e
interdisciplinaria.
Las
mediciones,
ya
sean
acsticas,
elctricas
o
mecnicas,
son
un
punto
clave
del
proceso
que
facilita
la
toma
de
decisiones.
Hoy
en
da,
con
el
avance
de
la
amplificacin
Clase
D
y
los
procesadores
digitales
de
seales
(DSP),
se
observa
una
clara
tendencia
al
uso
de
equipos
auto-amplificados
[1].
Es
decir,
tanto
el
amplificador
como
el
procesador
forman
parte
del
gabinete
y
es
tarea
del
diesador
optimizar
el
funcionamiento
de
cada
uno
de
los
componentes.
Las
unidades
modernas
de
amplificacin
externas
tambin
incluyen
procesadores
digitales
fcilmente
programables.
Esto
facilita
aplicar
ecualizaciones
y
procesos
dinmicos
a
cada
uno
de
sus
canales.
De
esta
manera
se
obtiene
un
control
individual
de
cada
gabinete
en
sistemas
complejos
de
refuerzo
sonoro.
El
control
individual
permite
la
utilizacin
de
procesadores
de
seal
dinmicos
individuales,
cuyo
objetivo
es
proteger
a
los
altoparlantes
y
garantizar
la
calidad
del
audio
ante
seales
de
excesivo
nivel.
Es
sabido
que
un
altoparlante
puede
daarse
de
forma
permanente
ante
un
exceso
de
temperatura
en
su
bobina
mvil,
relacionado
con
el
valor
cuadrtico
medio
(RMS)
de
la
seal
que
lo
excita;
o
por
un
exceso
de
excursin
del
diafragma,
relacionado
con
los
transitorios
de
la
seal
[2].
Adems,
elevados
niveles
de
seal
pueden
generar
notorias
alinealidades
en
el
audio
resultante
[3].
El
correcto
uso
de
procesadores
puede
evitar
dichas
fallas.
Esto
constituye
una
importante
herramienta
de
diseo
para
el
fabricante.
No
slo
le
permite
definir
un
nivel
mximo
de
potencia
sino
que
puede
bloquear
el
sistema
e
imposibilitar
al
usuario
a
exceder
dicho
nivel.
- 1 -
Ahora
bien,
para
definir
los
mximos
niveles
tolerables
son
necesarias
herramientas
de
medicin
precisas.
Si
bien
las
especificaciones
tcnicas
de
los
altoparlantes
detallan
niveles
mximos
de
funcionamiento,
estos
son
obtenidos
bajo
condiciones
de
laboratorio
[4,
5]
que
no
representan
su
situacin
final
de
uso
y,
por
lo
tanto,
no
brindan
suficiente
informacin
al
fabricante
de
sistemas
de
refuerzo
sonoro.
Son
necesarias
herramientas
complementarias
que
brinden
la
informacin
faltante.
Por
otro
lado,
el
diseo
estructural
del
gabinete
debe
satisfacer
varias
condiciones.
Una
de
las
ms
importantes
es
que
no
disipe
energa
ni
genere
ruidos
por
vibraciones.
La
correcta
colocacin
de
refuerzos
logra
evitar
modos
normales
de
vibracin
y
radiacin
sonora
en
los
laterales
[6].
Sin
embargo,
la
deteccin
de
este
tipo
de
problema
no
es
tan
simple
como
su
solucin
dado
que
se
torna
necesario
analizar
mecnicamente
los
laterales
del
gabinete.
Por
ltimo,
ciertos
descriptores
acsticos
son
extremadamente
difciles
de
obtener
sin
un
recinto
apropiado,
en
especial
la
respuesta
en
frecuencia
por
debajo
de
los
100Hz
o
el
nivel
mximo
de
presin
sonora
que
el
parlante
es
capaz
de
desarrollar.
En
muchos
casos
la
medicin
acstica
se
torna
impracticable
y
es
necesario
analizar
el
aspecto
electro-
mecnico
del
transductor
para
predecir
su
comportamiento
acstico.
Es
por
esto
que
se
propone
el
desarrollo
una
herramienta
que
permita
la
medicin
del
comportamiento
cinemtico
de
un
altoparlante
de
bobina
mvil.
Con
esa
informacin
el
fabricante
de
gabinetes
podr
conocer
el
comportamiento
del
altoparlante
en
su
situacin
real
de
uso
y
as
decidir
el
nivel
de
limitacin
de
potencia
que
proteger
a
su
sistema
de
eventuales
fallas
sin
sacrificar
prestaciones.
Al
tratarse
de
un
instrumento
para
medir
vibraciones,
tambin
permitir
el
estudio
estructural
de
las
partes
de
un
gabinete.
Adems
brindar
informacin
sobre
el
comportamiento
del
diafragma
en
baja
frecuencia
con
lo
cul
ser
posible
calcular
parmetros
como
SPL
mximo
o
respuesta
en
frecuencia
sin
la
necesidad
de
un
campo
acstico
especfico.
- 2 -
1.2 Objetivo
Es
objetivo
principal
de
este
trabajo
desarrollar
un
sistema
de
medicin
del
comportamiento
cinemtico
de
altoparlantes
de
bobina
mvil
diseados
para
radiar
en
baja
frecuencia.
Para
lograrlo
se
propone
el
uso
de
un
acelermetro
capaz
de
generar
una
seal
elctrica
proporcional
a
la
aceleracin
del
diafragma.
La
seal
es
digitalizada
por
un
micro
controlador
y
enviada
va
USB
a
una
computadora
porttil
estndar
(ver
figura
1).
Luego,
con
un
software
especficamente
desarrollado
en
la
plataforma
de
programacin
JAVA,
se
observan
y
analizan
los
resultados
entregados
por
el
medidor.
El
uso
de
una
plataforma
de
programacin
libre
y
gratuita
garantiza
el
acceso
y
usabilidad
del
sistema
en
cualquier
ordenador
comercial
que
cuente
con
puerto
USB.
permitir
obtener
una
curva
de
transferencia
en
la
que
se
reflejarn
las
caractersticas
del
sistema
altoparlante-gabinete.
Luego
se
podr,
entre
otras
cosas,
obtener
la
fuerza
electromotriz
inducida
por
el
campo
magntico,
medir
distorsin,
o
respuesta
en
frecuencia
sin
la
necesidad
de
una
cmara
anecoica.
As
mismo,
se
espera
generar
una
til
herramienta
para
la
enseanza.
1.3 Metodologa
La
etapa
cero
de
este
trabajo
consisti
en
el
relevamiento
de
las
medidas
y
caractersticas
de
los
altoparlantes
comerciales.
En
base
a
los
datos
obtenidos
se
procedi
al
diseo
del
sistema
de
medicin.
La
etapa
uno
del
trabajo
consisti
en
la
adquisicin
de
los
materiales
necesarios
y
la
construccin
del
medidor.
A
grandes
rasgos,
los
elementos
necesarios
para
el
desarrollo
son:
- 4 -
- 5 -
Figura
2
-
Altoparlante
de
bobina
mvil
Imagen
tomada
de
www.bcspeakers.com
Altura
del
entrehierro
Entrehierro
Dado
que
este
trabajo
centra
su
atencin
en
el
movimiento
mecnico
del
diafragma,
se
pasan
a
detallar
los
factores
que
afectan
directamente
al
desplazamiento.
2.1.1 Resonancia
y
factor
de
amortiguamiento
(Q)
Las
partes
mviles
del
altoparlante
conforman
un
sistema
masa-resorte
amortiguado
(ver
fig.
4).
La
masa
del
sistema
est
compuesta
por
el
diafragma
y
la
bobina
mvil,
mientras
que
el
resorte
lo
conforman
la
suspensin
superior
y
la
araa.
Para
generar
sonido,
a
este
sistema
se
le
aplica
una
fuerza
determinada
por:
la
corriente
i
que
circula
en
la
bobina,
la
longitud
l
del
bobinado
y
la
densidad
de
flujo
magntico
B
que
existe
en
el
entrehierro
(ver
ec.
1).
= .
(1)
- 6 -
Figura
4
-
Sistema
masa-resorte
amortiguado
Tanto
el
resorte
como
la
masa
son
elementos
capaces
de
almacenar
energa.
Cuando
se
aplica
una
fuerza
F
a
un
resorte
este
se
comprime
una
distancia
x
y
obtiene
energa
potencial,
la
relacin
entre
la
fuerza
y
la
compresin
queda
establecida
por
la
constante
elstica
del
resorte
k
(ver
ec.
2).
() = . = .
!"(!)
!"
(2)
Por
otro
lado,
al
aplicar
fuerza
a
una
masa
esta
acelera
y
adquiere
velocidad,
o
sea,
energa
cintica,
y
requiere
de
una
fuerza
igual
y
opuesta
para
volver
al
reposo
(ver
ec.
3).
() = . = . ()
(3)
Por
lo
tanto,
ante
la
presencia
de
una
fuerza
externa,
uno
de
los
elementos
del
sistema
adquiere
energa
cintica
mientras
que
el
otro
adquiere
energa
potencial,
es
decir,
cuando
el
resorte
se
comprime
o
expande
adquiere
la
fuerza
necesaria
para
empujar
a
la
masa
y
otorgarle
velocidad;
y
cuando
la
masa
tiene
velocidad
posee
la
energa
necesaria
para
comprimir
o
expandir
el
resorte.
Naturalmente,
este
ida
y
vuelta
de
energa
sucede
en
determinado
perodo
de
tiempo,
el
cual
depende
de
la
elasticidad
del
resorte
y
de
la
cantidad
de
masa.
Este
perodo
es
el
que
define
la
frecuencia
de
resonancia
del
sistema.
En
un
parlante,
la
frecuencia
de
resonancia
viene
dada
por
la
masa
del
diafragma
y
la
elasticidad
de
la
suspensin
(ver
ec.
4).
! =
!
!
(4)
- 7 -
Ahora
bien,
la
suspensin
sufre
compresin
y
expansin
repetidas
veces,
lo
cual
genera
friccin
viscosa
en
el
material
elstico
y
consume
energa.
Esta
energa
es
puramente
activa.
Desde
el
punto
de
vista
mecnico,
el
amortiguador
de
la
suspensin
es
el
nico
elemento
que
atena
la
resonancia
del
diafragma.
La
fuerza
que
opone
un
amortiguador
se
relaciona
linealmente
con
la
velocidad
v
por
medio
de
la
constante
de
resistencia
viscosa
del
amortiguador
c
(ver
ec.
5).
() = . ()
(5)
Por
otro
lado
el
altoparlante
tambin
se
comporta
como
un
generador,
es
decir,
el
movimiento
de
la
bobina
sumergida
en
el
campo
magntico
genera
una
diferencia
de
potencial
e
entre
sus
bornes
que
depende
de
la
densidad
de
flujo
magntico
B,
la
longitud
l
y
la
velocidad
v
de
la
bobina
(ver
ec.
6
y
fig.
5).
Cuando
el
circuito
est
cerrado,
es
decir,
el
parlante
en
funcionamiento,
la
diferencia
de
potencial
e
genera
una
corriente
que
circula
en
sentido
opuesto
a
la
que
origin
el
desplazamiento,
e
interacta
con
el
imn
generando
una
fuerza
electromotriz
reflejada
que
se
opone
al
desplazamiento
del
diafragma.
El
valor
de
resistencia
elctrica
de
la
bobina
mvil
Re
influye
directamente
sobre
valor
de
dicha
fuerza;
a
mayor
Re
menor
cantidad
de
corriente
se
genera,
y
menor
es
la
fuerza
reflejada.
= .
(6)
Figura
5
-
(Izq)
fuerza
F
generada
por
la
circulacin
de
corriente
i.
(Der)
diferencia
de
potencial
e
generada
cuando
el
conductor
se
mueve
a
velocidad
v.
Esta
oposicin,
junto
con
la
resistencia
viscosa
de
la
suspensin,
son
los
elementos
resistivos
que
controlan
la
resonancia
del
altoparlante
y
definen
el
factor
de
calidad
Q.
- 8 -
!!" !!!"
Q !" = !
!!" !!!"
!!"
!.! !
!!
(7)
(8)
.!
! = ! !"!!!"
(9)
!"
!"
! .!
(10)
utilizar
la
energa
de
la
cara
posterior
del
diafragma
para
excitar
el
resonador.
Esto
modifica
considerablemente
el
comportamiento
del
altoparlante.
El
diafragma
deja
de
tener
mxima
excursin
en
su
frecuencia
de
resonancia
porque
comienza
a
actuar
como
amortiguador
del
resonador
de
Helmholtz.
De
hecho,
si
el
gabinete
se
encuentra
correctamente
diseado,
la
excursin
en
la
frecuencia
de
resonancia
es
mnima.
2.1.3 Alinealidades
Las
ecuaciones
planteadas
en
las
secciones
superiores
describen
el
comportamiento
de
un
altoparlante
para
seales
de
bajo
nivel.
Cuando
se
aplican
seales
de
alto
nivel
muchos
de
los
parmetros
considerados
constantes
se
vuelven
variables
y
el
comportamiento
del
sistema
deja
de
ser
lineal,
esto
implica
que
el
nivel
en
la
seal
de
elctrica
no
es
proporcional
al
desplazamiento.
A
continuacin
se
detallan
las
alinealidades
generadas
por
la
excursin
del
diafragma.
2.1.3.1 Producto
B.l
Cuando
la
bobina
se
desplaza
hacia
fuera
o
hacia
adentro
del
circuito
magntico,
un
segmento
queda
fuera
del
entrehierro
y,
en
consecuencia,
interacta
con
las
lneas
de
flujo
dispersas
existentes
en
los
bordes
del
entrehierro.
Adems,
la
longitud
de
alambre
atravesado
por
el
campo
magntico
no
permanece
constante
con
el
desplazamiento.
En
consecuencia,
el
producto
de
B.l
vara
en
funcin
del
desplazamiento
del
diafragma
[11,
12,
13,
14]
(ver
fig.
6).
Figura
6
Fuerza
magneto
motriz
(B.l)
en
funcin
del
desplazamiento
del
diafragma
(x).
Modelo
terico.
Imagen
tomada
de
[12].
- 11 -
- 12 -
Figura
7
Diagrama
de
deformacin
y
relacin
no
lineal
entre
fuerza
vs.
desplazamiento.
Imagen
tomada
de
[11]
Figura
8
Rigidez
de
la
suspensin
(K)
en
funcin
del
desplazamiento
del
diafragma
(x).
Se
muestran
la
rigidez
de
la
araa,
de
la
suspensin
superior
y
la
suma
de
ambas.
Imagen
tomada
de
[11].
En
la
figura
8
se
observa
que
la
suspensin
tiene
un
mnimo
de
rigidez
entre
los
2mm
de
excursin
y
se
torna
ms
rgida
cuando
abandona
el
entrehierro
tanto
hacia
fuera
como
hacia
adentro.
Adems,
se
observa
que
la
variacin
no
es
simtrica.
En
este
caso,
la
- 13 -
Figura
9
Inductancia
de
bobina
mvil
en
funcin
del
desplazamiento.
Imagen
tomada
de
[12]
- 14 -
Figura
10
Curva
de
impedancia
con
altoparlante
libre
(X=0mm),
con
altoparlante
sujeto
rgidamente
7mm
hacia
fuera
(X=+7mm)
y
con
altoparlante
sujeto
rgidamente
7mm
hacia
adentro
(X=-7mm).
Imagen
tomada
de
[11]
- 15 -
frecuencia
para
grandes
amplitudes.
Tambin,
las
vibraciones
de
las
paredes
del
gabinete
absorben
parte
de
la
energa
generada
por
el
transductor.
Todos
estos
factores
modifican
el
factor
de
amortiguamiento
del
sistema
completo.
Por
otro
lado,
el
aire
deja
de
comportarse
linealmente
con
presiones
cercanas
a
los
150
dB
SPL,
las
cuales
son
posibles
en
un
gabinete
de
bajas
frecuencias
si
el
volumen
no
es
suficientemente
grande.
Si
se
trata
de
un
gabinete
ventilado,
elevadas
velocidades
de
volumen
aumentan
las
prdidas
en
el
tubo
de
sintona
y
agregan
alinealidades
en
el
comportamiento
del
aire
[15,
16,
17].
2.1.4 Excursin
en
resonancia
Cuando
el
altoparlante
resuena,
su
desplazamiento
es
consecuencia
principalmente
del
intercambio
de
energa
reactiva
que
realizan
la
masa
del
diafragma
y
la
suspensin,
el
motor
magntico
nicamente
aporta
la
energa
suficiente
para
compensar
las
prdidas
en
la
suspensin.
Debido
a
que
el
desplazamiento
es
mximo,
la
velocidad
de
la
bobina
al
atravesar
el
entrehierro
tambin
es
mxima.
Esto
provoca
que
la
fuerza
electromotriz
reflejada
(ver
ec.
6)
sea
mxima
y
la
impedancia
del
altoparlante
alcance
un
pico.
Por
otro
lado,
debido
a
que
el
sistema
en
resonancia
es
mayoritariamente
reactivo,
el
desplazamiento
se
encuentra
90
grados
desfasado
respecto
a
la
corriente,
por
lo
tanto,
cuando
el
diafragma
alcanza
un
pico
positivo
(se
encuentra
fuera
del
entrehierro
y
el
producto
B.l
es
mnimo)
la
corriente
es
nula,
y
cuando
el
parlante
atraviesa
el
punto
de
excursin
cero
(B.l
mximo)
la
corriente
es
mxima.
Esto
resulta
en
un
mximo
de
fuerza
electromotriz
que
compensa
los
mximos
de
fuerza
electromotriz
reflejada.
Entonces,
en
resonancia,
el
altoparlante
puede
desplazarse
hasta
los
lmites
de
la
suspensin
sin
perder
su
linealidad
por
variaciones
electromagnticas.
En
la
figura
11
se
puede
observar
la
corriente
en
la
bobina
en
funcin
del
tiempo
con
lnea
slida
y
el
desplazamiento
del
diafragma
en
funcin
del
tiempo
con
lnea
punteada.
Se
observa
el
desfasaje
de
90
entre
desplazamiento
y
corriente.
Obsrvese
que
las
deformaciones
en
la
funcin
de
corriente
coinciden
con
el
punto
cero
de
excursin,
ese
es
- 17 -
Figura
11
Corriente
y
desplazamiento
de
la
bobina
en
funcin
del
tiempo
para
f=fs.
Imagen
tomada
de
[12]
Por
otro
lado,
debido
a
que
la
impedancia
elctrica
es
mxima
para
la
frecuencia
de
resonancia,
cualquier
componente
armnico
de
la
fundamental
de
la
seal
elctrica
ve
una
impedancia
proporcionalmente
menor
que
le
permite
desarrollar
corriente
y,
en
consecuencia,
generar
distorsin
armnica.
Este
efecto
se
conoce
como
supresin
de
la
fundamental.
Como
consecuencia,
se
puede
deducir
que
la
corriente
elctrica
y
el
desplazamiento
poseen
distorsin
armnica
en
la
frecuencia
de
resonancia,
sin
embargo,
no
tienen
relacin
entre
sus
magnitudes.
As
mismo,
la
mayor
proporcin
de
distorsin
resultante
en
resonancia
es
causada
por
la
suspensin
mecnica,
la
cul
llega
a
sus
lmites
de
estiramiento.
La
accin
del
motor
es
mnima
debido
al
pico
de
impedancia
y
otra
parte
de
la
distorsin
es
causada
por
la
supresin
de
la
fundamental.
2.1.5 Lmites
fsicos
El
altoparlante
presenta
dos
tipos
de
lmites
fsicos.
Uno
corresponde
al
lmite
trmico
y
otro
al
lmite
de
desplazamiento.
El
lmite
trmico
queda
definido
por
las
capacidades
disipativas
de
calor
que
posea
el
sistema.
La
bobina
mvil
es
una
fuente
de
calor
que
debe
ser
disipada
por
las
distintas
- 18 -
partes
del
altoparlante
para
no
deteriorarse
ni
deteriorar
las
piezas
que
la
rodean.
Este
lmite
est
relacionado
al
valor
cuadrtico
medio
de
la
seal
que
se
ingresa
al
altoparlante.
Por
otro
lado,
existe
un
lmite
de
excursin
mecnico
definido
por
dos
factores,
el
lmite
de
estiramiento
de
la
suspensin
antes
de
la
destruccin,
y
la
distancia
entre
la
bobina
mvil
y
la
base
del
circuito
magntico.
Superado
este
lmite
suele
suceder
la
destruccin
mecnica
del
altoparante.
Adems,
la
longitud
de
la
bobina
mvil
tiene
influencia
sobre
este
lmite.
Cuando
la
bobina
abandona
el
entrehierro
hacia
delante
es
posible
que
se
desplace
del
centro
del
entrehierro
y
no
pueda
volver
a
ingresar
en
l.
Este
suceso
se
conoce
en
la
jerga
como
cono
clavado
y
suele
suceder
en
parlantes
de
baja
frecuencia
que
son
sobre-exitados.
Una
bobina
corta
es
ms
propensa
a
salir
por
completo
del
entrehierro
que
una
bobina
larga,
sin
embargo,
una
bobina
larga
es
ms
propensa
a
chocar
contra
la
base
del
circuito
magntico
y
generar
un
sonido
muy
notorio
que
puede
deteriorarla.
Por
ltimo,
existe
otro
lmite
reconocido
por
la
normativa
internacional
[4,
5]
llamado
Xmax.
Se
define
como
el
punto
a
partir
del
cual
la
alinealidad
del
motor
magntico
es
mayor
al
10%.
La
linealidad
se
puede
medir
como
distorsin
o
desviacin
en
la
funcin
de
transferencia.
Se
obtiene
mediante
un
ensayo
de
potencia
con
el
altoparlante
empotrado
en
un
bafle
infinito
y
a
frecuencia
de
resonancia.
Tal
como
plantea
el
autor
en
[12],
tanto
la
definicin
como
el
mtodo
de
medicin
dan
lugar
a
ambigedades.
En
la
normativa
se
realizan
suposiciones
incorrectas
y
se
deja
librado
a
criterio
del
fabricante
decisiones
que
pueden
afectar
considerablemente
el
resultado
final.
A
diferencia
del
lmite
trmico,
el
lmite
de
excursin
est
relacionado
a
los
transitorios
de
la
seal
y
se
define
en
frecuencias
bajas,
cercanas
a
la
resonancia.
Esto
es
porque
el
desplazamiento
del
diafragma
se
reduce
a
un
rango
de
-12dB
por
octava
a
partir
de
la
resonancia.
A
medida
que
aumenta
la
frecuencia,
la
masa
del
diafragma
junto
con
la
impedancia
de
la
bobina
mvil
comienzan
a
limitar
el
desplazamiento.
- 19 -
!! !! !!!
!
(10)
!! !! ! !"!
!
!!"! !! ! ! !!
!
(11)
2.1.7 Xmax
Las
primeras
especificaciones
de
Xmax
se
obtuvieron
en
base
a
la
geometra
del
altoparlante,
tales
como
la
longitud
de
la
bobina
y
las
capacidades
de
movimiento
del
altoparlante.
Por
supuesto,
estos
mtodos
no
contemplan
las
alinealidades
que
suceden
previas
a
los
lmites
mecnicos.
En
1984
AES
publica
una
serie
de
recomendaciones
para
especificar
altoparlantes
[4]
entre
las
cuales
se
propone
una
definicin
de
Xmax
relacionada
con
la
alinealidad
del
sistema.
Hasta
el
da
de
hoy,
se
presupone
que
las
especificaciones
encontradas
en
un
altoparlante
comercial
responden
a
dicha
normativa.
AES
define
Xmax
como
el
punto
a
partir
del
cual
la
alinealidad
del
motor
magntico
es
mayor
al
10%
y
especifica
que
la
alinealidad
se
puede
medir
como
distorsin
armnica
total
(THD)
o
desviacin
en
la
funcin
de
transferencia.
Tambin
exige
que
la
medicin
se
realice
con
el
parlante
empotrado
en
un
bafle
y
en
frecuencia
de
resonancia.
No
brinda
especificacin
acerca
de
qu
instrumentacin
usar
para
medir
el
desplazamiento.
El
valor
de
Xmax
se
expresa
en
unidad
mtrica
(milmetros)
y
no
se
especifica
el
nivel
de
seal
necesario
para
llegar
a
dicho
valor.
A
este
punto,
la
especificacin
slo
sirve
para
estimar
el
mximo
volumen
de
aire
desplazado
por
el
parlante.
Como
ya
se
mencion
en
las
secciones
superiores,
la
excursin
y
alinealidades
del
altoparlante
en
la
frecuencia
de
resonancia
se
deben
principalmente
a
la
suspensin
mecnica,
adems
(y
a
modo
de
ejemplo),
cuando
el
altoparlante
es
empotrado
en
un
gabinete
sintonizado,
su
excursin
en
resonancia
pasa
a
ser
mnima
mientras
que
aumenta
considerablemente
para
frecuencias
anteriores.
Del
mismo
modo,
la
nica
forma
que
el
fabricante
puede
averiguar
el
nivel
de
tensin
necesario
para
excursionar
hasta
el
valor
de
Xmax,
es
realizando
una
medicin
de
desplazamiento
con
el
parlante
en
su
situacin
final
de
uso.
Varios
mtodos
fueron
desarrollados
para
la
medicin
del
desplazamiento
del
diafragma
y
el
establecimiento
de
las
distancias
mximas
tolerables.
Entre
ellos
se
destacan
los
sistemas
de
medicin
mecnica
con
y
sin
contacto,
ensayos
destructivos
e
incluso
predicciones
mediante
modelos
matemticos.
- 21 -
- 23 -
Figura
12
Medidor
por
triangulacin
difusa.
Imagen
tomada
de
[25]
- 24 -
Figura
13
Medidor
por
triangulacin
especular.
Imagen
tomada
de
[25]
Figura
14
Medidor
por
intensidad
de
luz.
Imagen
tomada
de
[24]
- 25 -
Figura
15
Potencia
lumnica
normalizada
(Pn)
en
funcin
de
la
distancia
normalizada
(dn),
en
donde
dn=1
corresponde
al
punto
de
potencia
mxima.
Imagen
tomada
de
[24]
mV/G.
Otros
cuentan
con
conversores
AD
integrados
y
la
relacin
queda
establecida
por
el
rango
de
trabajo
y
el
numero
de
bits.
Al
ser
sistemas
mecnicos
con
masas
y
elementos
flexibles
poseen
una
frecuencia
de
resonancia
que
limita
su
rango
de
trabajo
lineal.
Los
que
cuentan
con
conversores
AD
tienen,
adems,
un
rango
definido
por
su
frecuencia
de
muestreo.
El
peso
final
de
un
acelermetro
ronda
los
5
gramos.
Es
posible
encontrarlos
en
plaquetas
de
desarrollo
o
como
integrado
individual.
Figura
16
-
MPU6050
en
placa
de
desarrollo
y
ADXL190
en
chip
SMD
a dt ; x =
a dt dt (12)
- 27 -
!"# =
!"#
; =
!!!"# !"#(!")
; !"# =
!!
!"#
(14)
! (15)
= 1189
!
!!
= 121 [] (16)
Dentro
de
la
zona
lineal,
las
aceleraciones
mximas
que
pueden
conseguir
los
altoparlantes
de
baja
frecuencia
rondan
los
150
G.
2.4 Antecedentes
Numerosos
autores
han
estudiado
el
comportamiento
cintico
del
altoparlante.
Con
la
aparicin
de
la
tecnologa
lser
surgieron
diversos
sistemas
de
medicin
pticos.
El
primero
encontrado
fue
realizado
en
el
Instituto
Tecnolgico
de
Georgia
por
J.
E.
Weaver,
W.
M
en
1978
[28].
Mediante
un
arreglo
de
lentes
y
espejos
se
proyectan
dos
haces
de
luz
sobre
el
guardapolvo
de
un
altoparlante.
Los
ngulos
de
incidencia
lumnica
son
perfectamente
opuestos.
En
la
bisectriz
de
ambos
haces
se
coloca
una
lente
de
proyeccin
focal
que
concentra
la
reflexin
en
una
pantalla
semi-transparente.
La
proyeccin
consta
de
dos
lneas
horizontales
que
pueden
medirse
con
un
calibre
milimtrico
y
as,
mediante
trigonometra,
obtener
el
desplazamiento
del
diafragma.
Figura
17
Arreglo
ptico
para
realizar
la
medicin.
Imagen
tomada
de
[28]
- 29 -
Figura
18
Haces
proyectados
en
la
pantalla
semi-transparente.
Izq.
sin
componente
de
DC,
der.
Con
componente
de
DC.
Imagen
tomada
de
[28]
Al
ser
una
medicin
sin
contacto,
cuenta
con
la
ventaja
de
no
alterar
el
elemento
a
medir.
Sin
embargo
es
netamente
de
laboratorio
y
limitada.
La
seal
utilizada
es
siempre
senoidal
y
los
valores
medidos
son
nicamente
de
pico,
por
lo
que
no
permite
visualizar
alinealidades.
A
medida
que
la
tecnologa
baj
sus
costos
se
desarrollaron
instrumentos
confiables
de
medicin
que
fueron
utilizados
para
el
estudio
del
altoparlante.
La
gran
mayora
de
los
autores
opt
por
utilizar
medidores
comerciales.
Klippel
[29]
desarroll
un
sistema
de
medicin
con
un
vibrmetro
lser
por
triangulacin
difusa.
El
medidor
utilizado
es
similar
al
OADM
20I6441/S14F
de
la
marca
BraumerTM.
Este
sensor
tiene
un
costo
aproximado
de
U$S
1.500,00-
en
el
mercado
internacional.
Figura
19
Medidor
de
distancia
por
triangulacin
difusa
marca
Braumer.
- 30 -
- 31 -
Por
otro
lado,
tambin
es
posible
encontrar
altoparlantes
ovalados
que
se
utilizan
principalmente
en
la
industria
automotriz
y
en
productos
electrnicos
de
consumo,
por
ejemplo:
televisores.
Los
tamaos
se
especifican
con
los
dos
semi-ejes
que
conforman
el
valo.
Por
ejemplo:
7x10.
El
material
ms
utilizado
en
la
fabricacin
de
diafragmas
es
el
papel
prensado
o
cartn.
Sin
embargo,
tambin
los
hay
hechos
de
plstico
polipropileno,
aluminio,
kevlar,
fibra
de
carbn
o
materiales
compuestos.
En
lneas
generales,
los
materiales
utilizados
buscan
optimizar
la
relacin
entre
rigidez
y
peso.
Se
pretende
mucha
rigidez
con
poco
peso.
El
color
y
brillo
es
variado.
Los
diafragmas
de
papel
suelen
ser
color
negro
mate,
aunque
tambin
es
posible
observar
negro
brillante.
El
brillo
lo
genera
el
mismo
material
o
la
aplicacin
de
protectores
contra
agua.
Tambin
se
pueden
encontrar
parlantes
blancos
o
de
colores.
El
guardapolvo
puede
ser
cncavo
o
convexo
y
generalmente
est
hecho
del
mismo
material
que
el
diafragma.
En
los
parlantes
coaxiales
no
existe
guardapolvo
ya
que
el
radiador
de
alta
frecuencia
cubre
buena
parte
del
frente.
Las
partes
mviles
del
parlante
pueden
pesar
desde
3
hasta
300
gramos
aproximadamente.
3.2 Medidor
Se
describen
los
dos
sistemas
de
medicin
probados.
3.2.1 Requerimientos
del
sistema
de
medicin
Para
cumplir
con
los
objetivos
planteados,
el
sistema
debe
ser
capaz
de
satisfacer
los
siguientes
requerimientos.
Se
genera
luz
infrarroja
por
medio
de
un
diodo
emisor
de
luz
(IR
LED).
La
luz
se
refleja
sobre
un
rea
pequea
del
guardapolvo
de
un
altoparlante
y
es
captada
por
un
fototransistor.
A
mayor
distancia
del
diafragma
menor
ser
la
intensidad
del
reflejo.
El
fototransistor
elegido
fue
el
BPX43-4
manufacturado
por
Siemens
(ver
fig.
20).
Es
sensible
a
un
ancho
de
banda
estrecho
y
es
direccional.
Esto
favorece
la
inmunidad
a
luces
exteriores
(ruido).
Cuenta
adems
con
un
terminal
de
base
que
permite
polarizacin
elctrica.
Y
por
ltimo,
en
su
hoja
de
especificaciones
se
destaca
por
su
extensa
linealidad.
Figura
20
-
Fototransistor
BPX43-4
-
33
-
Con
este
circuito
se
realizaron
pruebas
sobre
un
parlante
de
6
con
diafragma
de
papel
prensado
color
negro
mate.
El
objetivo
fue
encontrar
la
relacin
entre
desplazamiento
y
tensin
de
salida.
Figura
22
Ensayo
de
medicin
V"out"Vs."Distancia"
7$
6,9$
V"Out"
6,8$
6,7$
6,6$
6,5$
6,4$
6,3$
0$
10$
20$
30$
40$
50$
Dist."[mm]"
60$
70$
80$
90$
100$
Se
observa
una
curva
similar
a
la
descripta
en
la
fig.
15.
El
flanco
ascendente
finaliza
a
los
25mm
de
distancia,
hasta
ese
punto
el
fototransistor
se
encuentra
parcialmente
iluminado.
A
partir
de
los
25
mm
est
completamente
iluminado
y
la
intensidad
comienza
a
decaer
de
forma
cuadrtica.
El
flanco
ascendente
queda
delimitado
en
25mm
mximo.
Esto
no
es
suficiente
para
medir
la
excursin
pico
a
pico
de
un
parlante
de
baja
frecuencia.
Adems
el
sensor
debera
colocarse
peligrosamente
prximo
al
parlante
y
podran
daarse
mutuamente.
- 34 -
Con
una
curva
de
correccin
es
posible
utilizar
el
flanco
descendente
desde
25
mm
hasta
60
mm
aproximadamente.
Se
podra
colocar
el
sensor
a
40mm
del
altoparlante
y
obtener
15
mm
de
medicin.
An
as
es
insuficiente
para
altoparlantes
de
baja
frecuencia.
Por
otro
lado
la
medicin
posee
dos
grandes
conflictos.
El
coeficiente
de
reflexin
del
material
define
la
sensibilidad
del
sistema,
por
lo
tanto
sera
necesaria
una
calibracin
previa
a
cada
medicin.
Adems,
cualquier
variacin
milimtrica
en
el
posicionamiento
del
sensor
durante
la
medicin
puede
generar
errores
significativos,
las
variaciones
de
presin
y
velocidades
de
volumen
de
aire
que
genera
una
altoparlante
son
ms
que
suficiente
para
volver
la
medicin
impracticable.
3.2.3 Acelermetro
El
uso
de
un
acelermetro
no
es
una
solucin
ideal
debido
a
que
agrega
masa
al
sistema
y,
por
lo
tanto,
modifica
su
comportamiento.
Sin
embargo,
en
diafragmas
con
masa
mecnica
sufiecientemente
grande
el
error
se
puede
considerar
despreciable.
Sin
embargo,
respecto
a
cualquier
sistema
ptico,
un
acelermetro
posee
la
ventaja
de
ser
un
sistema
inercial.
Es
decir,
no
importa
la
posicin
relativa
entre
el
sensor
y
el
dispositivo
a
medir.
Un
sistema
de
sub-woofer
profesional
genera
ms
de
120dB
SPL
de
presin
pico.
Esto
es
suficiente
para
provocar
vibraciones
en
estructuras
cercanas
y
hacer
vibrar
la
carcasa
de
cualquier
dispositivo
de
medicin
cercano
afectando
los
resultados.
Si
el
dispositivo
se
encuentra
slidamente
unido
al
transductor
este
error
se
minimiza.
El
MEMS
elegido
es
el
MPU-6050
del
fabricante
InvenSenseTM
montado
en
una
placa
de
desarrollo
GY-521.
Se
trata
de
una
unidad
de
procesamiento
cintico
que
cuenta
con
giroscopio
y
acelermetro
de
3
ejes
integrados
en
un
nico
chip.
El
acelermetro
tiene
un
rango
de
medicin
configurable
que
puede
programarse
en
2,
4,
8
y
16
G.
Posee
un
conversor
A/D
con
frecuencia
de
muestreo
de
1kHz
y
16bits
de
resolucin.
Se
comunica
por
medio
del
protocolo
I2C
y
es
de
fcil
adquisicin
en
el
mercado
local.
Posee
diversas
opciones
de
procesamiento
interno,
como
deteccin
de
movimiento,
filtros
pasa
bajos
a
diferentes
frecuencias,
deteccin
de
cada
libre,
de
impatco,
etc.
Estas
- 35 -
funciones
no
son
utilizadas
en
este
trabajo
debido
a
que
se
desea
minimizar
el
tiempo
de
procesamiento
y
mantener
compatibilidad
con
acelermetros
de
menor
complejidad
y
mayor
rango
de
medicin.
El
micro
chip
est
montado
en
una
plaqueta
de
desarrollo
GY-521
que
posee
un
regulador
de
tensin
e
indicadores
de
encendido.
Adems
de
facilitar
la
manipulacin
del
integrado,
la
plaqueta
ofrece
una
superficie
de
apoyo
til
para
montar
el
conjunto
sobre
una
superficie
vibrante.
Se
opt
por
utilizar
este
dispositivo
a
modo
de
primer
prototipo
para
no
demorar
el
desarrollo
del
software.
El
objetivo
final
es
trabajar
con
el
acelermetro
ADXL190
de
AnalogDevicesTM
o
similar.
Este
segundo
acelermetro
posee
un
slo
grado
de
libertad
y
su
rango
de
medicin
es
de
100g.
La
salida
es
analgica
y
su
ancho
de
banda
est
delimitado
hasta
400Hz.
Actualmente
no
se
encuentra
en
el
mercado
local
y
su
compra
demora
un
aproximado
de
dos
meses.
3.2.3.1 Cableado
El
acelermetro
posee
4
contactos,
dos
para
alimentacin
y
otros
dos
para
comunicacin.
Se
decidi
utilizar
un
cable
de
USB
para
conectarlo
con
el
micro
controlador.
El
largo
del
cable
es
de
1.5m
para
permitir
movilidad,
sin
embargo,
siempre
es
necesario
fijar
el
cable
a
una
estructura
rgida
cercana
al
sensor,
por
ejemplo:
la
campana
del
parlante.
Se
busca
brindar
libertad
de
movimiento
minimizando
la
cantidad
de
masa
agregada.
Figura
24
Acelermetro
con
4
cables
soldados.
El
cable
es
flexible,
por
lo
tanto
no
slo
agrega
masa
mecnica
sino
tambin
compliancia
y
resistencia
mecnica.
La
frecuencia
de
resonancia
y
el
Q
del
sistema
se
ven
afectados
por
estos
tres
parmetros.
-
36
-
3.2.3.2 Fijacin
La
fijacin
mecnica
al
diafragma
debe
cumplir
las
siguientes
condiciones:
ser
fuerte
para
soportar
las
aceleraciones,
suficientemente
rgida
para
no
absorber
energa,
no
debe
daar
al
diafragma
y
debe
agregar
la
menor
cantidad
de
masa
posible
al
sistema.
Se
realizaron
pruebas
con
cera
y
distintos
tipos
de
pegamentos.
Finalmente
se
opt
por
utilizar
cinta
doble
faz
de
alta
adherencia.
La
masa
agregada
es
insignificante
y
se
logra
buena
adherencia.
Al
mismo
tiempo
es
fcil
de
remover
y
no
destruye
el
parlante.
Para
mantener
al
mnimo
la
masa
mecnica
del
medidor
se
opt
por
utilizar
el
sensor
sin
ningn
tipo
de
carcasa.
La
superficie
de
la
placa
de
desarrollo
se
pega
directamente
al
diafragma
del
parlante
a
medir.
Es
importante
adems
que
el
acelermetro
est
colocado
en
el
centro
del
guardapolvo.
De
este
modo
se
garantiza
que
el
movimiento
mecnico
est
en
lnea
con
el
eje
Z
del
acelermetro.
Colocar
el
sensor
en
otra
parte
del
parlante
conduce
a
errores
de
lectura.
Existen
dificultades
para
medir
altoparlantes
con
guardapolvos
pequeos
o
muy
curvos.
No
se
logra
buena
superficie
de
adherencia
y
no
es
posible
fijar
el
sensor.
Figura
26
Parlante
de
5
con
guardapolvo
curvo.
No
hay
superficie
de
adherencia.
- 37 -
Figura
27
Peso
del
acelermetro
en
gramos
Al sumar los cables se agregan 3.1 g y el peso total queda definido en 4.2 g.
Figura
28
Acelermetro
con
cable
Figura
29
Placa
de
programacin
Arduino
UNO
- 38 -
El
micro
controlador
se
utiliza
para
configurar
el
sensor,
esto
es:
definir
frecuencia
de
muestreo
en
1kHz
y
rango
de
medicin
en
16
g
(los
ms
altos
disponibles),
encender
interrupcin
de
data
ready
para
siempre
leer
valores
nuevos,
ejecutar
un
self
test
(ver
captulo
4)
al
iniciar
una
medicin
y
encender
el
medidor.
Por
ltimo
se
deshabilitan
las
funciones
no
utilizadas,
como
filtro
pasa-bajos,
giroscopio,
etc.
Las
placas
Arduino
en
su
mayora
cuentan
con
un
adaptador
a
Universal
Serial
Bus
que
permite
la
comunicacin
con
la
computadora
de
manera
muy
simple.
Se
realiz
un
zcalo
con
una
plaqueta
de
PCB
que
tambin
permite
la
fijacin
a
un
chasis
de
aluminio
plegado.
El
cable
ingresa
al
chasis
y
se
conecta
al
zcalo
con
un
conector
de
4
pines.
El
cable
se
fija
a
los
tornillos
interiores
del
chasis
para
evitar
que
se
desprenda
con
tirones
o
durante
traslado.
El
puerto
USB
queda
accesible
desde
la
parte
trasera.
El
cdigo
de
programacin
se
puede
encontrar
en
el
Anexo
I.
3.4 Software
Por
ltimo,
el
software
cumple
la
funcin
de
graficar
la
aceleracin
en
el
dominio
temporal
y
espectral.
De
all
se
calculan
velocidad
y
desplazamiento
en
funcin
de
la
frecuencia.
La
medicin
se
puede
guardar
y
volver
a
cargar
para
anlisis
posterior.
O
bien
- 39 -
- 40 -
(2)
(1)
(5)
(4)
(3)
(7)
(6)
(8)
(9)
(10)
(15)
(14)
(11)
(12)
(13)
Figura
31
Pantalla
principal
Es
importante
tener
en
cuenta
que
cada
vez
que
se
inicia
una
medicin
es
necesario
que
el
acelermetro
se
encuentre
quieto
y
en
posicin.
Esto
se
debe
a
que
se
mide
y
extrae
la
componente
de
aceleracin
aportada
por
la
gravedad
de
la
tierra.
- 41 -
Figura
32
Parlantes
medidos
Masa
[g]
460
149
106
108
55
37
28
18
11
%
0,00
1,81
2,31
2,79
4,06
4,47
6,40
6,61
7,06
Tabla
1
Frecuencia
de
resonancia
con
y
sin
acelermetro
- 42 -
%"de"Variacin"fs"Vs"Mms"
10"
9"
%"de"Variacin"fs"
8"
7"
6"
5"
4"
3"
2"
1"
0"
0"
50"
100"
150"
200"
250"
300"
350"
400"
450"
500"
Mms"[g]"
Se
observa
que
las
variaciones
no
son
perfectamente
lineales,
esto
se
debe
a
que
el
sistema
de
medicin
no
slo
le
agrega
masa
al
altoparlante,
sino
tambin
una
leve
rigidz
a
travs
del
cable
de
conexin.
En
ninguno
de
los
casos
medidos
la
compliancia
es
suficientemente
alta
para
generar
un
aumento
en
la
frecuencia
de
resonancia.
A
partir
de
un
punto
no
es
posible
medir
la
variacin
ocasionada
por
el
sensor.
Se
realiz
una
regresin
lineal
sobre
los
valores
para
encontrar
este
punto.
%"de"Variacin"fs"Vs"Mms"
10"
9"
%"de"Variacin"fs"
8"
y"="$0,0386x"+"6,9057"
R"="0,89742"
7"
6"
5"
4"
3"
2"
1"
0"
0"
20"
40"
60"
80"
100"
Mms"[g]"
120"
140"
160"
La
funcin
resultante
tiene
su
raz
ubicada
en
x = 179 g.
Para
altoparlantes
con
masa
mecnica
mayor
a
179
g
la
incidencia
del
acelermetro
se
puede
considerar
insignificante.
En
proporcin,
el
acelermetro
puede
significar
hasta
un
2.3%
del
peso
del
diafragma
antes
de
alterar
la
medicin.
- 43 -
Sin
Acelermetro
Qes
Qms
Qt
0,500
5,840
0,461
0,351
5,744
0,331
0,345
6,076
0,326
0,340
7,440
0,325
0,304
5,055
0,287
0,368
2,809
0,325
0,612
5,879
0,554
0,200
3,800
0,190
0,933
3,925
0,754
Con
Acelermetro
Qes
Qms
Qt
0,500
5,840
0,461
0,354
5,553
0,333
0,353
6,177
0,334
0,342
7,460
0,327
0,310
4,900
0,292
0,390
2,870
0,343
0,614
5,553
0,553
0,201
3,624
0,190
1,027
4,011
0,818
%
Variacin
Qes
Qms
Qt
0,0
0,0
0,0
0,8
-3,4
0,6
2,3
1,6
2,2
0,6
0,3
0,6
1,9
-3,2
1,6
5,6
2,1
5,2
0,3
-5,9
-0,3
0,5
-4,9
0,2
9,2
2,1
7,8
Tabla
2
Variacin
de
Q
con
y
sin
acelermetro
Se
puede
observar
que
el
Q
elctrico
tiende
a
aumentar
en
todos
los
casos,
esto
es
debido
al
aumento
de
masa
mecnica
(ver
ecuacin
8).
Por
otro
lado,
el
Q
mecnico
no
se
comporta
de
igual
forma.
Para
algunos
casos
aumenta
y
para
otros
disminuye.
Esto
indica
que
el
sensor
tambin
agrega
una
resistencia
mecnica
a
travs
del
cable
de
conexin.
En
consecuencia
se
amortigua
ligeramente
la
resonancia
(ver
ecuacin
7).
Dependiendo
de
las
caractersticas
del
altoparlante
el
Q
total
se
ver
afectado
de
diferentes
formas.
Para
la
mayora
de
los
casos
va
a
aumentar
debido
al
aumento
de
la
masa
mecnica,
sin
embargo,
en
altoparlantes
livianos
y
con
amortiguacin
rgida,
la
resistencia
mecnica
del
cable
puede
ser
suficiente
para
disminuir
el
Q
mecnico
y
en
consecuencia
el
total.
En
ninguno
de
los
casos
la
modificacin
fue
mayor
al
10%,
y
slo
en
dos
casos
fue
mayor
al
3%.
- 44 -
Para
validar
la
lectura
de
frecuencia
se
utiliz
un
generador
de
seales
digital
junto
con
un
amplificador
de
audio.
Se
excit
un
parlante
de
10
pulgadas
con
un
tono
senoidal
a
distintas
frecuencias.
Se
mantuvo
la
amplitud
a
bajo
nivel
para
no
generar
distorsin
en
el
desplazamiento
del
altoparlante
y
se
contrast
la
frecuencia
indicada
por
el
generador
con
la
frecuencia
de
mxima
amplitud
en
el
sistema
de
medicin.
Generador
[Hz]
Software
[Hz]
20
20
25
25
30
30
35
35
40
40
45
44,9
50
50,2
55
55,1
60
60,3
65
65,2
70
69,9
75
75,2
80
80,3
85
85,1
90
90,2
95
95,7
100
100,6
150
150
200
200,3
250
251,7
300
299,8
350
349,4
400
403
450
448,7
500
493,9
%
variacin
0,0
0,0
0,0
0,0
0,0
-0,2
0,4
0,2
0,5
0,3
-0,1
0,3
0,4
0,1
0,2
0,7
0,6
0,0
0,2
0,7
-0,1
-0,2
0,8
-0,3
-1,2
A
partir
de
45
Hz
comienzan
a
observarse
diferencias
entre
los
valores.
Este
error
se
debe
a
la
interfaz
grfica.
Para
obtener
la
intensidad
sobre
una
frecuencia
especfica
es
necesario
posar
el
mouse
sobre
la
parte
del
grfico
espectral
que
la
contiene.
Debido
a
la
distribucin
logartmica
se
torna
difcil
seleccionar
una
sola
frecuencia
por
encima
de
45
Hz.
-
45
-
Figura
35
Distribucin
logartmica,
menor
densidad
en
la
izquierda
y
mayor
en
la
derecha.
Desplazamiento-[mm]-
10"
8"
6"
4"
2"
0"
10"
100"
Frecuencia-[Hz]-
1000"
Velocidad)[m/s])
1,0#
0,8#
0,6#
0,4#
0,2#
0,0#
10#
100#
Frecuencia)[Hz])
1000#
Figura
38
-
Validacin
de
desplazamiento
con
calibre
digital
Figura
39
-
Medicin
de
0.5mm
- 48 -
Se
decidi
medir
en
5
octavas
comenzando
desde
30Hz
hasta
480Hz.
Se
midi
con
pasos
de
50m
el
primer
milmetro
y
luego
se
realizaron
saltos
de
a
un
milmetro.
No
se
utiliz
el
calibre
a
mxima
capacidad
para
evitar
errores
de
posicionamiento.
En
la
siguiente
tabla
se
observan
los
resultados
obtenidos
para
las
distancias
medidas.
Calibre
[mm]
0,05
0,1
0,15
0,2
0,25
0,3
0,35
0,4
0,45
0,5
0,55
0,6
0,65
0,7
0,75
0,8
0,85
0,9
0,95
1
2
3
4
30
Hz
0,064
0,111
0,143
0,210
0,257
0,298
0,346
0,400
0,446
0,501
0,545
0,604
0,649
0,706
0,745
0,802
0,845
0,901
0,965
1,013
2,012
2,985
3,897
60
Hz
0,061
0,108
0,140
0,203
0,254
0,290
0,340
0,401
0,443
0,497
0,545
0,601
0,647
0,695
0,743
0,799
0,838
0,898
0,962
1,006
1,532
-
-
120
Hz
0,052
0,102
0,139
0,201
0,196
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
240
Hz
0,032
0,063
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
480
Hz
0,017
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 49 -
Mediante
este
proceso
se
logr
corroborar
una
resolucin
de
hasta
0.1mm
en
el
clculo
de
distancia.
5 Trabajo
a
futuro
Como
trabajo
a
futuro
se
puede
profundizar
en
varios
aspectos
del
desarrollo,
a
saber:
6 Conclusiones
Se
logr
construir
un
dispositivo
capaz
de
medir
aceleracin,
velocidad
y
desplazamiento
en
el
dominio
espectral.
Cuenta
con
una
resolucin
de
0.1mm
en
un
ancho
de
banda
de
500Hz
y
una
resolucin
espectral
de
0.12Hz.
El
sistema
se
encuentra
limitado
por
el
escaso
rango
de
medicin
del
acelermetro
(16
G)
y
por
el
peso
que
este,
junto
con
el
cable,
adhieren
al
altoparlante.
Esto
genera
variaciones
en
su
comportamiento
mecnico.
Sin
embargo,
para
parlantes
mayores
a
10
o
con
masa
mecnica
mayor
a
60g
el
error
no
supera
el
5%.
En
parlantes
de
gran
tamao,
con
masa
mayor
a
179g,
el
efecto
del
acelermetro
es
insignificante.
- 50 -
- 51 -
7 Bibliografa
[1]
J.
F.
Christensen,
M.
H.
Olesen,
J.
S.
Kjr.
The
Industrial
Dynamics
of
Open
InnovationEvidence
From
The
Transformation
of
Consumer
Electronics.
Research
Policy.
Volumen
34,
pp
15331549.
Diciembre,
2010.
[2]
B.
Pueo,
M.
Rom.
Electroacstica.
Altavoces
y
Micrfonos.
Pp.
153.
Pearson
Educacin.
Madrir,
Espaa.
2003.
[3]
R.
H.
Small.
Assessment
of
Non-linearity
in
Loudspeakers
Motors.
IREE.
Australia.
Septiembre,
1979.
[4]
AES2-1984
(r2003).
Recommended
Practice
Specification
of
Loudspeaker
Components
Used
in
Professional
Audio
and
Sound
Reinforcement.
Nueva
York,
EEUU.
2003.
[5]
IEC
60268-5:2003.
Sound
System
Equipment.
Part
5:
Loudspeakers.
Suiza.
2003.
[6]
S.
Lipshitz,
M.
Heal,
J.
Vanderkooy.
An
investigation
of
sound
radiation
by
loudspeaker
cabinets.
AES
Convencin
#90.
Paris,
1991.
[7]
C.
W.
Rice,
E.
W.
Kellog.
Notes
on
the
Development
of
a
New
Type
of
Hornless
Loudspeaker.
Journal
of
American
Institute
of
Electrical
Eengineers,
Vol
44.
Septiembre,
1925.
[8]
L.
L.
Beranek,
Acoustics.
McGraw-Hill.
Nueva
York,
EEUU.
1954.
[9]
A.
N.
Thiele.
Loudspeakers
in
Vented
Boxes:
Part
I
and
II.
JAES.
Vol
19,
pp.
471-483.
Nueva
York,
EEUU.
June,
1971.
[10]
R.
H.
Small,
Vented-box
loudspeaker
systems
part
1:
Samll-signal
analysis.
JAES.
Vol
21,
pp.
363-372.
New
York,
EEUU.
1973.
[11]
W.
Klippel,
Tutorial:
Loudspeaker
Non
Linearities
symptoms,
parameters,
causes.
JAES.
Vol
54,
pp.
907-939.
New
York,
EEUU.
2006.
[12]
W.
Klippel,
Assessment
of
Voice
Coil
Peak
Displacement
Xmax.
JAES.
Vol
51,
pp.
307-
324.
New
York,
2003.
-
52
-
[13]
A.
Novak,
B.
Merit,
Magnet-only
loudspeaker
motors:
linear
behavior
theory
Vs.
Nonlinear
measurements.
Acoustics
2012
Conference,
pp
3515-5520.
Nantes,
Francia,
Abril,
2012.
[14]
A.
Novak,
P.
Lotton,
L.
Simon,
Nonlinear
Force
Factor
Measurement
of
an
Electrodynamic
Loudspeaker.
Forum
Acusticum.
Krakw.
Septiembre,
2014.
[15]
M.
E.
Engebretson,
Low-Frequency
Sound
Reproduction.
JAES
.Vol.
32,
pp.
340-346.
1984.
[16]
R.
H.
Small,
"Vented
Box
Loudspeaker
Systems,
Part
Il:
Large-Signal
Analysis,"
JAES.
Vol.
21,
pp.
438-444.
1973.
[17]
M.
R.
Gander,
JBL
Incorporated.
Dynamic
Linearity
And
Power
Compression
In
Moving-Coil
Loudspeakers.
AES
Convencin
#76.
New
York,
1984.
[18]
J.
Christophouro.
Low
Frequency
Loudspeaker
Measurement
with
Accelerometer.
JAES.
Vol
28,
pp.
809-817.
Noviembre,
1980.
[19]
K.
B.
Christensen,
E.
S.
Olsen.
Nonlinear
Modelling
of
Low
Frequency
Loudspeakers
-
A
More
Complete
Model.
AES
Convencin
#100.
1996
[20]
E.
S.
Olsen.
Nonlinear
Modelling
of
Low
Frequency
Loudspeakers.
AES
Convencin
#989.
1995.
[21]
J.
E.
Weaver,
W.
M.
Leach
Jr.
Optimal
Measurements
of
Loudspeaker
Driver
Large
Signal
Displacement.
JAES.
Vol
26,
pp.
145-148.
Marzo,
1978.
[22]
P.
Hariharan.
Optical
Interferometry.
Academic.
Sydney,
Australia.
1985.
[23]
U.
Minoni,
F.
Docchio,
and
G.
Sansoni.
Optical
interferometer
using
a
high-
birefringence
optical
fiber.
IEEE
Trans.
Instrum.
Meas.
Vol.
42,
pp.
231233.
Abril,
1993.
[24]
W.
R.
Gonnason,
J.W.
Haslett,
F.
N.
Trofimenkoff.
A
low
cost
high
resolution
optical
position
sensor.
IEEE
Trans.
Instrum.
Meas.
Vol.
39,
pp.
658663.
Agosto,
1990.
- 53 -
- 54 -
Anexo
I
El
siguiente
cdigo
fue
escrito
en
Arduino
IDE
1.6.0
y
funciona
en
Arduino
UNO
con
un
sensor
MPU6050
conectado
segn
la
librera
Wire.h.
//by Facundo Ramon
//2015
#include <Wire.h>
#define MPU 0x68
int ti;
int tf;
unsigned int startTag = 0xDEAD;
byte Acz[2];
uint16_t AcZ;
volatile boolean measure = true, Error = false;
boolean sincro = false, start = false;
void setup() {
int error;
uint8_t c;
Serial.begin(115200);
Wire.begin();
TWBR = ((F_CPU / 400000L) - 16) / 2;
error = MPU_read(0x75, &c, 1);
Serial.print(F("WHO_AM_I : "));
Serial.print(c, HEX);
Serial.print(F(", error = "));
Serial.println(error, DEC);
MPU_write_reg(0x19, B0);
MPU_write_reg(0x1A, B0);
MPU_write_reg(0x1B, B0);
MPU_write_reg(0x1C, B11000);
MPU_write_reg(0x38, B1);
MPU_write_reg(0x6B, 0);
error = MPU_read(0x6B, &c, 1);
Serial.print(F("PWR_MGMT_1 : "));
Serial.print(c, HEX);
Serial.print(F(", error = "));
Serial.println(error, DEC);
MPU_write_reg (0x6B, 0);
delay(100);
cli();
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 1999;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS11);
TIMSK1 |= (1 << OCIE1A);
sei();
}
ISR(TIMER1_COMPA_vect)
{
if (!measure) {
measure = true;
- 55 -
}
else
{
Error = true;
};
}
void loop() {
if (start) {
if (measure) {
byte DR = false; // data ready
while(!DR<<0)
{
MPU_read(0x3A, (uint8_t *) &DR, 1);
}
MPU_read(0x3F, (uint8_t *) &Acz, 2);
Serial.write(Acz, 2);
while ( !( UCSR0A & (1 << UDRE0)) );
measure = false;
}
if (Error)
{
Error = false;
}
}
}
void serialEvent() {
char inChar = (char)Serial.read();
switch (inChar) {
case 'r': //run
while (!sincro)
{
Serial.write((unsigned byte*)&startTag, 2);
if (Serial.available() > 0)
{
char inChar = (char)Serial.read();
if (inChar == '1')
{
sincro = true;
}
}
}
start = true;
break;
case 's':
start = false;
sincro = false;
break;
}
}
int MPU_read(int start, uint8_t *buffer, int size)
{
int i, n, error;
Wire.beginTransmission(MPU);
n = Wire.write(start);
if (n != 1)
return (-10);
- 56 -
n = Wire.endTransmission(false);
if (n != 0)
return (n);
Wire.requestFrom(MPU, size, true);
i = 0;
while(Wire.available() && i<size)
{
buffer[i++]=Wire.read();
}
if ( i != size)
return (-11);
return (0);
}
int MPU_write(int start, const uint8_t *pData, int size)
{
int n, error;
Wire.beginTransmission(MPU);
n = Wire.write(start);
if (n != 1)
return (-20);
n = Wire.write(pData, size);
if (n != size)
return (-21);
error = Wire.endTransmission(true);
if (error != 0)
return (error);
return (0);
}
int MPU_write_reg(int reg, uint8_t data)
{
int error;
error = MPU_write(reg, &data, 1);
return (error);
}
- 57 -
Anexo
II
Este
cdigo
fue
escrito
en
Processing
2
V
2.2.1
en
una
Macbook
Pro
con
OS
X
10.9.5.
Funciona
con
un
Arduino
UNO
programado
con
el
cdigo
superior
y
conectado
al
puerto
USB.
Se
utilizan
las
libreras
minim
para
la
realizacin
de
FFT
y
controlP5
para
la
interfaz
grfica.
NOTA:
para
usar
en
Windows
se
debe
reemplazar
la
siguiente
lnea
de
cdigo
arduino = new Serial(this, "/dev/cu.usbmodem641", 115200, 'N', 8, 1.0);
por
esta:
arduino = new Serial(this, Serial.list[0], 115200, 'N', 8, 1.0);
- 58 -
- 59 -
void draw()
{
background(fondo);
if (!usb) {
try {
arduino = new Serial(this, "/dev/cu.usbmodem641", 115200, 'N', 8,
1.0);
//se crea el objeto Serial
arduino.buffer(2);
usb = true;
}
catch(Exception e) {
usb = false;
}
}
strokeWeight(1.5);
stroke(0, 0, 0);
gz.drawGraphBox();
textSize(10);
fill(255);
text("16", bordeIzq-20, bordeTecho+5+0*((sizey-bordeVertical)/3/8));
text("12", bordeIzq-20, bordeTecho+5+1*((sizey-bordeVertical)/3/8));
text("8", bordeIzq-15, bordeTecho+5+2*((sizey-bordeVertical)/3/8));
text("4", bordeIzq-15, bordeTecho+5+3*((sizey-bordeVertical)/3/8));
text("[G] 0", bordeIzq-35, bordeTecho+5+4*((sizeybordeVertical)/3/8));
text("-4", bordeIzq-20, bordeTecho+5+5*((sizey-bordeVertical)/3/8));
text("-8", bordeIzq-20, bordeTecho+5+6*((sizey-bordeVertical)/3/8));
text("-12", bordeIzq-25, bordeTecho+5+7*((sizey-bordeVertical)/3/8));
text("-16", bordeIzq-25, bordeTecho+5+8*((sizey-bordeVertical)/3/8));
text("Frecuencia [Hz]", bordeIzq+(sizex-bordeLateral)/2-30, sizey-6);
textFont(f4);
text("Facundo Ramn - 2015", 6, sizey-6);
text("Segundos por divisin: ", bordeDer+250, 15);
strokeWeight(1.25);
stroke(150);
grilla.dibujar();
strokeWeight(1.5);
stroke(0, 0, 0);
fill(2, 52, 77);
stroke(1, 108, 158);
strokeWeight(1.5);
rect(Posz.x, Posz.y+2, 50, 17);
rect(PosZ.x, PosZ.y+2, 45, 14);
rect(Posf.x, Posf.y+2, 50, 17);
rect(Posv.x, Posv.y+2, 45, 14);
rect(Posx.x, Posx.y+2, 45, 14);
rect(Poszf.x, Poszf.y+2, 45, 14);
stroke(200);
line(sizex-bordeDer+20, bordeTecho+(sizey-bordeVertical)/3+2, sizex-20,
bordeTecho+(sizey-bordeVertical)/3+2);
fill(255);
stroke(0);
rect(bordeIzq,
bordeTecho+(sizey-bordeVertical)/3+10,
sizex-bordeLateral,
sizey-bordeVertical-(sizey-bordeVertical)/3-10);
gz.drawLine(z, margenz, margenZ);
int curS = z.getCurSize();
if (curS>bufferSize)
{
- 60 -
- 61 -
- 62 -
}
}
if (!sincro && mouseX>bordeIzq && mouseX<sizex-bordeDer &&
mouseY>bordeTecho && mouseY<bordeTecho+ (sizey-bordeVertical)/3)
{
fondo=150;
line(mouseX, bordeTecho, mouseX, bordeTecho+(sizey-bordeVertical)/3);
int inf=int(range.getLowValue());
int sup=int(range.getHighValue());
int index=int(map(mouseX, bordeIzq, sizex-bordeDer, inf, sup));
tz.setValue(nf(z.getVal(index), 2, 1));
tZ.setValue(nf(maxZ,2,1));
tz.draw(this);
tZ.draw(this);
}
divs.setValue(nf(ds, 1, 2));
divs.draw(this);
}
void stop()
{
minim.stop();
super.stop();
}
void START()
{
if (!usb) {
cp5.group("USBDESCONECTADO").open();
} else {
if (!sincro)
{
winSize=512;
arduino.write(114);
fSincro();
cp5.getController("START").setImages(pause);
} else
{
arduino.write(115);
sincro = false;
winSize=z.getCurSize();
cp5.getController("START").setImages(play);
}
}
}
void m1()
{
LOAD();
}
void m4()
{
if (!guardado && !cargado)
{
cp5.getGroup("advertenciaSalir").open();
} else
{
exit();
}
}
void advCancelar()
- 63 -
{
cp5.group("advertenciaSalir").close();
}
void advSalir()
{
exit();
}
void advGuardar()
{
m3();
exit();
}
//REINICIAR
void m2()
{
if (!guardado && !cargado)
{
cp5.getGroup("advertenciaReset").open();
} else
{
advReset();
}
}
void advReset()
{
z.reset();
maxZ=0;
tZ.setValue(nf(maxZ, 2, 1));
range.setRange(0, winSize);
range.setRangeValues(0, winSize);
cp5.group("advertenciaReset").close();
if (sincro) START();
}
void advCancel()
{
cp5.group("advertenciaReset").close();
}
void m3()
{
SAVE();
}
void advUsbAceptar()
{
cp5.group("USBDESCONECTADO").close();
}
void zoomG0(float z1)
{
zoom=z1;
}
void Average(boolean theFlag)
{
if (theFlag==true)
{
fftPlotSize = fft1.avgSize();
lim = 10;
} else
{
fftPlotSize = fft1.specSize();
- 64 -
lim = 163;
}
fLogScale();
avg=theFlag;
}
void serialEvent(Serial p)
{
if (sincro)
{
if (!comp)
{
counter++;
if (counter<1000) {
p.clear();
} else
{
while (p.available ()<2);
byte[] inBuf = new byte[2];
p.readBytes(inBuf);
short acz = (short)( ((inBuf[0]&0xFF)<<8)|(inBuf[1]&0xFF));
gravedad = float(acz);
println(gravedad);
comp=true;
}
} else
{
byte[] inBuf = new byte[2];
p.readBytes(inBuf);
short acz = (short)( ((inBuf[0]&0xFF)<<8)|(inBuf[1]&0xFF));
AcZ = float(acz)-gravedad;
AcZg = AcZ/sensitivity;
z.addVal(AcZg);
tz.setValue(nf(int(AcZg), 2, 1)); //temp
fMaximo(1);
tZ.setValue(nf(int(maxZ), 2, 1));
}
}
}
class cGrafico
{
float g_x, g_y;
//posicion inicial de los areas de ploteo
float g_ancho, g_alto; //ancho y alto de los areas de ploteo
cGrafico(float x, float y, float ancho, float alto)
{
g_x = x;
g_y = y;
g_ancho = ancho;
g_alto = alto;
}
void drawGraphBox()
{
stroke(0, 0, 0);
fill(255, 255, 255);
rect(g_x, g_y, g_ancho, g_alto); //se generan las areas de ploteo
}
void setGraf(float X, float Y, float ANCHO, float ALTO)
{
g_x = X;
g_y = Y;
g_ancho = ANCHO;
g_alto = ALTO;
- 65 -
}
void drawLine(cVector data, float minRange, float maxRange)
{
float graphMultX = g_ancho/winSize;
float graphMultY = g_alto/(maxRange-minRange);
if (sincro)
{
ds=(winSize/mps)/11.0;
if (data.getCurSize()<winSize-1)
{
int hh=int(winSize/mps/3600), mm=int(winSize/mps/60-hh*60),
ss=int(winSize/mps-mm*60);
for (int i=0; i<data.getCurSize ()-1; i++)
{
float x0 = i*graphMultX+g_x;
float y0 = g_y+g_alto-((data.getVal(i)-minRange)*graphMultY);
float x1 = (i+1)*graphMultX+g_x;
float y1 = g_y+g_alto-((data.getVal(i+1)-minRange)*graphMultY);
if (y0<g_y || y1<g_y)
{
line(x0, g_y, x1, g_y);
} else if (y0>g_y+g_alto || y1>g_y+g_alto)
{
line(x0, g_y+g_alto, x1, g_y+g_alto);
} else
{
line(x0, y0, x1, y1);
}
}
} else
{
for (int i=data.getCurSize ()-winSize; i<data.getCurSize()-1;
i++)
{
float x0 = (i-data.getCurSize()+winSize)*graphMultX+g_x;
float y0 = g_y+g_alto-((data.getVal(i)-minRange)*graphMultY);
float x1 = (i-data.getCurSize()+winSize+1)*graphMultX+g_x;
float y1 = g_y+g_alto-((data.getVal(i+1)-minRange)*graphMultY);
if (y0<g_y || y1<g_y)
{
line(x0, g_y, x1, g_y);
} else if (y0>g_y+g_alto || y1>g_y+g_alto)
{
line(x0, g_y+g_alto, x1, g_y+g_alto);
} else
{
line(x0, y0, x1, y1);
}
range.setRange(1, data.getCurSize());
range.setRangeValues(data.getCurSize()-winSize,
data.getCurSize());
}
}
} else
{
posicionInicial = int( range.getLowValue() );
posicionFinal = int( range.getHighValue() );
ds=((posicionFinal-posicionInicial)/mps)/11.0;
if (usb) {
try {
- 66 -
arduino.clear();
}
catch (Exception e) {
}
}
float MultX = (posicionFinal-posicionInicial)/(g_ancho);
for (float i=0; i<g_ancho; i++)
{
float x0 = i+bordeIzq;
float y0 = g_y+g_alto((data.getVal(int(MultX*i)+posicionInicial)-minRange)*graphMultY);
float x1 = i+bordeIzq+1;
float y1 = g_y+g_alto((data.getVal(int(MultX*(i+1))+posicionInicial)-minRange)*graphMultY);
if (y0<g_y || y1<g_y)
{
line(x0, g_y, x1, g_y);
} else if (y0>g_y+g_alto || y1>g_y+g_alto)
{
line(x0, g_y+g_alto, x1, g_y+g_alto);
} else
{
line(x0, y0, x1, y1);
}
}
}
}
}
class cGrilla
{
int ancho=sizex-bordeLateral;
int alto=(sizey-bordeVertical)/3;
int gx=16; //divisiones horizontales __
int gy=11; //divisiones verticales ||
cGrilla()
{
}
void dibujar(){
for (int i=1; i<gy; i++)
{
line(bordeIzq+(sizex-bordeLateral)/gy*i, bordeTecho,
bordeIzq+(sizex-bordeLateral)/gy*i, sizey-bordePiso);
}
for (int i=1; i<gx; i++)
{
line(bordeIzq, bordeTecho+i*alto/gx, sizex-bordeDer,
bordeTecho+i*alto/gx);
}
}
}
class cVector
{
float[] m_data;
int m_maxSize;
int m_endIndex = 0;
int m_curSize;
int m_winSize;
cVector(int maxSize, int winSize)
{
m_maxSize = maxSize ;
- 67 -
- 68 -
- 69 -
.setHandleSize(20)
.setRange(1, winSize-1)
.setRangeValues(1, winSize-1)
.setLabelVisible(false)
.setBroadcast(true)
.setColorForeground(color(200))
.setColorBackground(color(100))
.setVisible(true);
cp5.addSlider("zoomG0")
.setPosition(sizex-bordeDer+2, bordeTecho+(sizey-bordeVertical)/3+10)
.setSize(8, sizey-bordeVertical-(sizey-bordeVertical)/3-10)
.setRange(0, 2)
.setValue(1)
.setLabelVisible(false)
.setVisible(true);
tz = new Textlabel(cp5, "", 0, 0);
tZ = new Textlabel(cp5, "", 0, 0);
tzf = new Textlabel(cp5, "", 0, 0);
tv = new Textlabel(cp5, "", 0, 0);
tx = new Textlabel(cp5, "", 0, 0);
tf = new Textlabel(cp5, "", 0, 0);
divs = new Textlabel(cp5, nf(ds,1,2), bordeDer+382, 2);
tz.setText("00,0").setPosition(sizex-bordeDer+25,
60+bordeTecho+0*(sizey-bordeVertical)/10);
tZ.setText("00,0").setPosition(sizex-bordeDer+28,
60+bordeTecho+1*(sizey-bordeVertical)/10);
tf.setText("0").setPosition(sizex-bordeDer+25, 60+bordeTecho+2*(sizeybordeVertical)/10+20);
tx.setText("000").setPosition(sizex-bordeDer+35, bordeTecho+235);
tv.setText("00,0").setPosition(sizex-bordeDer+35, bordeTecho+305);
tzf.setText("00,0").setPosition(sizex-bordeDer+35, bordeTecho+375);
tz.setFont(f3);
tzf.setFont(f4);
tZ.setFont(f4);
tv.setFont(f4);
tx.setFont(f4);
tf.setFont(f3);
divs.setFont(f4);
Posz = tz.getPosition();
PosZ = tZ.getPosition();
Poszf = tzf.getPosition();
Posv = tv.getPosition();
Posx = tx.getPosition();
Posf = tf.getPosition();
cp5.addTextlabel("textz")
.setPosition(Posz.x-3, Posz.y-17)
.setFont(f4)
.setText("Acc. [G]");
cp5.addTextlabel("textZ")
.setPosition( PosZ.x-3, PosZ.y-15)
.setFont(f5)
.setText("Mx. [G]");
- 70 -
cp5.addTextlabel("textf")
.setPosition( Posf.x-3, Posf.y-17)
.setFont(f4)
.setText("Frec. [Hz]");
cp5.addTextlabel("textv")
.setPosition( Posv.x-15, Posv.y-17)
.setFont(f4)
.setText("Vel. [m/s]");
cp5.addTextlabel("textx")
.setPosition(Posx.x-3, Posx.y-17)
.setFont(f4)
.setText("X [mm]");
cp5.addTextlabel("textzf")
.setPosition(Poszf.x-3, Poszf.y-17)
.setFont(f4)
.setText("Acc. [g]");
cp5.addToggle("plotz")
.setPosition(Poszf.x-15, Poszf.y+5)
.setSize(10, 10)
.setLabelVisible(false);
cp5.addToggle("plotv")
.setPosition(Posv.x-15, Posv.y+5)
.setSize(10, 10)
.setLabelVisible(false);
cp5.addToggle("plotx")
.setPosition(Posx.x-15, Posx.y+5)
.setSize(10, 10)
.setLabelVisible(false);
cp5.addToggle("Average")
.setPosition(Posf.x, Posf.y+25)
.setSize(10, 10)
.setValue(false);
menu = cp5.addMultiList("menu", bordeIzq, 5, bordeIzq+botonx,
15).setVisible(true);
m = menu.add("Menu", 1);
m.setVisible(true);
m.add("m1", 11).setLabel("Cargar...");
m.add("m2", 12).setLabel("Reiniciar");
m.add("m3", 13).setLabel("Guardar como...");
m.add("m4", 14).setLabel("Salir");
}
void fLogScale()
{
for(int i=0; i<fftPlotSize-lim; i++)
{
escalaLog[i]=log10(i+1)/log10(fftPlotSize-lim);
}
}
float log10 (int x) {
return (log(x) / log(10));
}
void fMaximo(int vector)
{
float actual;
int current=z.getCurSize()-1;
switch(vector)
{
case 1:
- 71 -
actual = z.getVal(current);
if (actual>maxZ)
{
maxZ=actual;
}
break;
}
}
void fPopUps()
{
//ADVERTENCIA USB DESCONECTADO
Group USBDESCONECTADO = cp5.addGroup("USBDESCONECTADO")
.setPosition(sizex/2-200, sizey/2-75)
.setBackgroundHeight(150)
.setWidth(400)
.setBackgroundColor(color(150, 255))
.hideBar()
.activateEvent(false)
.close();
cp5.addTextlabel("advUsb")
.setPosition( 10, 20)
.setColor(255)
.setFont(f3)
.setText("El dispositivo USB est desconectado." +"\n"+"\n"+
"Conctelo y vuelva intentarlo")
.setGroup(USBDESCONECTADO);
cp5.addButton("advUsbAceptar")
.setLabel("ACEPTAR")
.setSize(botonx, botony)
.setPosition(300, 100)
.setGroup(USBDESCONECTADO);
//Ventana ADVERTENCIA SALIR SIN GUARDAR
Group advertenciaSalir = cp5.addGroup("advertenciaSalir")
.setPosition(sizex/2-200, sizey/2-75)
.setBackgroundHeight(150)
.setWidth(400)
.setBackgroundColor(color(150, 255))
.hideBar()
.activateEvent(false)
.close();
cp5.addTextlabel("advertencia")
.setPosition( 10, 20)
.setColor(255)
.setFont(f3)
.setText("Advertencia: Se perdern los datos no guardados.")
.setGroup(advertenciaSalir);
cp5.addButton("advSalir")
.setLabel("SALIR")
.setSize(botonx, botony)
.setPosition(300, 100)
.setGroup(advertenciaSalir);
cp5.addButton("advGuardar")
.setLabel("GUARDAR")
.setSize(botonx, botony)
.setPosition(200, 100)
.setGroup(advertenciaSalir);
cp5.addButton("advCancelar")
.setLabel("CANCELAR")
- 72 -
.setSize(botonx, botony)
.setPosition(5, 100)
.setGroup(advertenciaSalir);
//VENTANA ADVERTENCIA REINICIAR SIN GUARDAR
Group advertenciaReset = cp5.addGroup("advertenciaReset")
.setPosition(sizex/2-200, sizey/2-75)
.setBackgroundHeight(150)
.setWidth(400)
.setBackgroundColor(color(150, 255))
.hideBar()
.activateEvent(false)
.close();
cp5.addTextlabel("advert")
.setPosition( 10, 20)
.setColor(255)
.setFont(f3)
.setText("Advertencia: Se perdern los datos no
guardados"+"\n"+"pero se mantendr la configuracin del inicio.")
.setGroup(advertenciaReset);
cp5.addButton("advReset")
.setLabel("REINICIAR")
.setSize(botonx, botony)
.setPosition(300, 100)
.setGroup(advertenciaReset);
cp5.addButton("advCancel")
.setLabel("CANCELAR")
.setSize(botonx, botony)
.setPosition(200, 100)
.setGroup(advertenciaReset);
//Ventana de inicio ADVERTENCIA VOLVER A INICIAR SIN GUARDAR
Group advInicio = cp5.addGroup("advInicio")
.setPosition(sizex/2-200, sizey/2-75)
.setBackgroundHeight(150)
.setWidth(400)
.setBackgroundColor(color(150, 255))
.hideBar()
.activateEvent(false)
.close();
cp5.addTextlabel("advertenciaInicio")
.setPosition( 10, 20)
.setColor(255)
.setFont(f3)
.setText("Advertencia: Se perdern los datos no guardados.")
.setGroup(advInicio);
cp5.addButton("advIniciar")
.setLabel("INICIO")
.setSize(botonx, botony)
.setPosition(300, 100)
.setGroup(advInicio);
cp5.addButton("advGuardarInicio")
.setLabel("GUARDAR")
.setSize(botonx, botony)
.setPosition(200, 100)
.setGroup(advInicio);
cp5.addButton("advCancelarInicio")
.setLabel("CANCELAR")
.setSize(botonx, botony)
.setPosition(5, 100)
.setGroup(advInicio);
- 73 -
void fSincro()
{
int inByte = 0;
int curMatchPos = 0;
int[] intBuf = new int[2];
intBuf[0] = 0xAD;
intBuf[1] = 0xDE;
if (arduino.available () > 0);
{
inByte = arduino.read();
}
//Sincroniza con arduino
while (curMatchPos < 2)
{
if (inByte == intBuf[curMatchPos])
{
++curMatchPos;
if (curMatchPos == 2)
{
sincro=true;
arduino.write(49);
break;
}
if (arduino.available () > 0);
{
inByte = arduino.read();
}
} else
{
if (curMatchPos == 0)
{
if (arduino.available () > 0);
inByte = arduino.read();
} else
{
curMatchPos = 0;
}
}
}
}
- 74 -