Drapeau
              palestinienNon au génocide des Palestiniens et des Libanais par Israël!
L'État d'Israël ne représente pas les juifs du monde entier, qui sont les citoyens de leur propre pays et non d'un “peuple juif”, et ne sont pas coupables des crimes et de l'apartheid commis par ce gouvernement nazi.

Un minuteur pour grille-pain


Description

Un ami, collectionneur d'objets anciens et étranges, avait un vieux grille-pain sans arrêt automatique, qu'il oubliait toujours d'arrêter à temps, récupérant donc des blocs de charbons à la place des tartines. Je le taquinais là-dessus, lui promettant de lui fabriquer une minuterie moderne et électronique, solution à laquelle il était assez réticent. Finalement, il a accepté l'idée, à une condition: que pour faire contre-poids au grille-pain antique, la minuterie paraisse issue d'un film de science-fiction.

J'ai relevé le défi, et voici le résultat, on dirait vraiment que ça va exploser (comme dans un film de suspense):



Voici les caractéristiques de l'engin:

Le système est basé sur un CPLD (composant de logique programmable), qui remplace ici un microcontrôleur. C'est même pour cette raison que je mets le schéma sur internet: peu d'amateurs bricolent les CPLD et les FPGA, alors que beaucoup mettent des microcontrôleurs à tort et à travers, je voudrais leur donner l'envie de se mettre à la logique programmable. Même si, en réalité, pour un tel circuit il est nettement plus simple d'utiliser un microcontrôleur (par exemple un STM32 par exemple sur une carte Blue Pill, un Atmel sur une carte Arduino, ou un PIC de chez Microchip).

