Componentes Electrónicos · Tema 27

Cristales y resonadores

Un microcontrolador no avanza solo: ejecuta una instrucción por cada pulso de un reloj. De la exactitud de ese reloj dependen la hora que anota, la velocidad a la que habla con otros equipos y cada espera que programes. Este tema no enseña a diseñar osciladores: enseña a saber cuál tenés, cuánto se equivoca y cuándo hace falta uno mejor.

≈ 40 minutos Opcional: una placa, un LED y el cronómetro del teléfono Incluye simulador y Python

01 · Punto de partida

El registrador que atrasa dos horas por semana

Los temas anteriores trataron componentes que hacen algo cuando se les ordena. Este trata el que da la orden de avanzar. Casi nunca se lo elige a conciencia, porque toda placa trae uno y «funciona».

Una escena típica. Programás un registrador de temperatura: cada diez minutos anota el valor con su hora, calculada sumando segundos desde el arranque. Para ahorrar piezas usás el oscilador interno del microcontrolador. Lo dejás una semana en el balcón. Al revisar los datos, la última anotación tiene una hora que atrasa casi dos horas respecto de la real.

Conectás el registrador a la computadora para descargar los datos, ahí mismo, una mañana fría. De cada cien líneas, tres o cuatro llegan con caracteres extraños. Lo llevás adentro para investigar con calma y, sobre el escritorio, la descarga sale perfecta.

El programa contaba bien. Lo que estaba mal era la duración de cada segundo. El oscilador interno de un microcontrolador tiene una exactitud de alrededor del 1 %, que parece buena y son 14 minutos por día. Y su frecuencia cambia con la temperatura: en el balcón, con frío, se apartó lo suficiente para que la comunicación serie empezara a leer los bits fuera de lugar.

Es un problema que cualquier programador de sistemas distribuidos conoce: cada nodo tiene su propio reloj, ninguno es exacto, y todos se van apartando. Por eso existen los protocolos de sincronización de hora. Un microcontrolador sin red no tiene con quién sincronizarse: su única defensa es un reloj que se aparte poco. Cuánto es «poco» depende de lo que tenga que hacer.

  • ¿Qué cosas dependen del reloj de un microcontrolador?
  • ¿Qué significa «20 ppm», y cuánto es en segundos por día?
  • ¿En qué se diferencian el oscilador interno, un resonador y un cristal?
  • ¿Qué exactitud necesita una comunicación serie? ¿Y un reloj de hora?
  • ¿Por qué existen cristales de 11,0592 MHz?

02 · Identificar

Todo cuelga del reloj

Un microcontrolador es un circuito sincrónico: cada operación ocurre en un pulso de una señal que oscila a una frecuencia fija, su reloj. A 16 MHz, dieciséis millones de pulsos por segundo. El programa no sabe cuánto dura un segundo: sabe contar pulsos, y confía en que dieciséis millones de ellos son un segundo.

Lo que un programa obtiene contando pulsos del reloj.
FunciónCómo se obtieneSi el reloj va 1 % lento
Esperas y temporizadoresContando pulsosUna espera de 1 s dura 1,01 s
Hora y fechaAcumulando segundosAtrasa 14 minutos por día
Velocidad de la comunicación serieDividiendo la frecuencia del relojCada bit dura 1 % más de lo que espera el otro extremo
Frecuencia de una señal PWM o de un tonoDividiendo la frecuencia del relojUna nota suena un 1 % más grave
Medición de una frecuencia o de un tiempo externoContando contra el reloj propioMide un 1 % de más

Para el microcontrolador, su reloj es la definición del tiempo. No tiene forma de saber que está equivocado si no lo compara con otro. Y eso es lo que pasa en una comunicación: dos equipos, cada uno con su reloj, que tienen que estar de acuerdo en cuánto dura un bit.

03 · Características

Partes por millón

La exactitud de un reloj se expresa como una fracción de su frecuencia. Para los relojes malos se usa el porcentaje. Para los buenos el porcentaje queda incómodo, y se usan las partes por millón, o ppm:

