Acuariofilia Madrid

Versión completa: Aula Arduino para principiantes.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola.

Memoria libre=521

Saludos
(31-07-2014, 04:43 PM)xavi escribió: [ -> ]Hola.

Memoria libre=521

Saludos

Gracias Xavi. Ese dato me servirá de guía para intentar no pasarme. -good.gif
Acabo de recibir los RTC DS3231, bastante rápido el envio.

Paso a hacerle pruebas, iré comentando los resultados.

Saludos.
Ya tengo una primera versión completa para controlar el dimeo y sincronizarlo con el reloj de tiempo real. Lo he denominado DIMMER1C. ( gestiona un solo canal de LEDs). También contempla el control de un relé para los ventiladores. No lo he probado en Arduino UNO.

Debeis descomprimir el fichero zip. y trasladar la carpeta Dimmer1C a la carpeta de vuestro sketchbook y ya deberías poder compilarlo. He incluido una guía rápida de uso en formato OpenDocument, dentro de la carpeta del software.

Es una guía muy resumida, espero resolver desde aquí cualquier posible duda.


[attachment=796]
Muchisimas gracias Antonio; mañana me pongo a probarlo.

Saludos
(04-08-2014, 10:52 PM)xavi escribió: [ -> ]Muchisimas gracias Antonio; mañana me pongo a probarlo.

Saludos

Me olvidé de suprimir las lineas 44 y 45 en el fichero "Dimmer1C.ino"

// *** Temporalmente para pruebas en despacho
#define PinBotonera A11 // Pin de linea analogica para leer botonera


Arduino UNO no tiene Pin A11. Puede que incluso diera error al compilar.


CORREGIDO: Acabo de actualizar el fichero y lo he vuelto a mandar.
Anoche lo compilé y me di cuenta lo del pin A11.
También hay que suprimir una línea de código para que compile en windows (por lo del Linux, no?).
Esta tarde con mas tranquilidad monto el círcuito.

Quisiera comentarte una posible función a añadir a los ventiladores de los leds, y es controlar un rele para apagar los leds en caso la temperatura de los mismos suba en exceso (para protegerlos). En una pantalla de leds de 1/3 W la temperatura será bastante mas elevada que con tus leds.

Saludos

LCD.PrintLnSerBeep(strrchr(__FILE__ , '/')+1, true, false);

Me refiero a esta línea.
En efecto, es dependiente de plataforma y no añade gran cosa.

Respecto a la temperatura, los LEDs no pueden calentarse en exceso si se hace que se conecten los ventiladores cuando el dimeo empieza a subir. Por defecto se establece el límite de dimeo a 5. Es decir cuando los LEDs trabajan a menos del 2% de su potencia máxima=255.

De hecho, con esta solución, los LEDs estarán refrigerados sin necesidad durante la primera parte del alba y la última del ocaso. La duración de stos periodos crepusculares por defecto viene establecida a 45 minutos. Deberían bastar 3 minutos para bajar la temperatura de los LEDs a un nivel aceptable.
Existe un parámetro que permite varía el límite máximo de dimeo. Supongo que si hay dudas lo que procede es empezar a usar los LEDs con un límite bajo.

No queda mucha SRAM y yo no veo necesario gastar la poca que queda en un control de sensores. Los LEDs están seguros mientras la ventilación sea suficiente para refrigerar los LEDs a máxima potencia.

Si decides modificar algo y necesitas ayuda, puedes consultarme lo que quieras. Asumo que a cada uno le puede interesar personalizar este software de una manera diferente.

Será interesante que los añadidos particulares se publique aquí para continuar aportando y compartiendo.

Yo estoy muy liado con CAO1. Al programar DIMMER1C he localizado nuevas formas de ahorrar SRAM . La necesidad es una estupenda fuente de inspiración y en Arduino UNO hay que hilar muy fino con el consumo de SRAM.

Las modificaciones que me han surgido para mejorar CAO1 me han obligado a modificar considerablemente el módulo 'CaoDim1C_LCD20x4' (con funciones para el LCD) para que mi CAO1 haga las cosas como en DIMMER1C ya que no me limité a recortar código. (No fue tan sencillo).

