Creación de Audiómetro con Arduino UNO

¡Hola, buen día!.

Primero que nada, soy nuevo en la comunidad y en general con Arduino, recién voy introduciéndome a este mundo, soy ingeniero en TIC's por lo que tengo un poco de nociones electrónicas pero sinceramente no es mi campo.

Les cuento un poco sobre esto, trabajo en un hospital privado en un departamento donde elaboramos proyectos (Llámese ingeniería médica) y recién nos han propuesto generar un proyecto nuevo:

  • Crear un audiómetro para detección de problemas auditivos.

¿Cómo funciona un audiómetro?

Un audiómetro genera señales senoidales con frecuencias entre los 0 Hz hasta 8kHz (0-8000), su amplitud (Volumen) varía entre los 0 dB SPL (Nivel de Presión Sonora por sus siglas en inglés "Sound Pressure Level") hasta los 120 dB SPL.

Solución Propuesta:

Crear una interfaz gráfica (ya ha sido creada en C# WPF, adjunto imagen) en donde el operador seleccione 2 opciones

1.- La frecuencia a reproducir (De 0 a 8k)
2.- Intensidad del Sonido (De 0 a 120 dB)

Una ves seleccionadas ambas opciones, reproducir mediante Arduino conectado a una salida de audio 6.5mm (como enchufes de guitarra) hacia unos audífonos la señal solicitada.

Básicamente el Arduino solamente será nuestro generador de funciones / señales y en la interfaz de la computadora se graficarán los resultados mediante los resultados que el paciente indique.

Dado que el Arduino UNO solo genera señales digitales y por pulso (PWM) me vi en la necesidad de comprar un DAC MCP 4725 de 12 bits el cual (por teoría) supongo que a 12 bits puede generar un rango dinámico de 72 dB. Pensé en comprar el AD9850 ya que según la documentación puede trabajar a 32 bits y en teoría debería entregar 192 dB (más vale que sobre a que falte).

¿Ustedes que me recomiendan?, primero haré las pruebas con el MCP y si el resultado es más o menos el deseado, me lanzaría a comprar el AD9850 pero mi única y GRAN DUDA ES:

¿PUEDE UN GENERADOR DE FUNCIONES O SEÑALES COMO EL AD9850 O EL DAC REPRODUCIR LA ONDA EN FORMA DE AUDIO?

En caso de que sí, con la ayuda de un sonómetro (decibelómetro) mediríamos la eficacia de los decibeles dentro de una cabina aislada de audio pero como les comenté al inicio, mi fuerte no es la electrónica, espero me hayan entendido, en los archivos adjuntos agrego un pequeño diagrama de flujo (que hice a prisas) para darles la idea del proyecto. MUCHAS GRACIAS.

Por qué no te fijás en un Arduino Due que tiene dos DAC de 12 bits. Tal vez puedas omitir un DAC externo y manejarlo por software.

Pablo_Lucini:
Por qué no te fijás en un Arduino Due que tiene dos DAC de 12 bits. Tal vez puedas omitir un DAC externo y manejarlo por software.

Si lo tomé en cuenta pero no se si ambos DAC del Arduino DUE puedan usarse en serie para generar 24 bits, la verdad lo desconozco, otra de las razones por las que dudé, según mi lógica, si se utilizan ambos DAC requeriría mayor voltaje de entrada al Arduino y eso podría perjudicarlo o generar ruido en la señal si mal no estoy. Por eso me vi en la necesidad de recurrir a un DAC externo.

Saludos y gracias por la sugerencia!, el día de mañana adquiriré un osciloscopio para verificar las frecuencias que el DAC MCP entrega y ver de que manera puedo modularlas, saludos.

¿Un osciloscopio para la gama de frecuencias audibles?

¿PUEDE UN GENERADOR DE FUNCIONES O SEÑALES COMO EL AD9850 O EL DAC REPRODUCIR LA ONDA EN FORMA DE AUDIO?

Estas perdido como Adán en el día de la madre. Si tu lo dices..... que genera las señales, eso es lo que hace, generar ondas cuadradas y senoidales en un amplio rango de frecuencias. También las audibles.

El AD9850 te va bien para lo que quieres hacer, junto a un arduino nano, talvez un encoder, una pantalla 2x16 o 4x20, tal vez un CD22100 para seleccionar las salidas de estas dos formas de onda que van al amplificador de auriculares o tal vez silenciar un oído. Tal vez una resistencia electrónica para prescindir de un potenciómetro de ajuste de volumen.

Por favor, no confundas byte con decibelios.

Supongo que el instrumento que intentas fabricar a está inventado. Sería bueno tener algo mas de información de algún aparato comercial.

Confieso que tengo poco interés en ayudarte desde el momento que dices que trabajas para un hospital privado. Preferiría que contraten a un diseñador y programador. Diferente sería que fuera para un hospital público.

Buena suerte.

Yo estuve haciendo algunas cuentas que conducen a que la mejor opción es el DDS.
El DAC propuesto presentará problemas de resolución a alta frecuencia suponiendo que usaras un Arduino MEGA por ejemplo, ya que un UNO esta mas limitado.
No se me cruzó el DUE que es muy buena opción.

Imagina la situación de 8Khz Su T = 1/F = 125useg
Ahora para lograr tus 4096 pasos o sea 12 bits tendrias que enviar un dato al DAC cada 125useg/4096 = 0,030517578125 useg = 30.51 nseg

Si el ciclo del reloj de un UNO es de 62.5nseg obviamente no se puede.
Un MEGA también esta a 62.5 nseg asi que no sirve

Un DUE 84Mhz pero su DAC según la hoja de datos dice

DACC, per the specsheet), section 44.6, Functional Description:

The DACC uses the master clock (MCK) divided by two to perform conversions. This clock is named DACC Clock. Once a conversion starts the DACC takes 25 clock periods to provide the analog result on the selected analog output.

Ya que el reloj del DUE esta a 84Mhz. Una conversón toma 25 y dos entonces es como si tuvieramos el reloj a la mitad o sea 42 Mhz => 25 ciclos reloj son 25x 1/42Mhz = 595 nseg.

Ahora he visto coss como esta en el DUE generando audio a 44Khz

Con esto tienes un buen punto de partida si usas un DUE

Pero la mejor opcion gratis porque casi no tienes que usar nada ni poder de un Arduino es el DDS que lo hace todo a tu gusto.

Es caro pero es la mejor alternativa.

Daniel_Arg:
¿Un osciloscopio para la gama de frecuencias audibles?

Confieso que tengo poco interés en ayudarte desde el momento que dices que trabajas para un hospital privado. Preferiría que contraten a un diseñador y programador. Diferente sería que fuera para un hospital público.

Buena suerte.

El fin de utilizar el osciloscopio es para comprobar la modulación de la señal senoidal al utilizar el DAC, no tanto para verificar si es audible o no.

Y tu opinión es respetable. No vengo aquí como trabajador ni inversionista ni nada, es meramente amor al arte, no me pagan por invertir en comprar Arduinos ni herramientas de trabajo, es un proyecto propuesto (no formal) y, ¿de que serviría la ingeniería si no intentamos utilizar el ingenio en esto?. Claro, directamente del hospital y siendo yo el líder de proyectos claro que sería más rápido y factible contratar a un especialista en ello, pero en términos tangibles no, y repito, es solamente una idea, una ambición, tómalo de la manera que quieras pero mi meta o fin es aprender, pues el hospital no requiere el equipo ya que contamos con varios profesionales pero mi idea tampoco es clonar lo que ya está hecho. Si puedo innovar utilizando Arduino y creando interfaces o utilizando otro método de generación de señales pues ya es ganancia propia y un ahorro inimaginable. Pues un audiómetro profesional oscila entre los $45 mil pesos mexicanos hasta los $100k. Entre Arduino, cables y demás no he gastado más de $1k y me parece perfecto.

surbyte:
Imagina la situación de 8Khz Su T = 1/F = 125useg
Ahora para lograr tus 4096 pasos o sea 12 bits tendrias que enviar un dato al DAC cada 125useg/4096 = 0,030517578125 useg = 30.51 nseg

