Le MAX232 est la puce qui fait dialoguer une carte Arduino avec un vrai port série. L’Arduino parle en logique TTL — 0 V et 5 V — alors qu’un port RS232 utilise des tensions positives et négatives qui oscillent autour de ±12 V. Relier les deux directement abîmerait la carte. Le MAX232 s’installe entre eux, traduit dans les deux sens, et fabrique lui-même ses tensions négatives à partir du 5 V : aucune alimentation symétrique n’est nécessaire.
C’est un boîtier DIP-16 à deux canaux complets : deux émetteurs (TTL vers RS232) et deux récepteurs (RS232 vers TTL). Il se pose sur une plaque d’essai, se soude sur un circuit imprimé, et se trouve dans presque tous les câbles de conversion RS232 du marché.
À quoi sert un MAX232 ?
Le standard RS232 n’a pas été conçu autour des microcontrôleurs. Il définit des niveaux de tension inversés par rapport à la logique : au repos, la ligne est à −10 V environ ; un bit à 1 est négatif, un bit à 0 est positif. Une broche d’Arduino ne produit rien de tel — et n’accepte en aucun cas des tensions négatives.
Le MAX232 règle les deux problèmes à la fois :
- Il convertit les niveaux dans les deux sens, et se charge de l’inversion logique que le standard impose.
- Il fabrique ses propres tensions. Un montage interne appelé pompe de charge double et inverse le 5 V pour produire environ +10 V et −10 V, avec quatre condensateurs externes comme seuls composants annexes.
- Il protège la carte. Le côté RS232 encaisse les tensions du standard, y compris les niveaux négatifs, sans jamais les laisser atteindre le microcontrôleur.
Concrètement, on s’en sert pour relier un Arduino à un port série de PC ou d’automate, à un lecteur de code-barres, à un modem ou à un vieux matériel industriel qui n’existe qu’en RS232.
Caractéristiques techniques
| Référence | MAX232 — boîtier DIP-16. Selon les lots, le marquage porte un suffixe de boîtier (CPE pour le DIP plastique, température commerciale) et un code date ; le brochage reste identique. |
|---|---|
| Fabricants | Maxim, TI, Vishay et d’autres — boîtiers interchangeables |
| Fonction | Double émetteur / double récepteur de ligne, conforme TIA/EIA-232-F |
| Alimentation | 5 V continu, tolérance ±10 % — pas de tension 3,3 V |
| Consommation | Environ 8 mA en service, quelques microampères au repos |
| Débit maximal | 120 kbit/s |
| Tensions RS232 en sortie | Environ ±10 V à vide, ±7,5 V sous charge |
| Tension des entrées RS232 | Les entrées de ligne acceptent les tensions négatives du standard, jusqu’à ±30 V |
| Côté logique | Entrées TTL 5 V, sorties compatibles TTL — se raccordent directement au TX et au RX d’un Arduino |
| Condensateurs externes | 4 × 1 µF pour la pompe de charge, plus 100 nF de découplage |
| Boîtier | DIP-16, 19,3 × 9 mm, pas de 2,54 mm — s’installe sur plaque d’essai |
Brochage du boîtier DIP-16
Repère de la broche 1 : l’encoche en demi-cercle marquée sur le boîtier. En regardant la puce côté sérigraphie, l’encoche vers le haut, la broche 1 est en haut à gauche et la numérotation descend, puis remonte par la droite.
| 1 — C1+ | Première broche du condensateur C1 |
|---|---|
| 2 — VS+ | Sortie de la pompe de charge positive : condensateur C3 vers la masse |
| 3 — C1− | Seconde broche du condensateur C1 |
| 4 — C2+ | Première broche du condensateur C2 |
| 5 — C2− | Seconde broche du condensateur C2 |
| 6 — VS− | Sortie de la pompe de charge négative : condensateur C4 vers la masse |
| 7 — T2OUT | Sortie RS232 du second émetteur |
| 8 — R2IN | Entrée RS232 du second récepteur |
| 9 — R2OUT | Sortie logique du second récepteur |
| 10 — T2IN | Entrée logique du second émetteur |
| 11 — T1IN | Entrée logique du premier émetteur — à relier au TX de l’Arduino |
| 12 — R1OUT | Sortie logique du premier récepteur — à relier au RX de l’Arduino |
| 13 — R1IN | Entrée RS232 du premier récepteur — à relier au TX de la machine distante |
| 14 — T1OUT | Sortie RS232 du premier émetteur — à relier au RX de la machine distante |
| 15 — GND | Masse, commune aux deux côtés |
| 16 — VCC | Alimentation +5 V, découplée par 100 nF vers la masse |
Le second canal — broches 7, 8, 9 et 10 — peut rester non connecté si vous n’en avez pas besoin : cela ne gêne pas le fonctionnement du premier.
Les cinq condensateurs : la seule partie délicate
Tout le reste du montage est du simple câblage. C’est ici que la plupart des montages qui « ne marchent pas » ont leur défaut.
| C1 — 1 µF | Entre les broches 1 et 3 |
|---|---|
| C2 — 1 µF | Entre les broches 4 et 5 |
| C3 — 1 µF | De la broche 2 (VS+) vers la masse |
| C4 — 1 µF | De la broche 6 (VS−) vers la masse |
| C5 — 100 nF | De la broche 16 (VCC) vers la masse — découplage de l’alimentation |
La valeur n’est pas un détail. Le MAX232 d’origine demande des condensateurs d’au moins 1 µF. Beaucoup de schémas trouvés en ligne affichent 0,1 µF : cette valeur est celle du MAX232A, une variante à pompe de charge plus rapide. Montée sur un MAX232 ordinaire, elle empêche la pompe d’atteindre les tensions nécessaires, et la liaison devient erratique — elle fonctionne à froid, échoue au bout de quelques minutes, ou ne démarre jamais. En cas de doute, utilisez 1 µF ou 10 µF, jamais moins.
Deuxième point : câblez les condensateurs au plus court, collés au boîtier. Des fils longs sur les broches de la pompe de charge dégradent les tensions générées.
Côté connecteur : trois fils suffisent
Sur un connecteur Sub-D 9, seules trois lignes sont nécessaires pour une liaison complète en émission et réception. Les autres broches du connecteur portent des signaux de contrôle que le MAX232 ne gère pas.
| Broche 2 du Sub-D 9 | RXD — reçoit les données, côté machine distante |
|---|---|
| Broche 3 du Sub-D 9 | TXD — émet les données, côté machine distante |
| Broche 5 du Sub-D 9 | Masse |
Les deux lignes de données se croisent obligatoirement. Ce que l’Arduino émet — broche 14 (T1OUT) — doit arriver sur la broche 2 (RXD) du connecteur ; ce que la machine distante émet — broche 3 (TXD) — doit arriver sur la broche 13 (R1IN) du MAX232. Un montage où les deux lignes vont droit l’une vers l’autre ne transmet rien : c’est l’erreur numéro un.
Mini-projet : une passerelle série entre un Arduino et un PC
Le montage transforme l’Arduino en pont : tout ce qui arrive par le port RS232 s’affiche dans le moniteur série de l’ordinateur, et tout ce que vous tapez dans le moniteur part vers le port RS232. Une quinzaine de minutes suffisent, et le programme tient en vingt lignes.
Ce qu’il faut
| La traduction de niveaux | Le MAX232 de cette page |
|---|---|
| Les condensateurs | Quatre condensateurs de 1 µF et un de 100 nF — non fournis avec le boîtier nu |
| Le cerveau | Uno R3 + câble USB |
| Le support | Plaque d’essai 830 points |
| Les liaisons | 10 × fil mâle-femelle |
| Côté PC | Un port série, ou un adaptateur USB vers RS232 pour un ordinateur récent |
Si votre interlocuteur parle déjà en logique TTL — une autre carte, un module — vous n’avez pas besoin du MAX232 : le convertisseur USB vers TTL relie directement l’ordinateur. Le MAX232 devient indispensable dès qu’en face il y a un vrai port série.
Le câblage
| C1 | entre les broches 1 et 3 du MAX232 |
|---|---|
| C2 | entre les broches 4 et 5 |
| C3 | de la broche 2 vers la masse |
| C4 | de la broche 6 vers la masse |
| C5 | de la broche 16 vers la masse |
Broche 16 (VCC) | → Arduino 5V |
Broche 15 (GND) | → Arduino GND |
Broche 11 (T1IN) | ← Arduino D3 — l’Arduino émet |
Broche 12 (R1OUT) | → Arduino D2 — l’Arduino reçoit |
Broche 14 (T1OUT) | → broche 2 du Sub-D 9 (RXD de la machine distante) |
Broche 13 (R1IN) | ← broche 3 du Sub-D 9 (TXD de la machine distante) |
Broche 15 (GND) | ↔ broche 5 du Sub-D 9 |
Les broches D2 et D3 sont utilisées ici à la place de D0 et D1 : ces deux dernières sont celles du port USB de la carte, et les occuper empêcherait d’utiliser le moniteur série de l’IDE Arduino pour voir ce qui se passe.
Le programme
À téléverser sur la carte, puis à ouvrir le moniteur série à 9600 bauds :
/*
* Passerelle serie entre un Arduino Uno et un port RS232
* Cote TTL : D2 (reception) et D3 (emission)
* Cote RS232 : MAX232, connecteur Sub-D 9 vers l'autre machine
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "SoftwareSerial.h"
const byte PIN_RX = 2; // relie a la broche 12 (R1OUT) du MAX232
const byte PIN_TX = 3; // relie a la broche 11 (T1IN) du MAX232
SoftwareSerial ligneSerie(PIN_RX, PIN_TX);
void setup() {
Serial.begin(9600); // liaison USB, pour le moniteur serie
ligneSerie.begin(9600); // liaison RS232, pour l'autre machine
Serial.println("Passerelle prete, 9600 bauds.");
}
void loop() {
// Ce qui arrive du port RS232 part vers le moniteur serie de l'ordinateur
if (ligneSerie.available()) {
Serial.write(ligneSerie.read());
}
// Ce que vous tapez dans le moniteur serie part vers le port RS232
if (Serial.available()) {
ligneSerie.write(Serial.read());
}
}Comment ça marche
- Les deux vitesses doivent correspondre. La liaison USB et la liaison RS232 sont réglées à 9600 bauds dans le programme ; la machine distante doit être réglée sur la même valeur, sinon vous ne verrez que des caractères sans aucun sens.
- D2 et D3 forment une liaison série logicielle. Le microcontrôleur n’a qu’un seul port série matériel — celui du câble USB. La bibliothèque SoftwareSerial en simule un second sur n’importe quelles broches, ce qui permet de garder le port USB libre pour le diagnostic. En contrepartie, elle est moins tolérante aux débits élevés : restez à 9600 ou 19200 bauds.
- Le croisement est déjà dans le programme et dans le câblage. La sortie de l’Arduino (D3) attaque l’entrée TTL du MAX232, et la sortie TTL du MAX232 (broche 12) revient sur l’entrée de l’Arduino. C’est le même principe que le croisement TXD / RXD côté connecteur.
- Aucune protection à ajouter côté RS232. Le MAX232 encaisse les tensions du standard : on peut brancher et débrancher le connecteur sans risquer la carte, dans la limite d’une alimentation commune.
Première mise sous tension : commencez par tester dans un seul sens. Tapez un caractère dans le moniteur série et vérifiez qu’il arrive de l’autre côté. Si rien ne sort, inutile de chercher dans le programme : dans neuf cas sur dix, ce sont les condensateurs de la pompe de charge, ou deux lignes de données qui ne se croisent pas.
Variante : deux liaisons indépendantes dans le même boîtier
Le MAX232 contient deux canaux complets, et la plupart des montages n’en utilisent qu’un. Le second est disponible sans composant supplémentaire : les entrées logiques se trouvent sur les broches 10 (T2IN) et le second récepteur sur la broche 8 (R2IN), pour des sorties sur la broche 7 (T2OUT) et la broche 9 (R2OUT).
C’est utile pour surveiller deux appareils en même temps — un lecteur de code-barres et un automate, par exemple — ou pour servir de pont entre deux machines qui ne se connaissent pas. Le câblage de la pompe de charge et de l’alimentation ne change pas : il est commun aux deux canaux. Il suffit d’utiliser une seconde paire de broches sur l’Arduino, et de déclarer une seconde liaison série logicielle dans le programme.
Questions fréquentes
La liaison affiche des caractères sans aucun sens. Pourquoi ?
Trois causes à vérifier dans cet ordre : les deux côtés ne sont pas à la même vitesse de transmission ; les deux lignes de données ne se croisent pas ; les condensateurs de la pompe de charge sont sous-dimensionnés — 0,1 µF sur un MAX232 ordinaire au lieu de 1 µF. Une alimentation qui s’effondre sous le courant de la pompe de charge produit exactement le même symptôme : vérifiez que le 5 V ne descend pas sous 4,7 V pendant la transmission.
Peut-on l’alimenter en 3,3 V ?
Non. Le MAX232 demande 5 V, à 10 % près, et ne fonctionne pas de façon fiable en dessous. Si tout votre montage est en 3,3 V, il faut un MAX3232 : même brochage, mêmes fonctions, mais alimentation de 3 à 5,5 V et condensateurs de 0,1 µF.
Le MAX232 est-il compatible avec un microcontrôleur en 3,3 V ?
Dans un seul sens. Piloter l’entrée TTL du MAX232 depuis une sortie 3,3 V fonctionne en général, le seuil d’entrée haut étant bas. En revanche, la sortie logique du MAX232 délivre du 5 V, ce qu’une entrée de microcontrôleur 3,3 V n’accepte pas forcément. Dans ce cas, un MAX3232 alimenté en 3,3 V règle les deux problèmes d’un coup.
Faut-il que la machine d’en face soit à la même masse ?
Oui, la broche 5 du Sub-D 9 relie les masses des deux côtés, et le MAX232 utilise cette masse commune comme référence. Pour deux appareils alimentés séparément et reliés par un long câble, cette différence de masse finit par créer des erreurs de transmission : un câble blindé, ou une liaison isolée, devient nécessaire au-delà de quelques mètres.
Un câble « USB vers série » suffit-il, sans MAX232 ?
Cela dépend de ce que le câble contient. Un adaptateur USB vers RS232 embarque déjà sa propre conversion de niveaux et se branche directement sur le connecteur Sub-D 9 de ce montage. Un adaptateur USB vers TTL ne produit que des niveaux logiques : il ne peut pas piloter un vrai port RS232, et n’a donc pas besoin du MAX232 en face de lui. Les deux ne sont pas interchangeables.
À combiner avec
Le boîtier s’utilise avec des condensateurs et un support : la plaque d’essai 830 points accueille le DIP-16 et les cinq condensateurs, les fils mâle-femelle relient le montage à la carte, et une alimentation 5 V stabilisée évite de faire porter la pompe de charge par le régulateur de l’Arduino. Si vous cherchez une liaison sans fil plutôt qu’un câble, le module Bluetooth série HC-05 remplace le câble entier. Et pour afficher ce qui circule sur la ligne, un afficheur LCD 16×02 I2C se branche sur deux broches seulement. Ceux qui assemblent leur carte eux-mêmes partiront d’un ATmega328P en DIP, ou directement d’un KIT Starter complet.









Avis
Il n’y a pas encore d’avis.