Un minuteur pour grille-pain


De qu'es aco?

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 avantageusement 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.

É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: j'ai acheté des transistors donc l'émetteur et le collecteur sont inversés par rapport à ce qui est indiqué sur la datasheet. J'ignore d'où vient la ruse, mais voilà: j'ai quelques transistors (notés "PH2222" et "PH2907" au lieu de "2N2222" et "2N2907") qui sont inversés, d'où les petites flèches sur le schéma. Si quelqu'un peut m'expliquer pourquoi, qui ne se gêne pas pour m'instruire!

Programmation du CPLD

La solution "normale" consiste à acheter le câble "ByteBlaster" chez Altera. 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.

Faute d'acheter le câble spécial, un bricoleur moyen saura utiliser deux buffers 74HC244 pour fabriquer lui-même, pour presque rien, un câble qui marchera aussi bien que le câble dédié, du moins lorsque le circuit à programmer fonctionne en 3.3V comme c'est le cas ici. Il faut s'inspirer du schéma qu'Altera a publié dans le manuel du câble ByteBlaster-II, et dont j'ai recopié les 3 pages intéressantes ici. Altera est assez "minable" pour avoir retiré ce schéma de la version suivante du câble, à savoir le ByteBlaster-MV, qui a l'avantage de fonctionner avec une plus large gamme de tensions (inutile ici).

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: