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 (aujourd'hui racheté par Intel) n'est plus fabriqué, et que le MAX7064AE qui est compatible est devenu difficile à trouver et deviendra certainement obsolète).

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.

É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: 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: partie 220V, et 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.

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.

Le CPLD a plusieurs fils d'alimentation, certains pour le coeur (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), 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.

Montage terminé le 15 février 2005, page écrite le 22 février 2005.

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