Avertissement: J'ai créé cette page pour quiconque sera intéressé, mais sachez que la réalisation du circuit nécessite quelques connaissances en électronique, et que le composant de logique programmable (un CPLD) que j'ai utilisé, le MAX3064A de chez Altera (ensuite filiale d'Intel) a eu une longévité remarquable mais a fini par être arrêté, de même que le MAX7064AE (alternative compatible, fabriqué en gravure plus fine). Le 5M80Z de la famille MAX V d'Intel conviendrait, mais un particulier aura du mal à l'acheter à l'unité, et les boîtiers minuscules rendent la fabrication très compliquée.

Il s'agit donc plutôt d'un exercice de style destiné à faire connaître cette technologie: la logique programmable est indispensable dans beaucoup de cas, par exemple pour des systèmes d'acquisition très rapides, mais pour un simple minuteur il est plus simple d'utiliser un microcontrôleur.

Vous trouverez en-bas de cette page d'autres raisons, notamment de sécurité électrique, pour lesquelles vous ne devriez pas vous lancer dans la réalisation de ce montage.

Étapes de la réalisation

Code VHDL

Parlez-vous le VHDL? Ce langage à la syntaxe tordue ressemble à des langages informatiques (ADA en particulier, paraît-il). Méfiez-vous des apparences, il s'agit ici d'un langage qui décrit un montage électronique, et pas du tout d'un programme exécuté par un ordinateur. En bref: chaque ligne de code correspond à des portes logiques qui seront créées dans un circuit intégré.

Voici le code VHDL: coupatan.vhd (on peut le lire avec n'importe quel éditeur de fichiers texte). Et en voici son principe de fonctionnement:
Le VHDL est un langage très déconcertant, en particulier pour les informaticiens (moins mais quand même pas mal pour les électroniciens). À mon avis, il est très difficile de l'apprendre par internet, mieux vaut acheter un livre bien pédagogique sur le sujet.

Compilation du code VHDL

La compilation dépend du composant visé. J'ai choisi un petit CPLD de chez Altera, de la famille MAX3000A, à 64 éléments logiques, en boîtier PLCC44: ça donne la référence EPM3064ALC44, qui est disponible à l'épicier du coin (6 euros chez Electronique Diffusion: c'est cher pour ce que c'est, mais on est bien content qu'ils aient ça en stock).

Pour compiler le code, il faut donc utiliser le compilateur de chez Altera. On peut utiliser soit l'ancienne version (MaxPlus-II), soit la nouvelle (Quartus-II). Mais en fait, seul Quartus-II est assez efficace pour faire rentrer tout le code dans le composant choisi et en respectant le brochage demandé, donc utilisez Quartus-II.

Quartus-II est disponible gratuitement (en version "Web edition") sur le site www.altera.com, attention c'est énorme (196 Mo), ça ne fonctionne que sous Windows NT/2000/XP (les versions Unix sont payantes), et il faut demander une licence valable 6 mois (gratuite et renouvelable à l'infini). Et Quartus-II n'est pas un modèle de convivialité, bien au contraire!!!

Il faut aussi indiquer sur quelles pattes du composant on veut faire arriver les différentes entrées/sorties.
Au final, on récupère 2 choses:

Fabrication du circuit

Voici les schémas (cliquez pour voir en grand, puis revenez à cette page):

partie 220V:

partie logique:

Rien de bien particulier, si ce n'est qu'il faut travailler proprement sur la partie en 220V, car sinon c'est dangereux. Veillez à avoir au moins 8 mm d'espacement entre les parties sous tension secteur et les parties sous basse tension.

Cette partie-là nous interrompt dans la mise en ouvre du CPLD. Oui, mais si on n'avait pas d'abord compilé le code VHDL, on aurait couru le risque de ne pas utiliser le bon circuit. Et si on ne construit pas au moins une partie du circuit, on n'a aucune chance d'arriver à programmer le CPLD. Donc voilà!

Il y a deux parties:

Au milieu de la partie logique, le CPLD. Il est monté sur support, car pour bricoler c'est plus facile. À cette époque, il existait, pour ce type de boîtiers (PLCC), des supports bien adaptés aux plaques d'expérimentations à trous, grâce à des broches au pas de 2.54 mm, alors que la plupart des supports PLCC sont soit inutilisables par les bricoleurs (car à soudures CMS situées sous le support et donc inaccessibles), soit avec des broches disposées en quinconce et qui ne s'adaptent pas facilement aux plaques d'expérimentation.

Le CPLD a plusieurs fils d'alimentation, certains pour le cœur (VCCINT), certains pour les sorties (VCCIO): ici tout est en 3.3V, donc tout est relié, mais il ne faut pas négliger de mettre un petit condensateur de 100nF sur chaque alimentation.

Quatre fils vont du CPLD à un petit connecteur marqué "JTAG": c'est par là qu'on va programmer le CPLD, sans avoir à le retirer du montage.

On note le quartz 32768 Hz (récupéré dans une vieille montre) qui cadence tout le système.

À noter aussi: les mêmes fils servent à balayer les colonnes du clavier et à commander l'allumage successif des 3 afficheurs.

Petite vacherie: les transistors que j'ai utilisés, marqués PH2222 et PH2907 (compatibles avec les références stnadard 2N2222 et 2N2907), ne sont pas dans le boîtier habituel TO-92 mais dans le boîtier TO-92S qui est plus plat. Or le côté plat le plus large du TO-92S est du côté opposé au côté plat du TO-92. Si on n'y prend pas garde, on se retrouve donc à inverser les broches 1 et 3 (c'est-à-dire, pour ces deux transistors, l'émetteur et le collecteur). Ceci vous explique pourquoi j'ai indiqué l'annotation «inversé?» sur le schéma, comme je n'avais pas compris ce détail.



Boîtier TO-92 (à gauche) et boîtier TO-92S (à droite), vus de dessous (source: document Texas Instruments)

Programmation du CPLD

La solution "normale" consiste à acheter le câble "ByteBlaster" chez Altera/Intel. On le branche d'un côté au port parallèle du PC, de l'autre au connecteur JTAG à 10 points qui est sur le montage. Puis on lance Quartus-II (ou MaxPlus-II, ou aujourd'hui Quartus Prime Lite), on lui signale qu'on a une chaîne JTAG contenant un unique composant (un EPM3064ALC44) et qu'on veut le programmer avec le fichier "coupatan.pof".

Petit détail technique: c'est le CPLD lui-même qui décide qu'il faut laisser le montage allumé, donc avant qu'il soit programmé cela ne peut pas fonctionner. C'est pour cela qu'il y a un cavalier nommé "marche forcée" sur la partie 220V: mettez ce cavalier, branchez le courant, appuyez sur le bouton poussoir: ça s'allume, pour ne s'éteindre que lorsqu'on retirera la prise. Ceci permet d'effectuer la programmation, une fois que c'est fini (et débranché du secteur!), on peut retirer le cavalier.

Concernant le câble de programmation:

Fabrication du boîtier et montage

Là, à chacun de se débrouiller. Les critères à respecter sont:
Ma solution:

Conclusion

Apprenez le VHDL et jouez avec des composants de logique programmable. C'est un monde que vous ne soupçonnez pas si vous ne connaissez que les microcontrôleurs!

Je vous pardonne d'avance si vous trouvez qu'il est stupide de faire un tel montage pour une minuterie de grille-pain.

Pourquoi ne pas réaliser ce montage

La sécurité électrique

Le grille-pain cité ici est dangereux pour deux raisons:

Le coût

La consommation de l'afficheur à LED, et de la bobine du relais puissant et à coupure bipolaire, impose une alimentation basse tension relativement puissante, réalisée ici avec un transformateur et un redresseur. C'est un coût non négligeable, qu'on pourrait aujourd'hui réduire en utilisant une alimentation à découpage (type chargeur de smartphone). Ceci, et le coût des autres composants, n'est peut-être pas justifié pour ce montage. Chacun jugera.

L'utilisation de la logique programmable

Comme déjà indiqué, utiliser un CPLD (circuit de logique programmable) et le langage VHDL pour ce montage relève un peu d'un exercice de style.
À l'époque où il a été fait, c'était atypique mais pas absurde: le CPLD ne coûtait même pas plus cher qu'un microcontrôleur, et il pouvait être programmé avec des outils gratuits (quoique propriétaires) tandis que les microcontrôleurs nécessitaient des outils très coûteux (il y avait des outils gratuits pour les PIC, mais ils étaient très médiocres et imposaient de programmer en assembleur).

Aujourd'hui tout a changé: les microcontrôleurs coûtent très peu cher (par exemple les STM32 les moins chers, ou la carte BluePill basée sur le STM32F103 ou ses clones, ou encore les PIC, ou les Atmel AVR utilisés dans les premières cartes Arduino), tandis que les CPLD et FPGA sont un peu plus chers et beaucoup moins faciles à acheter à l'unité, car dédiés à des applications un peu spécifiques, par exemple acquisition très rapide de données, traitement vidéo en temps réel, ou connexion d'un grand nombre d'entrées-sorties. La plupart des fabricants de microcontrôleurs proposent des outils de développement performants et gratuits (et parfois libres), et des câbles peu coûteux (moins de 10€ pour un câble ST-Link avec interface SWD). Les outils de développement pour les CPLD sont propriétaires, généralement gratuits pour les modèles basiques mais souvent avec des licences précaires (autorisation pendant 1 an sans garantie pour l'avenir), encore que Altera est plutôt correct sur ce plan, et les câbles coûtent souvent dans les 100€. Enfin, le secteur des petits CPLD est peu concurrentiel (les entreprises Intel, AMD et Microchip contrôlent presque l'ensemble du marché), contrairement à celui des petits microcontrôleurs.

Le montage est également devenu plus complexe: les CPLD et FPGA modernes utilisent une tension très basse en interne (1.8V, 1.2V, voire moins): ceci demande des composants supplémentaires, et demande de grandes précautions pour garantir une stabilité suffisante (compatibilité électromagnétique = CEM). Même les entrées-sorties fonctionnent en basse tension: le 3.3V est parfois autorisé, mais souvent déconseillé sous peine de réduire l'espérance de vie du circuit, et là aussi il y a des précautions à prendre. Tandis que les CPU peuvent généralement être alimentés en 3.3V, et générer eux-mêmes la tension interne dont ils ont éventuellement besoin.

Enfin, ce qui n'a pas changé depuis la création de ce montage, c'est qu'il est difficile pour un bricoleur d'apprendre tout seul le principe de fonctionnement d'un CPLD ou d'un FPGA, le langage VHDL qui permet de les configurer, et les outils de débogage (essentiellement par simulation VHDL). Un bricoleur trouvera beaucoup plus facilement des informations compréhensibles sur la programmation d'un microcontrôleur, sur le langage C, et sur l'utilisation d'un débogueur (même si, étrangement, beaucoup de bricoleurs ne semblent pas en comprendre l'utilité).

Toutefois, il y a toujours des personnes qui ont besoin d'apprendre à utiliser la logique programmable, et d'apprendre le VHDL. Si ces personnes trouvent un intérêt à regarder ce montage, cette page aura rempli tous ses objectifs.


Montage terminé le 15 février 2005, page écrite le 22 février 2005, notes finales ajoutées le 5 octobre 2025.

Fait à l'aide du programme prehtml - Hébergement et statistiques: