1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Génération signal basse fréquence pilotage horloge

Discussion dans 'Horlogerie' créé par tronix, 22 Juin 2014.

  1. tronix

    tronix Compagnon

    Messages:
    542
    Inscrit:
    6 Mars 2012
    Génération signal basse fréquence pilotage horloge
    Bonsoir,

    c'est un petit jeu avec JCS, à qui je tire mon chapeau pour ses différents posts, y compris pour son post d'initiation à l'Arduino. Le but n'est pas de contrer son post, mais de montrer une approche différente.

    Arduino, très bien pour faire pas mal de choses, mais si c'est juste pour générer un signal basse fréquence stable pour piloter une horloge, il y a plus simple. :wink:

    Je redonne le schéma, il reste à ajouter un bouton pour la mise à l'heure, plus ce qui pourra apparaitre nécessaire.

    Comme je connais bien Microchip, même si je n'utilise quasiment que des processeurs 32 bits qui tournent à 80MHZ (en attendant les nouveaux avec encore plus de mémoire et tournant à 200MHz), il m'arrive ponctuellement d'utiliser les PIC12 en boîtier SO8 voire même les PIC10 en minuscule boîtier SOT23, bien adaptés ici.

    Il est évident que l'on peut porter le schéma et le code sur d'autres familles telles que l'Arduino, c'est un peu le but de ce post (et pas pousser vers Microchip, je n'ai pas d'intérêt chez eux). Je ne veux pas polluer le post de JCS ni sembler faire une critique, mais la communication entre les 2 reste possible.

    Le schéma

    ScreenShot103.png


    Le processeur existe en DIP8, même si la référence est celle d'un SO8. Il y a plein de variantes, peu importe ici, rien de spécifique, c'est juste celle que j'ai dans mes tiroirs


    Le programme, en C

    Voir la pièce jointe Horloge.c


    Les macros et constantes

    ScreenShot011.png

    Le programme principal

    ScreenShot010.png


    La fonction d'interruption, partie utile du programme. Quelques lignes, et encore, on sort des signaux en plus.

    ScreenShot008.png

    L'initialisation du timer

    ScreenShot005.png

    Et c'est tout !


    Le plus dur est d'initialiser le timer et le processeur, il faut se plonger dans la doc du processeur utilisé. Il faut d'ailleurs que je vérifie un truc (valeur exacte à programmer dans le timer, la valeur est légèrement différente de celle que j'avais prévue pour avoir le rapport de division voulu, il faut que je comprenne) et que je fasse le montage avec un oscillateur de précision à 10Mhz.

    Il manque aussi quelques lignes pour gérer un bouton et faire la mise à l'heure. A suivre...

    Je ferai aussi la version avec le PIC10, qui sera soudé directement au dos de l'oscillateur, pour obtenir un montage minimaliste et minuscule.

    Je vais ajouter plus tard des photos et des relevés à l'analyseur et à l'oscilloscope, ainsi qu'une vérification de la stabilité.

    Composants :

    http://www.mouser.fr/ProductDetail/...GAEpiMZZMt8zWNA7msRCr8qH5p3IKFlxLulqT%2bPqVs=
    http://www.mouser.fr/Search/Refine.aspx?Keyword=pic12f1840
    http://www.mouser.fr/Semiconductors...trollers/_/N-6hpef?Keyword=pic10lf320&FS=True

    Coût pour avoir un signal de référence à la fréquence et forme voulues : environ 4€. Précision et stabilité prévues : 1.5 à 2.5ppm (1 minute / an).

    Avec un peu d'habilité, cela peut se câbler sur un petit bout de cuivre pastillé ou même en l'air.
     
  2. JCS

    JCS Compagnon

    Messages:
    864
    Inscrit:
    22 Juin 2007
    Localité:
    Cher
    Département:
    18200
    Génération signal basse fréquence pilotage horloge
    Salut Tronix,

    Je salue ton excellente initiative ! Elle est profitable à tous.
    Je vais la suivre avec beaucoup d'intérêt. Ta solution est plus "catholique" et semble effectivement plus simple, à priori.
    Toutefois, elle demande de sérieuses connaissances en électronique et un matériel conséquent.

    La solution que je propose s'adresse à un novice qui ne dispose pas d'un labo d'électronicien, mais juste un fer à souder
    et 5 cm de soudure pour faire 2 soudures pour modifier un mouvement de pendule de cuisine à quartz en base de temps précise !

    Cette solution a 2 objectifs :
    - L'initiation à L'Arduino en entrant directement dans le vif en réalisant un montage très simple.
    - La réalisation d'une horloge mère fiable et précise. Sur des forums spécialisés, il existe des quantités de posts fantaisistes et
    prétentieux sur le sujet, beaucoup de baratin théorique mais, me semble-t-il, rien de concret et d'éprouvé.

    @+

    JC
     
  3. tronix

    tronix Compagnon

    Messages:
    542
    Inscrit:
    6 Mars 2012
    Génération signal basse fréquence pilotage horloge
    Nos deux posts sont en effet complémentaires. Le tien sera un excellent (je suppose...) tuto d'initiation à la programmation, avec un projet simple, même si on peut le faire autrement, mais l'arduino est une très bonne base pour faire des choses plus complexes, là où ce sera plus dur en prenant les composants nus.
    La solution que je propose ne demande aucun matériel, en dehors du programmateur, mais un peu plus d'habilité pour souder 2 ou 3 composants. Je donnerai quelques infos sur l'outil de compilation et de programmation, sans trop m'étendre cependant, car je suis d'accord sur le fait qu'un débutant aura plutôt intérêt à se tourner vers l'Arduino. Mais la solution est portable sur les processeurs des Arduino.
    Quant à la précision, je vois que tu doutes toujours ! De ce côté, je ne m'inquiète pas trop : je fais (relativement) confiance à la doc d'un composant destiné au marché professionnel, et elle est assez claire sur ce point.
     
  4. DEN

    DEN Compagnon

    Messages:
    1 433
    Inscrit:
    28 Août 2009
    Localité:
    NE-CH
    Génération signal basse fréquence pilotage horloge
    On peut faire un générateur précis à basse fréquence avec un 4060 et un Quartz à 32768Hz,

    on arrive à 2Hz en faisant la division complète, si on veut 1Hz alors il faut diviser encore par deux avec un 4013 par exemple ...

    voir sur cette page par exemple sur la fabrication d'une horloge avec tube "Nixie"

    http://www.mcamafia.de/nixie/ncp_en/ncp.htm
     
  5. tronix

    tronix Compagnon

    Messages:
    542
    Inscrit:
    6 Mars 2012
    Génération signal basse fréquence pilotage horloge
    Oui, mais on en revient toujours au même, le quartz aura une tolérance déjà moins bonne, et surtout, l'oscillateur doit être monté avec les condensateurs parfaitement adaptés, en tenant compte des capas parasites et des caractéristiques précises du quartz. Comme cela se joue à quelques pF, il faut mettre un condensateur ajustable...et régler le machin. Sans moyen de mesure, on tourne en rond. Avec un oscillateur précis, on évite ces problèmes. Et avec le processeur, on sort la forme de signal qui convient.
     
  6. stanloc

    stanloc Compagnon

    Messages:
    4 364
    Inscrit:
    29 Octobre 2012
    Génération signal basse fréquence pilotage horloge
    De mon point de vue avec un affichage à aiguilles Brillié ou autres, la précision de n'importe quel quartz sera toujours suffisante car il est rare de lire l'heure en s'occupant de la trotteuse sur ce genre de garde-temps.
    Stan
     
  7. DEN

    DEN Compagnon

    Messages:
    1 433
    Inscrit:
    28 Août 2009
    Localité:
    NE-CH
    Génération signal basse fréquence pilotage horloge
    Bein, j'ai raté un truc alors, le PIC fonctionne sur un Quartz, non ? Ou c'est le fait de se trouver à une fréquence plus élevée qui le rend plus précis à la division ?
    En effet il faut utiliser un condensateur ajustable, pour caler l'horloge, quoique ça influence très peu la fréquence (vérifié sur oscilloscope).
    On peut mettre utiliser un compteur, pour à la fin du comptage se caler sur le temps reçu sur signal dcf77, ou utiliser le DCF77 directement comme base de temps.
     
  8. tronix

    tronix Compagnon

    Messages:
    542
    Inscrit:
    6 Mars 2012
    Génération signal basse fréquence pilotage horloge
    Non, mais un quartz a une tolérance initiale et une stabilité en température, auxquelles il faut ajouter le décalage introduit par la réalisation de l'oscillateur. Sans réglage ou sélection précise des composants, la fréquence de base n'est pas très bonne, l'erreur peut être de 50 à 100ppm, voire plus. Evidemment, c'est déjà largement mieux que beaucoup d'horloges ou de montres mécaniques.
    En prenant un oscillateur intégré, on est déjà nettement meilleur, classiquement entre 10 et 20ppm. Et si on choisit un oscillateur plus précis et plus stable (référence donnée plus haut), on a directement, sans aucun réglage, autour de 2ppm. Reste à faire une division du rapport voulu, sans se tromper ni se faire piéger par la doc, et on a la même précision en sortie, sans aucun réglage ni appareil de mesure.

    Là, de base, avec un oscillateur ordinaire de 8MHz, j'ai une fréquence intermédiaire à 500.0017 Hz (it 1000Hz), soit une erreur de 4 ppm, c'est l'erreur que j'ai au départ à l'oscillateur (8.000027 MHz théoriquement, je mesure 8.000045 MHz). Mais mon moyen de mesure a lui-même une précision, de cet ordre de grandeur, il faut donc que je récupère un fréquencemètre plus précis ou que je mesure l'erreur du fréquencemètre lui-même.
     
  9. tronix

    tronix Compagnon

    Messages:
    542
    Inscrit:
    6 Mars 2012
    Génération signal basse fréquence pilotage horloge
    Un oscilloscope est totalement insuffisant pour mesurer la fréquence d'oscillation. On peut caractériser un quartz à l'analyseur de spectre, et on voit d'abord la fréquence du mode d'oscillation série, puis celle du mode parallèle. En chargeant en parallèle le quartz avec un condensateur (ou avec deux avec un point milieu à la masse, comme sur la plupart des schémas), on voit que l'on peut faire baisser un peu la fréquence du mode parallèle. Un quartz prévu pour être utilisé en mode parallèle est spécifié avec une capacité de charge, pour avoir la fréquence annoncée. Et si on fait osciller un quartz en mode parallèle alors que sa fréquence (taille) a été calculée pour le mode série, l'erreur est bien plus grande, sans être catastrophique dans la plupart des cas. Quand vous achetez un quartz à l'épicerie du coin, demandez au vendeur si sa fréquence est donnée pour le mode série ou parallèle, et sa capacité de charge nécessaire. J'imagine déjà la tête du vendeur !!! :-D Pour avoir d'ailleurs fait moi-même la même pendant longtemps !
    C'est bien pour cela qu'un quartz seul ne donne pas forcément une précision suffisante si on le câble n'importe comment. D'où l'intérêt d'utiliser un oscillateur complet dont les caractéristiques sont mieux maîtrisées, et qui peut être compensé en température et en tension. Un oscillateur réalisé en discret, avec un quartz, un condensateur et un condensateur ajustable, pourra être ajusté, mais sa stabilité pourra être médiocre.
     
  10. DEN

    DEN Compagnon

    Messages:
    1 433
    Inscrit:
    28 Août 2009
    Localité:
    NE-CH
    Génération signal basse fréquence pilotage horloge
    Ok, c'est plein de bon sens ! Merci pour ces éclaircissements !
    Je compte me faire un tachymètre à base de PIC18F4550, je peux m'attendre alors à une précision hors pair !
     
  11. stanloc

    stanloc Compagnon

    Messages:
    4 364
    Inscrit:
    29 Octobre 2012
    Génération signal basse fréquence pilotage horloge
    @tronix ; tu n'exagères pas un peu sur les qualificatifs pour argumenter en faveur de tes choix ??????
    C'est le B A BA des métiers que d'utiliser le bon produit pour le bon emploi sinon le résultat pourra être autre que prévu.
    Stan
     
  12. tronix

    tronix Compagnon

    Messages:
    542
    Inscrit:
    6 Mars 2012
    Génération signal basse fréquence pilotage horloge
    Non, c'est JCS qui veut de la précision, et qui émet des doutes sur celle des montages à quartz classiques, en fonction aussi de son expérience. Quand on creuse un peu et que l'on fait les mesures, on comprend mieux pourquoi un montage à quartz standard fait sans précautions n'aura pas une précision aussi grande que le seul mot "quartz" laisse espérer. Il y a alors deux choix, celui de JCS de s'appuyer sur un mouvement d'horloge, et celui que je propose : simplement prendre un (bon) oscillateur. Mais je n'ai rien à vendre, chacun fait ce qu'il veut ! :wink:
     
  13. stanloc

    stanloc Compagnon

    Messages:
    4 364
    Inscrit:
    29 Octobre 2012
    Génération signal basse fréquence pilotage horloge
    La question qui se pose est : est ce qu'il y a encore des fournisseurs de quartz nus avec un descriptif suffisamment précis pour bien choisir ce que l'on veut ? Moi je choisirais alors un quartz dont la résistance série est la plus faible possible, un F/delta F le plus grand possible et le ferais osciller sur son fondamental dans un montage série. Si ces fournisseurs n'existent plus (Quartz Electronique de mon temps) il est clair qu'il faut choisir un oscillateur tout fait.
    Stan
     
  14. tronix

    tronix Compagnon

    Messages:
    542
    Inscrit:
    6 Mars 2012
    Génération signal basse fréquence pilotage horloge
    Chez les fournisseurs pros, il y a encore des quartz avec des fiches techniques.
    La plupart des composants nécessitant un quartz et ayant déjà les entrées pour réaliser l'oscillateur sans composant supplémentaire sont sur un schéma en oscillation sur le mode parallèle. Cas des RTC et des processeurs en particulier.
    Au prix des oscillateurs, quand on trouve la bonne fréquence, il ne faut pas hésiter. On est tranquille, pas de problème de démarrage d'oscillation, et fréquence plus précise de base.
    Il existe même peut-être des oscillateurs intégrés en 32,768kHz. A voir.

    Il suffisait de chercher !
    http://www.mouser.fr/ProductDetail/AVX/KR3225Y32768EAW30TAA/?qs=sGAEpiMZZMtpQ9m7utombAw2qVF3CF3w
    http://www.mouser.fr/ProductDetail/AVX/KC3215A32768C33AAE00/?qs=sGAEpiMZZMtpQ9m7utombMoBXdrfAD/u

    Il y en a d'autres. Le premier composant peut être une alternative intéressante au mouvement d'horloge pour les utilisateurs d'Arduino. C'est un module RTC tout intégré avec surtout un oscillateur très stable, ce qui n'est pas le cas des modules RTC classiques, pour les raisons déjà évoquées.
     
  15. tronix

    tronix Compagnon

    Messages:
    542
    Inscrit:
    6 Mars 2012
    Génération signal basse fréquence pilotage horloge
    Quelque chose m'avait semblé curieux dans l'initialisation du timer, et dans la valeur à programmer, ce n'était pas comme d'habitude. En effet, je m'étais trompé dans un registre et avait corrigé pour avoir le bon résultat (ne jamais faire comme cela...), mais ce n'était pas propre et surtout dépendait du nombre d'instructions dans l'interruption. En reprenant la doc et le code, j'ai trouvé le problème et tout corrigé. Cette fois, c'est carré, prévisible et cohérent, et le fichier est aussi compilable pour le minuscule PIC10 (il faut que je vérifie le fonctionnement, mais cela compile).
    Il faut aussi que j'achète un oscillateur plus stable, avant de passer un proto et quelques composants à JCS pour avoir son verdict :wink:
     

Partager cette page