Catégorie: "Général"
Nouvel automate à états finis
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 4911
Deprecated: Creation of dynamic property smilies_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property quicktags_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property archives_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property archives_plugin::$dbtable is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/plugins/_archives.plugin.php on line 54
Deprecated: Creation of dynamic property archives_plugin::$dbprefix is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/plugins/_archives.plugin.php on line 55
Deprecated: Creation of dynamic property archives_plugin::$dbIDname is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/plugins/_archives.plugin.php on line 56
Deprecated: Creation of dynamic property email_elements_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property financial_contribution_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property ping_b2evonet_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property ping_pingomatic_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property auto_p_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property texturize_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property nofollow_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property content_blocks_plugin::$classfile_path is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/plugins/model/_plugins.class.php on line 413
Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 11107
Deprecated: Creation of dynamic property Item::$pages is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 2412
Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/settings/model/_abstractsettings.class.php on line 121
Une nouvelle transition permet de rallumer la haute tension dans la phase d'extinction lorsque la basse tension est encore présente. Un nouvel état appelé « défaut ext » permet de maintenir le voyant « défaut » allumé en cas de défaillance du système lors de son extinction. Pour réinitialiser l'automate, il faut faire un va-et-vient du bouton marche/arrêt.
Fig. 1 : nouvel automate à états finis (la même en grand)
Les nouveaux tableaux de Karnaugh sont donc les suivants :
Q2 | Q1Q0 | |||
00 | 01 | 11 | 10 | |
1 | 1 | 1 | ||
1 | 1 | 1 |
Tab. 1 : variable basse tension (B)
B = (Q1+Q0)Q2+Q2Q1
Q2 | Q1Q0 | |||
00 | 01 | 11 | 10 | |
1 | ||||
1 | 1 |
Tab. 2 : variable haute tension (H)
H = Q2Q1Q0+Q2Q0Q1
Q2 | Q1Q0 | |||
00 | 01 | 11 | 10 | |
1 | ||||
1 | 1 | 1 | 1 |
Tab. 3 : reset compteur (R)
R = Q1Q0+Q2Q1
Q2 | Q1Q0 | |||
00 | 01 | 11 | 10 | |
1 | 1 | 1 |
Tab. 4 : défaut (E)
E=Q2Q1
Compte tenu des équations précédentes, la logique reliant les sorties Qi des trois bascules aux quatre sorties de l'automate est la suivante :
Fig. 2 : logique de sortie (la même chose en grand)
Transitions
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 4911
Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 11107
Deprecated: Creation of dynamic property Item::$pages is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 2412
Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/settings/model/_abstractsettings.class.php on line 121
Dans l'article précédent figurent les équations de sortie de l'automate. Ce nouvel article explicte les transitions permettant de passer d'un état à un autre. Les sorties Qi des bascules sont conformes à la notation déjà utilisée. Quant aux entrées Ji et Ki, elles correspondent aux bascules de sorties Qi. Les entrées auxiliaires sont notées :
- PBT : présence de toutes les tensions de chauffage ;
- PHT : présence de la haute tension ;
- C15 : compteur valant exactement 15 ;
- C255 : compteur valant exactement 255.
Entrées | Sorties | ||||||||||||
Q2 | Q1 | Q0 | I | PBT | PHT | C15 | C255 | J2 | K2 | J1 | K1 | J0 | K0 |
0 | 0 | 0 | X | X | X | X | 1 | 1 | 1 | ||||
0 | 0 | 0 | 1 | X | X | X | X | 0 | 1 | 1 | 1 | ||
0 | 1 | X | X | X | X | 0 | 1 | 1 | 1 | ||||
0 | 0 | 1 | 1 | X | X | X | 0 | 1 | 1 | 1 | |||
0 | 1 | 1 | X | 1 | X | 1 | 1 | 1 | |||||
0 | 0 | 1 | 1 | 1 | X | 1 | X | 0 | 1 | 1 | 1 | ||
0 | 1 | 0 | X | X | X | X | 0 | 1 | 1 | 1 | |||
0 | 1 | 0 | 1 | 0 | X | X | X | 1 | 1 | 1 | |||
0 | 1 | 0 | 1 | 1 | X | X | 0 | 0 | 1 | 1 | 1 | ||
1 | 1 | 1 | X | X | 1 | 1 | 1 | 1 | |||||
1 | 1 | X | X | X | X | 1 | 1 | 1 | |||||
1 | 1 | X | 1 | 1 | X | 1 | 1 | 1 | |||||
1 | 1 | X | 1 | X | X | 1 | 1 | 1 | |||||
1 | 1 | X | 1 | 1 | 1 | X | 1 | 1 | 1 | ||||
1 | 1 | 1 | X | X | 1 | 1 | 1 | ||||||
1 | 1 | 1 | X | X | 1 | 1 | 1 | ||||||
1 | 1 | X | X | 1 | 1 | 1 | |||||||
1 | 1 | 1 | 1 | X | X | 1 | 1 | 1 | |||||
1 | X | X | X | X | 1 | 1 | 1 | ||||||
1 | 1 | X | 1 | 0 | X | 0 | 1 | 1 | 1 | ||||
1 | 1 | X | 1 | X | 1 | 1 | 1 | 1 | |||||
1 | 1 | X | X | X | X | 1 | 1 | 1 | |||||
1 | 1 | X | 1 | 1 | X | X | 1 | 1 | 1 | ||||
1 | 1 | 1 | 1 | X | X | X | X | 1 | 1 | 1 | |||
1 | 1 | 1 | X | X | X | X | 1 | 1 | 1 |
Tab. 1 : transitions d'états
Les cases entourées de rouge sont celles correspondant à un défaut de fonctionnement indiqué comme tel. À noter : l'automate est conçu de telle sorte qu'une fois la procédure d'extinction lancée, les alimentations s'arrêtent totalement. Il est envisageable d'ajouter une transition supplémentaire pour éviter l'extiction en cas de réenclenchement du bouton marche/arrêt.
De la même manière, un défaut lors de la phase d'extinction provoque un passage par l'état 111 qui n'est pas maintenu car I vaut zéro. Il est possible d'ajouter un état 110 correspondant à un défaut durant la procédure d'extinction.
Ces deux améliorations feront l'objeet d'un prochain article.
Équations des sorties
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 4911
Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 11107
Deprecated: Creation of dynamic property Item::$pages is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 2412
Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/settings/model/_abstractsettings.class.php on line 121
En considérant que les états interne de l'automate sont écrits sous la forme Q2Q1Q0 (cf. tab. 1 de l'article Machine de Moore), les variables de sorties vérifient les tableaux de Karnaugh et les équations suivants. Une variable barrée signifie une inversion de sa valeur logique.
Q2 | Q1Q0 | |||
00 | 01 | 11 | 10 | |
1 | 1 | 1 | ||
1 | 1 | 1 | X |
Tab. 1 : variable basse tension (B)
B = (Q1+Q0)Q2+Q2Q1
Q2 | Q1Q0 | |||
00 | 01 | 11 | 10 | |
1 | ||||
1 | 1 | X |
Tab. 2 : variable haute tension (H)
H = Q2Q1Q0+Q2Q0
Q2 | Q1Q0 | |||
00 | 01 | 11 | 10 | |
1 | ||||
1 | 1 | 1 | X |
Tab. 3 : reset compteur (R)
R = Q1Q0+Q2Q1
Q2 | Q1Q0 | |||
00 | 01 | 11 | 10 | |
1 | 1 | X |
Tab. 4 : défaut (E)
E=Q2Q1Q0
Compte tenu des équations précédentes, la logique reliant les sorties Qi des trois bascules aux quatre sorties de l'automate est la suivante :
Fig. 1 : logique de sortie (la même chose en plus grand)
À noter : les trois inverseurs présents sur le schéma ne sont pas nécessaires car la plupart des bascules possèdent une sortie inverseuse et une sortie non inverseuse. Je n'ai pas présenté non plus les verrous de sortie permettant de s'affranchir des états transitoires.
Machine de Moore
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 4911
Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 11107
Deprecated: Creation of dynamic property Item::$pages is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 2412
Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/settings/model/_abstractsettings.class.php on line 121
Je réchigne à utiliser un microprocesseur ou un microcontrôleur pour surveiller quelque chose d'aussi simple qu'une alimentation, fût-elle une alimentation avec temporisation d'un amplificateur utilisant des tubes électroniques.
À bien regarder, l'automate — ici, une machine de Moore synchrone avec une horloge à 4 Hz — comporte six états :
- repos : toutes les alimentations sont éteintes ;
- allumage : les basses tensions de chauffage montent progressivement (quatre secondes de temps de montée pour éviter les pics de courant dans les filaments de chauffage) ;
- chauffage : maintien des basses tensions de chauffage durant soixante secondes (les soixante secondes sont suffisantes, j'ai testé les émissions des cathodes des différents tubes au lampemètre et il y a une bonne marge) ;
- haute tension : allumage progressif de la haute tension (quatre secondes là encore) avec polarisation automatique des tensions de chauffage ;
- maintien : basse et haute tensions présentes, amplificateur en fonctionnement nominal ;
- extinction : la haute tension est coupée mais le chauffage des tubes reste encore actif soixante-quatre secondes ;
- défaut : une tension (chauffage ou haute tension) est en défaut et les deux alimentations sont coupées.
Sur le diagramme d'états suivant, les états sur les transitions indiquent les variables d'entrée dans l'ordre suivant :
- position de l'interrupteur général (1 : marche, 0 : arrêt) ;
- présence de la basse tension de chauffage (1 : présence, 0 : absence) ;
- présence de la haute tension (1 : présence, 0 : absence) ;
- compteur de cycles valant 15 (1 : compteur valant 15, 0 : compteur différent de 15) ;
- compteur de cycles valant 255 (1 : compteur valant 255, 0 : compteur différent de 255).
Les quatre variables de sortie sont dans l'ordre :
- commande de la basse tension ;
- commande de la haute tension ;
- maintien du compteur de cycles à zéro ;
- défaut.
Le compteur de cycles est un simple compteur 8 bits déjà étudié dans un article précédent.
Fig. 1 : automate de gestion de l'alimentation (le même en grand)
L'automate comportant sept états, il requiert trois bascules. Le lien entre les sorties de ces bascules et les variables de sortie vérifie la table de vérité suivante :
États | Basse tension | Haute tension | Reset compteur | Défaut |
000 | 1 | |||
001 | 1 | |||
010 | 1 | |||
011 | 1 | 1 | ||
100 | 1 | 1 | 1 | |
101 | 1 | |||
110 | X | X | X | X |
111 | 1 | 1 |
Tab. 1 : table de vérité des sorties en fonction des états internes
Pour éviter les rebonds sur les sorties, des verrous synchrones seront utilisés derrière la logique combinatoire. L'automate fonctionnant sur fronts descendants de l'horloge, cette logique combinatoire utilisera les fronts montants.
Gestion des alimentations
Deprecated: Creation of dynamic property Item::$cache_has_content_parts is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 4911
Deprecated: Creation of dynamic property Item::$renderers_validated is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 11107
Deprecated: Creation of dynamic property Item::$pages is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/items/model/_item.class.php on line 2412
Deprecated: Creation of dynamic property ItemSettings::$count_col_key_names is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/settings/model/_abstractsettings.class.php on line 121
Ce n'est pas parce que je n'ai plus rien écrit ici depuis quelque temps que je ne réfléchissais pas aux différents aspects du projet. En particulier, j'étudie un système de gestion des alimentations permettant d'une part de respecter le temps nécessaire à l'établissement de la charge d'espace des tubes mais aussi de décharger totalement la haute tension avant de couper le chauffage. Si en plus le système pouvait s'arranger pour charger lentement les capacités de filtrage de la haute tension, ce serait vraiment bien.
Plusieurs techniques s'offrent à moi. La première et la plus triviale est d'installer un bouton commandant de manière séparée le chauffage et la présence de la haute tension. J'aimerais éviter, préférant à une commande manuelle un système automatique.
Pour automatiser ce système, il m'est possible d'utiliser :
- un microcontrôleur ;
- un système complexe de monostables avec verrouillages de contacts et autres joyeusetés ;
- un automate séquentiel.
Le système à base de monostables peut être une solution, mais ce système présente l'inconvénient de ne pouvoir contrôler le bon fonctionnement de l'alimentation. Il se contente d'allumer ou d'éteindre les différentes parties de l'alimentation selon un ordre préétabli.
Pour rien au monde, je ne veux un microprocesseur dans un tel environnement. Un simple problème dans le programme peut aboutir à la destruction d'un tube. Le seul moyen d'éviter cela serait de prouver au sens mathématique le fonctionnement du programme en question et de garantir la fiabilité du processeur, chose difficile dans l'environnement d'un amplificateur à tube.
Reste donc l'automate séquentiel, le circuit à base de bascules et de logique combinatoire. Le cahier des charges est relativement simple. Il s'agit de faire apparaître séquentiellement lors de l'allumage la tension de chauffage puis la haute tension après un délai d'une minute. L'opération inverse doit se faire lors de l'extinction. À tout moment, cet automate doit vérifier la présence de toutes les tensions de chauffage et de la haute tension et mettre l'amplificateur en sécurité au moindre problème. Par ailleurs, l'horloge doit être hors du spectre audible. Pour des raisons de commodité, cette horloge sera de 4 Hz. Avec un compteur de huit bits, le délai maximal d'attente sur un état sera de 64 s.
Il y a juste un problème. Cela fait vingt ans que je n'ai plus conçu d'automates programmables et je puis vous assurer que ce n'est pas comme le vélo. La conception de ces circuits se rouille et je suis actuellement en phase de dérouillage lent sur la conception d'un compteur synchrone de huit bits avec commande de remise à zéro synchrone. Cela peut prêter à sourire tant cela peut paraître trivial à ceux qui utilisent quotidiennement des outils comme le VHDL, mais pour moi qui vais faire cela à l'ancienne avec des composants discrets, c'est une tout autre paire de manches.
Deprecated: preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/_core/_param.funcs.php on line 2201
Deprecated: preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/_core/_param.funcs.php on line 2201
Deprecated: preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/_core/_param.funcs.php on line 2201
Deprecated: preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/_core/_param.funcs.php on line 2201
Deprecated: preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /export/home/bertrand/web/blog/b2evolution/blogs/inc/_core/_param.funcs.php on line 2201
<< 1 2 3 4 5 >>