Si el ciclo del reloj de un UNO es de 62.5nseg obviamente no se puede.
Un MEGA también esta a 62.5 nseg asi que no sirve

Me encantó el razonamiento que usaste y estas atascado de razón. Un DUE sería más factible para el proyecto, por desgracia me adelante al poco conocimiento en Arduino que tengo y adquirí el UNO hace 2 semanas. Pero propuesta la alternativa de utilizar el DDS externo (en este caso el AD9850) me veo en la necesidad de adquirirlo y comenzar a experimentar. Me has aclarado el camino y te lo agradezco. Por el momento haré pruebas con el DAC a 8 bits para adaptarme al ciclo del Arduino UNO y os comento que tal me fue. Gracias!

Hay multímetros baratos que miden la frecuencia e incluso puedes usar un arduino para ello, como lo hace esta persona en Youtube generador de frecuencias con el chip ad9850 . Incluso como muestra en el video que coincide la frecuencia generada con la medida por el otro arduino no necesitas eso.

No entiendo porque tendrías que modular la señal senoidal (ya sea en frecuencia o amplitud) para medir el grado de hipoacusia de un paciente.

@Daniel_Arg

A vale ya entiendo el punto!, bueno eso sí, el osciloscopio fue lo primero que me vino a la mente, y dado que no estoy acostumbrado a trabajar con señales pensé que me serviría para ver de que manera se modulan y como se ven gráficamente, no debí haber faltado a las materias de sistemas y señales en la universidad jaja, gracias por el consejo e interesante el video! Utilizan el DDS

Hasta el momento hablamos de la parte física del audiómetro, pero debes saber que es lo que necesita el profesional médico y operador del instrumento, para ir pensando en el soft, que incluso puede modificar el hardware.
Vaya a saber si es necesario un generador de señales y si es suficiente con una colección de audios que pueden estar grabados en una memoria SD en formato mp3.

He buscado en google y hay estudios basados en conversaciones realizadas en distintos ambientes, avenida, café, playa etc.

También he visto que el paciente debe dar una respuesta con un pulsador pero también podría responder tocando en la pantalla con un multiple choice. Pensar en la opción del ruido blanco para anular la transmisión ósea hacia el otro oído.

No te limites a arduino y un generador de señal, porque un audiómetro podría corren en una netbook y su placa interna de sonido o una externa por USB. Generador de tonos para windows

Mira este otro video de un audiómetro para PC.

Buen día chicos, he vuelto, les comento, he logrado conectar el DAC siguiendo las instrucciones del desarrollador e implementando la librería Adafruit. El código quedó de la siguiente manera para 8 bits.

#include <Wire.h>
#include <Adafruit_MCP4725.h>

Adafruit_MCP4725 dac;

// Set this value to 9, 8, 7, 6 or 5 to adjust the resolution
#define DAC_RESOLUTION    (8)