1 %=10 000 ppm·1 ppm=un segundo cada 11,6 días

Un cristal «de 16 MHz y ±20 ppm» oscila a 16 MHz con un error de hasta 320 Hz. El número que conviene tener en la cabeza es otro: cuánto tiempo se aparta.

Error acumulado según la exactitud del reloj.
ExactitudEn ppmPor díaPor mesPor año
2 %20 00029 minutos14 horas7 días
1 %10 00014 minutos7 horas3,6 días
0,5 %50007 minutos3,6 horas44 horas
100 ppm1008,6 segundos4,3 minutos53 minutos
20 ppm201,7 segundos52 segundos10,5 minutos
2 ppm20,17 segundos5 segundos1 minuto
La exactitud tiene tres partes
La tolerancia de fabricación, a 25 °C. La estabilidad con la temperatura, que se suma. Y el envejecimiento, unas pocas ppm por año. Un cristal «de 20 ppm» que además varía 30 ppm con la temperatura puede apartarse 50.
El error puede ser para cualquier lado
«±20 ppm» significa que el reloj puede adelantar o atrasar. Dos equipos con relojes de 20 ppm pueden apartarse 40 ppm entre sí.
Un error constante se puede corregir
Si medís que tu reloj atrasa siempre lo mismo, lo compensás en el programa. Lo que no se compensa es la parte que cambia con la temperatura.

04 · Identificar

Las fuentes de reloj

Hay cinco maneras habituales de darle un reloj a un microcontrolador. Se diferencian en exactitud por un factor de diez mil.

Fuentes de reloj, de menor a mayor exactitud. Valores típicos: los propios están en cada hoja de datos.
FuenteCómo se reconoceExactitud típicaPor díaPiezas externas
Oscilador internoNo se ve: está adentro del microcontrolador±1 a 2 %, y varía con la temperatura15 a 30 minNinguna
Resonador cerámicoPieza cerámica de color, de tres patas±0,5 %7 minSolo el resonador
Cristal de cuarzoCápsula metálica de dos patas, con la frecuencia grabada±20 a 50 ppm2 a 4 sEl cristal y dos capacitores
Oscilador a cristalCápsula metálica rectangular de cuatro patas±20 a 50 ppm2 a 4 sSolo el módulo, alimentado
Reloj con compensación de temperaturaUn integrado o un módulo de reloj de tiempo real±2 ppm0,2 sEl módulo y su pila

Qué es cada uno

El oscilador interno
Un circuito con un resistor y un capacitor integrados, el del Tema 12: su frecuencia sale de una constante de tiempo. El fabricante lo ajusta en fábrica, pero resistores y capacitores integrados cambian con la temperatura y con la tensión. Es gratis, arranca al instante y no ocupa patas.
El resonador cerámico
Una pieza de cerámica que vibra mecánicamente a una frecuencia fijada por sus dimensiones. Los de tres patas traen adentro los dos capacitores que necesitan: la pata central va al negativo.
El cristal de cuarzo
Una lámina de cuarzo tallada con mucha precisión. Es un diapasón: al golpearlo, vibra a una sola frecuencia, muy definida, y casi no la cambia con la temperatura. El cuarzo convierte esa vibración mecánica en una señal eléctrica, y el microcontrolador la mantiene.
El oscilador a cristal
Un cristal y su circuito, ya armados en una cápsula. Se lo alimenta y entrega la señal de reloj lista. No hay capacitores que calcular.
El reloj de tiempo real compensado
Un integrado con su propio cristal, que mide la temperatura y corrige la frecuencia. Lleva la hora por su cuenta, con una pila, y el microcontrolador se la pregunta. Para saber qué hora es, es la mejor opción con mucha diferencia.

El cristal de los relojes

Hay un cristal que se reconoce enseguida: un cilindro metálico diminuto, de 32,768 kHz. La frecuencia no es caprichosa: 32 768 es 2 elevado a la 15. Dividiendo por dos quince veces, con un contador binario, se obtiene exactamente un pulso por segundo. Es el cristal de todos los relojes de pulsera.