Dado que casi todos los módulos mandan información al display, he tenido que modificar casi todo lo que tenía hecho en mi CAO1. Una tarea pesada y que conviene hacer de un tirón para no perderse y con muchos pequeños descansos para no perder la concentración. Ya ha compilado y me queda repasar el funcionamiento de toda la aplicación porque demasiadas cosas han cambiado, parabien, pero han cambiado.

Moraleja: Sarna con gusto no pica. Big Grin
Buenos días.

He encontrado un articulo interesante sobre el reloj DS3231:
http://giltesa.com/2014/02/16/modulos-de...-y-ds3231/
 
Saludos
(06-08-2014, 12:29 PM)xavi escribió: [ -> ]Buenos días.

He encontrado un articulo interesante sobre el reloj DS3231:
http://giltesa.com/2014/02/16/modulos-de...-y-ds3231/
 
Saludos

No pongo en duda esa información pero hay algo que se está escapando a esa información. Los cristales de cuarzo se usan por su precisión.

Lee esto en la wikipedia.

La imprecisión que tú apreciaste en tu RTC me parece totalmente absurda. Un misterio chino sin duda.
(06-08-2014, 12:29 PM)xavi escribió: [ -> ]Buenos días.

He encontrado un articulo interesante sobre el reloj DS3231:
http://giltesa.com/2014/02/16/modulos-de...-y-ds3231/

Saludos

Hola Xavi, gracias por el enlace, desde esta misma página conocí el DS3231.
Estoy usando las librerias que proponen en esta misma web.
Pronto publicaré los resultados. Gracias de nuevo.


(06-08-2014, 10:08 PM)Antonio Castro escribió: [ -> ]La imprecisión que tú apreciaste en tu RTC me parece totalmente absurda. Un misterio chino sin duda.

Creo que 8 segundos de adelanto al día de absurso tiene poco, lo absurdo es conocer el fallo y no hacer nada por solucionarlo.
No digo que todos fallen, pero si muchos de ellos, sobre todo los de procedencia "china".

Los cristales si es cierto que son muy precisos, pero también varia su precisión segun a la temperatura a la que trabajen.
El DS3231 subsana este error al llevar integrado el cristal y un sensor de temeperatura que al recojer los datos de temeratura corrige el posible fallo por temperatura.
Cuando la gente de Dallas sacaron este último integrado así, es porque vieron que de esta manera se conseguiria mas precisón.
(06-08-2014, 10:28 PM)Davidmadrid escribió: [ -> ]
(06-08-2014, 12:29 PM)xavi escribió: [ -> ]Buenos días.

He encontrado un articulo interesante sobre el reloj DS3231:
http://giltesa.com/2014/02/16/modulos-de...-y-ds3231/

Saludos

Hola Xavi, gracias por el enlace, desde esta misma página conocí el DS3231.
Estoy usando las librerias que proponen en esta misma web.
Pronto publicaré los resultados. Gracias de nuevo.


(06-08-2014, 10:08 PM)Antonio Castro escribió: [ -> ]La imprecisión que tú apreciaste en tu RTC me parece totalmente absurda. Un misterio chino sin duda.

Creo que 8 segundos de adelanto al día de absurso tiene poco, lo absurdo es conocer el fallo y no hacer nada por solucionarlo.
No digo que todos fallen, pero si muchos de ellos, sobre todo los de procedencia "china".

Los cristales si es cierto que son muy precisos, pero también varia su precisión segun a la temperatura a la que trabajen.
El DS3231 subsana este error al llevar integrado el cristal y un sensor de temeperatura que al recojer los datos de temeratura corrige el posible fallo por temperatura.
Cuando la gente de Dallas sacaron este último integrado así, es porque vieron que de esta manera se conseguiria mas precisón.

Si has leído el artículo de la Wikipedia te habrás dado cuenta de que esas variaciones a las que tu te refieres por efecto de la temperatura son mucho menores.

La dependencia con la temperatura depende del resonador, pero un valor típico para cristales de cuarzo es de 0'005% del valor a 25 °C, en el margen de 0 a 70 °C.

24*60*60=86400 segundos al dia
(86400 * 0.005 / 100) =4

