Il cavo · rev B

Un cavo che rispetta le regole dell'ALDL.

La linea dati ALDL è un unico filo che ogni modulo può solo portare a livello basso. La maggior parte dei cavi fai-da-te la contrasta. Questo no – e resiste a 12–24 V sul pin dati.

La richiesta sul filo · 8192 baudF4 57 01 00 B4

Ogni byte: un bit di start (basso), otto bit di dati a partire dal meno significativo, un bit di stop (alto) – 122 µs per bit. L'intera richiesta dura 6,1 ms; la centralina motore risponde con 67 byte.

Al momento non vendiamo cavi pronti. Costruiscine uno con l'elenco componenti qui sotto – oppure usa un cavo FTDI standard con la modifica rapida descritta in fondo a questa pagina.

schema elettrico

Il problema della maggior parte dei cavi fai-da-te

La linea ALDL GM a 8192 baud è un unico filo open-collector: dentro l'ECM (e nel CCM, nell'ABS …) una resistenza da ~10 kΩ la tira a +5 V e ogni modulo la porta bassa con un transistor per inviare un bit 0. A riposo = alta. Tutti possono solo portarla bassa; nessuno può forzarla alta.

Il popolare «cavo da 20 dollari» unisce TXD e RXD dell'FT232R e li collega direttamente al pin M. TXD è un'uscita push-pull che forza la linea alta ogni volta che è a riposo, quindi ogni bit 0 inviato dall'ECM diventa una lotta tra il transistor dell'ECM e l'uscita dell'FTDI. A seconda dei componenti, il «basso» che ne risulta si ferma a 0,5–1,5 V – proprio sulle soglie del ricevitore – e ottieni errori di framing e dati spuri, tanto più quando il CCM chiacchiera sul bus. Lo stesso cavo mette sotto sforzo anche l'uscita dell'ECM.

Altre due trappole classiche:

  • FT_Prog «Invert TXD/RXD» – corretto solo per gli adattatori RS-232 (DB9) che hanno un transceiver invertente. Su una scheda FT232R TTL fa stare TX a riposo basso (tenendo giù l'intero bus dell'auto – il CCM registra allora il codice 41) e RX legge dati invertiti.
  • Schede a 3,3 V / ponticello VCCIO su 3,3 V – la linea è a 5 V; usa I/O a 5 V.

Progetto consigliato (rev B)

Rif.ComponentePerché
U1Breakout FTDI FT232RL originale, ponticello VCCIO = 5 V (oppure cavo FTDI TTL-232R-5V)USB ⇄ UART TTL, logica a 5 V, nessun sabotaggio da parte del driver
Q12N3904 NPN (SMD MMBT3904)invertitore: TXD a riposo ALTO → Q1 conduce → Q2 interdetto
Q22N3904 NPN, 40 V (SMD MMBT3904, va bene anche PN2222A)driver di linea open-collector – porta la linea solo BASSA, come ogni modulo GM
Q3N-MOSFET BSS138 50 V (SOT-23) oppure BS170 (TO-92)isolatore RX: gate a +5 V, source → RXD, drain → DATA
R1150 Ω, 0,5 Wresistenza in serie a Q2
R210 kΩ RXD → +5 Vlivello di riposo di RX (al banco, auto spenta)
R310 kΩbase di Q1
R4 + SW110 kΩ + interruttore tra A e Babilitazione diagnostica solo per gli ECM 1982–88 (160 baud), OFF dal 1989 in poi
R510 kΩ TXD → +5 VTXD alto mentre l'FTDI si avvia o è scollegato → linea libera
R610 kΩ collettore di Q1 → +5 Vcorrente di base per Q2
R722 kΩbase di Q2 – volutamente alta, limita la corrente di cortocircuito
C1100 nFdisaccoppiamento dei 5 V
D1TVS SMAJ24A, unidirezionale – fascia (catodo) su DATA, anodo su GNDsolo per i picchi (ESD, accensione); fino a 24 V non conduce
JP1selettore a 3 posizioniM (1990–95), E (1982–88), E+M (1989)
J1spina ALDL GM a 12 pin1995: DLC a 16 pin, pin dati 9, GND 4+5

