« MOTRONIC »… En voilà un nom cher aux BMistes (sic) et PORSCHistes (sic) !
Ahhh cette fin des années ’70 qui subjuguait toute une population de boomers par le vocabulaire tout puissant de l’électronique : CASIOTRON, ELECTRONIC, MEGATRON…
Un vocabulaire assumé pour un « ordinateur » assumé et embarqué dans une automobile. Croyez-moi, la fin de ces années a vu se battre aux coudes à coudes du silicium gravé « à la truelle » (les disciples de TSMC comprendront) sous les doux noms de 6502, Z80, 8086, l’embryonnaire 68000 et je vous épargne les RISCs oubliés et DSPs militaires ! L’ordinateur était donc une science nouvelle, encore incomprise mais indispensable dans une époque progressiste. Le microprocesseur, cœur de cette nouvelle église du numérique, se glissait jusque sous les jupes de nos automobiles après s’être adjugé une place légitime sur nos bureaux !
Mais, voyons, pourquoi parler d’informatique et d’automobile dans mon innocente rubrique électronique ? Quelle attirance peut avoir la panne d’un fer à souder envers le PCB d’un calculateur moteur ? (J’en vois, au fond, avec des sous-entendus… le sourcil qui vacille… le grognement du pré-rire (sic)…)
… Sérieusement et vous allez voir que ça l’est !
Le BOSCH® MOTRONIC™ est un calculateur moteur, ou, dans un jargon anglophone immuable, un ECU (Electronic Control Unit) entièrement numérique ET cartographié.
J’entends par « numérique » un vrai micro-ordinateur embarqué d’architecture empirique (à notre époque d’obésité digitale) MCU, ROM et convertisseurs.
J’entends, aussi, par « cartographié », équipé d’une mémoire ROM contenant des tables et coefficients établies par le motoriste, sur banc d’essai.
Pourquoi « entièrement numérique » ?
Prenons le temps de nous retourner sur un passé fougueux pour comprendre l’importance de cette subtilité technologique.
… Et pour ceux qui traînent des pieds quand on enfile les pantoufles du passé, ne grognez pas sur l’Histoire !
Le passé est du présent en retard, disait Pierre Dac.
Le JETRONIC™ de BOSCH® était déjà bien assis, au milieu de la décennie qui enfantera son grand frère dont il est question ici. Il composait des systèmes d’injection soit mécaniques (K-JETRONIC™), soit analogiques (L-JETRONIC™, D-JETRONIC™ pour l’épicentre).
Nous nous arrêterons sur ces derniers, ou plutôt sur celui que certains connaissent peut-être déjà sans oser le crier de pleine voix : le L-JECTRONIC™ qui évoluera en LE2 sur notre trésor national qu’est la Peugeot 205 GTI.
Oui, oui … Le JETRONIC™ de la 205 !
Cette petite boite en aluminium (le calculateur de nos précieuses GTI Sochaliennes), composée fièrement d’un PCB, d’une poignée de condensateurs polyester, de résistances carbone et de timides AOP(s) est un ordinateur rudimentaire analogique !
Pour faire simple, les modifications des paramètres d’injection, sur ce type de calculateurs, s’effectuent par des opérations d’ordre chirurgical plutôt que des opérations de reprogrammation logicielle, comme il se devrait d’être par praticité.
Chaque évolution mécanique (efficience volumétrique par exemple) engendre des valeurs de filtres R/C repensées (valeurs de résistances, condensateurs) voire des capteurs externes modifiés (débitmètre) : le soudage/dé-soudage de composants devient inévitable et les résultats ne sont pas forcément concluants.
On en reparle pour la simplicité ?
Et pour notre surdoué, le calculateur numérique, celui-ci se modifie logiciellement avec une reprogrammation de la mémoire de masse (ROM ou plutôt EPROM dans le cas du MOTRONIC™). L’évolution des réglages se fait donc par mise à jour logicielle.
Voyons-nous là : une méthode bien plus simple et élégante pour régler un moteur thermique !
Programmer un moteur, nom de Zeus (J’ai espoir qu’un propriétaire de DeLorean me lise)… Les ingénieurs envahissent nos capots. Un vocabulaire nouveau brise la monotonie des ateliers comme Uart, Mise à jour (MAJ pardon, pour la nouvelle génération de joueurs sous caféine), Offset, CRC et bien d’autres… Le carburateur à cuve constante est sur la corde raide : il sent la potence que dresse l’injection cartographique pour sa mise à mort…
Et… Pourquoi ne pas avoir plusieurs logiciels accessibles sur un même calculateur pour disposer de plusieurs réglages moteur dans l’optique d’enfoncer le clou ?
On arrive enfin (!) au besoin même de ce projet, qui est d’avoir un ordinateur avec plusieurs réglages possibles : un luxe normalement réservé aux voitures de compétition !
je vais maintenant, par simplicité, appeler l’ordinateur/calculateur moteur « ECU », et le logiciel, la « cartographie ».

Après cette mise en jambe historique, attardons-nous brièvement sur le contexte matériel du projet :
L’ECU (nous y voilà) est celui d’un de mes véhicules, à savoir un MOTRONIC™ MA3.0 (aussi appelé MONO-MOTRONIC dans certaines études).
Mais pour les plus curieux, quel véhicule est équipé de cet ECU, me diriez-vous par bon sens ?
Eh bien, une modeste et valeureuse petite Citroën AX, fortement kilométrée, de la triplette PSA.
… Vous savez, cette triplette de la fin des années ’80 partageant la même plateforme et les mêmes aspirations ! Une destinée visant à offrir pour le peuple un véhicule à la fois abordable et performant (dans les standards de l’époque, bien évidemment… Une époque sucrée, un cocon… Je m’égare).
Pour les nouveaux-nés, la triplette en question est bien sûr la 106, la SAXO et leur matriarche l’AX (que l’on ne me parle pas de Mega CLUB/RANCH pour les pénibles… voir de Proton TIARA pour les globe-trotter(s)… Wikipédia est votre amie).
L’ECU de cette petite puce pilote une injection monopoint avec injecteur basse impédance, allumage statique à double bobine (jumostatique), sonde à oxygène, capteur d’angle de charge et capteur d’angle de vilebrequin avec cible sur volant moteur.
Toujours notre brave chef d’orchestre, il œuvre en angle de papillon (Alpha-N dans le jargon) et boucle fermée (hors pleine charge).
Il n’y a pas de capteur de pression absolue (MAP), ce qui est une chose rare dans le petit monde des injections électroniques numériques.
Nous sommes donc là, en présence d’un système simple, éprouvé, et étonnamment souple pour le peu de capteurs dont il dispose.
Les 400 000 km de ma monture lui permettent de s’autoproclamer « éprouvé(e) » (pas de moquerie, je vous vois…)!
Je ne vais pas plus m’attarder sur le fonctionnement complet du MA3.0 car ce billet se transformerait en récit biblique long et indigeste pour certains, donc poursuivons.

Toujours dans l’optique de dérouler un contexte qui justifiera la naissance de ce projet, parlons bien, parlons carburant.
Dans votre périple habituel pour trouver le grain de votre monture à quatre roues, avez-vous déjà remarqué ces pompes bleues siglées E85 qui tranchent avec le rouge et le vert de nos pompes habituelles (j’oublie volontairement le jaune ici) ?
Ceux qui osent me parler d’AdBLUE seront châtiés (!). Gare à vous, démons du Diésel : vos vannes et échangeurs d’EGR se boucheront, vos vilebrequins flancheront, vos injecteurs fuiront, vos chaînes casseront. Laissez les carburants légers chanter leur douce mélodie et apporter leur couple modéré.
Laissez ces agneaux sauter à vive allure en respirant cet air pur.
Hum, hum…
Moi qui parlais de biblique !
Plus sérieusement, l’éthanol est un carburant dit « Bio » car produit à partir de matériaux organiques non fossiles.
Adieu les chaînes carbonées qui sortent des raffineries ; place au travail d’orfèvre des levures qui brodent de jolis couples hydroxyles sur le carbone précieux des betteraves. La fermentation au travail de l’Homme !
Mais alors, pourquoi ce carburant ?
Dans la réalité, beaucoup de raisons valables et d’autres discutables : l’épuisement du pétrole, le transport de celui-ci, le prix …
Je m’arrêterai sur cette dernière (raison), si vous le voulez bien, car plus d’un euro d’écart sépare le litre de SP98 du litre d’E85, au moment où j’écris ces quelques lignes.
Je ne m’étalerai pas sur les différences techniques de ces deux carburants pour ne pas, encore une fois, déborder. Elles sont nombreuses et sujettes à une réflexion approfondie.
Les grandes lignes sont, pour les plus curieux :
- Pouvoir calorifique volumique (~1/3 plus faible pour l’E85)
- Enthalpie d’évaporation (E85>SP98, moteur plus « froid » à l’E85)
- Émissions de vapeurs d’eau (E85>>>SP98, oxydation, condensation, « mayonnaise »)
- Dilution de l’huile (E85>SP98), évolution de la viscosité
- Stœchiométrie
- Indice d’octane (E85>SP98)
- …
Dans l’idée de faire rouler ma vénérable ancêtre à l’E85, il va de soi que le moteur nécessitait des réglages spécifiques comme la richesse du mélange carburé et l’avance à l’allumage commandé.
La stœchiométrie de l’éthanol est bien différente de l’essence ordinaire. La vitesse du front de flamme est, elle aussi, divergente entre ces deux carburants. Il faut donc ajuster les temps d’injection et les courbes d’avance pour avoir la combustion la plus complète et la plus efficiente (une efficience qui, soit dit au passage, pourrait interroger les plus assidus d’entre vous sur la pertinence de ces petits boitiers additionnels qui, pour la plupart d’entre eux, ignorent tout bonnement l’avance à l’allumage. Je dis ça, je ne dis rien… ).
L’E85 a un pouvoir calorifique faible et n’est pas « friand » des climats froids : les démarrages deviennent difficiles dès que le thermomètre s’incline sous la dizaine de degrés (… point éclair haut, carburant qui condense).

Après avoir exploré les tréfonds du monde passionnant des hydrocarbures (sans y trouver d’or noir d’ailleurs!)… après avoir épluché mon précis de chimie (trop) rarement ouvert… après avoir procrastiné sur des obstacles adulés comme infranchissables… J’ai pu, enfin, sauter le pas pour exhumer mon logiciel moteur d’édition de cartographies et faire un binaire digne de ce nom.
La renaissance de mon 954 cc à l’E85 (!)
Qui va doucement va sûrement, nous rappelle le proverbe…
La tâche ne fut pas si simple, en partie due au fait que l’injecteur de ce moteur est particulièrement limité pour un enrichissement massif. La modification de la pression d’injection me fut inévitable pour gagner quelques précieux centimètres cubes minute de débit (une simple rondelle de 10/10 adjointe au régulateur embarqué remplit cette tâche). Mes tables d’injection (fuel maps) évoluaient dangereusement vers la valeur maximale de leur octet (0xFF, 255).
… Après des litres d’alcool consommés par ma mamie trentenaire, j’eus enfin sous le coude une cartographie nouvelle, propre à ce carburant magique, ne demandant qu’à se blottir en catimini avec une cartographie d’origine au véhicule.
…
Êtes-vous toujours là ? Curieux, assidus ?
Je vous sens fatigués par les vapeurs d’alcool, cette odeur si caractéristique que les préparateurs vénèrent !
Nous allons donc engager sur de l’électronique (théorique), enfin !


Commençons par décortiquer sommairement l’ECU MA3.0 qui nous concerne (j’insiste sur sommairement car BOSCH®, déjà à l’époque, peuplait ses créations électroniques de composants dits « customs » difficilement identifiables : pour la plupart des PIO(s) ou ADC(s) …) :
Ainsi, historiquement, la famille MOTRONIC™ (jusqu’au milieu des années ’90) était architecturée autour de la bien connue famille MCS-51 du géant Intel® : une famille de microcontrôleurs implémentée soit sous forme originale avec un véritable i8051 en boîtier DIP40, soit sous forme dérivée avec un composant sous licence.
Dans le cas du MA3.0, notre microcontrôleur chef d’orchestre est un Siemens® SAB80C515 en boîtier PLCC68.
Ses particularités sont les suivantes :
- MCU 8 bits avec registres 16 bits
- x6 Ports parallèle 8 bits
- ROM Interne de 8 Ko (nous verrons, plus loin, la subtilité de cette ROM interne …)
- RAM Interne de 256 Octets
- ROM externe possible jusqu’à 64 Ko
- Bus de donnée 8 bits (x1 Port)
- Bus d’adresse 16 bits (x2 Ports)
- x1 Port parallèle versatile 8 bits (analogique ou numérique)
- Port série …
Jusque-là, rien d’original : des caractéristiques empiriques qui ne viendront pas bousculer les foules avec de la liaison différentielle haut débit, du « sans fil » dans la bande UHF, de la programmation in-situ (ISP) ou encore de la mémoire FLASH.
Mais voyons : comment puis-je qualifier cette solution d’« empirique » en un claquement de doigts !
Assurément, celle-ci est désuète de nos jours, mais, pour rappel, en 1980 (… la date, pas la décennie), avoir un ordinateur personnel était un luxe. Une telle machinerie embarquée dans un boîtier céramique relevait, toujours, de la science-fiction (« toujours » car l’expérience avait été tentée précédemment avec la famille MCS-48) : on savait faire de l’informatique numérique, certes, mais la miniaturisation et l’intégration n’étaient pas encore une doctrine consensuelle de production.
…
Je m’égare encore sur l’histoire, coupable !
Poursuivons sur les composants du MA3.0.
Tout système informatique à microprocesseur nécessite un logiciel pour pouvoir opérer.
Le logiciel peut être enregistré sur un support modifiable ou figé selon le cas.
Pour ce qui est du microcontrôleur Siemens® qui trône dans notre ECU, celui-ci embarque une mémoire ROM dite « morte » car non modifiable et accède, aussi, à une mémoire identique externe en complément de son interne : l’ensemble forme la fenêtre mémoire principale du microcontrôleur ; les deux ROM(s) étant vues l’une à la suite de l’autre dans le plan d’adressage.
… Je m’efforcerai de faire un billet « glossaire » pour celles et ceux qui n’ont pas forcément les codes vestimentaires du langage informatique ainsi que tout l’humus de ses poncifs !
La ROM interne est programmée par le client acquéreur du microcontrôleur vierge dans la plupart des cas.
Dans le cas du 80C515 propre au MOTRONIC™, je ne pense pas que celui-ci soit une version « cliente » classique avec ROM interne de type OTP (fusible) programmable via le matériel adéquat : je pense que sa programmation se faisait par masque usine, après validation du logiciel, dans l’optique de favoriser une production simplifiée des composants.
Nous pouvons donc nous arrêter là pour la structure de notre ECU. Nous avons le nécessaire pour poursuivre :
- MCU de type 80c51
- ROM Interne de 8 Ko
- ROM Externe de 32 Ko
- ROM réelle vue par le MCU de 40 Ko (interne + externe … Mais nous verrons, qu’il y a encore une subtilité en fonction de l’ECU …)
Il faut noter, en aparté, qu’un éventuel calcul de somme de contrôle (checksum) devra se faire sur la totalité de la ROM du système et non pas uniquement sur la ROM externe !
Je vous ai fait grâce de toute la partie modification de cartographie pour ne pas digresser, mais il faut quand même que je précise une chose importante : les données moteurs (data(s)) sont présentes uniquement dans la mémoire externe de 32 Ko. La ROM interne est un « bootloader » minimaliste qui n’évoluera pas (à ma connaissance) durant la vie du MOTRONIC™ en MCS-51 (les versions de cette famille en MCS-96 sont une autre page d’histoire et un autre contexte que je ne maîtrise pas …).

