Lab 4.2 Actuatori - DC Motor
Lucrare de laborator Nr. 4.2: Actuatori Analogici – Control Motor DC (Driver L298)
Scopul lucrării
Realizarea unei aplicații modulare pentru un microcontroler (MCU) care să controleze un motor DC utilizând driverul L298. Comenzile vor fi recepționate prin interfața STDIO (terminal serial sau keypad), iar raportarea parametrilor motorului se va realiza pe interfața serială și/sau afișor LCD.
Obiectivele lucrării
- Familiarizarea cu principiile de control ale motoarelor DC utilizând driverul L298.
- Implementarea controlului analogic (PWM) pentru reglarea puterii aplicate unui motor DC.
- Utilizarea bibliotecii STDIO pentru preluarea comenzilor utilizatorului și raportarea parametrilor de stare.
- Realizarea driverelor pentru periferice (L298, motor, LCD) cu niveluri clare de abstractizare.
- Documentarea arhitecturii software și prezentarea schemelor bloc și schemelor electrice ca parte integrantă a metodologiei de proiectare.
Definirea problemei
Să se realizeze o aplicație în baza de MCU pentru controlul unui motor DC prin intermediul unui driver L298, cu următoarele cerințe:
- Comenzi recepționate prin STDIO (serial sau keypad):
motor set [-100 .. 100]– Setarea directă a puterii și direcției motorului (-100% pentru putere maximă înapoi, 100% înainte, 0 pentru oprire).motor stop– Oprire imediată a motorului.motor max– Setarea puterii la valoarea maximă (100%) în direcția curentă.motor inc– Creșterea incrementală a puterii motorului cu +10% (fără a depăși ±100%).motor dec– Descreșterea incrementală a puterii motorului cu -10% (spre 0%).
-
Control PWM al motorului:
-
Reglarea puterii motorului proporțional cu valoarea setată prin PWM.
-
-
Raportarea stării motorului:
-
Aplicația trebuie să raporteze periodic sau la schimbarea stării parametrii actuali (direcție, putere setată) prin STDIO (printf pe Serial și/sau LCD).
-
-
Structură modulară și abstractizare:
-
Driverele pentru periferice (L298, LCD, Keypad etc.) vor fi organizate pe niveluri de abstractizare, permițând interschimbabilitatea și reutilizarea în proiecte viitoare.
-
Materiale și resurse
Componente hardware:
- Microcontroler (ESP32, Arduino Uno sau similar)
- Motor DC
- Driver L298 (modul L298N)
- Alimentare externă pentru motor (6–12V DC recomandat)
- LCD (2x16, 4x20 sau similar)
- Tastatură matricială 4x4 (opțională, pentru alternative la comenzi seriale)
- Rezistoare (220 Ω pentru LED-uri indicatoare, dacă sunt utilizate)
- Breadboard și cabluri jumper
- Sursă alimentare MCU (USB)
Resurse software:
- Visual Studio Code cu PlatformIO
- Emulator terminal serial (Monitor Serial din PlatformIO, TeraTerm sau Putty)
- Biblioteci specifice (Arduino, LCD, Keypad)
- Simulator hardware (opțional, ex.: Proteus)
Recomandări
- Se recomandă utilizarea unui simulator hardware (ex.: Proteus) pentru validarea inițială a aplicației.
- Implementarea modulară cu fișiere separate pentru fiecare nivel de abstractizare a driverului (control motor, comunicare STDIO, raportare stare etc.).
- Respectarea convențiilor de codare (CamelCase și evitarea „magic numbers”).
Indicații pentru implementare
- Nivel abstractizare drivere:
- Nivelul scăzut: gestionarea directă a pinilor L298 și PWM.
- Nivelul mediu: control logic motor (direcție, putere PWM).
- Nivelul înalt: interfața STDIO și comenzile utilizatorului (interpretare comenzi, validare date).
- Comunicare STDIO:
- Utilizarea clară a
scanf()șiprintf()pentru interfața serială. - Pentru Keypad, realizarea unei interfețe intuitive care să permită setarea incrementală sau directă a puterii motorului.
- Utilizarea clară a
- Taskuri FreeRTOS:
- Implementarea în task-uri FreeRTOS pentru separarea clară a controlului motorului, recepționării comenzilor și raportării periodice a parametrilor.
Cerințe obligatorii
- Respectarea structurii modulare și abstractizarea driverelor periferice.
- Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
- Respectarea formatului raportului conform normelor UTM.
Pontaj
- 50% – Aplicația de bază (control direcție și putere PWM prin comenzi STDIO, LCD/serial).
- 10% – Implementarea corectă și clară a nivelurilor de abstractizare ale driverelor periferice (L298 și motor DC).
- 10% – Utilizarea corectă și eficientă a funcțiilor STDIO (
scanf(),printf()). - 10% – Prezentarea schemelor electrice și a diagramelor bloc arhitecturale.
- 10% – Demonstrarea funcționării fizice complete a soluției implementate.
- 10% – Implementarea unui comportament adițional improvizat (ex.: limitare inteligentă incrementală sau afișarea unui mesaj când se atinge limita maximă/minimă a puterii).
NOTĂ:
Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat!
-
Penalizare: -10% pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
- Cum funcționează driverul L298 în controlul motoarelor DC?
- Care sunt beneficiile comenzilor incrementale de reglare a puterii în aplicațiile embedded?
- Ce se întâmplă dacă se depășește intervalul permis (-100%, 100%) și cum se poate gestiona acest caz?
- De ce este importantă structurarea driverelor periferice pe niveluri de abstractizare diferite?
- Ce considerente trebuie luate în calcul pentru protecția circuitului la comenzi rapide succesive sau inversări bruște ale sensului de rotație?
- 3 April 2020, 12:09 PM