05 · Selección

Qué exactitud pide cada uso

Exactitud de reloj que necesita cada función, y la fuente mínima que la cumple. Valores orientativos.
FunciónToleraFuente mínima
Parpadear un LED, leer botones, manejar relés10 % o másOscilador interno
PWM para brillo o velocidadVarios por cientoOscilador interno
Notas musicales afinadas0,5 %Resonador
Comunicación serie asincrónicaUnos 2 % entre los dos extremosResonador, o un oscilador interno bien calibrado
Comunicación con reloj compartidoCasi cualquier cosaOscilador interno
USB0,25 % o menosCristal
Radio, redes cableadasDecenas de ppmCristal
Hora del día durante semanasUn minuto por mes: 23 ppmCristal de reloj; mejor, un reloj compensado
Medir tiempos o frecuencias con exactitudLo que pida la mediciónCristal

Por qué la comunicación serie pide un 2 %

En la comunicación serie más común no viaja ninguna señal de reloj. Los dos extremos acuerdan de antemano una velocidad, y cada uno mide los bits con su propio reloj.

  1. 1
    El receptor detecta el comienzo.

    El primer cambio de la línea marca el inicio de un carácter.

  2. 2
    A partir de ahí, lee a ciegas.

    Espera un bit y medio y lee; después lee cada «un bit» de su propio reloj, diez veces, apuntando al centro de cada bit.

  3. 3
    El error se acumula.

    Si su reloj va 2 % rápido respecto del emisor, cada lectura se adelanta 0,02 de bit. En la décima, el adelanto es de 0,19 de bit.

  4. 4
    Mientras caiga adentro del bit, funciona.

    Con medio bit de corrimiento, la lectura cae en el borde. En la práctica se pide que no pase de un cuarto: alrededor de 2,5 % entre los dos extremos.

El error que importa es la diferencia entre los dos relojes. Una computadora, con su adaptador, tiene un cristal: aporta casi nada. Todo el presupuesto queda para el microcontrolador. Con un oscilador interno de ±1,5 % a 25 °C, alcanza. Con frío o calor, puede no alcanzar. Es la falla intermitente de la escena.

06 · Selección

Las frecuencias raras

Hay una segunda fuente de error en la comunicación serie, que no tiene nada que ver con la calidad del reloj. Aparece aun con un cristal perfecto.

La velocidad de comunicación se obtiene dividiendo la frecuencia del reloj por un número entero. Para 115 200 bits por segundo con un reloj de 16 MHz, muchos microcontroladores dividen primero por 16 y después por un divisor programable:

16 000 000 ÷ 16 ÷ 115 200=8,68→el divisor tiene que ser 8 o 9

Con 9 salen 111 111 bits por segundo: un 3,5 % de menos. Con 8, 125 000: un 8,5 % de más. Ninguno de los dos sirve. La velocidad pedida no es alcanzable con ese reloj y esa forma de dividir.

Error de velocidad a 115 200 bits por segundo, dividiendo primero por 16.
RelojDivisor idealDivisor usadoVelocidad realError
8 MHz4,344125 000+8,5 %
12 MHz6,517107 143−7,0 %
16 MHz8,689111 111−3,5 %
11,0592 MHz6,006115 2000 %
14,7456 MHz8,008115 2000 %

Ahí está la explicación de los cristales de frecuencias extrañas que se ven en placas de comunicaciones: 11,0592 MHz, 7,3728 MHz, 14,7456 MHz, 18,432 MHz. Son múltiplos exactos de las velocidades de comunicación estándar. Con ellos, el divisor es entero y el error es cero.

