TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: Nocturno en 28 de Febrero de 2011, 06:27:59

Título: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 28 de Febrero de 2011, 06:27:59
Hola amigos, estoy tratando de hacer funcionar un SAA1057 pero mi desconocimiento en temas de radio me está dificultando bastante el camino.

Lo he conectado como se puede ver en este esquema:
(http://www.shrani.si/f/1u/lK/4C6W6Ala/saa1057.jpg)

Como indica la datasheet (http://j.1asphost.com/zaliko/images/fm/SAA1057.pdf) por el pin 11-Fam se pueden meter frecuencias entre 512KHz y 32MHz, así que le estoy metiendo una frecuencia de 1MHz generada con el PIC.
Y aquí viene la primera duda: ¿se puede meter una frecuencia TTL proveniente de un PIC o hay que hacer alguna adaptación?

Por otra parte, no sé cómo ver si está funcionando o no. ¿Qué debería ver en la salida 6?, ¿un nivel de tensión o una frecuencia?
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: alogic.on en 28 de Febrero de 2011, 06:41:33
wolas, a mi me podriais explicar para que se utilizan estos sintetizadores de frecuencia. me podria servir para hacerme un juguete musical :mrgreen:
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 28 de Febrero de 2011, 06:59:36
Creo que sirve para hacer sintonizadores de radio.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: solapower en 28 de Febrero de 2011, 08:51:08
Yo diría que las entradas ,en principio,deberían ser senoidales puesto que provendrían del oscilador local del sintonizador y por comparación de fase
con el oscilador interno del chip con sus divisores generan a la salida en el pin 6 voltaje que variará entre +- 0 y Vcc3 que puede llegar a ser de 31V
y que sirve pàra polarizar el diodo varicap del oscilador local para generar la frecuencia de la emisora a sintonizar + o - la FI

O sea que en el pin 6 debes leer un voltaje

Creo que van por ahí los tiros
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 28 de Febrero de 2011, 10:31:17
  Es como lo dice solapower.

  La idea es que siempre el oscilador local está conectado al PLL. Así la tensión que sale por el pin 6 va "ajustando" la frecuencia del oscilador local hasta que, dividida por el divisor que le hemos indicado al PLL, coincide con la frecuencia del cristal que tiene el PLL.

  Si mal no recuerdo la FI de AM es 455KHz. Y, también si mal no recuerdo, la FI sale de de hacer la resta de la frecuencia de la emisora - la del oscilador local.

  Yo he manejado un sintonizador de TV LG, que tenía el MC44817 como PLL y como dicho sintonizador ya tenía todo el circuito de FI e incorporaba salidas de audio y video me quedó como una especie de conversor. Claro que, como es mi costumbre, lo probé en el protoboard y al ver que funcionaba, nunca lo terminé de armar.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Marioguillote en 28 de Febrero de 2011, 13:09:16
Hola a todos!

Y aquí viene la primera duda: ¿se puede meter una frecuencia TTL proveniente de un PIC o hay que hacer alguna adaptación?

Debieras intentar que no le llegue una onda cuadrada, como dice solarpower, lo deseable es trabajar con senoides. Para eso debieras meter algún separador y formador de onda (con un filtro RC lo pasas a senoidal fácilmente)

Por otra parte, no sé cómo ver si está funcionando o no. ¿Qué debería ver en la salida 6?, ¿un nivel de tensión o una frecuencia?

Allí vas a tener una forma de onda que variará en función de lo que introduzcas por FAM o FFM comparado con la referencia interna que genera el cristal de 4Mhz + el PLL
Esa forma de onda se suele pasar por un filtro pasabajos y se obtiene así una tensión para controlar un VCO.

--------------------------------------

El sistema trabajaría de la siguiente forma:

Tú tienes un oscilador controlado por tensión (VCO). Es decir, un oscilador que si le aplicas 0V entregará una frecuencia, si pasas a 1Volt entregará otra, 2Volts otra y así con todas las tensiones a las que esté preparado para trabajar. Yo puse el ejemplo de 0, 1 y 2 (valores enteros) pero debes contar con todos los valores intermedios y aquellos a los que pueda alcanzar el control del VCO. Ese valor lo determina el diseño del VCO.
Algunos trabajan de 0 a 5V, otros de 0 a 12V, otros de 0 a 33V y de este modo hay muchos "modelos de VCO.
Lo que debes tener en claro es: un oscilador controlado por tensión. De acuerdo a la tensión que introduzcas, obtienes una frecuencia.

El PLL que tienes posee un oscilador interno (con el cristal de 4 Mhz) y un divisor de frecuencias (conectado a ese oscilador) que logra bajar esa frecuencia a 1Khz, 2,5Khz, 5Khz o la que determines a través del bus I2C en tu caso. Esa frecuencia se usa internamente e ingresa a un Comparador de Fase
Por otro lado, ese IC toma la señal que introduzcas (por FAM o FFM) y la divide según lo que le indiques mediante el bus I2C. Luego de esa division, la frecuencia resultante entra a la otra entrada del comparador de fase.

Ya tienes entonces dos señales (dos frecuencias) entrando al comparador de fase.
Una fija y que es el resultado de la división hecha al oscilador que posee el cristal. Esa frecuencia tendrá una precisión muy elevada. Recuerda que es la de un cristal y sus divisiones (éstas elevan la exactitud)
La otra es variable. Tu VCO tiene que tener "tensión de control" para saber en qué frecuencia ubicarse.
Tú le has indicado al PLL (mediante el bus I2C) que se ponga en, por ejemplo, 1Mhz.

Aquí entra en juego la salida del pin 6 donde debe haber un filtro pasabajos que te transforme en una tensión de contínua la forma de onda que entregue el comparador de fase que posee en su interior el SAA1057.
Esa tensión contínua, en su momento inicial, variará y hará variar a la frecuencia que entregue el VCO.
Una muestra de esa señal (la generada por el VCO) entrará al SAA1057 (por FAM o FFM) y luego de la división interna (que ordenaste por I2C) se compara con la generada por el cristal.
Si no son iguales, la salida del pin 6 sigue variando hasta que en un momento son iguales.
Cuando esto ocurre, la señal generada por el VCO se "clava" y se mantiene con la precisión del cristal conectado al SAA.
Si al VCO se le ocurre variar (por cualquier motivo) la salida del pin 6 variará intentando llevar al VCO al lugar de trabajo determinado por tí mediante el bus I2C.

De ese modo se cierra el PLL, el "lazo enganchado en fase", el "Phase Locked Loop".

Sobre esto publique dos artículos en NeoTeo pero referido al control de velocidad de motores brushless. Parte I (http://www.neoteo.com/pll-para-motores-brushless.neo) y Parte II (http://www.neoteo.com/pll-para-motores-brushless-ii.neo)

La teoría de enganche de fase es la misma para un oscilador de radio que para un control de un servomotor. De su lectura puedes sacar más datos.

------------------------------------------------

Volviendo a tierra, podemos dejar en claro algunas cosas.
El PIC no es un VCO, ni tiene uno incorporado. Si tú determinas una salida de 1Mhz, obtendrás esa salida con la precisión del cristal que tenga el clock del PIC y si no usas el programa para otra cosa.
Quizás usando el TMR1 puedas lorar una buena precisión en la frecuencia obtenida pero siempre estarás sujeto a muchas variables externas.
Con un PLL eso no ocurre y tu sistema siempre funcionará a la frecuencia que el bus I2C decida.

Sé que es largo el texto y puede ser confuso, pero quedo atento a cualquier duda.

Saludos!
Mario
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: fram_22 en 28 de Febrero de 2011, 19:52:21
Yo diría que las entradas ,en principio,deberían ser senoidales puesto que provendrían del oscilador local del sintonizador y por comparación de fase
con el oscilador interno del chip con sus divisores generan a la salida en el pin 6 voltaje que variará entre +- 0 y Vcc3 que puede llegar a ser de 31V
y que sirve pàra polarizar el diodo varicap del oscilador local para generar la frecuencia de la emisora a sintonizar + o - la FI

O sea que en el pin 6 debes leer un voltaje

Creo que van por ahí los tiros

El tipo de señal que entre al PLL depende del detector de fase. Si es un PLL que cuenta con detector digitar como lo es una compuerta XOR on un flipflop JK puede perfectamente trabajar con señales digitales. Si el detector de fases es un multiplicador analógico lo recomendable es una senoide. Yo he utilizado el PLL 74lv4046 para genera una señal de 3.96 MHz en fase con la red eléctrica y ma ha funcionado estupendamente. Como es especial para circuitos digitales NO REQUERIRÁ de ninguna senoide.

Saludos!!
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 01 de Marzo de 2011, 03:16:26
Muchas gracias por vuestra ayuda. Creo que ahora tengo mucho más claro cómo funciona, así que sigo adelante a ver si lo consigo.

He montado un oscilador como el de este esquema, que genera una señal senoidal de 512KHz y casi 2V de amplitud.


(http://img171.imageshack.us/img171/5373/osciladoram.jpg)

Al conectarlo a la entrada AM del SAA1057 la amplitud cae a 1V.

Pero nada, no obtengo nada a la salida del PLL, la tensión sigue siendo de 0V con independencia del valor que escriba en su registro interno.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: solapower en 01 de Marzo de 2011, 07:58:56
A ver si te pueden servir estos links de ayuda
http://www.ifrimv.go.ro/saa_lpt.htm
http://electronics-diy.com/electronic_schematic.php?id=684

Voy a hacer una  pregunta tonta, que tensión le conectas a Vcc 3 ?
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 01 de Marzo de 2011, 08:07:56
Le meto 12V.
Gracias por los links
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Marioguillote en 01 de Marzo de 2011, 09:13:47
Bien!

Ya tienes la idea.

El oscilador que has planteado es fijo, no tiene entrada de tensión para controlar (y variar) su frecuencia de funcionamiento. Tú necesitas uno que pueda ser ajustado mediante tensión.
Observa la hoja de datos del MC1648 (http://www.datasheetcatalog.org/datasheet/motorola/MC1648D.pdf).
Es un IC muy popular (al menos lo fué en su momento) y debieras conseguirlo sin mayores inconvenientes. Con solo una inductancia y un capacitor, logras el oscilador y con un varicap cualquiera, puedes hacer la entrada de control de tensión.

No esperes medir nada (pin 6) a la salida del SAA. Olvídate de esa tensión.

El sistema es, y debe ser, un lazo cerrado donde tú debes obtener una frecuencia a la salida del VCO (en este caso el MC1648). Al SAA acóplale el MC y saldrá funcionando. Las hojas de datos del MC son muy sencillas de interpretar. Además, hay mucho material en la web de cómo se implementa este IC.

Te reitero. La idea del PLL es que puedas obtener una frecuencia fija y controlada por el bus I2C. Luego viene el resto.
 
Qudo atento.
Mario
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 01 de Marzo de 2011, 11:41:06
  Está bien lo que dices MarigoGuillote. Ahora, creo que lo que plantea Nocturno sería correcto.

  Miralo de este modo:

  Yo dejo un oscilador fijo a 1MHz a la entrada del PLL. Al PLL le mando, via su bus de comunicación, un divisor tal que indique que a la entrada debería haber una frecuencia de 2MHz. Entonces por el pin 6 saldría la tensión de corrección. Como nunca se está corrigiendo la frecuencia, la tensión debería seguir estando en el pin 6.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Marioguillote en 01 de Marzo de 2011, 12:15:32
Hola Angelgris!  :)

Entonces por el pin 6 saldría la tensión de corrección. Como nunca se está corrigiendo la frecuencia, la tensión debería seguir estando en el pin 6.

Es verdad. Es un razonamiento lógico.
El "problema" (por llamarlo de algún modo) puede ocurrir en décimas de segundo dependiendo del tipo de operación que realice el PLL.
Supongamos que al inicio de la operación, el PLL detecte que no está coincidiendo en frecuencia con la referencia fija (la del cristal). Puede adoptar una tensión de 0volt en su salida y variar unas pocas décimas de Volt (tratando de comenzar a variar la frecuencia del VCO), o bien podría generar una onda triangular desde 0Volt a Vcc intentando llevar al oscilador a la frecuencia correcta. Allí se nos plantean dos situaciones que lamentablemente el datasheet del PLL no aclara (como sí lo hace el del 4046).

1 - O se queda en 0Volt al detectar que no puede cambiar la frecuencia del hipotético VCO

2 - O se queda en 0Volt porque sabe que debe bajar la tensión de salida para alterar la frecuencia del VCO y hasta que el VCO no baje/suba su frecuencia y/o "se aproxime" a la frecuencia indicada por bus I2C, no saldrá de esa tensión. Es decir, mientras esté lejos en frecuencia, siempre estará en 0Volt o variando en pocas décimas hasta que detecte variaciones de frecuencias y sepa, o interprete, hacia donde debe ir.

En las oportunidades que he desarrollado circuitos con PLL (nunca usé el SAA. Siempre otros) nunca me he planteado la situación de observar qué ocurre si el lazo no se cierra y se deja abierto. Es decir, controlar que tensión tengo a la salida del comparador de fase sin variaciones del VCO.

Yo creo que primero habría que aprender a usar el SAA con un circuito convencional (como propuse con el MC1648) y un funcionamiento clásico de lazo enganchado en fase. Una vez que eso funciona, comenzar a "romperlo" y ver que resultados obtenemos. Recién allí saltar a trabajar con otros osciladores.

------------------------------------------

Nada es por nada, todo es en búsqueda de algo en la invesyigación electrónica.
¿En qué andas Manolo queriendo mezclar un PLL con un PIC?
Quizás la solución sea más sencilla si sabemos hacia donde debemos ir.  ;-)

Saludos!
Mario
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 01 de Marzo de 2011, 12:19:03
Pues ahora que lo dices, Mario, sí que alguna vez he visto algún "extraño" en el osciloscopio al reprogramar la frecuencia en el SAA. Podría ser que intenta modificar la frecuencia y rápidamente desiste al darse cuenta de que es imposible.

Voy a intentar localizar ese chip que me indicas, seguro que me va a facilitar la vida.

Y no es para un proyecto mío, es un encargo que me han hecho, y la finalidad no es otra que la de conseguir un programa que modifique la frecuencia de trabajo del SAA. El programa ya lo tengo hecho, y estoy seguro que funciona bien, pero no puedo comprobarlo hasta que haga trabajar al SAA.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 01 de Marzo de 2011, 12:54:36
Hola Angelgris!  :)

Entonces por el pin 6 saldría la tensión de corrección. Como nunca se está corrigiendo la frecuencia, la tensión debería seguir estando en el pin 6.

Es verdad. Es un razonamiento lógico.
El "problema" (por llamarlo de algún modo) puede ocurrir en décimas de segundo dependiendo del tipo de operación que realice el PLL.
Supongamos que al inicio de la operación, el PLL detecte que no está coincidiendo en frecuencia con la referencia fija (la del cristal). Puede adoptar una tensión de 0volt en su salida y variar unas pocas décimas de Volt (tratando de comenzar a variar la frecuencia del VCO), o bien podría generar una onda triangular desde 0Volt a Vcc intentando llevar al oscilador a la frecuencia correcta. Allí se nos plantean dos situaciones que lamentablemente el datasheet del PLL no aclara (como sí lo hace el del 4046).

1 - O se queda en 0Volt al detectar que no puede cambiar la frecuencia del hipotético VCO

2 - O se queda en 0Volt porque sabe que debe bajar la tensión de salida para alterar la frecuencia del VCO y hasta que el VCO no baje/suba su frecuencia y/o "se aproxime" a la frecuencia indicada por bus I2C, no saldrá de esa tensión. Es decir, mientras esté lejos en frecuencia, siempre estará en 0Volt o variando en pocas décimas hasta que detecte variaciones de frecuencias y sepa, o interprete, hacia donde debe ir.



  Perfecta explicación MarioGuillote.

  Yo tengo que tener algún VCO hecho con transistores y varicap.... me pongo a buscarlo y si lo encuentro lo subo, tal vez con eso pueda ir armando algo como para probar el PLL
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: solapower en 01 de Marzo de 2011, 13:19:19
Pues ahora que lo dices, Mario, sí que alguna vez he visto algún "extraño" en el osciloscopio al reprogramar la frecuencia en el SAA. Podría ser que intenta modificar la frecuencia y rápidamente desiste al darse cuenta de que es imposible.

Voy a intentar localizar ese chip que me indicas, seguro que me va a facilitar la vida.

Y no es para un proyecto mío, es un encargo que me han hecho, y la finalidad no es otra que la de conseguir un programa que modifique la frecuencia de trabajo del SAA. El programa ya lo tengo hecho, y estoy seguro que funciona bien, pero no puedo comprobarlo hasta que haga trabajar al SAA.


Manolo por lo que creo entender en tu ultimo párrafo el proyecto ya está hecho luego en ese proyecto después del SAA va algo más, no es así ?
Quizá ese "algo más" podría dar mas pistas o emplearlo para saber si funciona tu aplicación.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 01 de Marzo de 2011, 13:22:07
Pues lo desconozco, realmente únicamente me han pedido que programe el SAA y no sé nada más de lo que hay detrás.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 01 de Marzo de 2011, 14:03:21
  No puedo encontrar el circuito que tenía simulado en el CircuitMaker  :5] . Pero encontré un par de link que te pueden ayudar.

  http://radiofrequencycircuit.blogspot.com/2008/06/88-108-mhz-voltage-controlled-oscilator.html
  http://electronics-diy.com/varicaps.php
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 01 de Marzo de 2011, 19:27:07
Os cuento novedades: conseguí el MC1648 (de tres tiendas a las que llamé, sólo en la tercera lo pude encontrar y me llevé el último que quedaba, por los pelos).

Lo he montado en esta configuración:
(http://madelectronics.ru/i/i/generatorLC/generator-10-50MHz-MC1648.jpg)

con la diferencia de que la bobina más pequeña que he podido conseguir es de 1uH.

Poniendo un potenciómetro entre 0V y 10V en la entrada, observo una salida que va desde los 250KHz hasta los 1.3MHz.

Pues bien, he conectado la salida de frecuencia a la entrada AM del SAA1057, y la salida de tensión del susodicho, a la entrada de este circuito. La frecuencia se ha establecido en 1.27MHz.
Y nada, sigo sin conseguir que la frecuencia cambie cuando escribo en el PLL.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Marioguillote en 01 de Marzo de 2011, 20:03:11
Ahora viene lo mejor !  :mrgreen:

Estudio un poco y vuelvo.

OK! He vuelto.

PIC usado?
Pines del PIC usados para Data, Clock y Enable (12, 14 y 13 del SAA)?
Trama de ejemplo que estás usando?
Cómo cambias el divisor? Reprogramando el PIC o has hecho alguna rutina de cambio con pulsadores? En qué pines del PIC?

Necesitaría esos cuatro datos para elaborar uan pequeña rutina de ensayo.

Antes del fin de semana te armás una FM con esto! :)
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 01 de Marzo de 2011, 21:41:26
  Como indica MarioGuillote, estaría bueno ver la trama que estás enviando al SAA.
 
  ¿El cristal de referencia para el SAA, está oscilando? tal vez hay algún drama allí y no trabaja el cristal.

  El MC44817 que también es un PLL pero empleado en sintonizadores de TV tiene una función de testeo, podrías verificar si el SAA tiene dicha función y si responde correctamente.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 02 de Marzo de 2011, 02:44:20
PIC utilizado: 12F675

Conexiones entre ambos:
#define CLB          PIN_A0      
#define DATA         PIN_A5
#define DLEN         PIN_A1

Las señales de control están comprobadas una a una y llegan perfectamente al SAA.

Para el envío de una trama utilizo esta función:
Código: C
  1. // Tiempos protocolo SAA1057
  2. #define tCLBlead     1
  3. #define tTlead       1
  4. #define tCLBlag1     5
  5. #define tCLBH        5
  6. #define tCLBL        5
  7. #define tDLENhold    2
  8. #define tCLBlag2     2
  9. #define tDIST        1300
  10.  
  11. void EnviaPalabra (int16 Palabra) {
  12.  
  13.    output_low(DLEN);
  14.    output_high(CLB);
  15.    delay_us(tCLBlead);
  16.    output_low(DATA);
  17.    output_high(DLEN);
  18.    delay_us(tCLBlag1);
  19.    output_high(CLB);
  20.    delay_us(tCLBH);
  21.    output_low(CLB);
  22.    delay_us(tCLBL);  
  23.    for (i=0;i<16;i++) {
  24.       output_high(CLB);
  25.       delay_us(tCLBH);
  26.       if (bit_test(Palabra,15-i))
  27.          output_high(DATA);
  28.         else
  29.          output_low(DATA);
  30.       output_low(CLB);
  31.       delay_us(tCLBL);
  32.    }
  33.    output_low(CLB);
  34.    delay_us(tDLENhold-tCLBL);
  35.    output_low(DLEN);
  36.    delay_us(tCLBlag2);
  37.    output_high(CLB);
  38.    delay_us(tCLBH);
  39.    output_low(CLB);
  40.    delay_us(tDIST);
  41. }

Ahora mismo tengo esta palabra de inicialización, aunque he probado un millón de combinaciones distintas:
EnviaPalabra(0b1000000100000000);

El SAA lo tengo conectado así:
(http://www.shrani.si/f/1u/lK/4C6W6Ala/saa1057.jpg)

Esta es la trama de control que aparece en el datasheet:
(http://www.shrani.si/f/e/NL/2Hptd8Ds/saa1057-a.jpg)

Y esta es la trama que genera mi PIC, vista con una simulación Proteus:
(http://img101.imageshack.us/img101/2716/tramaj.jpg)

El cristal de 4MHz que tengo conectado al SAA oscila perfectamente a 4MHz, lo veo con el osciloscopio. Y el SAA tiene una función de TEST, pero no veo nada en ese pin aunque active el bit correspondiente.


Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 02 de Marzo de 2011, 09:21:30
  Hola Nocturno, creo que está mal la función que va enviando los datos, fijate como está hecha....

Código: C
  1. #
  2.   for (i=0;i<16;i++) {
  3.   output_high(CLB);
  4.   delay_us(tCLBH);
  5.   if (bit_test(Palabra,15-i))
  6.     output_high(DATA);  // con esto pongo el dato en 1
  7.   else
  8.     output_low(DATA);    // con esto pongo el dato en 0
  9.   output_low(CLB);
  10.   delay_us(tCLBL);
  11. }

  ¿Así como está no vas cambiando el dato mientras el pulso de clock (CLB) está en alto?
  Y según la trama, el cambio de valor de data se tiene que dar mientras el pulso de clock (CLB) está en bajo
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Marioguillote en 02 de Marzo de 2011, 09:34:14
OK Manolo !

Según la página 11 (donde indica la forma de inicializar el dispositivo) te están faltando dos cosas:
Una es que faltan al menos 10 pulsos de reloj en la entrada CLB antes de enviar la palabra B
Y te está faltando la palabra A !!!  :shock:
Sólo envías la palabra B, que se encarga de preparar al SAA para recibir la palabra A (el divisor para indicar al PLL la frecuencia que queremos), pero la palabra A no está allí en ese código.
A ese código debes agregarle la palabra A (figura 3, página 6 del datasheet) luego de repetir los intervalos de fin de palabra e inicio de palabra (mandás dos palabras de 16 bits cada una). ¿Se entiende?

Cuando la figura 2 de la misma página te habla del "Bus Format" te está indicando como debe transmitirse cada palabra. Tú estás enviándo una sola con ese fragmento de código. Falta el divisor. (palabra A)

En la palabra B prueba con estos 16 bits "110111010100100"
En la palabra A diviértete seteando a uno los bits de peso mediano y dejando a cero el resto. Una vez que logres variación comienza a modificar el primero y segundo de menos peso (2 a la 0 y 2 a la 1) y allí comenzarás a tener variaciones de pocos Khz.

Tiene que funcionar.  :)

Edito:
Justo escribió Angel Gris ... Fíjate en eso también Manolo.  :)
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 02 de Marzo de 2011, 09:46:29
OK Manolo !

Según la página 11 (donde indica la forma de inicializar el dispositivo) te están faltando dos cosas:
Una es que faltan al menos 10 pulsos de reloj en la entrada CLB antes de enviar la palabra B
Y te está faltando la palabra A !!!  :shock:
Sólo envías la palabra B, que se encarga de preparar al SAA para recibir la palabra A (el divisor para indicar al PLL la frecuencia que queremos), pero la palabra A no está allí en ese código.
A ese código debes agregarle la palabra A (figura 3, página 6 del datasheet) luego de repetir los intervalos de fin de palabra e inicio de palabra (mandás dos palabras de 16 bits cada una). ¿Se entiende?

Cuando la figura 2 de la misma página te habla del "Bus Format" te está indicando como debe transmitirse cada palabra. Tú estás enviándo una sola con ese fragmento de código. Falta el divisor. (palabra A)

En la palabra B prueba con estos 16 bits "110111010100100"
En la palabra A diviértete seteando a uno los bits de peso mediano y dejando a cero el resto. Una vez que logres variación comienza a modificar el primero y segundo de menos peso (2 a la 0 y 2 a la 1) y allí comenzarás a tener variaciones de pocos Khz.

Tiene que funcionar.  :)

Edito:
Justo escribió Angel Gris ... Fíjate en eso también Manolo.  :)

  En cuanto a la inicialización, yo interpreto (muy probablemente en forma equivocada) que tiene que recibir al menos 10 pulsos de clock o la palabra B. No que tenga que recibir 10 pulsos de clock antes de la palabra B.

  El resto es como tu dices, sí o sí tiene que recibir primero la palabra B para configurar el dispositivo y luego la palabra A
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Marioguillote en 02 de Marzo de 2011, 10:04:57
En cuanto a la inicialización, yo interpreto (muy probablemente en forma equivocada) que tiene que recibir al menos 10 pulsos de clock o la palabra B. No que tenga que recibir 10 pulsos de clock antes de la palabra B.