Come funziona

  • TX – TXD a riposo è ALTO, Q1 conduce, Q2 è interdetto: la linea è libera. Un bit 0 (TXD BASSO) interdice Q1, R6+R7 pilotano la base di Q2 e Q2 porta DATA bassa attraverso R1. Due inversioni = la stessa logica del TX dell'FTDI, quindi nessuna inversione in FT_Prog. Livello basso ≈ 0,1 V + R1 × corrente del bus (≈0,2–0,4 V con un pull-up del bus da 2–10 kΩ).

    Polarità (identica nella rev A e nella rev B – entrambe non invertenti):

    Stato UARTTXDrev A: uscita 74LVC1G07rev B: Q1rev B: Q2Linea DATA
    riposo / bit di stop / bit 1ALTOalta impedenza (libera)conduceinterdettoALTA (pull-up del bus)
    bit di start / bit 0BASSOporta bassainterdettoconduceBASSA

    Uno stadio a singolo transistor o open-drain, da solo, invertirebbe (base ALTA → linea BASSA); il 74LVC1G07 contiene buffer + open drain (non invertente: il piccolo rombo sul suo simbolo indica l'uscita open-drain, non è un cerchietto di inversione), e la rev B usa Q1 per annullare l'inversione di Q2. Uno stadio invertente terrebbe il bus BASSO ogni volta che l'UART è a riposo – vedi «Perché la polarità è importante».

  • RX – Q3 è il classico traslatore di livello a MOSFET. Quando qualcosa porta DATA bassa, prima il diodo intrinseco di Q3 e poi il suo canale portano bassa RXD; quando DATA è alta (5 V o anche 24 V), Q3 è interdetto e R2 tiene RXD a 5 V. RXD vede quindi sempre e solo 0–5 V, e vede la linea reale, così ogni byte che trasmettiamo torna indietro (eco) e VetteALDL lo controlla byte per byte.
  • Non alimentato – con l'USB scollegato Q1/Q2 non ricevono corrente di base e il gate di Q3 è a 0 V, quindi il cavo è davvero invisibile all'auto (la rev A caricava ancora il bus tramite R3 e l'ingresso RXD).
  • Il loopback al banco funziona senza auto: Q2 porta basso il filo DATA scollegato, Q3 lo passa a RXD.

Perché la polarità è importante

Un'UART a riposo sta ALTA (mark) e un byte inizia con un bit di start BASSO; anche la linea ALDL a riposo è ALTA e i moduli la portano BASSA. Quindi la linea deve seguire direttamente TXD. Se uno stadio invertisse:

  • il bus resterebbe BASSO per tutto il tempo in cui l'app non trasmette – il CCM perde l'ECM (codice 41), il quadro strumenti perde i dati dell'ECM e nessuno può più comunicare;
  • ogni byte arriverebbe all'auto invertito (bit di start ALTO = nessun bit di start), quindi non verrebbe capito nulla;
  • «correggere» il problema con «Invert TXD» di FT_Prog è fragile: prima che l'FTDI carichi la sua EEPROM (inserimento, reset USB, portatile scollegato) la linea verrebbe di nuovo portata BASSA.

La Diagnosi connessione se ne accorge al banco (passo 2: linea bloccata bassa / eco invertita) e dalla EEPROM (passo 1: «linee invertite»).

Cosa succede se 12 V (o più) arrivano al pin dati

L'ECM di per sé non mette mai 12 V sulla linea dati ALDL (vedi sotto), ma può succedere con un pin sbagliato, una spina inserita sfalsata di un pin, il pin G di prova della pompa carburante sulle auto 1984–89, il pin 16 (batteria) del DLC a 16 pin o un guasto del cablaggio.

Tensione su DATARev BRev A (74LVC1G07 + diodo di clamp)
12–16 V, a riposonon conduce nulla (Q2 40 V, Q3 50 V, D1 24 V di stand-off); R2 tiene RXD a 5 Vil diodo di clamp assorbe ampere da una sorgente a bassa impedenza e brucia; U2 (max. assoluto 6,5 V) riceve ~55 mA attraverso R1 e muore
12–16 V durante la trasmissionecorrente di Q2 limitata dal pilotaggio di base a ~15–40 mA; RX vede la linea bloccata ALTA → errore di eco → l'app smette di trasmetterecome sopra
24 V (avviamento con i cavi)non conduce nulla (stand-off di D1: 24 V)come sopra
picchi > 27 VD1 limita (≤ 39 V a 10 A, sotto i 40 V di Q2)clamp a ~6–7 V

I vecchi cavi con «TX+RX uniti» e la modifica rapida con BAT85 descritta sotto non sono protetti: i 12 V finirebbero nel pin TX dell'FTDI. Usali solo sul pin giusto.

Com'è fatta la linea dati dentro le centraline dell'auto

La linea ALDL GM a 8192 baud (pin M, 1990–95; pin 9 sul DLC a 16 pin del 1995) non è la K-line/L-line europea ISO 9141 (12 V, usata ad es. da Opel/Vauxhall – per quella il Tech 1 ha una cartuccia KW2000 separata). È un unico filo bidirezionale:

  • ogni modulo (ECM, CCM, ABS, SIR, climatizzatore) ha un'uscita open-collector (NPN) che porta il filo a massa per inviare un bit 0 e lo rilascia per un bit 1;
  • il filo è tirato ai 5 V stabilizzati dell'ECM tramite una resistenza (dell'ordine di 10 kΩ; il valore esatto per il 1227727 non è documentato nelle nostre fonti – se ti serve misuralo, vedi sotto);
  • ogni modulo inoltre ascolta sullo stesso filo (un ingresso a comparatore/transistor), quindi ognuno sente la propria trasmissione – per questo il bus funziona come un «AND cablato» (wired-AND) e per questo il nostro cavo deve solo portare la linea bassa.

La linea a 160 baud (pin E, 1982–88) è anch'essa un'uscita open-collector a 5 V dell'ECM, ma trasmette (a impulsi) solo quando è presente la resistenza da 10 kΩ tra A e B. Alcuni altri sistemi GM dell'epoca usavano una linea seriale a 12 V (l'autotest del Tech 1 prevede perfino «LOW SPEED 12 V SERIAL DATA»); la rev B funziona anche con quelle, perché Q2 e Q3 sopportano 40/50 V.

Per stimare il pull-up della tua auto: quadro acceso, motore spento, misura DATA (M) verso massa (A) con il cavo scollegato – circa 5 V (il traffico del CCM la fa oscillare). Poi metti una resistenza da 10 kΩ tra M e A e misura di nuovo: R_pullup ≈ 10 kΩ × (5 V − V) / V. Fai in fretta – mentre la linea è caricata il CCM può perdere l'ECM e memorizzare il codice 41, che potrai cancellare dopo.

Storia: rev A

La rev A usava un buffer open-drain 74LVC1G07, 4,7 kΩ verso RX, un pull-up da 47 kΩ e un diodo di clamp sulla linea. I disegni precedenti al 26 settembre 2026 mostravano quel diodo al contrario (anodo su DATA = bus tenuto a ~0,6 V) e come TVS da 5,0 V; entrambi gli errori sono stati corretti, e la rev B sostituisce l'intero stadio d'ingresso perché la rev A non sopravvive a 12 V sul pin dati.

Modifica rapida per un cavo esistente con TX+RX uniti

Taglia il TX, inserisci un diodo Schottky (BAT85/1N5817): fascia (catodo) verso TXD, anodo verso la linea ALDL; metti 4,7 kΩ in serie all'RX; scheda a 5 V; tutte le inversioni di FT_Prog disattivate (OFF).

Non è protetta contro 12 V sul pin dati (il diodo lascerebbe passare i 12 V verso il TX dell'FTDI) – usala solo sul pin giusto e costruisci la rev B per qualsiasi soluzione permanente.

ALDL a 12 pin (presa dell'auto, vista dall'abitacolo)

 F  E  D  C  B  A        A = massa           B = abilitazione diagnostica (ECM)
 G  H  J  K  L  M        E = dati 160 baud (1982–89)   M = dati 8192 (1990–95)
                         G–A = diagnosi quadro strumenti 1990–93 (MAI sulle 1984–89: G = pompa carburante)

Procedura di collaudo

  1. Al banco: VetteALDL → Diagnosi connessione, passo 1 (PC e driver) e 2 (loopback) – deve essere pulito al 100 %.
  2. In auto, quadro spento: passo 3 – il filo dati non deve essere su un pin di massa.
  3. Quadro acceso: passo 4 – traffico del CCM visibile, l'ECM risponde.
  4. Qualcosa in rosso → Sessioni e assistenza → Crea pacchetto di supporto.