Los dos errores se suman
El del divisor y el de la exactitud del reloj. Un 2,1 % por el divisor más un 1,5 % del oscilador interno son 3,6 %: fuera de lo admisible, aunque cada uno por separado parezca tolerable.
Cómo lo resuelven los microcontroladores
Algunos permiten dividir por 8 en lugar de 16, lo que duplica las opciones: con 16 MHz, el error a 115 200 baja a 2,1 %. Los más modernos tienen divisores fraccionarios y alcanzan casi cualquier velocidad.
Con velocidades bajas no pasa
A 9600 bits por segundo el divisor es grande, y redondearlo cambia muy poco: con 16 MHz, 0,2 %. Bajar la velocidad es la solución más simple cuando el error es de divisor.

07 · Aplicación

Conectar un cristal

Diseñar un oscilador es un trabajo del curso 4. Conectar uno es más simple: se copia el circuito que indica la hoja del microcontrolador. Conviene saber qué es cada pieza y qué se puede hacer mal.

Conexión de un cristal: entre las dos patas de oscilador del microcontrolador, con un capacitor de cada pata al negativo micro-controlador cristal dos capacitores negativo pata de oscilador 1 pata de oscilador 2
El circuito de un cristal: tres piezas. El cristal no tiene polaridad. Todo va lo más cerca posible del microcontrolador.

Los capacitores de carga

Un cristal se fabrica y se ajusta para vibrar a su frecuencia nominal cuando «ve» una determinada capacidad entre sus patas: su capacidad de carga, que figura en la hoja como CL. Valores comunes son 12, 18 y 20 pF. Los dos capacitores están ahí para darle esa capacidad.

Para el cristal, los dos capacitores quedan en serie, y a eso se suma la capacidad propia de las pistas y de las patas, de unos 3 a 5 pF. De ahí sale el valor de cada uno:

cada capacitor=2×(capacidad de carga − capacidad de las pistas)
Capacitores para distintos cristales, suponiendo 5 pF de pistas y patas.
Capacidad de carga del cristalCálculoValor comercial
12 pF2 × (12 − 5) = 14 pF15 pF
16 pF2 × (16 − 5) = 22 pF22 pF
18 pF2 × (18 − 5) = 26 pF27 pF
20 pF2 × (20 − 5) = 30 pF27 o 33 pF
Qué pasa si no coinciden
El cristal oscila igual, a una frecuencia un poco corrida: unas 10 a 20 ppm por cada picofaradio de diferencia. Con capacitores muy grandes, puede no arrancar.
Por qué casi siempre se ven 22 pF
Porque es el valor que corresponde a un cristal de 16 pF, y funciona razonablemente con los de 12 a 20. Para una exactitud de decenas de ppm, se usa el valor calculado.
De qué tipo son
Cerámicos del tipo estable del Tema 10, marcado C0G o NP0. Uno de los otros tipos cambiaría de valor con la temperatura, y con él la frecuencia.

Lo que más se hace mal

Errores habituales al usar un cristal.
ErrorConsecuencia
Cables largos entre el cristal y el microcontroladorAgregan capacidad y recogen ruido: frecuencia corrida, o no arranca. En una protoboard, cada fila agrega varios picofaradios
Configurar «cristal externo» sin tener el cristal puestoEl microcontrolador se queda sin reloj y no ejecuta nada, ni siquiera acepta un programa nuevo
Tener el cristal puesto y la configuración en «oscilador interno»Funciona, con la exactitud del oscilador interno. El cristal es un adorno
Tocar las patas del oscilador con el dedo o con una punta de mediciónLa capacidad agregada corre la frecuencia o detiene el oscilador
Olvidar los capacitoresPuede arrancar por la capacidad de las pistas, a una frecuencia incorrecta y de forma poco confiable

08 · Verificar

Medir el reloj de tu placa

El multímetro no mide megahertz, y acercar una punta al oscilador lo altera. Pero no hace falta medir la frecuencia: alcanza con medir tiempo, que es lo que el error afecta, contra un reloj mejor. El del teléfono, sincronizado por la red, es excelente.

  1. 1
    Hacé que el programa marque un intervalo largo.

    Por ejemplo, que encienda un LED y lo apague exactamente a los 600 segundos, según su propia cuenta.

  2. 2
    Predecí.

    Con un oscilador interno de ±1,5 %, entre 591 y 609 segundos reales. Con un cristal, 600 con un error que no vas a poder ver.

  3. 3
    Cronometrá con el teléfono.

    Tu reacción agrega unas tres décimas de segundo al empezar y otras tantas al terminar.

  4. 4
    Calculá.

    Si el cronómetro marca 606,2 s, el reloj de la placa va lento: (606,2 − 600) ÷ 600 = 1,03 %, o 10 300 ppm.

