TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: da17 en 29 de Junio de 2008, 17:18:01
-
buen dia!!!!
ha llegado a mis manos un actuador pzt de 3 Mhz, que referencia de oscilador digital me recomiendan, para manejar esta frecuencia. por la atencion prestada quedo agradecido
Daniel
________________________________________________________
-
Hola.
Pues en el mercado existen varios tipos, todo depende de la resolucion que se quiera tener. Por la sencillez en la programacion de frecuencia creo que seria bueno utilizar el LTC6903 (SPI) o el LTC6904(I2C).
Tienes que definir tambien en que lenguaje vas a programar (C, ASM, BASIC).
Saludos
-
hola!!!!
Estuve observando el datasheet de este oscilador y si que va bien con lo que pienso hacer!!!!!
Para el manejo y configuración utilizare un pic 18f452 y compilador ccs......
Una vez lo tenga empiezo a programar que según el datasheet se le tienen que enviar dos valores de configuración.
en esta semana les escribo como me fue con este oscilador Muchas gracias por la atención prestada
-
hola !!!!!
les comento que ya llego el Ltc6903 el cual se comunica mediante protocolo SPI, como lo necesito a 3Mhz calculo los parametros dac y oct para esta frecuencia y luego se acomodan de acuerdo a la siguiente posicion, que es como los recibe el oscilador:
OCT3 OCT2 OCT1 OCT0 DAC9 DAC8 DAC7 DAC6
DAC5 DAC4 DAC3 DAC2 DAC1 DAC0 CNF1 CNF0
De acuerdo a lo que he leido de los transductores PZT puede que esta sea o no sea la frecuencia central de oscilacion, como hago para saber a que frecuencia resuena este oscilador??
ademas necesito controlar la potencia que me aconsejan, una fuente regulada analogamente o digitalmente!!!!! gracias MLO por la referencia de este oscilador esta bacano!!!!!
el programa y el archivo de simulacion esta en los adjuntos
-
Hola.
Genial que lo hallas configurado. Faltaria el bucle infinito y controlar el envio de la configuracion con algun evento externo (algun pulsador puede ser). Respecto a los transductores PZT, estos traen un rango de error determinado al rededor de una frecuencia central de oscilacion, en tu caso 3MHz (es el transductor el que resuena y no el oscilador :lol:).
La manera de saber a que frecuencia esta resonando es medir la potencia de salida del transductor, mientras se cambia la palabra de configuracion del generador de señal u observar la curva de respuesta sobre el transductor. Obviamente, la potencia entregada por el LTC no es la adecuada para realizar estas mediciones, asi que hay que realizar un acople de potencia para proteger el LTC.
Te recomiendo un control de potencia digital (mira Control de Fase con interrupciones (http://www.todopic.com.ar/foros/index.php?topic=21584.0)).
Saludos
-
Hola.
Estuve trabajando con el LTC y, aunque es un oscilador que tiene buena resolucion, hay que tener en cuenta que presenta un error de calibracion, asi que es mejor tomar frecuencias base para configurar las otras. En si, es como en todo proceso, si quieres presicion debes tener un patron, en este caso un frecuencimetro.
Saludos
-
hola a todos!!!!
les comento que ya estoy modificando la frecuencia del oscilador, para lograr encontrar la frecuencia de resonancia, con respecto al bucle infinito que me digiste MLO ya lo coloque, ahora lo que me falta es como hacer que cada ves que prenda el circuito este vuelva a tomar el ultimo dato y no me toque volver a calibrarlo.. en la simulacion en proteus el numero 2 del teclado es Up y el numero 8 es DOWN esto se realizo para calibrar la frecuencia de oscilacion del PZT, ...gracias MLO por la ayuda prestada
-
Hola.
Esta muy bien :-/. Para evitar calibrar el LTC cada que enciendas el PIC, has uso de la EEPROM del PIC, guarda ahi el ultimo valor de la calibracion y luego, en el inicio del programa, carga el valor leido desde la EEPROM y lo envias al LTC.
Para el manejo de la EEPROM el CCS tiene unas funciones built-in que son read_eeprom y write_eeprom, hechale un vistazo a la ayuda del CCS.
Espero tus comentarios.
Saludos
-
No sé si te servirá de algo, pero en una ocasión trabajé con un oscilador parecido, el LTC6904
Oscilador Variable de 1KHz a 68MHz con LTC-6904 (http://www.micropic.es/index.php?option=com_content&task=view&id=2&Itemid=39)
-
Hola.
Pues si maestro Nocturno, es el mismo LTC solo que con interfaz I2C. De todas maneras, aunque la resolucion es muy buena (fx0.001 por banda) la calibracion es un problema y para el transductor que usa da17 el error en el BW deberia ser menor de 5kHz en 3MHz, asi que hay que calibrarlo. He probado mandar una misma palabra de configuracion a dos LTC diferentes y la frecuencia obtenida esta a unos 100kHz desviada una de la otra.
Oye da17, de pronto no has pensado en un AD9833?? Tengo pedidos algunos (aun no llegan), podriamos postear su uso aca en este hilo y quedarian dos posibilidades :-/ :-/
Saludos
-
hola a todos!!!
con respecto a lo que comenta el maestro nocturno el programa esta muy interesante, solo que lo migre a un pic 18 le coloque teclado , una lcd y quedo bacano en la simulacion en proteus ...falta implementarlo en harware!!!
lo que dice el maestro MLO lo probe y es verdad, la misma palabra de configuracion en dos LTC`s, da una frecuencia diferente asi que toca calibrar cada ltc, en estos dias coloco como escribo los datos en la eeprom del pic, para no tener que volver a calibrar el oscilador, estuve mirando el AD9833 y da mayores prestaciones que el LTC, asi que mandare a pedir por ellos para que luego posteemos su uso en el foro!!!!
gracias!!!!
-
hola a todoss!!
en el archivo adjunto esta la configuracion del ltc, en la cual configuro la frecuencia de oscilacion y la guardo en la memoria interna del pic, para que una vez encendido el sistema no me toque que configurarlo de nuevo.
me podrian dar una idea de como habilitar la entrada a la configuracion, de tal manera que esta quede activa solo un instante de tiempo al inicio del programa, y luego de pasar este tiempo, no se pueda acceder mas a la configuracion.
espero sus sugerencias..
gracias
-
Podrías hacer que, por ejemplo, se entrase en la configuración si el dispositivo se enciende con la tecla "*" pulsada en el teclado numérico.
Comprobarlo es sencillo: será lo primero que haga tu programa tras un reset.
-
hola a Todos!!!!
no se si le entendi bien al maestro nocturno, pero si coloco la instruccion c=kbd_getc(); ,siempre el programa va a esperar que se pulse una tecla al inicio?
me corrigen si estoy equivocado :mrgreen:!!!
aqui dejo como lo he pensado segun la recomendacion anterior, espero poder mejorar esta parte de la entrada a la configuracion, con sus consejos
void main()
{ char c;
lcd_init();
kbd_init();
port_b_pullups(TRUE);
do{ //hacer hasta
c=kbd_getc();
}while(c=='\0'); //que no se pulse tecla
if (c=='*')
{
configuracion(); // entra a la funcion configuracion
}
while(TRUE)
{
leer_eeprom();
configurar_oscilador();
}
}
muchasss gracias
-
Hola.
La libreria del teclado del CCS solo retorna la tecla pulsada cuando se desoprime la tecla. Si usas la funcion del teclado para entrar al modo de configuracion, no te va a funcionar, ya que siempre te va a retornar '\0'. Lo mejor es usar dos pines (tu eliges cuales) del teclado y hacer la rutina aparte.
Seria algo asi:
output_low(row0);
if(input_state(col0))
c='*';
else
c='#'
Saludos
-
Hola a todos, quería preguntarles acerca del manejo del oscilador LTC6904, ya que no puedo transmitirle la frec deseada. Estoy programando con el CCS y utilizando un 18F4520. Simplemente lo que hice fue configurar al PIC como master, estableciendo los pines de reloj y datos, y luego utilizando un bucle con:
i2c_start();
i2c_write(0x2E);
i2c_write(DATO1);
i2c_write(DATO2);
i2c_stop();
El problema es que queda clavado en 1KHz, agradezco cualquier ayuda!
-
Hola.
Falta la parte de poner a ceros el bit 0 de DATO2. Recuerda que debe haber una pausa para ello, creo que con 5mS es suficiente. Algo así:
i2c_start();
i2c_write(0x2E);
i2c_write(DATO1);
i2c_write(DATO2);
i2c_stop();
delay_ms(5);
bit_clear(DATO2,0);
i2c_start();
i2c_write(0x2E);
i2c_write(DATO1);
i2c_write(DATO2);
i2c_stop();
Saludos
-
Hola!, gracias por responder.
DATO1=(OCT3,OCT2,OCT1,OCT0,DAC9,DAC8,DAC7,DAC6)
DATO2=(DAC5,DAC4,DAC3,DAC2,DAC1,DAC0,CNF1,CNF0)
estos son los datos según la hoja de datos y los puse de la siguiente manera:
DATO1=(OCT<<4) | (int)(DAC>>6);
DATO2=(((int)DAC)<<2);
así que los ceros en los b0 y b1 los tenía, lo que no tenía era un retardo en el búcle, voy a ponerlo y luego te cuento a ver como anduve. Gracias!!!
Saludos!
-
Lamentablemente no era eso, sigo buscandole la vuelta... :(
-
Hola.
Yo lo hago así y me funcionaba ;-)
TOTAL=((DAC<<2) | CNF | (OCT<<12));
DATO1=TOTAL>>8;
DATO2= TOTAL;
Saludos
-
no hay que poner algún FUSE en especial por casualidad?. Gracias
-
No me está generando la señal de clock... alguien sabe porque puede ser?
-
Porfavor no se si alguien me puede ayudar en la comunicacion I2C para un LTC6904 no me funciona soy nuevo en esto.. estoy realizando en mikrobasic no se si alguien me puede ayudar con algun consejo: estoy programando con un pic 16f886 de antemano gracias por su ayuda, estoy queriendo sacar una frecuencia fija de 1mhz
program OsciladorDigital
main:
OSCCON = %01100110 ' 4mhz, frecuencia
TRISC = %11000111
TRISB = %11101110
PORTB = 0 ' Inicializo con el puertob en cero
ANSEL = %00000000 ' SIN ADC
CCP1CON = %0000000 ' SIN MODULO CCP
Delay_ms(1000)
I2C_Init(100000) ' Velocidad de transmision de 100kb/seg
I2C_Start ' Issue I2C start signal
I2C_Wr(%00101110) ' reconocimiento del LTC Adress pin4 a cero
I2C_Wr(%00110101) ' Envia dato 1
I2C_Wr(%01101010) ' Envia dato 2
I2C_Stop
delay_ms(10)
repit:
goto repit
End.
-
No manejo Basic, pero lo hice funcionar en lenguaje C. Lo puedes ver aquí:
http://www.micropic.es/mpblog/2004/08/oscilador-variable-de-1khz-a-68mhz-con-ltc-6904/