Correcto AngleGris!   :oops:
Tienes razón!

Es una cosa "O" la otra.

Sorry ... i'm a Tarzanglish man !!!  :D :D :D

Claro. Entonces una vez inicializado con la palabra B puedes usar sólo la palabra A para cambiar de sintonía hasta que decidas cambiar de parámetros (FM a AM u otras cosas). Allí habría que volver a enviar la palabra B.
Si sólo quieres cambiar de frecuencia, envías al menos 10 pulsos de clock y luego la palabra A  ;-)

Mil disculpas por el error!
Mario
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 03 de Marzo de 2011, 03:04:12
Parece que no me expliqué bien. Me refería a que enviaba como palabra de inicialización la que os puse antes, pero luego enviaba la palabra de seteo de frecuencia, lógicamente.

A pesar de todo, también había probado sin éxito enviando 15 pulsos de clock al principio del programa.

De hecho, mi programa de pruebas ahora mismo es este:
Código: C
  1. EnviaPalabra(0b100111010100000);
  2.    delay_ms(100);
  3.    while (1)
  4.    for (j=0; j<0x7000; j=j+0x10) {
  5.       EnviaPalabra(j);
  6.       delay_ms(100);
  7.    }

Respecto a cambiar la escritura del dato en el pulso bajo en lugar del alto, yo interpreto el diagrama de tiempos de la datasheet al contrario, pero acabo de probarlo como me indicas, Angelgris y tampoco consigo ningún resultado.