const PROGMEM uint16_t DACLookup_FullSine_8Bit[256] =
{
  2048, 2098, 2148, 2198, 2248, 2298, 2348, 2398,
  2447, 2496, 2545, 2594, 2642, 2690, 2737, 2784,
  2831, 2877, 2923, 2968, 3013, 3057, 3100, 3143,
  3185, 3226, 3267, 3307, 3346, 3385, 3423, 3459,
  3495, 3530, 3565, 3598, 3630, 3662, 3692, 3722,
  3750, 3777, 3804, 3829, 3853, 3876, 3898, 3919,
  3939, 3958, 3975, 3992, 4007, 4021, 4034, 4045,
  4056, 4065, 4073, 4080, 4085, 4089, 4093, 4094,
  4095, 4094, 4093, 4089, 4085, 4080, 4073, 4065,
  4056, 4045, 4034, 4021, 4007, 3992, 3975, 3958,
  3939, 3919, 3898, 3876, 3853, 3829, 3804, 3777,
  3750, 3722, 3692, 3662, 3630, 3598, 3565, 3530,
  3495, 3459, 3423, 3385, 3346, 3307, 3267, 3226,
  3185, 3143, 3100, 3057, 3013, 2968, 2923, 2877,
  2831, 2784, 2737, 2690, 2642, 2594, 2545, 2496,
  2447, 2398, 2348, 2298, 2248, 2198, 2148, 2098,
  2048, 1997, 1947, 1897, 1847, 1797, 1747, 1697,
  1648, 1599, 1550, 1501, 1453, 1405, 1358, 1311,
  1264, 1218, 1172, 1127, 1082, 1038,  995,  952,
   910,  869,  828,  788,  749,  710,  672,  636,
   600,  565,  530,  497,  465,  433,  403,  373,
   345,  318,  291,  266,  242,  219,  197,  176,
   156,  137,  120,  103,   88,   74,   61,   50,
    39,   30,   22,   15,   10,    6,    2,    1,
     0,    1,    2,    6,   10,   15,   22,   30,
    39,   50,   61,   74,   88,  103,  120,  137,
   156,  176,  197,  219,  242,  266,  291,  318,
   345,  373,  403,  433,  465,  497,  530,  565,
   600,  636,  672,  710,  749,  788,  828,  869,
   910,  952,  995, 1038, 1082, 1127, 1172, 1218,
  1264, 1311, 1358, 1405, 1453, 1501, 1550, 1599,
  1648, 1697, 1747, 1797, 1847, 1897, 1947, 1997
};

void setup(void) {
  dac.begin(0x60);
}

void loop(void) {
    uint16_t i;

    #if DAC_RESOLUTION == 8
      for (i = 0; i < 256; i++)
      {
        dac.setVoltage(pgm_read_word(&(DACLookup_FullSine_8Bit[i])), false);
      }
    #endif
}

Y me genera la siguiente señal a 13.8 Hz (varía en ocasiones 0.03Hz pero supongo que es por la calidad de los cables o algún ruido que se está generando):

El circuito ha quedado montado de la siguiente manera:

Ahora bien, mi siguiente duda es:

¿Cómo puedo implementar la función sin() de Arduino con 2 potenciometros para poder manipular la amplitud (magnitud de voltaje) y la frecuencia de la señal?, ¿la función dicha trabaja en PWM?

Saludos!

EDIT: Algo similar a esto
Generador de señales con potenciometros

Que atento para ver como llegas a fabricar con ese chip y arduino una frecuencia de varios kilociclos.

Le vas a tener que dar un poco de meta azul de la que fabrica Walter White, al oscilador de arduino.

Daniel_Arg:
Le vas a tener que dar un poco de meta azul de la que fabrica Walter White...

¿Willy Wonka?, no, Heisenberg :grinning:

No pretendo generar kilos aún, con que llegue a 1k estoy satisfecho en lo que consigo el DDS pero me está agradando la etapa experimental. Saludos!

Prueba con poner esto en el loop , y luego habilita el delay.

for (int i = 0; i < 4095 ; i= i*2){
  dac.setVoltage(i, false);
// delay(1);  
}

Es en plan de jugar, porque como ya te explicaron ese chip no te va a servir.

Tus imágenes de Dropbox no son visibles. Por favor, subelas al mismo hilo como adjuntos para lo cual tendras que editar y luego usa el apartado al final de las normas para poder visualizarlas.
No uses dropbox, ni googledrive ni onedrive para mostrar imágenes.

Para lograr una senoide debes proponerte cuantos puntos quieres graficar los que claro dependen de tu DAC y su resolución. Si tienes 8 bits pueds usar una tabla de 256 pasos.
Desde 0 a 255 en un vector.
Luego ese vector es barrido y el dato enviado al DAC. Como resultado obtienes la senoide.
Eso a medida que aumentas los bits de resolución se hace mas y mas pesado.

256 valores a 1 useg te darán un T de 256 useg y por lo tanto una F = 1/T de 3906 hz. Es solo un ejemplo.

Entonces necesitas un timer a 1 useg y dendro de su rutina barres incrementando el índice los valores de la table seno.

Espero se entienda.

