Diferencia entre revisiones de «Vibrómetro»
Página creada con «<syntaxhighlight lang=c++> const int control_pin = 25; const int bias_pin = 26; const int amplitude = 255; const int neutral = 127; void setup() { // pinMode(34, INPUT); // analogSetAttenuation(ADC_0db); dacWrite(bias_pin, 118); dacWrite(control_pin, neutral); } void loop() { /* for (int i = 0; i <= amplitude; i+=10) { dacWrite(control_pin, i); delayMicroseconds(10000); } for (int i = amplitude; i >= 0; i-=10) { dacWrite(control_p…» |
Sin resumen de edición |
||
| (No se muestran 21 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
* [[Media:vishay_TCST2103.pdf | Vishay TCST2103 Datasheet]] | |||
<gallery> | |||
Ic_vs_displ_tcst2103.png | |||
Vibrometro control.jpg | amplificador (estamos usando 1k en lugar de 200 ohmios) | |||
Sensor colores.jpg | sensor (estamos usando 1k en lugar de 470 ohmios) | |||
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> | |||
=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%. | |||
* 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. La altura de la tela no es constante. | |||
* 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 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. | |||
* 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. | |||
* 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= | |||
<syntaxhighlight lang=c++> | <syntaxhighlight lang=c++> | ||
const int control_pin = 25; | const int control_pin = 25; | ||
const int bias_pin = 26; | const int bias_pin = 26; | ||
void setup() { | void setup() { | ||
Serial.begin(115200); | |||
dacWrite(bias_pin, 150); | |||
pinMode(34, INPUT); | |||
analogSetAttenuation(ADC_0db); | |||
} | } | ||
int dac = 127; | |||
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> | ||