También he probado con el seteo de configuración que me has puesto, Mario.

Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 03 de Marzo de 2011, 09:11:57
  Me explayo en el porque de mi interpretación de la trama.

  En la figura que adjunto, encerrado en rojo está lo que yo interpreto como cambio de dato y encerrado en verde está cuando no tiene que cambiar.

  Fijate que en lo rojo la data se cruza, eso indica que puede haber un cambio. Encerrado en lo verde la data no se cruza, hay una linea superior y una inferior, eso indica que la data tiene que permanecer estable ya sea en estado alto o en estado bajo.


  Acá un texto respecto del protocolo I2C sacado del PDF "The I2C Bus Specification Version 2.1"

"The data on the SDA line must be stable during the HIGH
period of the clock. The HIGH or LOW state of the data line
can only change when the clock signal on the SCL line is
LOW (see Fig.4)."

  y adjunto la figura que muestra la trama del I2C.


  Pero bueno, de todas maneras ya has comentado que hiciste la prueba y no funcionó. ¿Es caro el SAA1057? ¿Tenés otro como para probar? Tal vez está fallado (que por lo menos, aquí en Argentina, no es nada extraño comprar un integrado y que no funcione) y te estás volviendo loco.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 03 de Marzo de 2011, 14:13:10
Pues cuesta en torno a 7€, pero no es tan problema lo que vale, sino que no lo hay en mi ciudad.
Aunque después de tanta prueba, mucho me temo que voy a necesitar otro para salir de dudas.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 03 de Marzo de 2011, 14:24:30
  Yo estoy releyendo y releyendo el datasheet del SAA1057 y sinceramente no encuentro nada para poder aportar. Volvi a releer el post bien detenidamente para ver si se estaba escapando algo, pero no logré ver ningún detalle más allá de todo lo que ya se ha comentado.

  Uy!! como me fastidia no poder conseguir las cosas que se necesitan!!!!!

  Voy a revisar entre tantas placas que tengo dando vueltas, si lo encuentro me pongo a hacer pruebas y comento.

  Espero que puedas solucionarlo, cualquier cosa en lo que pueda serte útil, aquí estaré

  EDITO: Ya revisé todas las placas que tenía de equipos de Audio y el único PLL que encontré es el LM7001.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 03 de Marzo de 2011, 15:12:52
