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;
const int amplitude = 255;
const int neutral = 127;


void setup() {  
void setup() {  
// pinMode(34, INPUT);
  Serial.begin(115200);
// analogSetAttenuation(ADC_0db);
 
   dacWrite(bias_pin, 118);
  dacWrite(bias_pin, 150);
   dacWrite(control_pin, neutral);
 
   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;


void loop() {
   dacWrite(control_pin, dac);
  /*
   for (int i = 0; i <= amplitude; i+=10) {
    dacWrite(control_pin, i);
    delayMicroseconds(10000);
  }


   for (int i = amplitude; i >= 0; i-=10) {     
   Serial.print("0 5000 ");
    dacWrite(control_pin, i);
  Serial.print(dac * 10);
    delayMicroseconds(10000);
  Serial.print(" ");
   }
  Serial.println(x);
  */
   delay(1);
}
}
/*
    int adc = analogRead(34);                // 0..4095
    int level = map(adc, 0, 4095, 0, 255);      // 0..255 for DAC
    dacWrite(25, level);
    delayMicroseconds(100);
*/
</syntaxhighlight>
</syntaxhighlight>