This is an old revision of the document!
Sistem de Monitorizare RPM via CAN-Bus (OBD-II) cu Shift Light
Introducere
Proiectul reprezintă un sistem hardware-software de diagnoză auto activă, conceput pentru a extrage și interpreta date în timp real de pe magistrala CAN (Controller Area Network) a unui autovehicul.
Ce face: Se conectează la portul OBD-II al mașinii (în cazul de față un Ford Fiesta 2007), interoghează unitatea de control a motorului (ECU) pentru valoarea turației (RPM), procesează pachetele de date și le afișează pe un ecran LCD, controlând simultan un sistem de avertizare vizuală tip “Shift Light” format din 3 LED-uri.
Scopul lui: Realizarea unui instrument “standalone” pentru monitorizarea performanțelor motorului și asistarea șoferului pentru schimbarea optimă a treptelor de viteză.
Ideea de la care am pornit: Dorința de a decoda și vizualiza traficul intern al mașinii (o rețea industrială complexă, extrem de zgomotoasă și aglomerată) fără a folosi testere comerciale (gen ELM327), ci comunicând nativ prin microcontroler.
Utilitate: Demonstrează conceptele critice de rețele auto, gestiunea corectă a întreruperilor hardware pentru prevenirea pierderii de pachete și necesitatea izolării și stabilizării alimentării auto (12V → 5V) prin convertoare în comutație.
Descriere generală
Arhitectura sistemului este modulară, fiecare protocol (CAN, SPI, I2C, UART) având un rol bine definit:
Sursa de alimentare auto (OBD-II Pin 16): Furnizează aproximativ 12-14.4V (bateria auto/alternator).
Modul Step-Down DC-DC (MP1584EN): Preia voltajul instabil al mașinii și îl coboară eficient, prin comutație (fără disipare termică excesivă), la un nivel logic stabil de 5.0V necesar microcontrolerului și ecranului.
Transceiver & Controller CAN (MCP2515 + TJA1050): Partea de transceiver (TJA1050) transformă semnalele diferențiale (CAN_H și CAN_L) în biți RX/TX. Partea de controller (MCP2515) stochează pachetele în buffere și anunță microcontrolerul printr-un pin de întrerupere hardware (INT).
Unitatea de procesare (ATmega328P Xplained Mini): Comunică prin SPI cu modulul CAN pentru a trimite cereri (PID-uri) și a citi buffere. Rulează un timer non-blocant, decodează octeții conform standardului ISO 15765-4 și calculează turația.
Afișajul (LCD 1602 + PCF8574): Primește comenzi prin protocolul I2C (SDA/SCL) de la microcontroler pentru a afișa textul aferent.
Modul Shift Light: Un grup de 3 LED-uri (Verde, Galben, Roșu) acționate pe pinii GPIO ai ATmega328P.
Hardware Design
Listă de piese:
Placă de dezvoltare ATmega328P Xplained Mini
Modul CAN-Bus (Controller MCP2515 + Transceiver TJA1050) (Cristal 8MHz)
Sursă Coborâtoare (Step-Down Buck Converter) MP1584EN
Ecran LCD 1602 cu modul I2C integrat
Modul semafor (sau 3x LED-uri cu rezistențe de 330Ω)
Cablu / Mufă tată OBD-II pigtail
Breadboard și fire conexiune Dupont
Mapare Pini (Conexiuni logice):
SPI (MCP2515): CS → PB2 (Pin 10), MOSI → PB3 (Pin 11), MISO → PB4 (Pin 12), SCK → PB5 (Pin 13)
Interrupt: INT → PD2 (Pin 2) - Configurat pe declanșare FALLING.
I2C (LCD): SDA → PC4, SCL → PC5
GPIO (LED-uri): Verde → PD3 (Pin 3), Galben → PD4 (Pin 4), Roșu → PD5 (Pin 5)
Alimentare: OBD-II Pin 16 & Pin 4 → IN (+/-) Step-Down → OUT (+/-) ajustat pe multimetru la 5.0V → Breadboard Power Rails.
Software Design
Descrierea codului aplicaţiei (firmware):
Rezultate Obţinute
Sistemul a fost testat fizic pe un autoturism Ford Fiesta. A reușit negocierea cu ECU la viteza de 500kbps în modul MCP_NORMAL. Datele au fost citite și afișate fără latențe vizibile. S-a observat sensibilitatea ecranelor LCD la fluctuații de tensiune, problema afișării neclare fiind corectată prin calibrarea precisă a sursei Step-Down cu potențiometru la pragul de 5.0V sub sarcină. Shift-light-ul răspunde instantaneu la turațiile motorului.
Concluzii
Proiectul a dovedit cu succes că accesarea rețelelor CAN din vehicule este posibilă folosind echipamente hardware low-cost, atât timp cât protocolul și zgomotul de pe magistrală sunt corect filtrate software prin buffere și întreruperi. S-a demonstrat importanța stabilizării tensiunii în domeniul automotive și necesitatea scrierii de cod non-blocant pentru sisteme de tip “real-time”.
Download
Jurnal
Etapa 1: Configurare mediu PlatformIO și depanare port USB Mac.
Etapa 2: Interconectare I2C (Ecran LCD) și depanare scanner de adrese.
Etapa 3: Interconectare SPI, setare module și testare cod de bază OBD-II cu LED-uri pe GPIO.
Etapa 4: Testarea pe vehicul real. Rezolvare eroare de blocare a programului datorită întreruperilor suprapuse (citire buffer continuă).
Etapa 5: Integrare sursă alimentare standalone (MP1584EN) de la 12V la 5V, rezolvare probleme de contrast pe ecran.
Bibliografie/Resurse
Resurse Software:
Resurse Hardware:
Datasheet ATmega328P (Microchip).
Datasheet MCP2515 Stand-Alone CAN Controller.
Datasheet MP1584EN Step-Down Converter.
Export to PDF