No te preocupes, Angelgris, realmente agradezco la ayuda que me estáis dando y no quisiera causar más molestias. Intentaré localizar un SAA y probar reemplazando el que tengo.
Ya os contaré qué tal.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 26 de Marzo de 2011, 19:25:08
Acabo de recibir dos ejemplares del SAA1057 de Hong Kong y hacen exactamente lo mismo  :5]
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 27 de Marzo de 2011, 09:22:55
  Pero que bronca loco!!!!!   :5] :5]

  Lo único que se me ocurre es hacer pruebas sobre el LM7001 que tengo, poro no se si eso pueda servir de algo.
  Yo el único PLL que había manejado era el de un sintonizador de TV (MC44817) y en dicho PLL sí pude cambiar la frecuencia del oscilador local de tal manera que en lugar de tener un sintonizador utilicé el oscilador local para generar la frecuencia de portadora de video para los distintos canales y armar un modulador de video que cubra toda la banda (excepto la banda baja) de CATV.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Suky en 27 de Marzo de 2011, 10:13:33
Podrías revisar el envío de la trama, según veo durante DLEN en Low no puede haber una transición en CLB y tu puede que la realizas, se podría hacer:

Código: C
  1. output_low(DATA);
  2.    output_low(CLB);
  3.    output_low(DLEN);
  4.    delay_us(tCLBlead);
  5.    output_high(DLEN);