Cuánto hay que medir para distinguir cada error, con medio segundo de incertidumbre al cronometrar.
Duración de la pruebaError mínimo que se distingueAlcanza para evaluar
1 minuto0,8 %Un oscilador interno, apenas
10 minutos0,08 %: 800 ppmUn oscilador interno o un resonador
1 hora140 ppmUn resonador
24 horas6 ppmUn cristal

La tabla enseña algo general sobre medir: la incertidumbre de la medición tiene que ser bastante menor que lo que se quiere detectar. Para ver decenas de ppm con un cronómetro manual hay que medir durante un día.

09 · Simulador

Deriva y comunicación

Dos pestañas. La primera muestra cuánto se aparta un reloj según su fuente, la temperatura y el tiempo transcurrido. La segunda muestra dónde caen las lecturas de una comunicación serie cuando la velocidad no es exacta.

SIMULADOR 27

Deriva del reloj

Error acumulado de un reloj, o posición de las lecturas de una comunicación serie En la primera pestaña, una barra en escala logarítmica con el error acumulado y tres verificaciones por uso. En la segunda, los diez bits de un carácter con el punto en el que el receptor lee cada uno.
Error de frecuencia
Error acumulado
Por día
Veredicto

Recorrido guiado (8 minutos)

  1. 1
    Mirá el estado inicial.

    Oscilador interno, 25 °C, una semana: hasta 2 horas y media de error. Es el registrador de la escena.

  2. 2
    Bajá la temperatura a 0 °C.

    El error de frecuencia crece. Las tres verificaciones de la derecha muestran para qué alcanza y para qué no.

  3. 3
    Recorré las cinco fuentes, a 25 °C.

    Del oscilador interno al reloj compensado, el error de una semana baja de horas a un segundo.

  4. 4
    Con el cristal de reloj, mové la temperatura a 0 °C y a 50 °C.

    En los dos extremos el error aumenta. Compará con el reloj compensado, que no cambia.

  5. 5
    Pasá a «Comunicación serie», con el oscilador interno a 25 °C.

    16 MHz y 115 200, dividiendo por 8: el divisor ya aporta 2,1 %, y el oscilador hasta 1,5 % más. La última lectura cae lejos del centro del bit.

  6. 6
    Bajá la temperatura a 0 °C.

    El total llega a 4,4 % y la última lectura queda al borde del límite. Es la mañana fría de la escena: sobre el escritorio andaba, en el balcón fallaba cada tanto.

  7. 7
    Cambiá la fuente al cristal, sin tocar lo demás.

    Mejora, pero el 2,1 % del divisor sigue ahí. Un cristal no arregla un divisor que no cierra.

  8. 8
    Elegí 11,0592 MHz. Después volvé a 16 MHz y bajá a 9600.

    Con la frecuencia «rara», el divisor es exacto. Y a 9600, el error de divisor casi desaparece con cualquier reloj.

Preguntas para pensar

  1. En el paso 1, el oscilador interno tiene «solo» 1,5 % de error. ¿Por qué el resultado parece tan malo?
  2. En el paso 7, ¿de dónde sale el error que el cristal no elimina?
  3. ¿Qué tres maneras hay de resolver la comunicación de la escena?
