[ARDUINO] Horloge et Reboot
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

[ARDUINO] Horloge et Reboot



  1. #1
    Peeck

    Unhappy [ARDUINO] Horloge et Reboot


    ------

    Bonjour à tous,

    Je cherche à trouver une aide concernant l'arduino. J'ai créé un programme (exécuté par une arduino Nano) dans lequel j'utilise la bibliothèque Time.h .
    J'ai conçu ce programme dans le but qu'il reste actif 24/7. Je définis l'heure lorsque l'arduino boot à l'aide de boutons poussoirs. Or, après avoir défini l'heure, le programme s’exécute très bien mais prend sans cesse une légère avance qui est de l'ordre de plusieurs secondes en une journée... Mon programme est long (plusieurs centaines de lignes), l'arduino est donc beaucoup sollicité (~80% d'après le téléversement).

    Est-ce que mon arduino serait saturée par un programme trop long ?
    La fonction millis() régissant mon programme (par le biais de la bibliothèque Time.h) serait-elle défectueuse ?

    De plus, au bout de plusieurs jours (2 - 3 semaines) mon arduino reboot toute seule, sans que l'alimentation ne soit coupée...

    Est-il possible qu'une arduino Mega mette fin à ces problèmes ?

    Merci d'avance pour vos réponses !

    -----

  2. #2
    HAYAC

    Re : [ARDUINO] Horloge et Reboot

    Bonjour,

    Sans horloge temps réel, le problème sera toujours présent c'est pour cela quelle existe.
    Pour ce qui est du reboot, a voir, code, micro-coupure, Nano ...

  3. #3
    fdamien12

    Re : [ARDUINO] Horloge et Reboot

    AMHA le uC ne reboote pas, c'est juste un overflow de la variable int 32 bits dans laquelle est stockée la valeur de retour de millis(). Cf la doc

    @Hayac: le GRAND intérêt de la RTC est de compter le temps indépendamment du uC, mais si le quartz du micro et de la RTC ont la même précision et que l'algo sur le uC n'est pas implanté avec les pieds tu auras exactement la même précision sur le temps... Tant que le uC est alimentée.
    Dernière modification par fdamien12 ; 01/08/2015 à 14h58.

  4. #4
    cubitus_54

    Re : [ARDUINO] Horloge et Reboot

    Bonjour,

    L'oscillateur à quartz des cartes arduino n’est pas d'une grande précision.
    Exemple sur la carte à base de MEGA 2560 avec un quartz de 16MHz,
    j'ai une fréquence mesurée de : 15,966048 MHz ce qui fait 2,1% d'erreur...

  5. A voir en vidéo sur Futura
  6. #5
    PA5CAL

    Re : [ARDUINO] Horloge et Reboot

    Bonjour

    La précision des horloges de microcontrôleurs est effectivement limitée.

    On doit s'attendre à une erreur de l'ordre de 0,005% (50 ppm) sur les modèles utilisant un quartz (soit une dérive d'environ 4 secondes par jour), et de l'ordre de 0,5% sur les modèles utilisant un résonateur céramique (soit une dérive d'environ 7 minutes par jour). Ces valeurs peuvent varier en fonction du soin apporté à la mise en œuvre de l'oscillateur, mais l'ordre de grandeur ne peut pas être amélioré.

    En comparaison, avec un quartz horloger classique (32,768 kHz) on descend à 0,002% (20 ppm) voire 0,001% (10 ppm) pour les meilleurs.

    Le fait que le comptage du temps avance ou retarde de plusieurs secondes par jour est tout-à-fait normal, et il n'est pas possible de réduire efficacement cette dérive autrement qu'en utilisant une autre horloge plus précise (un circuit horloger, un oscillateur externe de haute précision compensé en température, ou un récepteur DCF77 recevant des signaux issus d'une horloge atomique, par exemple).

    (@cubitus_54 : une différence de 2,1% c'est énorme. Je pense qu'il faut remettre en question la fabrication de la carte ou la précision de l'appareil de mesure)


    Sur les Arduinos à 16MHz, le timer chargé du comptage fait un overflow toutes les 1,024 ms, ce qui permet de compter les millisecondes par incrémentation corrigée (i.e. de temps en temps on avance de 2 millisecondes d'un coup pour rattraper le retard accumulé). Les décomptes des overflows et des millisecondes sont stockées dans deux entiers longs non signés, dont le maximum (232–1) correspond respectivement à 50,9 jours et 49,71 jours. Mais lorsque ce maximum est atteint, le décompte correspondant repart juste à zéro, sans rien provoquer de particulier.

    Le microcontrôleur dispose d'un watchdog capable de provoquer sa réinitialisation. Mais il est désactivé par défaut, et sa période de comptage est quoi qu'il en soit limitée à 8 secondes.


    Par conséquent, la cause de la réinitialisation de l'Arduino doit être cherchée ailleurs. Il peut s'agir d'un défaut du matériel, d'un bug logiciel, ou d'un événement survenant dans l'environnement du système.
    Dernière modification par PA5CAL ; 01/08/2015 à 17h38.

  7. #6
    cubitus_54

    Re : [ARDUINO] Horloge et Reboot

    Bonsoir Pascal,

    J'ai fait une petite erreur de calcul, c'est -0,21% et pas 2.1%
    Il n'y a pas d'erreur de mesure

    Je suis d'accord avec toi si on considère la précision du quartz. Dans ce cas de figure, l'oscillateur est conçu pour ce type de quartz et un ajustement a été réalisé.
    Ce n'est visiblement pas le cas des cartes Arduino (en tout cas pour les clones que j'ai à disposition).

  8. #7
    Peeck

    Re : [ARDUINO] Horloge et Reboot

    Bonjour,

    Merci beaucoup pour votre aide, le timer ne me servant qu'à provoquer un seul évènement par jour, je vais probablement me contenter d'utiliser un réveil à aiguilles afin de récupérer le contact effectué lorsque l'alarme de celui-ci s'active.
    Ainsi l'heure sera moins erronée (je pense) et le problème du reboot n’altérera que très peu le fonctionnement de la machine. Si ça s'annonce trop complexe, je me renseignerai pour utiliser une horloge temps réel. Il est vrai que les quartz sont peu précis sur les Arduino, et leur précision semble varier d'un Arduino à l'autre, je vais essayer avec une Mega avant pour voir si la précision est meilleure ou non.

    Merci encore pour vos réponses très complètes et rapides !

  9. #8
    HAYAC

    Re : [ARDUINO] Horloge et Reboot

    Bonjour,

    Un bricolage à l’arrache serait décevant alors que des modules Temps réel extrêmement simple sont fait pour cela :
    http://electroniqueamateur.blogspot....uino-real.html
    Bricoler c'est bien mais qui à faire autant faire bien ...

  10. #9
    HAYAC

    Re : [ARDUINO] Horloge et Reboot

    Et à 7euros le module il serait dommage de sans priver
    https://www.adafruit.com/products/264

  11. #10
    PA5CAL

    Re : [ARDUINO] Horloge et Reboot

    Concernant les modules à base de DS1307, on peut noter que la puce contient 56 octets de RAM sauvegardés par la pile au lithium de l'horloge, qui peuvent être mis à profit pour mémoriser l'heure et le déroulement des dernières opérations, afin par exemple de reprendre ou corriger une tâche qui aurait été interrompue par un reset inopiné de l'Arduino, ou qui n'aurait pas été effectuée du fait d'une coupure de l'alimentation électrique.

    Ce type d'horloge présente toutefois des dérives mesurables, qui dépendent toujours de la précision du quartz et de son réglage (... et de l'honnêteté et du sérieux de son constructeur).

    Les retours d'expérience sur les différents modules vendus dans le commerce font état de 2 ou 3 secondes par jour pour la plupart, mais de 2 ou 3 minutes par jour (!) pour quelques-uns.


    Si le montage doit pouvoir fonctionner avec une heure précise (à la seconde près) ou bien sans jamais faire de réglage, alors on peut envisager d'utiliser un récepteur DCF77 (comme celui-ci ou celui-là). Ce récepteur doit être à portée radio de l'émetteur allemand de Mainflingen.

    Nom : 220px-Dcf_weite.jpg
Affichages : 262
Taille : 20,8 Ko

    On peut par exemple se contenter de l'alimenter et de recevoir (et décoder) ses signaux horaires juste une ou deux fois par jour, et après chaque reset du système, le temps de remettre à l'heure l'horloge interne moins précise de l'Arduino.
    Dernière modification par PA5CAL ; 02/08/2015 à 12h00.

Discussions similaires

  1. horloge arduino
    Par pegazix dans le forum Électronique
    Réponses: 15
    Dernier message: 30/12/2014, 09h03
  2. Communication arduino-arduino avec module Xbee
    Par TPESI22012 dans le forum Électronique
    Réponses: 2
    Dernier message: 23/12/2013, 17h24
  3. Synchronisation entre horloge atomique et horloge d'un récepteur GPS
    Par invite0e188b54 dans le forum Électronique
    Réponses: 10
    Dernier message: 06/12/2012, 22h56
  4. Réponses: 11
    Dernier message: 01/06/2009, 10h47
  5. Horloge lumineuse, horloge mecanique et Einstein
    Par pidofra dans le forum Physique
    Réponses: 6
    Dernier message: 22/03/2006, 15h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.