Seguramente es un detalle en el envío de la trama, probaría en aumentar un poco los tiempo, revisar detalladamente si el envío es correcto, ect.


Saludos!
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 28 de Marzo de 2011, 02:27:58
Gracias Suky. Pero lo estoy probando así también y no consigo que furule.
Estoy a punto de tirar la toalla.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 28 de Marzo de 2011, 03:09:48
Bien, parece que he conseguido algo. Aún es poco pero al menos veo que el SAA1057 está vivo.

He conseguido activar la salida TEST y elegir una de las dos frecuencias que permite, 32KHz o 40KHz, según setee el bit correspondiente en la palabra de configuración.

¿Qué quiere decir esto?, pues que la rutina de envío de datos funciona perfectamente tal y como la tengo escrita. Ahora me queda encontrar porqué no cambia la frecuencia a la salida cuando cambio la palabra de división.

Dejo aquí lo que sí funciona:


Código: C
  1. #define tCLBlead     1
  2. #define tTlead       1
  3. #define tCLBlag1     5
  4. #define tCLBH        5
  5. #define tCLBL        5
  6. #define tDLENhold    2
  7. #define tCLBlag2     2
  8. #define tDIST        1300
  9.  
  10. void EnviaPalabra (unsigned int16 Palabra) {
  11.    output_low(DATA);
  12.    output_high(CLB);
  13.    output_low(DLEN);
  14.    delay_us(tCLBlead);  
  15.    output_high(DLEN);
  16.    delay_us(tCLBlag1);
  17.    output_high(CLB);
  18.    delay_us(tCLBH);
  19.    output_low(CLB);
  20.    
  21.    for (i=0;i<16;i++) {   // escritura del dato cuando clock bajo
  22.        
  23.       if (bit_test(Palabra,15-i))
  24.          output_high(DATA);
  25.         else
  26.          output_low(DATA);
  27.       delay_us(tCLBL);
  28.       output_high(CLB);
  29.       delay_us(tCLBH);
  30.       output_low(CLB);
  31.    }
  32.    
  33.    delay_us(tDLENhold-tCLBL);
  34.    output_low(DLEN);
  35.    delay_us(tCLBlag2);
  36.    output_high(CLB);
  37.    delay_us(tCLBH);
  38.    output_low(CLB);
  39.    delay_us(tDIST);
  40.    
  41. }
  42.  
  43. EnviaPalabra(0b1111111110000000);
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 28 de Marzo de 2011, 10:21:04
  Bien  :-/ :-/  Me alegro que ya vaya funcionando la comunicación entre el PIC y el SAA.

  Tal vez el rango de frecuencia del VCO queda muy lejos de la frecuencia elegida desde el SAA y por ello no cambia.

  Se podría intentar colocar un simple potenciometro para ir variando la tensión de sintonía del VCO e ir midiendo con osciloscopio la salida del oscilador. De esa manera ya se tendría una idea del rango de frecuencias del VCO, luego quedaría elegir en el SAA una frecuencia que esté dentro de ese rango y ver si realmente trabaja.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 28 de Marzo de 2011, 11:21:03