Ver respuestas sugeridas
  1. Porque el error de un reloj se acumula. Un resistor del 1,5 % está 1,5 % apartado hoy y dentro de un año. Un reloj del 1,5 % está 1,5 % apartado en cada segundo, y la hora es la suma de todos: después de una semana, el 1,5 % de una semana.
  2. De la aritmética. La velocidad se obtiene dividiendo la frecuencia del reloj por un número entero, y 16 000 000 no es divisible por 115 200 de ninguna manera que dé un entero. El reloj puede ser perfecto y la velocidad seguir estando mal.
  3. Usar un cristal de una frecuencia múltiplo de la velocidad, como 11,0592 MHz. Bajar la velocidad a 9600 o a otra que el reloj divida bien. O cambiar a una comunicación con línea de reloj, donde la exactitud no interviene.

10 · El reloj en código

Deriva, baudios y capacitores

Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python».

De ppm a tiempo, y de vuelta

def en_palabras(segundos):
    for limite, unidad in ((86400, "días"), (3600, "horas"), (60, "minutos")):
        if segundos >= limite:
            return f"{segundos / limite:.1f} {unidad}"
    return f"{segundos:.2f} segundos"


def deriva(nombre, ppm):
    print(f"{nombre:22} {ppm:>6} ppm -> por día {en_palabras(ppm / 1e6 * 86400):>14}, "
          f"por mes {en_palabras(ppm / 1e6 * 2592000):>14}")


for nombre, ppm in (("oscilador interno", 15000), ("resonador", 5000), ("cristal", 30),
                    ("cristal de reloj", 20), ("reloj compensado", 2)):
    deriva(nombre, ppm)


def medir(segundos_del_programa, segundos_reales, incertidumbre=0.5):
    error = (segundos_reales - segundos_del_programa) / segundos_del_programa
    piso = incertidumbre / segundos_del_programa
    sentido = "atrasa" if error > 0 else "adelanta"
    print(f"El reloj de la placa {sentido} {abs(error) * 100:.2f} % ({abs(error) * 1e6:.0f} ppm), "
          f"con ±{piso * 1e6:.0f} ppm de incertidumbre")


medir(600, 606.2)
medir(86400, 86402.5)

Hacé la prueba de la sección 8 con tu placa y cargá tus dos números en medir.

El error del divisor

Para cada reloj y cada velocidad, el mejor divisor entero y el error que deja.

def error_de_velocidad(hertz, baudios, previo=16):
    divisor = max(1, round(hertz / (previo * baudios)))
    real = hertz / (previo * divisor)
    return divisor, real, (real / baudios - 1) * 100


VELOCIDADES = (9600, 57600, 115200, 250000)
print(f"{'reloj':>12} " + " ".join(f"{b:>10}" for b in VELOCIDADES))
for hertz in (8_000_000, 11_059_200, 12_000_000, 14_745_600, 16_000_000):
    for previo in (16, 8):
        fila = " ".join(f"{error_de_velocidad(hertz, b, previo)[2]:>+9.1f}%" for b in VELOCIDADES)
        print(f"{hertz / 1e6:>7.4f} /{previo:<3} {fila}")

divisor, real, error = error_de_velocidad(16_000_000, 115200, 8)
print(f"16 MHz a 115200 dividiendo por 8: divisor {divisor}, {real:.0f} bits por segundo, {error:+.1f} %")
print(f"Corrimiento en la décima lectura: {abs(error) / 100 * 9.5:.2f} de bit, sin contar el reloj")

Agregá a la lista tu velocidad preferida y la frecuencia de tu placa. ¿Hay alguna combinación que pase de 2 %?

Los capacitores de carga

COMERCIALES = [10, 12, 15, 18, 22, 27, 33, 39, 47]


def capacitores(carga_pf, pistas_pf=5):
    ideal = 2 * (carga_pf - pistas_pf)
    elegido = min(COMERCIALES, key=lambda c: abs(c - ideal))
    return ideal, elegido


def carga_real(c_pf, pistas_pf=5):
    return c_pf / 2 + pistas_pf


for carga in (12, 16, 18, 20):
    ideal, elegido = capacitores(carga)
    print(f"Cristal de {carga} pF: ideal {ideal} pF, se usan {elegido} pF")