Le caractère, les gènes du comportement de notre petit moteur sont donc inscrits dans cette mémoire externe : celle-ci va être le point clé du projet, à savoir offrir un contenu adéquat en fonction du carburant utilisé.
Est-ce que cette ROM externe est modifiable à souhait ?
Dans notre cas, comme beaucoup de systèmes à microprocesseurs de l’époque, elle (la ROM) existe physiquement, dans l’ECU, sous la forme d’une EPROM en boîtier DIP : la fameuse « Puce » pour les friands de modifications moteur !
Donc OUI, l’EPROM de notre calculateur est modifiable (son contenu) en effaçant et reprogrammant celle-ci.
Mais… comment est-ce possible ? Les technophiles n’ont pas vu passer leur jargon habituel : NAND, FLASH, Serial … !
Retour aux sources : nous sommes au tout début des années ’90 et les quelques Flash EEPROM estampillées Intel® sortent d’un cocon tout juste frais et pâtissent de défauts de jeunesse propres à chaque nouvelle technologie : une stabilité dans un environnement hostile (perturbations EMI, cycles de fonctionnement, vibrations, températures) encore aléatoire. Une telle technologie est, à ce stade, peu recommandable sous le capot d’une automobile.
L’EPROM est ainsi le stockage de masse le plus couramment utilisé dans les systèmes numériques (… de cette époque).
Elle est une sœur jumelle de la famille des PROM(s) (facteur de forme, niveaux TTL, brochage), cette famille étant programmable qu’une seule fois (en usine par masquage ou via programmateur pour les OTP PROM dites fusibles).
Si un quarantenaire un peu mûr, bidouilleur de l’extrême, vous parle de « brûler » une OTP, une Bipolar, un PAL ou je ne sais quoi : tout est normal… N’engagez pas la fuite vers l’extincteur le plus proche !
Un composant fusible se « brûle » avec un outillage adéquat.
Sans rentrer dans des détails qui nous amèneraient loin, la « gymnastique » habituelle pour l’intervention sur nos fameuses EPROM(s) est la suivante :
- Effacement du composant (si nécessaire) avec source UV
- Programmation du composant, hors circuit, avec programmateur d’EPROM
- Contrôle du composant, hors circuit


…
Voilà !
Félicitations aux curieux qui ont survécu au voyage temporel dans le siège baquet moelleux de cette bonne vieille DeLorean. Robert Zemeckis aura singularisé la machine à voyager dans le temps parfaite incarnée dans l’objet le plus ostentatoire de l’humanité : l’automobile … Et, quelle automobile mes aïeux !
♫ … You feel the power of love … ♫

Oui, oui, générique de fin, je vous ai vus… Vous alliez fermer cette fenêtre innocente !
Les choses croustillantes arrivent : le demeurant d’un électronicien à savoir faire circuler des porteurs de charge !
…
Maintenant, interrogeons-nous brièvement sur le fonctionnement d’une EPROM 27C256 : ce composant possède un bus d’adresse, un bus de données, une alimentation et des entrées de commande.
Les niveaux logiques sont dits « TTL » avec un niveau haut à +5V (Vcc) et un niveau bas à 0V (Gnd ou Vss en notation empirique FET).
L’alimentation est toujours dans le rail standard TTL +5V et 0V.
Cette ROM est dite « 8 bits » car elle stocke et dispose ses informations sous forme d’octets.
Elle offre une capacité de 256 Kb (Kilo bit) soit 32 Ko (Kilo octet qui peut aussi s’écrire KB soit Kilo Byte pour les anglophones… Votre hôte pinaille !).
La sélection de l’adresse mémoire se fait via le bus d’adresse.
Dans notre cas, nous avons 32 Ko adressables, soit 215 fenêtres, et donc x15 « broches » d’adresse sur le composant (… qui sont des entrées car bus unidirectionnel commandé par le 80C51).
La fenêtre mémoire sélectionnée (octet) est disposée électriquement, toujours en niveaux TTL, sur le bus de données du composant : ce bus étant physiquement incarné par x8 « broches » de sorties (… qui sont des sorties car nous sommes dans le cas d’une mémoire de masse uniquement lisible à la différence d’une RAM).
Le brochage du composant se dévoile ainsi :
- A0~A14 – Bus d’adresse (15 bits)
- Q0~Q7 – Bus de données (8 bits)
- Vcc – Potentiel d’alimentation (+5V)
- Vss – Potentiel de masse (0V)
- |E – Composant activé (Chip Enable ~ CE)
- |G – Bus de donnée activé (Output Enable ~ OE)

À première vue, on pourrait, légitimement, envisager d’utiliser une EPROM de capacité double pour répondre à notre motivation principale qui est d’augmenter le stockage de notre ECU : on aurait à disposition deux « bancs » de 32 Ko qui contiendraient un logiciel identique mais des tables moteurs différentes (et, de ce fait, la cartographie différente que j’ai élaborée pour notre précieux carburant).
Une telle EPROM de 64 Ko existe bien, vous vous en douterez, sous la désignation (logique) de 27C512.

