Diferencia entre revisiones de «Vibrómetro»
Sin resumen de edición |
|||
| (No se muestran 11 ediciones intermedias del mismo usuario) | |||
| Línea 2: | Línea 2: | ||
<gallery> | <gallery> | ||
Ic_vs_displ_tcst2103.png | |||
Vibrometro control.jpg | amplificador (estamos usando 1k en lugar de 200 ohmios) | Vibrometro control.jpg | amplificador (estamos usando 1k en lugar de 200 ohmios) | ||
Sensor colores.jpg | sensor (estamos usando 1k en lugar de 470 ohmios) | Sensor colores.jpg | sensor (estamos usando 1k en lugar de 470 ohmios) | ||
Parlante y sensor.jpg | parlante y sensor | Parlante y sensor.jpg | parlante y sensor | ||
Internal-circuit-of-tda2030.png | |||
A-simplified-circuit-diagram-of-a-TDA2030-from-TDA-series-power-amplifiers-14-15.png | |||
</gallery> | </gallery> | ||
=Problemas= | =Problemas= | ||
* Se especifica "Current transfer ratio" 20% en el TCST2103 Datasheet. En realidad, es casi 80%. Estoy bajando la alimentación del emisor por 50%. | * Se especifica "Current transfer ratio" 20% en el TCST2103 Datasheet. En realidad, es casi 80%. Estoy bajando la alimentación del emisor por 50%. | ||
* Las fuentes de alimentación proveen demasiado voltaje. | * Las fuentes de alimentación proveen demasiado voltaje. Causa demasiado calor en el amplificador. Solo necesitamos 9V. Los cargadores de laptops tiene 20V. | ||
* El contenedor es poco rigido. | * El contenedor es poco rigido. La altura de la tela no es constante. | ||
* Es difícil alinear la banderita. Podemos incluir un luz visible dentro del instrumento para ayudar. | * Es difícil alinear la banderita. Podemos incluir un luz visible dentro del instrumento para ayudar. | ||
* La tela tiene una resonancia no amortiguada a aproximadamente 10 Hz. | * La tela tiene una resonancia no amortiguada a aproximadamente 10 Hz. | ||
* La fuente de alimentación para el sensor no está completamente limpio. | * La fuente de alimentación para el sensor no está completamente limpio. | ||
* Hay una posibilidad de interacción entre el detector y el emisor porque están alimentado por el mismo cable sin aislamiento. | * Hay una posibilidad de interacción entre el detector y el emisor porque están alimentado por el mismo cable sin aislamiento. | ||
* Cuando el sistema del control del altura cambia el señal, es demasiado abrupto y causa un sonido "click". Debemos usar un filtro entre el microcontrolador y el amplificador. | * Cuando el sistema del control del altura cambia el señal, es demasiado abrupto y causa un sonido "click". Debemos usar un filtro entre el microcontrolador y el amplificador. La parlante se ajusta una vez por segundo. El filtro de DAC puede bloquear frecuencias mas que 1 Hz. | ||
* No hay datos diagnósticos para el usuario. Como minimo, podemos añadir unos LEDes para indicar si todo está bien. Mejor, podemos añadir una pantalla pequeña y podemos mostrar datos sobre la calidad de la señal y la posición de la banderita. | * No hay datos diagnósticos para el usuario. Como minimo, podemos añadir unos LEDes para indicar si todo está bien. Mejor, podemos añadir una pantalla pequeña y podemos mostrar datos sobre la calidad de la señal y la posición de la banderita. | ||
* El sistema no es mecánicamente simple. Tenemos que simplificar los cables y mejorar la robustez y simplicidad. | |||
* El sistema no es completamente inmune a la luz externa. Podemos reconsiderar la idea de pulsar el emisor para mejorar la relación señal ruido. | |||
* En lugar del amplificador, podemos usar una fuente de alimentación controlable. Puede ser mas sencillo. No necesitamos variar el voltaje rápidamente. | |||
=Código= | =Código= | ||
| Línea 22: | Línea 28: | ||
const int control_pin = 25; | const int control_pin = 25; | ||
const int bias_pin = 26; | const int bias_pin = 26; | ||
void setup() { | |||
Serial.begin(115200); | |||
dacWrite(bias_pin, 150); | |||
pinMode(34, INPUT); | pinMode(34, INPUT); | ||
analogSetAttenuation(ADC_0db); | analogSetAttenuation(ADC_0db); | ||
} | |||
int dac = 127; | |||
void loop() { | void loop() { | ||
int x = analogRead(34); | |||
if (x > 2500) dac++; | |||
if (x < 1500) dac--; | |||
if (dac < 0) dac = 0; | |||
if (dac > 255) dac = 255; | |||
dacWrite(control_pin, dac); | |||
Serial.print("0 5000 "); | |||
Serial.print(dac * 10); | |||
Serial.print(" "); | |||
Serial.println(x); | |||
delay(1); | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||