print("Con los 22 pF de siempre:")
for carga in (12, 16, 18, 20):
    diferencia = carga_real(22) - carga
    print(f"  cristal de {carga} pF ve {carga_real(22):.0f} pF: {diferencia:+.0f} pF, "
          f"unas {abs(diferencia) * 15:.0f} ppm de corrimiento")

En una protoboard, las pistas pueden sumar 10 pF o más. Probá capacitores(18, pistas_pf=10).

11 · Comprensión

Confusiones frecuentes

«Un 1 % de error es muy poco»

En un resistor, sí. En un reloj se acumula: son 14 minutos por día.

«El microcontrolador sabe cuánto dura un segundo»

Sabe contar pulsos de su reloj, y supone que son de la frecuencia configurada. Si el reloj está corrido, todos sus tiempos lo están.

«Si la comunicación falla, pongo un cristal»

El cristal elimina el error del reloj. Si el error viene de que la velocidad no es un divisor entero de la frecuencia, sigue ahí.

«Los cristales de 11,0592 MHz son valores caprichosos»

Son múltiplos exactos de las velocidades de comunicación estándar, igual que 32 768 Hz es una potencia de dos.

«Los dos capacitores del cristal son filtros»

Son parte del oscilador: le dan al cristal la capacidad para la que fue ajustado. Con otro valor, la frecuencia se corre.

«Con poner el cristal alcanza»

Hay que indicarle al microcontrolador que lo use. Si la configuración sigue en oscilador interno, el cristal no interviene.

«Para saber la hora, lo mejor es un cristal en el microcontrolador»

Es aceptable. Lo mejor es un reloj de tiempo real compensado, que además sigue contando con la placa apagada.

12 · Práctica guiada

Ejercicios

Ejercicio 1: de ppm a tiempo

Calculá cuánto puede apartarse en un día y en un mes un reloj de: 50 ppm, 0,5 %, y 3 ppm.

Ver solución razonada

50 ppm: 86 400 × 0,00005 = 4,3 s por día; 130 s, algo más de dos minutos, por mes. 0,5 %: 432 s por día, unos 7 minutos; 3,6 horas por mes. 3 ppm: 0,26 s por día; 7,8 s por mes.

Ejercicio 2: elegir la fuente

Para cada proyecto, decí qué fuente de reloj mínima usarías.

  1. Un semáforo de juguete.
  2. Un termómetro que envía datos a una computadora a 9600 bits por segundo, siempre dentro de una casa.
  3. Un reloj despertador que no puede apartarse más de un minuto por mes.
  4. Un dispositivo que se conecta por USB.
  5. Un registrador a la intemperie que anota la hora de cada medición durante meses.
Ver solución razonada
  1. Oscilador interno. Un error de 2 % en los tiempos de un semáforo no importa.
  2. Oscilador interno, si está calibrado a ±1,5 % o mejor: a 9600 el divisor no aporta error y la temperatura es estable. Un resonador da más tranquilidad.
  3. Un minuto por mes son 23 ppm: cristal de reloj como mínimo, y con la temperatura de una habitación alcanza justo.
  4. Cristal, salvo que el microcontrolador indique expresamente que puede usar su oscilador interno para USB.
  5. Reloj de tiempo real compensado. A la intemperie, un cristal de reloj común se aparta por la temperatura.

Ejercicio 3: el divisor

Un microcontrolador con reloj de 8 MHz, que divide primero por 16, tiene que comunicarse a 57 600 bits por segundo. Calculá el divisor, la velocidad real y el error. ¿Es aceptable con un oscilador interno de ±1,5 %?

Ver solución razonada

8 000 000 ÷ 16 ÷ 57 600 = 8,68 → divisor 9. Velocidad real: 8 000 000 ÷ 144 = 55 556. Error: −3,5 %. Ya está fuera de lo admisible sin contar el reloj; con el oscilador interno puede llegar a 5 %. No es aceptable. Opciones: dividir por 8 (divisor 17, +2,1 %, todavía justo), bajar a 38 400 o a 9600, o usar un cristal de 7,3728 MHz.

Ejercicio 4: los capacitores