Daniel_Arg:
Es en plan de jugar, porque como ya te explicaron ese chip no te va a servir.

Correcto, he logrado visualizar con el loop un poco de cambio en la amplitud pero se adapta bastante a la idea, gracias Daniel!.

surbyte:
Tus imágenes de Dropbox no son visibles.

Una disculpa!, al momento de crear el post eran visibles pero supongo que Dropbox las habrá bloqueado o tendrá algún tiempo límite para la visualización de las imágenes, de igual manera ya adjunté las imágenes a la respuesta. Gracias por el aviso. En cuanto al timer entendí tu objetivo, lo intentaré y veré que tal me sale.

He intentado replicar el uso del DAC en éste video, si lo logran ver, verán que utiliza un potenciometro para modular la frecuencia de la onda senoidal pero no entiendo como lo conectó, ya que conecto el potenciometro a 5v, el 2do cable a A0 y el 3ro a GND si mal no recuerdo, el timer del LED del Arduino incrementa si manipulo el potenciometro pero no el DAC. ¿Tendrán alguna idea de cómo está conectado?.

Ya he solicitado el DDS AD9850, solo es cuestión de esperar :sleeping: gracias por la paciencia, saludos.

Cuando me refiero a las tablas hablo de algo asi.

Aca una tabla con 256 valores para un dac de 8 bits.
Esto esta pensado para una salida PWM que genera una senoide por filtrado. No es tu caso!!!
Pero sirve para que veas como hacerlo.
Modifica este código usando tu DAC, y aprovecha el uso del TIMER que en este caso corre a 31k que por 256 te dara 32us x 256 = 8192 useg o sea 8.192 mseg = 122 Hz

// table of 256 sine values / one sine period / stored in flash memory
const byte sine256[] PROGMEM = {
  127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231,233,234,236,238,239,240,
  242,243,244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239,238,236,234,233,231,229,227,225,223,
  221,219,217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90,87,84,81,78,
  76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,
  33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,121,124

};
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

int ledPin  = 13;                 // LED pin 7
int testPin = 7;
int t2Pin   = 6;
byte bb;

double dfreq;
// const double refclk=31372.549;  // =16MHz / 510
const double refclk=31376.6;      // measured

// variables used inside interrupt service declared as voilatile
volatile byte icnt;              // var inside interrupt
volatile byte icnt1;             // var inside interrupt
volatile byte c4ms;              // counter incremented all 4ms
volatile unsigned long phaccu;   // pahse accumulator
volatile unsigned long tword_m;  // dds tuning word m

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
  Serial.begin(115200);        // connect to the serial port
  Serial.println("DDS Test");

  pinMode(6, OUTPUT);      // sets the digital pin as output
  pinMode(7, OUTPUT);      // sets the digital pin as output
  pinMode(11, OUTPUT);     // pin11= PWM  output / frequency output

  Setup_timer2();

  // disable interrupts to avoid timing distortion
  cbi (TIMSK0,TOIE0);              // disable Timer0 !!! delay() is now not available
  sbi (TIMSK2,TOIE2);              // enable Timer2 Interrupt

  dfreq=1000.0;                    // initial output frequency = 1000.o Hz
  tword_m=pow(2,32)*dfreq/refclk;  // calulate DDS new tuning word 

}
void loop()
{
  while(1) {
     if (c4ms > 250) {                 // timer / wait fou a full second
      c4ms=0;
      dfreq=analogRead(0);             // read Poti on analog pin 0 to adjust output frequency from 0..1023 Hz

      cbi (TIMSK2,TOIE2);              // disble Timer2 Interrupt
      tword_m=pow(2,32)*dfreq/refclk;  // calulate DDS new tuning word
      sbi (TIMSK2,TOIE2);              // enable Timer2 Interrupt 

      Serial.print(dfreq);
      Serial.print("  ");
      Serial.println(tword_m);
    }

   sbi(PORTD,6); // Test / set PORTD,7 high to observe timing with a scope
   cbi(PORTD,6); // Test /reset PORTD,7 high to observe timing with a scope
  }
 }
