Estoy trabajando en un proyecto escolar en el que necesito sincronizar el reloj en dos Arduinos a una sincronización casi perfecta. Me gustó la idea de usar Bluetooth pero tiene ciertas desviaciones/retrasos en el tiempo. Estaba pensando en usar una conexión directa entre las dos placas al iniciar y luego desconectar cuando están sincronizadas. ¿Los Arduinos mantendrán la sincronización "perfecta" durante un largo período de tiempo? ¿Esto hará el truco o hay mejores soluciones?
No estoy restringido a usar un Arduino. Necesito una latencia de menos de 20 milisegundos.
" NTP generalmente puede mantener el tiempo dentro de decenas de milisegundos en la Internet pública y puede lograr una precisión de 1 milisegundo en redes de área local en condiciones ideales"
Por ejemplo: Arduino UdpNtpClient , aunque este no es un cliente NTP completo y no mantiene la hora exacta de forma continua (a diferencia de un cliente NTP normal)
La latencia de la red no es un problema, la fluctuación puede serlo. NTP requiere que los sistemas puedan comunicarse a intervalos regulares y requiere tiempo para establecer valores precisos.
Para responder a la pregunta de precisión mientras está desconectado, un cristal típico puede tener una precisión de, por ejemplo, 50 ppm, lo que equivale a alrededor de 4,3 segundos de error durante un día o alrededor de 180 ms por hora, por lo que podría exceder su límite de 20 ms en menos de 10 minutos. Gran parte del error depende de la temperatura y la edad del cristal, por lo que probablemente podría calibrarlo para obtener resultados mucho mejores, pero si está hablando de períodos de tiempo prolongados y su temperatura variará bastante, puede que no sea práctico. .
Ahora que los módulos GPS son tan baratos que vale la pena considerarlos como una fuente de tiempo precisa, suponiendo que su aplicación tenga una vista relativamente clara del cielo o que pueda usar una antena. Técnicamente, el sistema GPS tiene una precisión de alrededor de 20 ns, pero la mayoría de los receptores que he visto con una salida PPS (pulso por segundo) externa afirman una precisión de 1 ms o menos.
Para que eso funcione normalmente, necesitará un puerto UART para leer la salida NMEA del GPS que incluye la fecha y hora UTC y conectar la salida PPS a una línea de interrupción. Deberá verificar la hoja de datos para el módulo GPS específico, pero la mayoría parece pulsar la línea PPS y la oración NMEA que sigue incluye el tiempo relacionado con el pulso, por lo que un método que he usado es cuando ocurre la interrupción para establecer el tiempo hasta el tiempo anterior recibido más un segundo (porque los últimos datos NMEA ahora tienen un segundo de antigüedad) y úselo para calibrar el temporizador de funcionamiento libre.
ron j
PedroJ
JJC
PedroJ