Un cristal de 16 MHz indica una capacidad de carga de 18 pF. La placa tiene pistas cortas, con unos 4 pF. ¿Qué capacitores usarías? ¿Qué pasa si ponés los 22 pF habituales?

Ver solución razonada

2 × (18 − 4) = 28 pF → 27 pF. Con 22 pF, el cristal ve 11 + 4 = 15 pF en lugar de 18: 3 pF de menos, que lo hacen oscilar unas 45 ppm por encima de su frecuencia nominal. Para la mayoría de los usos no se nota; para un reloj de hora, es más que la tolerancia del propio cristal.

Ejercicio 5: la escena, en el simulador

Con el oscilador interno, 16 MHz, 115 200 y división por 8, anotá el error total y el corrimiento de la última lectura a 25 °C, a 10 °C y a 0 °C. ¿A partir de qué temperatura deja de ser cómodo?

Ver solución razonada

A 25 °C el total es de hasta 3,6 %: 2,1 del divisor y 1,5 del oscilador. Ya está por encima del 2,6 % cómodo, y la última lectura puede correrse 0,34 de bit. A 10 °C sube a unos 4,1 %, y a 0 °C a unos 4,4 %, con 0,42 de bit: en el borde. El circuito nunca estuvo en la zona cómoda: funcionaba sobre el escritorio porque el oscilador de esa placa estaba mejor que su peor caso, y el frío se llevó el margen que quedaba.

Ejercicio 6: medí tu placa

Con una placa real. Hacé la prueba de diez minutos de la sección 8, a temperatura ambiente y con la placa fría. Calculá el error en cada caso.

Qué mirar en el resultado

Si tu placa tiene cristal o resonador, la diferencia con el cronómetro va a ser menor que tu propia incertidumbre: no vas a ver nada, y eso es el resultado. Con oscilador interno deberías ver de décimas a un punto porcentual, y un cambio entre frío y tibio. Averiguá primero qué fuente usa tu placa: muchas traen un cristal para la comunicación USB y un resonador para el microcontrolador, y no son lo mismo.

13 · Síntesis

Ideas para recordar

  • Un microcontrolador mide el tiempo contando pulsos de su reloj. El error del reloj pasa a todos sus tiempos.
  • 1 % son 10 000 ppm y 14 minutos por día. 20 ppm son 1,7 segundos por día.
  • Oscilador interno: 1 a 2 %, y cambia con la temperatura. Resonador: 0,5 %. Cristal: decenas de ppm. Reloj compensado: 2 ppm.
  • La fuente se elige por el uso más exigente: nada para un LED, 2 % para la comunicación serie, 0,25 % para USB, ppm para la hora.
  • En la comunicación serie sin línea de reloj, el error se acumula a lo largo de diez bits.
  • La velocidad sale de dividir la frecuencia del reloj: si el divisor no es entero, hay un error que ningún cristal corrige. Por eso existen los 11,0592 MHz.
  • Un cristal lleva dos capacitores, calculados a partir de su capacidad de carga, y todo va pegado al microcontrolador.
  • La fuente de reloj también se configura en el microcontrolador.

¿Listo para el Tema 28?

Podés avanzar si sos capaz de responder esto sin mirar:

  • Nombrar tres cosas que dependen de la exactitud del reloj.
  • Convertir 100 ppm a segundos por día.
  • Ordenar por exactitud: resonador, cristal, oscilador interno.
  • Explicar por qué la comunicación serie tolera unos 2 % y no más.
  • Decir para qué sirve un cristal de 11,0592 MHz.
  • Calcular los capacitores de un cristal de 18 pF con 5 pF de pistas.
  • Explicar cómo medir el error del reloj de una placa con un cronómetro.

Con el reloj, el microcontrolador ya tiene todo lo que necesita para funcionar. Falta lo que lo conecta con una persona, y es el componente más simple del curso y uno de los que más sorpresas da a un programador: dos metales que se tocan. En el próximo tema, interruptores y pulsadores, a fondo.