//******************************************************************
// timer2 setup
// set prscaler to 1, PWM mode to phase correct PWM,  16000000/510 = 31372.55 Hz clock
void Setup_timer2() {

// Timer2 Clock Prescaler to : 1
  sbi (TCCR2B, CS20);
  cbi (TCCR2B, CS21);
  cbi (TCCR2B, CS22);

  // Timer2 PWM Mode set to Phase Correct PWM
  cbi (TCCR2A, COM2A0);  // clear Compare Match
  sbi (TCCR2A, COM2A1);

  sbi (TCCR2A, WGM20);  // Mode 1  / Phase Correct PWM
  cbi (TCCR2A, WGM21);
  cbi (TCCR2B, WGM22);
}

//******************************************************************
// Timer2 Interrupt Service at 31372,550 KHz = 32uSec
// this is the timebase REFCLOCK for the DDS generator
// FOUT = (M (REFCLK)) / (2 exp 32)
// runtime : 8 microseconds ( inclusive push and pop)
ISR(TIMER2_OVF_vect) {

  sbi(PORTD,7);          // Test / set PORTD,7 high to observe timing with a oscope

  phaccu=phaccu+tword_m; // soft DDS, phase accu with 32 bits
  icnt=phaccu >> 24;     // use upper 8 bits for phase accu as frequency information
                         // read value fron ROM sine table and send to PWM DAC
  OCR2A=pgm_read_byte_near(sine256 + icnt);    

  if (icnt1++ == 125) {  // increment variable c4ms all 4 milliseconds
      c4ms++;
      icnt1=0;
   }   

  cbi(PORTD,7);            // reset PORTD,7
}

Todo lo que sea PORTD y su pin 7 debes reemplazarlo por tu dac

Referencia Arduino DDS Sinewave Generator

Arduino DDS Sinewave Generator

¡Perfecto!, intentaré realizar la adaptación al DAC.

Una duda, con el AD9850, ¿es posible modelar la amplitud de la onda mediante código para suplir al potenciometro?. Si es posible y estoy entendiendo bien, se tendría que dividir el número de puntos que otorga el potenciometro (1024) entre la máxima amplitud de la onda en volts verdad?. Para ir indicando en código cuanto sería la máxima amplitud (1024 = 5v), etc. Saludos!

¡Hola buen día!, como bien dice el título, busco una de manera controlar la amplitud (volumen o ganancia) de una señal senoidal generada a través de un DDS AD9850 mediante Arduino. Recientemente adquirí el DDS y con la documentación y ejemplos que encontré en internet logré representar las frecuencias deseadas pero me topé con el problema de la amplitud. Se me ocurría utilizar algún tipo de amplificador operacional pero lo que quiero es controlar el volumen mediante programación sin necesidad de utilizar potenciometros.

EDIT: Utilizo la conexión serial del computador por lo que mi máxima amplitud rms generada es aproximadamente 3.7v de salida del arduino, pero el AD9850 solo maneja un voltaje pk-pk de 1v y genera en rms 700mv aproximadamente si mal no leí. Tendría que amplificar el voltaje de salida y posteriormente manipularlo digitalmente.

Adjunto las imágenes del proyecto.

Tendría que amplificar el voltaje de salida y posteriormente manipularlo digitalmente.

Hazlo como tu quieras.

attiny128:
No. Lo que deberías hacer es colocar el control de volumen entre el generador de señal y el amplificador.

Si no quieres usar un control manual puedes usar unpotenciómetro digital, en tu caso dos, X9C103P con su librería llamada DigiPotX9Cxxx y usar sus funciones pot.reset, pot.set, pot.get, pot.increase, pot.decrease. Saludos

¿No sería mejor amplificar primero la señal y después modificar la amplitud de la señal misma amplificada?.

Ya que el voltaje de salida del DDS es de máximo 2v (1v pk-pk), el amplificador que pienso utilizar (LM386) no lee potencias tan bajas, si regulo la potencia antes de amplificarla puede ser que ni se escuche (según mi razonamiento). En base a lo que me comentaste, lo intenté replicar gráficamente para darnos una idea de lo que se planea.