Vale, pues haré la prueba del potenciómetro esta noche y voy contando. Gracias
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 28 de Marzo de 2011, 16:18:39
Informe de novedades.

El MC1648P conectado a un potenciómetro a la entrada ofrece estas frecuencias:
- 0.92V = 236KHz
- 12V = 1.27MHz

Cuando conecto el SAA1057 las tensiones cambian muy rápido del límite inferior al límite superior. He estado probando distintos rangos de palaba "A" y obtengo la respuesta de este gráfico, donde el eje horizontal representa la palabra A y el eje vertical la tensión de salida:

(http://img855.imageshack.us/img855/3576/respuestasaa1057.jpg) (http://img855.imageshack.us/i/respuestasaa1057.jpg/)

¿No es raro?
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 28 de Marzo de 2011, 16:56:32
  Yo creo que está bien que no suba de 12V ya que, según los primeros post, vos alimentas VCC3 con 12V.
  E incluso observemos esto, el número x500 corresponde a 1280 en decimal si a eso lo multiplicamos por el paso de 1KHz (que es uno de los pasos posibles para AM) daría 1.28MHz, fijate que cercano es al valor de frecuencia que habías medido cuando conectaste el pote.
  Si es llamativo lo que ocurre con el número x200, ya que daría 512KHz y entra sobradamente en el rango de frecuencias medido.

  Hay un párrafo interesante en el datasheet,

"Synchronous/asynchronous operation
Synchronous loading of the frequency word into the programmable counter can be achieved when bit ‘SLA’ of word B is
set to ‘1’. This mode should be used for small frequency steps where low tuning noise is important (e.g. search and
manual tuning). This mode should not be used for frequency changes of more than 31 tuning steps. In this case
asynchronous loading is necessary. This is achieved by setting bit ‘SLA’ to ‘0’. The in-lock condition will then be reached
more quickly, because the frequency information is loaded immediately into the divider."
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: micro_pepe en 28 de Marzo de 2011, 18:10:53
Informe de novedades.

El MC1648P conectado a un potenciómetro a la entrada ofrece estas frecuencias:
- 0.92V = 236KHz
- 12V = 1.27MHz

Cuando conecto el SAA1057 las tensiones cambian muy rápido del límite inferior al límite superior. He estado probando distintos rangos de palaba "A" y obtengo la respuesta de este gráfico, donde el eje horizontal representa la palabra A y el eje vertical la tensión de salida:


¿ Que tienes conectado a los pines 5 y 6 ?  En esos pines se conecta un filtro paso bajos que le dá unas caracteristicas de funcionamiento al PLL, que sea rápido, estable, ...

Prueba a subir el valor de esos conponentes, así será más estable la salida. Todo esto viene en teoria de control, aunque existe información en concreto para los PLL, es todo un mundo del que me gustaría saber más.

Prueba con los valores de estos ejemplos:

http://www.shrani.si/f/2k/kv/3sMJn0le/saa1057-c.jpg

http://vrtp.ru/screenshots/2287_2287_Sint.jpg
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 28 de Marzo de 2011, 18:27:20
Lo tengo conectado como aparece en la página 12 del datasheet
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: micro_pepe en 28 de Marzo de 2011, 18:41:35
Lo tengo conectado como aparece en la página 12 del datasheet

¿Con el condensador de 100nF incluido? Si no lo tienes puesto ponlo, y si lo tienes puesto prueba a subirlo de valor, o a subir el valor de la resistencia de 10K. En el primer ejemplo que te puse la tiene de 100K.

Es mi experiencia con un PLL (en concreto el MC145170) y tuve que subir esos valores para que la salida fuese estable, se trataba de un receptor, y con valores bajos se escuchaba como si pasase un trén. Otra cosa que tuve que cambiar es en la configuración la salida de ese filtro (en tu caso el pin 6), el mio tenia la opción de invertir logicamente esa salida, en el tuyo dando un vistazo no he visto esa opción.

Espero que en tu caso anden por ahí los tiros.

Saludos.

PD: me estoy dando cuenta mirando el primer ejemplo que te puse, que entre los catodos de los diodos y el condensador deberia de tener una resistencia, tal y como está si no me equivoco el diodo que va a masa no hace nada, pero bueno es solo una observación.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 28 de Marzo de 2011, 18:48:47
Gracias, creo que ando cerca de pisarle el cuello. Sigo probando.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 29 de Marzo de 2011, 03:03:53
¡Al fin le pisé el cuello! Parecía simple cuando empecé con ello y creo que pocos proyectos me han llevado tantos quebraderos de cabeza como este.

Muchas gracias por vuestra inestimable ayuda  :-/ :-/ :-/

Me gustaría matizar que el objetivo del proyecto era programar el SAA1057, no conseguir una frecuencia estable ni precisa. Al estar todo montado en protoboard y sin filtros de ningún tipo, la frecuencia no es fina, pero sirve para el objetivo que perseguía.

Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: micro_pepe en 29 de Marzo de 2011, 08:29:20
Me alegro mucho Nocturno, y ¿Cual era el problema?

Saludos.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: AngelGris en 29 de Marzo de 2011, 08:59:28
  Qué alegría que haya funcionado  :-/ :-/ :-/ bravo por ti......

  Muchas veces me ocurrió que lo que en teoría era sencillo, termina llevando mucho tiempo de pruebas y errores.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Suky en 29 de Marzo de 2011, 10:11:08
Felicitaciones!  :-/
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 29 de Marzo de 2011, 10:17:29
Pues lo que pasaba básicamente en que yo estaba empeñado en observar un comportamiento lineal de respuesta en frecuencia en todo el rango, y un comentario de AngelGris refiriéndose a que 12,80V se parecía mucho a 0x500 me abrió los ojos. A partir de ahí he ido tirando del hilo hasta encontrar la madeja  :mrgreen:
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: enzo84 en 13 de Septiembre de 2011, 10:58:26
Acabo de recibir dos ejemplares del SAA1057 de Hong Kong y hacen exactamente lo mismo  :5]
Hola Nocturno, saludos, como conseguiste el integrado, lo compraste o es muestra?
Estoy en planes de conseguir  algún DDS de analog por ejemplo.

Muchas gracias, saludos!
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: Nocturno en 13 de Septiembre de 2011, 11:27:12
Los compré en Hong Kong por eBay.
Título: Re: Dudas con PLL sintetizador de frecuencias SAA1057
Publicado por: enzo84 en 14 de Septiembre de 2011, 15:46:13
Bueno muchas gracias, yo ando buscando un AD9851 para hacer algo asi:
http://homepage.eircom.net/~ei9gq/dds.html (http://homepage.eircom.net/~ei9gq/dds.html)
A ver si lo consigo, Saludos!