Mi az a mikrovezérlő?
A mikrovezérlő (Microcontroller Unit – MCU) egy olyan integrált áramkör, amely tartalmaz processzort (CPU), memóriát (RAM, Flash), valamint bemeneti/kimeneti portokat (GPIO). Célja, hogy valós idejű vezérlési feladatokat lásson el.
Hol használják?
- Automatizálás és ipari vezérlés
- Okosotthon rendszerek
- Robotika
- Autóipar (ECU rendszerek)
- Beágyazott elektronikai eszközök
Ismertebb platformok
- Arduino – Oktatási és prototípus fejlesztési célra
- Raspberry Pi – Mikrokomputer, Linux alapú rendszer
- ESP32 – WiFi és Bluetooth képes mikrokontroller
- STM32 – Ipari és professzionális alkalmazások
Szenzorok és bemenetek
A mikrovezérlők egyik legfontosabb feladata a szenzoradatok feldolgozása. A szenzorok lehetnek digitális vagy analóg típusúak.
- Nyomógomb (digitális bemenet)
- Potenciométer (analóg bemenet)
- Hőmérséklet szenzor
- Fényérzékelő
- Távolságmérő szenzor
Az analóg bemenetek ADC (Analog to Digital Converter) segítségével alakítják digitális értékké a mért feszültséget.
Arduino mérő és vezérlő rendszer – Részletes bemutatás
A projektet Arduino UNO platformon készítettem, a fejlesztéshez a Wokwi online szimulátort használtam. A programozás C/C++ alapú Arduino nyelven történt.
Fejlesztési környezet
- Platform: Arduino UNO (ATmega328P)
- Programozási nyelv: Arduino (C++ alapú)
- Szimuláció: Wokwi
- Soros kommunikáció: 9600 baud
A program működési logikája
A rendszer két fő részből áll:
- 🔘 Nyomógomb → mérési állapot váltása
- 🎛 Potenciométer → analóg érték beolvasása
- 💡 LED → küszöbérték alapú vezérlés
A kód részletes magyarázata
const int buttonPin = 2; // Nyomógomb digitális bemenet const int ledPin = 9; // LED digitális kimenet const int sensorPin = A0; // Potenciométer analóg bemenet bool measuring = false; // Mérési állapot bool lastButtonState = HIGH; // Előző gombállapot
Konstansok: Meghatározzák melyik lábra mi csatlakozik. measuring: Logikai változó, amely tárolja, hogy aktív-e a mérési mód. lastButtonState: Segít az élérzékelésben (állapotváltozás figyelése).
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
setup() csak egyszer fut le induláskor.
- INPUT_PULLUP: belső felhúzó ellenállás aktiválása
- OUTPUT: LED vezérlés
- Serial.begin: soros kommunikáció indítása
void loop() {
bool buttonState = digitalRead(buttonPin);
if (buttonState == LOW && lastButtonState == HIGH) {
measuring = !measuring;
Serial.println("Allapot valtas!");
}
lastButtonState = buttonState;
A loop() folyamatosan ismétlődik.
- digitalRead() → gomb állapot olvasása
- Élérzékelés: csak akkor vált állapotot, ha HIGH → LOW átmenet történik
- !measuring → logikai negálás (állapotváltás)
if (measuring) {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
if (sensorValue > 500) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
}
analogRead() 0–1023 közötti értéket ad vissza. Ez az ADC (Analog-Digital Converter) működésének eredménye.
- 0 → 0V
- 1023 → 5V
- 500 → kb. 2.5V küszöb
Ha a potenciométer értéke meghaladja az 500-as küszöböt, a LED bekapcsol. Ellenkező esetben kikapcsol.
Kapcsolási rajz
Nehézségek és tanulságok
- INPUT_PULLUP logika megértése (fordított működés)
- Analóg jel értelmezése (0–1023)
- Állapotváltás kezelése (debounce jelenség)
- Soros kommunikáció monitorozása
A projekt segített megérteni az alapvető beágyazott rendszerek működését, valamint a szenzoradat-feldolgozás és vezérlés kapcsolatát.