On remarquera rapidement la présence du 16ème bit haut d’adresse supplémentaire matérialisé par la broche 1 (A15) de cette EPROM : celle-ci offre ainsi ses 64 Ko de capacité (216 x 8 bits … Une signature chère aux aficionados de Z80), ce 16ème bit remplaçant l’entrée tension de programmation de son homologue en 32 Ko.
Notez que la place est comptée sur un packaging en DIP28 à la norme JEDEC et les facteurs de forme de ces ROM(s) n’ont fait que suivre l’évolution des capacités (DIP32, DIP40, DIP42…).
Pour anticiper notre schéma final de conception, on peut d’ores et déjà envisager d’utiliser ce type d’EPROM de 64 Ko avec un changement de « banc » sur l’entrée A15 : les 32 Ko « haut » seront sélectionnés avec un niveau logique haut (!) sur ce bit d’adresse, l’inverse étant de mise pour sélectionner les 32 Ko « bas ».
…
Et après ? Pourquoi tergiverser sur un problème qui semblerait scolaire : à savoir remplacer une EPROM par une homologue de capacité double !
Nous allons voir que ce n’est pas si « simple » ; la faute à des contraintes techniques et financières d’une époque en plein chamboulement : une époque qui se cherchait dans un numérique intégré tout juste accouché.

« Mais… Comment allons-nous faire « rentrer » un micro-ordinateur complet dans un boitier DIP40 ? Ses ports d’entrées/sorties, ses convertisseurs ? »
Oui, nous nous projetons dans une salle de réunion d’Intel®, à Mountain View, fin des années ’70, là où ce genre de question devait être inévitable. La famille MCS-51 ciblait des systèmes simples, économiques et le choix d’un facteur de forme en DIP40 face au coûteux DIP64 ou PGA s’imposait.
…
Attardons-nous sur un des modes de fonctionnement de notre microcontrôleur fétiche, à savoir le mode ROM externe : celui-ci a la particularité d’externaliser toute la partie programme du composant. Ce type de mode est validé par l’entrée |EA du MCU.
Le MA3.0, lui, fonctionne UNIQUEMENT en ROM externe, c’est dit !
La broche |EA du SAB80C515 (broche 51… External Access) est, de ce fait, routée à l’état bas (Vss) sur le PCB : en résulte un plan d’adressage s’étendant de 0x0000 à 0x7FFF en EPROM (32 Ko).
… Je me permets de rebondir sur une comparaison inévitable avec le calculateur MP3.1 de la grande famille MOTRONIC™.
Ne trainez pas des pieds, c’est nécessaire pour comprendre les modes de fonctionnement !
Cet ECU était un fidèle compagnon des armoiries Sochalienne et équipa le système neuronal (!) de la 106 XSI (et de bien d’autres modèles d’ailleurs…).
Il est, aussi, architecturé autour d’un SAB80C515 mais en mode mixte : j’entends par là que sa broche |EA est routée à l’état haut (Vcc) à travers une résistance de 10 kΩ.
Le plan d’adressage de ce cas particulier s’étale donc de 0x0000 à 0x1FFF en ROM interne (8 Ko, MASK ROM) et de 0x2000 à 0x9FFF en ROM externe (32 Ko, EPROM).
C’est le cas que j’ai évoqué plus haut dans la description générale de notre calculateur MA3.0.
« Mais… », me diriez-vous si vous avez bien intégré les subtilités des composants en jeu : pourquoi ne pas utiliser un SAB80C535 ROMless en lieu et place de cette version avec ROM embarquée ? (ROMless signifiant dépourvu de ROM interne… Excusez mes anglicismes réguliers dus à mon passif technique reptilien.)
La remarque serait pertinente, c’est sûr, mais je vais conjecturer sur les motivations d’un tel choix technique.
Quelques maigres années séparent le calculateur MP3.1 de son petit frère le MA3.0.
La ROM interne de 8 Ko, que j’eusse déjà évoquée sous le nom arbitraire de « bootloader », est gravée en usine. Cette solution est restée figée dans toutes les générations anciennes de MOTRONIC™ DME, que ce soit dans les implémentations classiques en véritable MCU Intel® DIP40 (ML2.1, M1.1, les PORSCHistes et autres vont se réveiller…) ou sur les premières révisions en MCU PLCC68 (le cas du MP3.1).
Un besoin à grande échelle de tels composants avec une ROM fixe justifiait obligatoirement une production en masse pour limiter les coûts : la réutilisation de composants programmés en usine, sur les générations suivantes, était, je pense, inévitable. Certes, c’est une logique qui reste « ouverte », mais qui expliquerait le choix technique du SAB80C515 dans le MA3.0 : sa ROM interne étant condamnée électriquement.