Es decir, para un circuito cuya temperatura varíe entre 0 y 70ºC la variación del cuarzo sería de unos 4 segundos al día. y para una variación entre 25 y 35 ºC sería la séptima parte, 4/7 = 0.57 segundos al dia.

Los circuitos sensibles a la temperatura suelen tomar como referencia la temperatura de 25ºC.

Me temo que en nuestro caso las oscilaciones de temperatura de las que estamos hablando no llegan siquiera a esos 10ºC. A mí un desfase de más de dos segundos en un oscilador de cuarzo no me parece que sea solo por la temperatura, sospecho que pueda ser un cuarzo defectuoso.

Los cristales de cualquier material poseen una frecuencia de resonancia a la cual pueden vibrar, por ejemplo si son golpeados. Por ejemplo un vaso con cierta cantidad de agua puede hacerlo a diferentes tonos.

En el cuarzo existe una propiedad piezoeléctrica. Por ello si golpeas dos piedras de cuarzo sata una chispa como en el pedernal.

La propiedad piezoelectrica también funciona al revés. Si aplicas potencial eléctrico a un cristal de cuarzo este varía de tamaño ligeramente y si le aplicas una corriente alterna oscilará a la frecuencia de resonancia de ese cristal que depende de su tamaño, de su forma y del montaje o fijación del cristal sobre algún tipo de soporte. La variación con la temperatura tiene que ver con la pequeña dilatación del cuarzo.

Todo esto es lo que puedo decir sobre los fenómenos físicos del cuarzo que influyen en su aplicación como patrones para circuitos electrónicos de oscilación.

La parte de la eletrónica, si está correctamente diseñada, no debería influir en la precisión ya que se trata de varias partes:

1) Un circuito oscilador. Este básicamente suele ser un amplificador de corriente alterna con retro alimentación. Es decir ocurre lo mismo que cuando acercas un micrófono a un altavoz y surge un pitido agudo a la frecuencia de resonancia del conjunto (Efecto Larsen).

2) La salida de ese oscilador entrega la señal a un circuido divisor. Por eso suele escogerse una frecuencia 32.768KHz que divididad sucesivamente por dos, nos entrega un valor apropiado. Los cristales a esta frecuencia son muy precisos y se usan muy ampliamente en infinidad de circuitos electrónicos.

3) La señal con la frecuencia dividida al valor necesario se pasa a un circuito contador.

La única parte que puede ser sensible a imprecisiones es la primera (el circuito oscilador), el resto es matemática pura de un circuito digital. Los circuitos osciladores de cuarzo pueden ser calibrados mediante el uso de un condensador variable o algo similar pero se trata de un ajuste fino para corregir las pequeñas desviaciones derivadas de la imprecisión de la fabricación del cristal. El margen de ajuste es tan pequeño que muchas veces no se prevee usarlo en elementos que no requieren una precisión alta.

La EPROM incluida en algunos RTC, no debería intervenir para nada y si lo hace, es porque el circuito está muy mal diseñado. Si fuera el caso, probablemente el error sería idéntico en todos los RTCs que usen ese diseño.

No me fío de las opiniones que no fundamentan bien las conclusiones porque la gente hace comparaciones prácticas pero saca conclusiones sin demasiado criterio. Si tiene EEPROM va mal, por lo tanto es la EEPROM.

En resumen, una variación de 6 segundos me parece absurda y un auténtico misterio chino, pero es una forma de hablar. Lo que quiero decir, es que no creo que pueda echarse la culpa a la temperatura ni a la EEPROM y que en las características del componente que compramos debería venir la precisión. Cuando ese dato falta y el componente es barato, hay que sospechar que te estén ofreciendo un producto de bastante mala calidad.

Sospecho que en la fabricación de los famosos cristales de 32.768KHz existe una fase de validación en la cual se clasifican por niveles de precisión y salen al mercado con calidades diferentes y precios diferentes.

Pasa también con las resistencias, que pueden tener tolerancias del 5%, 10% o del 20% con precios diferentes.
(07-08-2014, 10:34 AM)Antonio Castro escribió: [ -> ]
(06-08-2014, 10:28 PM)Davidmadrid escribió: [ -> ]
(06-08-2014, 12:29 PM)xavi escribió: [ -> ]Buenos días.

