(Problema) DS3231SN (ZS-042)

Hola a todos. He comprado un módulo ZS-042 con encapsulado DS3231 puesto que necesito saber el tiempo en mi proyecto, el cual es en una zona industrial, donde la temperatura es de entorno 28 a 42 ºC durante el año.

Haciendo pruebas me he topado con que el tiempo de desvía una barbaridad, en torno a 10 segundos en un par de horas, si, sé que el módulo es de bajo coste, lo compre mayormente para hacer pruebas, pero no me esperaba tanto retardo, estando la temperatura estable en el día de las pruebas.

Mi pregunta es ¿El retardo se debe a ser de chinese edition o pueden ser los campos electromagnéticos que pululan por allí? Después de probarlo en casa durante un par de horas el RTC se porta bien.

Las librerías que he usado son de esta pagina versión 1.4.2 al final del post.

Si alguien me pudiera echar una mano lo agradeceria.

PD: No le he puesto aún pila ¿Eso puede afectar a la medición?

Si tu modulo es un DS3231 y tiene un corrimiento de 10 segundos estamos todos en problemas recomendándolo.
Según Maxim

The DS3231 is a low-cost, extremely accurate I2C real-time clock (RTC) with an integrated temperature compensated crystal oscillator (TCXO) and crystal.

también dice la Hoja de datos

Características
• Precisión ±2ppm desde 0°C a +40°C
• Precisión ±3.5ppm desde -40°C a +85°C
• Sensor de temperatura : ±3°C Precisión

entonces o esta defectuoso o algo ocurre.
Calienta? Mediste la batería?

¿Has probado el funcionamiento con otra libreria?

Tengo un DS3231 conectado en un arduino Due, funcionando de forma continua desde julio de este año y según veo no se ha desfasado a tal grado.

Aclaro que tiene una bateria LIR2032, me parece que se ha desfasado apenas alguna fraccion de segundo.

Esta es la libreria que usé para configurarlo: Tutorial – Using DS1307 and DS3231 Real-time Clock Modules with Arduino | tronixstuff.com

El autor menciona que esa libreria funciona tanto en el DS1307 como en el DS3231, así que me aventuré a no modificar el programa, el cual diseñe para el DS1307.

La libreria para el DS1307 que decidí dejar es esta: http://www.adrirobot.it/rtc_module/rtc_module_arduino-due.htm

Ambas librerias funcionan impecablemente en arduino Due, he verificado y compilan sin problemas en el MEGA o en el UNO

Gracias a ambos por responder, con respecto al calentamiento puse un termómetro de ambiente que teníamos por allí y apenas se movió un grado, lo he probado en casa y durante 3 horas lo máximo que varía es un segundo pero el oscilador se corrige solo al cabo de poco más de un minuto.

Me aventuraría a decir que es por la cantidad de ruido que hay allí y al tenerlo "al aire" se come el electromagnetismo y se vuelve majara.

Sobre las librerías pues las probaré a ver que tal me va con esas que me recomiendas ¿El módulo que usas es el mismo que el mío?

Porque no improvisas una jaula de faraday.
Una caja matálica y lo pones debidamente aislado dentro
Puede ser tipo malla. El tema es que lo envuelva.
Prueba sino con papel de aluminio y de nuevo todo aislado.

Jolusam:
...
Sobre las librerías pues las probaré a ver que tal me va con esas que me recomiendas ¿El módulo que usas es el mismo que el mío?

En efecto es el mismo. Esta semana he estado eliminado cables de prototipado del proyecto, armé un shield para conectar un lector microSD, un DS3231 y además tiene un soquet para conectar una pantalla ILI9341+táctil. El shield es para el arduino Due del proyecto. Me alegra haber eliminado bastantes cables

Como tiene una bateria recargable instalada, lo puedo desconectar del arduino sin problemas.
PD: pensé que el fantasma del DS1307 me perseguía

Un jaula de faraday, y yo pensando en usar la bolsa antiestática en la que me lo vendieron, a ver si me sacan de producción y puedo seguir haciendo el experimento.

Te ha quedado muy bonito, muy limpio. Una pregunta ¿Esas pantallas son difíciles de programar? Lo digo más que nada por el tema gráfico o hay algún programa tipo visual basic que te dé el código de las posiciones de los objetos y demás.

Las pantallas ILI9341 no son difíciles de programar, ademas son bastante económicas.

El punto de cuidado para conectarlas en el arduino MEGA (o en el UNO), es habilitar un divisor de voltaje (3.3/5V) en las lineas de comunicación CS, RST, DC, MOSI y SCK, o bien usar un convertidor lógico 3.3/5V.

La pantalla táctil funciona sin usar divisores de voltaje.

El lector SD se debe conectar también con divisores de voltaje () en SD_MISO. SD_SCK y SD_MOSI se pueden conectar al mismo divisor de voltaje correspondiente de la pantalla.

Aunque las librerias para arduino permiten dibujar primitivas, números, imagenes bmp y texto, hay que ingeniarselas para construir botones táctiles o barras deslizables.

La pantalla táctil me interesaba más que nada por el tema de botones y demás, es más cómodo tener una pantalla con menús que 20 botones físicos.

La creación de botones, una vez que consigues calibrar la pantalla táctil, es un proceso bastante sencillo. Puedes tener esos 20 botones e incluso mas.

Te dejo algunos ejemplos:

Menu táctil con botones simples
Menu con iconos en cada boton

El proyecto en el que he estado trabajando consiste en apoyarme de un arduino para poder encender/reiniciar/apagar la PC, monitorear sensores de temperatura, contar con un reloj (con un DS3231), contar con un analizador de espectro con chips MSGEQ7. A futuro quiero que también cuente con un osciloscopio básico.

Este es el prototipo en el que trabajé previamente

He intentado controlar los ventiladores pero me he topado con algunas limitantes, espero mas adelante poder resolverlo. Este es el prototipo en el que estoy trabajando

Instalé en la PC una refrigeración líquida, aunque el gabinete es bastante espacioso, el domo originalmente tiene un diseño bastante pobre para la salida del aire del radiador. Para ello decidí remover la cubierta de plástico con rejillas estrechas y en su lugar colocar un domo de ventilación, cuyas rejillas se puedan mover con ayuda de un servo.

Este es el prototipo: Domo de ventilación

Me temo que no funciona nada, supongo que será que el módulo esta estropeado o algo.