On y arrive doucement mais surement ! C’est long, je le conçois, mais parler d’un tel monument de l’histoire de l’automobile (oui, le MOTRONIC™ l’est) n’est pas chose aisée…
Nous allons revenir sur la précédente image du schéma de principe d’accès en ROM du 80C51 qui est importante à décortiquer (non, non … pas celle sous vos yeux, celle d’en dessus !).
Vous allez voir que toute la base est là, dans cette ébauche extraite du manuel de service Intel®.
J’ai volontairement parlé du facteur de forme de ce MCU pour suggérer une chose immuable à celui-ci : le brochage d’un circuit intégré est compté ! Dans le cas d’un micro-ordinateur intégré, cette bride industrielle n’est que plus vraie de par le nombre d’entrées/sorties nécessaires à un tel composant.
Nous avons vu que le 80C51, en mode ROM externe, nécessitait un bus d’adresse 16 bits et un bus de données 8 bits disposés hors composant (!) pour communiquer avec sa mémoire de masse (… et donc exécuter son logiciel).
Pour un facteur de forme en DIP40, les choses se compliquent :
il nous faudrait 24 broches pour que le système puisse exécuter du code et être, ainsi, opérationnel. À cela s’ajoutent les broches de contrôle, les broches d’alimentation, les broches d’horloge avec comme triste constat :
plus de place pour disposer d’un nombre convenable de ports 8 bits et de liaisons séries chères à un microcontrôleur premier de la classe …
La solution miracle qui s’impose ici est donc … le multiplexage !
Je vais, pour changer, parler de MCS-51 plutôt que de 80C51 car les solutions techniques utilisées par Intel® ont perduré dans toute cette grande famille, peu importe le facteur de forme.
J’insiste sur ce fait car un 80C51 en DIP40 ou PLCC68 aura, dans tous les cas, un multiplexage sur ses bus principaux (le surplus de broches étant utilisé par ajout de ports divers et variés).
… « Ports » …
Voilà un nom qui revient régulièrement !
Je ne vais pas digresser sur tout ce qui se présente sous ce dénominatif : le RMS Titanic était amarré à un port, les porte-conteneurs vaguent de port à port… Les marins, aussi, pour braver les trois quarts de notre planète océan …
Le port est, par essence même, un lieu d’échanges, d’entrées et de sorties qu’elles soient matérielles ou humaines.
La dénomination « port », en électronique numérique, désigne toute passerelle d’informations entre un monde interne et externe au circuit intégré.
Bien souvent, un port est dit asynchrone car commandable arbitrairement via des mnémoniques spécifiques (MOV, IN, OUT…).
Le « bus », quant à lui, est un type de port spécifique, qui est de par sa nature synchrone (… dans le cas de systèmes « lents », comme c’est le cas ici pour être plus juste) et transparent pour l’utilisateur. À noter que c’est, aussi, le routage physique qui joint les différents composants de l’ensemble numérique : plus particulièrement, sa RAM, sa ROM, ses PIO(s) et autres DMA(s)…
Le MCS-51 utilise deux ports 8 bits (parallèle) pour ses bus système, soit 16 broches :
- PORT(0) ~ P0 – Bus de données OU bus d’adresse BASSE
- PORT(2) ~ P2 – Bus d’adresse HAUTE
Vous noterez que P0 est le port multiplexé.
L’adresse basse (P0) représente les 8 bits de poids faible (0x**FF).
L’adresse haute (P2) représente les 8 bits de poids fort (0xFF**).
L’adresse complète s’incarne dans un mot de 16 bits (0x0000 à 0xFFFF) formé à partir des deux octets P2 & P1.
Le dé-multiplexage s’effectue via un verrou matériel externe au MCU. Ce type de composant (latch) est dit « transparent » car il sort l’image exacte de son entrée une fois que celle-ci est verrouillée.
La commande de verrouillage s’effectue via la broche ALE du MCS-51 (broche 50 du SAB80C515).
Un tel artifice permet d’offrir à L’EPROM un bus d’adresse complet comme il se doit !
…
Revenons au cas concret du MOTRONIC™.
Je vous ai glissé, plus haut, une photo du dos du PCB d’un calculateur MP3.1 : vous attesterez la présence de notre verrou magique qui permet le dé-multiplexage du bus d’adresse. Le composant s’incarne dans un boîtier SOP20 pour contenter, déjà à l’époque, un besoin d’intégration.
Pour le matricule MA3.0, il y a encore une subtilité !
Pour des contraintes de coût, les ingénieurs ont tout simplement supprimé le dé-multiplexage entre le SAB80C515 et l’EPROM !
Mais… Mais… Pourquoi une telle ânerie ?
…
J’ai volontairement souligné ce choix technique douteux car il est, en partie, responsable de la difficulté de ce projet (toutes proportions gardées, bien évidemment).
Le dé-multiplexage à bien été supprimé en circuit pour être, tenez-vous bien, déplacé en composant ! Et quel composant :
l’EPROM qui, de ce fait, embarque toute la circuiterie nécessaire à une telle tâche.
Le MA3.0 embarque une EPROM 87C257 de 32 Ko qui internalise le « latching ». Elle diffère d’une 27C256 classique par sa broche 1 qui commande le circuit de verrouillage intégré. Un tel type d’EPROM de capacité double n’existe pas à ma connaissance.
Vous comprendrez qu’avec une telle pirouette technique, une simple 27C512 ne pouvait suffire au projet !
Il va nous falloir de l’électronique pour gérer notre double banc souhaité et une sélection propre de ceux-ci…
Sentez-vous l’odeur de KiCad, ce logiciel fabuleux qui n’attend que nous ?
Croyez-moi que c’est un sentiment magique de déposer, petit à petit, les briques d’un schéma fruit de l’imagination : les boîtiers spécifiques, les bus, les annotations sourcilleuses, les « power flags »…
… Tout vient à point à qui sait attendre …