He encontrado un articulo interesante sobre el reloj DS3231:
http://giltesa.com/2014/02/16/modulos-de...-y-ds3231/

Saludos

Hola Xavi, gracias por el enlace, desde esta misma página conocí el DS3231.
Estoy usando las librerias que proponen en esta misma web.
Pronto publicaré los resultados. Gracias de nuevo.


(06-08-2014, 10:08 PM)Antonio Castro escribió: [ -> ]La imprecisión que tú apreciaste en tu RTC me parece totalmente absurda. Un misterio chino sin duda.

Creo que 8 segundos de adelanto al día de absurso tiene poco, lo absurdo es conocer el fallo y no hacer nada por solucionarlo.
No digo que todos fallen, pero si muchos de ellos, sobre todo los de procedencia "china".

Los cristales si es cierto que son muy precisos, pero también varia su precisión segun a la temperatura a la que trabajen.
El DS3231 subsana este error al llevar integrado el cristal y un sensor de temeperatura que al recojer los datos de temeratura corrige el posible fallo por temperatura.
Cuando la gente de Dallas sacaron este último integrado así, es porque vieron que de esta manera se conseguiria mas precisón.

Si has leído el artículo de la Wikipedia te habrás dado cuenta de que esas variaciones a las que tu te refieres por efecto de la temperatura son mucho menores.

La dependencia con la temperatura depende del resonador, pero un valor típico para cristales de cuarzo es de 0'005% del valor a 25 °C, en el margen de 0 a 70 °C.

24*60*60=86400 segundos al dia
(86400 * 0.005 / 100) =4

Es decir, para un circuito cuya temperatura varíe entre 0 y 70ºC la variación del cuarzo sería de unos 4 segundos al día. y para una variación entre 25 y 35 ºC sería la séptima parte, 4/7 = 0.57 segundos al dia.

Los circuitos sensibles a la temperatura suelen tomar como referencia la temperatura de 25ºC.

Me temo que en nuestro caso las oscilaciones de temperatura de las que estamos hablando no llegan siquiera a esos 10ºC. A mí un desfase de más de dos segundos en un oscilador de cuarzo no me parece que sea solo por la temperatura, sospecho que pueda ser un cuarzo defectuoso.

Los cristales de cualquier material poseen una frecuencia de resonancia a la cual pueden vibrar, por ejemplo si son golpeados. Por ejemplo un vaso con cierta cantidad de agua puede hacerlo a diferentes tonos.

En el cuarzo existe una propiedad piezoeléctrica. Por ello si golpeas dos piedras de cuarzo sata una chispa como en el pedernal.

La propiedad piezoelectrica también funciona al revés. Si aplicas potencial eléctrico a un cristal de cuarzo este varía de tamaño ligeramente y si le aplicas una corriente alterna oscilará a la frecuencia de resonancia de ese cristal que depende de su tamaño, de su forma y del montaje o fijación del cristal sobre algún tipo de soporte. La variación con la temperatura tiene que ver con la pequeña dilatación del cuarzo.

Todo esto es lo que puedo decir sobre los fenómenos físicos del cuarzo que influyen en su aplicación como patrones para circuitos electrónicos de oscilación.

La parte de la eletrónica, si está correctamente diseñada, no debería influir en la precisión ya que se trata de varias partes:

1) Un circuito oscilador. Este básicamente suele ser un amplificador de corriente alterna con retro alimentación. Es decir ocurre lo mismo que cuando acercas un micrófono a un altavoz y surge un pitido agudo a la frecuencia de resonancia del conjunto (Efecto Larsen).

2) La salida de ese oscilador entrega la señal a un circuido divisor. Por eso suele escogerse una frecuencia 32.768KHz que divididad sucesivamente por dos, nos entrega un valor apropiado. Los cristales a esta frecuencia son muy precisos y se usan muy ampliamente en infinidad de circuitos electrónicos.

3) La señal con la frecuencia dividida al valor necesario se pasa a un circuito contador.

