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.
| Función | Cómo se obtiene | Si el reloj va 1 % lento |
|---|---|---|
| Esperas y temporizadores | Contando pulsos | Una espera de 1 s dura 1,01 s |
| Hora y fecha | Acumulando segundos | Atrasa 14 minutos por día |
| Velocidad de la comunicación serie | Dividiendo la frecuencia del reloj | Cada bit dura 1 % más de lo que espera el otro extremo |
| Frecuencia de una señal PWM o de un tono | Dividiendo la frecuencia del reloj | Una nota suena un 1 % más grave |
| Medición de una frecuencia o de un tiempo externo | Contando contra el reloj propio | Mide 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:
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.
| Exactitud | En ppm | Por día | Por mes | Por año |
|---|---|---|---|---|
| 2 % | 20 000 | 29 minutos | 14 horas | 7 días |
| 1 % | 10 000 | 14 minutos | 7 horas | 3,6 días |
| 0,5 % | 5000 | 7 minutos | 3,6 horas | 44 horas |
| 100 ppm | 100 | 8,6 segundos | 4,3 minutos | 53 minutos |
| 20 ppm | 20 | 1,7 segundos | 52 segundos | 10,5 minutos |
| 2 ppm | 2 | 0,17 segundos | 5 segundos | 1 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.
| Fuente | Cómo se reconoce | Exactitud típica | Por día | Piezas externas |
|---|---|---|---|---|
| Oscilador interno | No se ve: está adentro del microcontrolador | ±1 a 2 %, y varía con la temperatura | 15 a 30 min | Ninguna |
| Resonador cerámico | Pieza cerámica de color, de tres patas | ±0,5 % | 7 min | Solo el resonador |
| Cristal de cuarzo | Cápsula metálica de dos patas, con la frecuencia grabada | ±20 a 50 ppm | 2 a 4 s | El cristal y dos capacitores |
| Oscilador a cristal | Cápsula metálica rectangular de cuatro patas | ±20 a 50 ppm | 2 a 4 s | Solo el módulo, alimentado |
| Reloj con compensación de temperatura | Un integrado o un módulo de reloj de tiempo real | ±2 ppm | 0,2 s | El 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
| Función | Tolera | Fuente mínima |
|---|---|---|
| Parpadear un LED, leer botones, manejar relés | 10 % o más | Oscilador interno |
| PWM para brillo o velocidad | Varios por ciento | Oscilador interno |
| Notas musicales afinadas | 0,5 % | Resonador |
| Comunicación serie asincrónica | Unos 2 % entre los dos extremos | Resonador, o un oscilador interno bien calibrado |
| Comunicación con reloj compartido | Casi cualquier cosa | Oscilador interno |
| USB | 0,25 % o menos | Cristal |
| Radio, redes cableadas | Decenas de ppm | Cristal |
| Hora del día durante semanas | Un minuto por mes: 23 ppm | Cristal de reloj; mejor, un reloj compensado |
| Medir tiempos o frecuencias con exactitud | Lo que pida la medición | Cristal |
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.
- 1El receptor detecta el comienzo.
El primer cambio de la línea marca el inicio de un carácter.
- 2A 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.
- 3El 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.
- 4Mientras 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:
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.
| Reloj | Divisor ideal | Divisor usado | Velocidad real | Error |
|---|---|---|---|---|
| 8 MHz | 4,34 | 4 | 125 000 | +8,5 % |
| 12 MHz | 6,51 | 7 | 107 143 | −7,0 % |
| 16 MHz | 8,68 | 9 | 111 111 | −3,5 % |
| 11,0592 MHz | 6,00 | 6 | 115 200 | 0 % |
| 14,7456 MHz | 8,00 | 8 | 115 200 | 0 % |
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.
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:
| Capacidad de carga del cristal | Cálculo | Valor comercial |
|---|---|---|
| 12 pF | 2 × (12 − 5) = 14 pF | 15 pF |
| 16 pF | 2 × (16 − 5) = 22 pF | 22 pF |
| 18 pF | 2 × (18 − 5) = 26 pF | 27 pF |
| 20 pF | 2 × (20 − 5) = 30 pF | 27 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
| Error | Consecuencia |
|---|---|
| Cables largos entre el cristal y el microcontrolador | Agregan capacidad y recogen ruido: frecuencia corrida, o no arranca. En una protoboard, cada fila agrega varios picofaradios |
| Configurar «cristal externo» sin tener el cristal puesto | El 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ón | La capacidad agregada corre la frecuencia o detiene el oscilador |
| Olvidar los capacitores | Puede 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.
- 1Hacé 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.
- 2Predecí.
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.
- 3Cronometrá con el teléfono.
Tu reacción agrega unas tres décimas de segundo al empezar y otras tantas al terminar.
- 4Calculá.
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.
| Duración de la prueba | Error mínimo que se distingue | Alcanza para evaluar |
|---|---|---|
| 1 minuto | 0,8 % | Un oscilador interno, apenas |
| 10 minutos | 0,08 %: 800 ppm | Un oscilador interno o un resonador |
| 1 hora | 140 ppm | Un resonador |
| 24 horas | 6 ppm | Un 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.
Deriva del reloj
Recorrido guiado (8 minutos)
- 1Mirá el estado inicial.
Oscilador interno, 25 °C, una semana: hasta 2 horas y media de error. Es el registrador de la escena.
- 2Bajá la temperatura a 0 °C.
El error de frecuencia crece. Las tres verificaciones de la derecha muestran para qué alcanza y para qué no.
- 3Recorré las cinco fuentes, a 25 °C.
Del oscilador interno al reloj compensado, el error de una semana baja de horas a un segundo.
- 4Con 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.
- 5Pasá 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.
- 6Bajá 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.
- 7Cambiá 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.
- 8Elegí 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
- En el paso 1, el oscilador interno tiene «solo» 1,5 % de error. ¿Por qué el resultado parece tan malo?
- En el paso 7, ¿de dónde sale el error que el cristal no elimina?
- ¿Qué tres maneras hay de resolver la comunicación de la escena?
Ver respuestas sugeridas
- 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.
- 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.
- 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.
- Un semáforo de juguete.
- Un termómetro que envía datos a una computadora a 9600 bits por segundo, siempre dentro de una casa.
- Un reloj despertador que no puede apartarse más de un minuto por mes.
- Un dispositivo que se conecta por USB.
- Un registrador a la intemperie que anota la hora de cada medición durante meses.
Ver solución razonada
- Oscilador interno. Un error de 2 % en los tiempos de un semáforo no importa.
- 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.
- Un minuto por mes son 23 ppm: cristal de reloj como mínimo, y con la temperatura de una habitación alcanza justo.
- Cristal, salvo que el microcontrolador indique expresamente que puede usar su oscilador interno para USB.
- 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.