Vous avez, ci-dessus, le schéma final du projet.
Il s’organise en quatre groupes principaux que je vais énumérer succinctement :
- Partie routage principal entre le double connecteur de hauteur et la nouvelle EPROM
- Partie verrouillage ~ dé-multiplexage
- Partie de sélection de banc
- Partie de synchronisation pour le basculement
Avant de décrire individuellement chaque ensemble, il me faut m’attarder sur un aspect important et concret du projet : le facteur de forme du produit fini.
Le PCB doit être de forme rectangulaire, double face, avec suffisamment de place pour le routage et les plans de masse.
Il doit, aussi, s’aligner, en partie, au-dessus du support d’EPROM, disponible sur le calculateur, pour pouvoir s’enficher dans celui-ci.
J’utiliserai, pour ce faire, deux rangées de connecteurs mâles IDC au pas de 2,54.
La particularité est que ceux-ci seront ronds et plaqué or pour parfaire la jonction électrique avec le support tulipe de l’ECU (… qui respire la qualité au passage ! Un bon point).
La qualité de la jonction au niveau des bus n’est pas à négliger pour limiter les capacités parasites de ligne (stockage de charges) inhérentes à de tels contacts. Les fronts qui composent les signaux peuvent rapidement « s’arrondir » dans des régimes supérieurs à 4 MHz et il se trouve que c’est le cas ici (l’horloge du calculateur est à 12 MHz avec un quartz adapté… Pas si asthmatique notre ancêtre !).
Notre PCB embarquera deux LED(s) pour signaler le banc sélectionné. Il sera nécessaire d’adjoindre un hublot diffusant et étanche sur le capot aluminium du calculateur pour pouvoir voir celles-ci : Il existe une multitude d’autres solutions pour la signalétique, mais celle-ci me semble la plus simple et fiable (étanchéité).
L’interrupteur deux positions sera, au choix, monté en surface ou déporté (via un modèle étanche, encore une fois).
Nous pouvons passer à l’étude des groupes du schéma pour voir tout ce petit monde prendre vie !

~ Partie routage principal :
U1 est l’empreinte normalisée DIP28 large : c’est ici que seront montées les deux rangées de « headers » IDC au pas de 2,54.
Ceux-ci surplombent le support du calculateur respectant scrupuleusement le brochage standard d’une 87C257.
U2 est le nouveau support d’EPROM (physiquement déporté) qui embarquera une 27C512 « classique » (par commodité, le schéma intègre déjà l’EPROM).
Le bus d’adresse HAUT (A8 à A14) est routé en direct.
Le bus de données est, lui aussi, routé en direct ET déporté vers le verrou.
Le signal « latch » (ALE) est routé vers le verrou, toujours.
Les signaux de commande classiques sont routés en direct (|OE, |CE). Nous verrons que |OE est obligatoirement récupéré par la bascule (que nous n’avons pas encore traité).
L’alimentation est routée sur l’EPROM avec un découplage de 100 nF.

~ Partie verrouillage :
U3 est le verrou matériel incarné par un circuit 74LS373 de la grande famille TTL 7400 de Texas Instruments®.
Ses x8 entrées sont routées au bus de données (D0 à D7).
Ses x8 sorties verrouillables donnent vie au bus d’adresse BAS de U2 (AL0 à AL7).
L’entrée « latching » (LE) est routée sur U1 (broche ALE), comme dévoilé précédemment.
L’alimentation du boîtier est, elle aussi, découplée à 100 nF.

~ Partie sélection :
L’inverseur SW1 (qui sera notre interrupteur de sélection du type de carburant) délivre, en son point commun, soit le potentiel de masse, soit le +5V (les deux niveaux logiques TTL…).
Les LED(s) D1 ou D2 sont passantes en fonction de ce potentiel.
R2 et R3 sont calculées pour un courant de 9 mA.
Pour D1, on a R2 = 3 / 0,009 ~ 330 Ω.
Pour D2, on a R3 = 2 / 0,009 ~ 220 Ω.
Vous remarquerez la chute de tension plus importante d’une LED bleue ! (un détail, je sais…)
Le potentiel du point commun de l’inverseur est routé sur la bascule (label SW).

~ Partie synchronisation :
Cette section du circuit permet de synchroniser le changement de banc HORS cycle d’accès en lecture sur la ROM.
Un basculement brutal (asynchrone) des deux bancs de l’EPROM, sans circuit de synchronisation, entrainerait à coup sûr un « plantage » du MCU.
Pour éviter un tel cas, il faut que le potentiel de A15 (qui sélectionne nos bancs) soit stable en temps d’accès machine.
Ce temps d’accès machine peut être connu par la ligne |OE (Output Enable) qui est routée en U2.
Si |OE est à l’état bas (Vss), l’EPROM est en lecture : son octet sélectionné par les broches d’adresse est rendu disponible sur les broches de données du composant (par des buffers internes activés). Ce port (D0 à D7) quitte son état haute impédance (Hi-Z) et le MCU peut, ainsi, récupérer le précieux octet.
Le circuit retenu est une « classique » bascule D, 74LS74.
Son horloge (broche 3) est reliée à |OE.
Sa gâchette (broche 2… trigger) est reliée au potentiel de sélection (label SW) : la résistance R1 de 10 kΩ, purement arbitraire, est là pour fixer les dérives de potentiel. L’idéal aurait été une petite capacité céramique pour limiter le rebond de l’interrupteur : coupable, votre honneur, le PCB était déjà en production !
Une constante de temps à 1/12000000 nous permettrait d’envisager une telle capacité à 10 nF en direct ou 1 nF en série avec une résistance de 2,2 kΩ… À voir (en lieu et place de R1).
… Eh bien, on voit le bout du tunnel à ce stade !
Pour finaliser notre schéma, il nous reste à nommer tout ce petit monde, remplir le cartouche (!) et labelliser les groupes importants.
S’en suit les indispensables « power flags » et l’attribution des empreintes pour passer à la simulation.