La única parte que puede ser sensible a imprecisiones es la primera (el circuito oscilador), el resto es matemática pura de un circuito digital. Los circuitos osciladores de cuarzo pueden ser calibrados mediante el uso de un condensador variable o algo similar pero se trata de un ajuste fino para corregir las pequeñas desviaciones derivadas de la imprecisión de la fabricación del cristal. El margen de ajuste es tan pequeño que muchas veces no se prevee usarlo en elementos que no requieren una precisión alta.

La EPROM incluida en algunos RTC, no debería intervenir para nada y si lo hace, es porque el circuito está muy mal diseñado. Si fuera el caso, probablemente el error sería idéntico en todos los RTCs que usen ese diseño.

No me fío de las opiniones que no fundamentan bien las conclusiones porque la gente hace comparaciones prácticas pero saca conclusiones sin demasiado criterio. Si tiene EEPROM va mal, por lo tanto es la EEPROM.

En resumen, una variación de 6 segundos me parece absurda y un auténtico misterio chino, pero es una forma de hablar. Lo que quiero decir, es que no creo que pueda echarse la culpa a la temperatura ni a la EEPROM y que en las características del componente que compramos debería venir la precisión. Cuando ese dato falta y el componente es barato, hay que sospechar que te estén ofreciendo un producto de bastante mala calidad.

Sospecho que en la fabricación de los famosos cristales de 32.768KHz existe una fase de validación en la cual se clasifican por niveles de precisión y salen al mercado con calidades diferentes y precios diferentes.

Pasa también con las resistencias, que pueden tener tolerancias del 5%, 10% o del 20% con precios diferentes.


En efecto, todo lo que dices es cierto, creo recordar que sobre el fallo por la EEPROM lo comento Xavi y que lo estuvo leyendo en un foro. Yo de lo que estado leyendo hasta ahora, y lo que más me convence, es la procedencia china, no por ser chino en si, porque todos sabemos que casi todo hoy en dia se fabrica allí por motivos de costos de producción, si no que como bién dices todos los componentes pasan por un control de calidad, y me temo que los componentes de menos calidad recaen en estos RTC que solemos comprar a precios irrisorios. Es más, leí en un foro sobre los componentes de estos RTC no eran de calidad y no hacian resonar bien al cristal de cuarzo, creo que lo comenté aquí unos dias atrás.
Yo sin duda me quedo con esta teoría, y además que todos fallan en más o menos proporción.

Yo la verdad que 8 segundos al día lo veo una barbaridad, también es cierto que no cuesta cada x tiempo volver a ponerlo en hora, y sé que algo de fallo tendrán todos inluido este DS3231 que también es de procedencia china.

Yo sigo haciendole pruebas, aunque después de leer tu comentario si te parece bién puedo hacerselas a distintas temperaturas a ver que resultado obtengo y si es cierto que ese sensor de temperatura que lleva integrado consigue hacerlo tan preciso como promete la gente de Dallas.

Antonio, te animo a que si tienes tiempo y ganas le hagas pruebas a tu DS1307 a ver que resultados arroja, mas que nada como referencia y que podamos sacar conclusiones.
Yo recibí los dos DS3231 hace unos días, como te dije si quieres te cedo uno de ellos para que también puedas hacerle comprobaciones.

Un saludo.
Buenas tardes.

Antonio, tus explicaciones si que son de wikipedia... Gracias por compartirlos con nosotros.

Yo, empíricamente puedo afirmar, que en un año que tengo montado un controlador basado en Arduino, utilizando un reloj sin memoria epromm, no ha habido variación apreciable.

Antes use el reloj con memoria epromm, y ciertamente se adelantará/atrasaba erraticamente.

Saludos.
Nunca presté atención porque no noté nada desde hace año y medio.

El sistema de puesta en hora que tengo para el controlador de acuario no permite ajustar bien los segundos. Pide confirmación así que introduce una demora.

Se podría hacer un procedimiento para que al pulsar un botón ajustara los segundos a cero por ejemplo. Pero para algo así hecho en falta un sexto botón. Como no es el caso, tendría que hacerse desde una nueva opción del menú.

Por ejemplo ademas de "PuestaFechaHora" una opción "AjustarSegundero", sería una mejora para una siguiente versión. Puede que interese hacerlo, no costaría mucho.