… Composants à trous traversants …
Mais que veut dire ce jargon d’électronicien ?
La technologie à trous traversants dite « THT » (Through Hole Technology) est un type empirique de montage de composants qui a fait ses preuves.
Elle succéda à la méthode « artisanale » point à point des années folles du tube électronique (… La DeLorean nous embarquerait au pied d’un atelier de montage Ducretet Thomson, au milieu des années ’60, pour contempler le travail d’orfèvre opéré sur les châssis de télévisions encore en noir et blanc).
Cette technologie THT permet l’utilisation de composants au facteur de forme classique encore bien distribués.
Ses avantages principaux sont une mise en œuvre simplifiée pour l’utilisation des boîtiers en plaque d’essai (« breadboard ») et un matériel de soudure minimaliste pour la mise en production.
Ses principaux défauts sont le coût et l’intégration.
Je reste fidèle au composant traversant prônant l’autonomie et la facilité d’intervention sur le couple boîtier/support.
C’est une position que vous pourriez juger conservatrice (oui, je vous vois venir…), mais je préfère éviter de souder du « SOP » quand cela est possible (malgré que la soudure de ces petits boîtiers, à la loupe, au flux et à la pâte à étamer est très amusante !)
Le SMD est une technologie de production, pas de hobbyiste (… même si dans le monde des FPGA(s) un Cyclone IV, un STM32 et j’en passe n’existent qu’en SMD)!
Parlons de routage, pour finir le projet, avec toutes les subtilités que cette étape engage.
Celle-ci reste simple car il y a peu de composants mis en œuvre.
Les quelques règles élémentaires que je me suis efforcé de respecter :
- Longueurs des bus optimisées : l’EPROM sera proche du « header » de connexion/montage du PCB
- Largueurs de pistes optimisées : le +5V est généreusement distribué et les bus sont étroits
- Orientation du plan supérieur/inférieur des pistes optimisé : les pistes sont croisées pour limiter le couplage inductif
- Optimisation des angles, des fourches et des pastilles pour limiter la réflexion du courant.
- « Teardrop » et large plan de masse. VIA(s) limités avec priorité aux pastilles des trous traversants…
Vous noterez la présence volontaire de pastilles de contrôle dans l’optique de « scoper » (jargon immuable à l’oscilloscope, coupable !) facilement mes signaux critiques (|OE et ALE).
Je ne les ai pas utilisées, mais… Prudence est mère de la sûreté !
Plus que quelques clics pour produire le plan de perçage et le fichier gerber prêt à s’envoler en production.
Mais… Mais… Est-ce réellement fini ?
Eh bien OUI mes chers lecteurs !
Je vous laisse apprécier les quelques photos du projet fini …



Vous remarquerez, sur le prototype, la présence d’une LED jaune en lieu et place de la bleue prévue, ainsi qu’un verrou de type HC (74HC373) plus moderne : la faute à mon stock de composants amaigri par tous mes projets !
L’utilisation d’une TTL CMOS est discutable de par ses niveaux logiques disparates, mais comme dirait certains : ça fait l’affaire …
Il est nécessaire, aussi, de programmer l’EPROM avec le fichier adéquat pour avoir un produit parfaitement fonctionnel.
Pour ce faire, mes deux cartographies de 32 Ko ont été concaténées en un seul fichier de 64 Ko : la partie BASSE de ce binaire est la cartographie originale du calculateur et la partie HAUTE celle dédiée à l’E85 !
La LED verte s’illumine sur la cartographie originale.
La LED bleue s’illumine sur la cartographie éthanol.
Magie, magie…
Je vous laisse apprécier les soubresauts de ce petit moteur, équipé de son nouveau compagnon de route numérique !
Cet essai montre le comportement de l’auto avec son plein d’E85.
Le moteur tourne convenablement avec la cartographie éthanol sélectionnée (LED jaune), et perd en régime de rotation avec la programmation originale engagée (LED verte).
Ce comportement peut paraître contre-intuitif dans la mesure où un régime pauvre (cas présent ici, en cartographie d’origine) est synonyme de prise de régime. …Les aspirants aux weber(s) et autres solex(s) vont acquiescer d’un petit mouvement de tête !
Le phénomène s’explique par un trop fort appauvrissement.
L’écart de richesse entre mes deux cartographies est conséquent : le moteur peine avec sa configuration d’origine.
La sonde O2, dite binaire (à bande étroite), ne parvient pas à corriger les temps d’injection : le bloc s’étouffe et chauffe anormalement.
De plus, les correctifs d’injection sont une science à part entière. Ces variables à court et long terme ne peuvent corriger une telle stratégie de fonctionnement.
Les plus renseignés savent que je parle des LTFT et STFT (Long Term Fuel Trim et Short Term Fuel Trim) : les fameuses pierres magiques qui rendent nos calculateurs « intelligents » !
Ces variables, certes, ont le mérite d’exister et d’œuvrer, mais ne peuvent pas autoriser un fonctionnement optimal d’un moteur qui utiliserait un carburant aussi disparate que l’éthanol (le cas est discutable avec des sondes dites « large bande » mais le propos justifierait un billet à part entière…).
Donc, OUI, un fonctionnement à l’E85 nécessite une attention toute particulière à la programmation du moteur ; ne serait-ce que pour ne pas endommager celui-ci et avoir une efficience thermique limitant la surconsommation…
…
Pour le coup, là, j’ai réellement terminé.
Je ne peux que vous remercier de votre patience et de votre curiosité.
Le plus important n’étant pas la route mais le chemin…
Dr. Emmet Brown, je suis navré d’avoir ajouté autant de kilomètres à votre précieuse DeLorean. Je ne pense pas avoir malmené ses 6 précieux petits cylindres : les 88 miles à l’heure devraient rester une formalité …
Jam,
♫ … You feel the power of love … ♫

Documentation :



Laisser un commentaire