Skip to content
2026.04.29.
  • F
  • X
  • LinkedIn
  • YouTube
  • Instagram
  • GitHub
TavIR

TavIR

Mikrokontroller világ

  • TavIR Tudástár
  • TavIR WebShop
  • TavIR Fórum
  • Hírek
  • Könyvek
    • Egyszerű elektronika – Kezdőlap
    • ESP8266/ESP32
    • Tippek
      • Tippek-trükkök (AVR)
      • Tippek-trükkök (ESP8266/ESP32)
  • +Gyorstippek
  • +Mélyvíz
  • +Témakereső
  • Kapcsolat
  • Főoldal
  • Cikk
  • AVR alapú Arduino működési ellenőrzése (alaplap-teszt)
  • Tippek-trükkök (AVR)
  • Cikk

AVR alapú Arduino működési ellenőrzése (alaplap-teszt)

Robert 2021.09.13.
tipp alapteszt - Cseh Robert / TavIR - arduino,teszt,mikrokontroller

A mikrokontroller alapú rendszerekben a hobbi és a profi fejlesztő kezében – szinte minden félvezető idővel megsérülhet, hibás lehet. Míg ez a diszkrét vagy céleszközök esetén teszteléssel (működik vagy sem) könnyen megállapítható – addig processzoros rendszerek esetén a komplexitás miatt ez kérdéses lehet.
Arduino esetén – főleg kezdőként – sokszor hajlamosak vagyunk a szoftverre, hardware környezetre fogni a nemműködést. És persze az alap, hogy a processzorlapkára fogunk mindent…

Arduino lapok esetén gyakran felmerül kérdésként, hogy: a lapka jó-e még, nem ártott-e meg neki a legutóbbi rövidzár illetve túláram, vagy egyszerűen csak a műszálas ruhában a feltöltődési szikra. Számos tünet lehet, ami gyanúra ad okot: melegedés, füst, hibázó programfutás, parázsló fényű LED-ek…

ESD and EOS Causes, Differences and Prevention (ESD demaged interconnects)
ESD okok és megelőzés – fém hozzávezetés ESD károsodása (Forrás: ESD and EOS Causes, Differences and Prevention – AN1785 (Microchip))

Hosszú lesz a cikk…. Hiszen több oldalról is vizsgálható a felvetett probléma…

Tartalomjegyzék

Toggle
  • Hozzávalók
  • De hogyan teszteljünk?
  • -1. Tápellátás
  • 0. A soros vonal tesztje
  • 1. Szoftver/bootloader teszt
  • 2. Rendszerfeszültség
  • 3. I/O teszt
    • Reset állapot
    • Kimenetek modellezése
    • Tápfeszültség-trükk
    • Lábak száma és a tesztpanel
    • Analóg rendszerteszt
      • Programkód belső működése
  • 3. Kiegészítő tesztek
    • EEPROM-teszt
    • Hőfokteszt
  • Zárszó
  • Letöltés

Hozzávalók

  • 1x Arduino UNO (R3,CH340) alaplap
  • Ellenállások (470k, 10k)
  • LED-ek többféle színben

Az induláshoz csak néhány dologra van szükség. Lehet, hogy nem mindenre lesz szükség, attól függően, hogy mi van már meg belőle….

De hogyan teszteljünk?

Sok-sok megoldást lehet egy problémára kidolgozni. A cikkben is igyekeztem körüljárni a problémákat több oldalról is – egyre közelebb jutva a probléma megoldásához vagy felderítéséhez.

-1. Tápellátás

A minimális tesztelési követelményt megelőzi, hogy a lapkát feszültség alá helyezve – mutasson legalább minimális életjelet. Ez általában a tápfeszültség visszajelző LED világítása.
Tápellátást a lapok a külső tápcsatlakozón át vagy az USB csatlakozáson keresztül kaphatnak. A tápbemeneten át 7.5V…16V feszültséget adhatunk a lapokra – a belső tüske a pozitív kivezetés (a csatlakozó mérete szabványos: 5.5/2.1 mm).
Az itt bejutó nyers egyenfeszültségből kerül előállításra a rendszer 5V belső feszültsége. Ideális esetben – ha nincs egyéb követelmény a lapka áramfelvételével kapcsolatban – a külső tápfeszültségnek 9V egyenáramot javasolt adni. (Tipp: ugyan a 12V még elfogadható, azonban ekkor a rendszer teljes áramfelvétele lehetőleg 300mA alatt maradjon!) Az 5V rendszer és a bemeneti 9…12V közti szabályzást az esetek 95%-ában ún. áteresztő stabilizátor végzi – ennek alapvető tulajdonsága, hogy a fölösleges teljesítményt hőként adja le (azaz elfűti)…

tipp alapteszt 1 - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
Az Arduino UNO 5V stabilizátor IC (1117-5 / 7805) minimális hűtőfelülete az áramköri lapon lyukgalvanizálva az alsó réteg felé és a hőátadást is lecsökkentve – lakkozva az ónozott rézréteget.

Az elfűtött energia a stabilizátoron fellépő feszültségesés és az átfolyó áramerősség szorzata:

P=(Ube – 5V) *Iaramkor

Az Arduino UNO külső tápfeszültségből 5V belső feszültség előállítása (schematic részlet)
Az Arduino UNO külső tápfeszültségből 5V belső feszültség előállítása (schematic részlet)

A kis méretű és ráadásul lakkozott hőleadó felület miatt hőfokemelkedés indul el és így a szabályozó hővédelme akár be is kapcsolhat! (Tipp: a kisebb teljesítmény elfűtését a 9V külső tápfeszültséggel érhetjük el).

Ha a külső tápfeszültség nem szükséges – vagy úgyis a számítógépről használjuk a lapkát – az USB 5V feszültsége is biztosíthatja a működést. A PC védelme érdekében egy 500mA-es úgynevezett regenerálódó túláramvédő biztosíték került beépítésre (ismert még: polifuse, multifuse néven is), mely a túlzott áramfelvétel esetén a számítógépet megvédi.

Bármelyik külső tápellátást is biztosítjuk a lapka részére – a tápfeszültség-visszajelző LED-nek egyfolytában világítania kell (sőt, még pulzálás sem lehet!). Tipp: Ha az USB vonalon át és a külső táp felől is rendelkezésre áll az áramellátás, akkor a lapka elektronikája automatikusan a külső táplálásra kapcsol át (és ekkor az USB csak a kommunikációért felel).

Fontos! Az áram alá helyezéskor meleg vagy forró alkatrész nem lehet az áramköri lapon!

0. A soros vonal tesztje

Az áramkört a PC-re csatlakoztatva a feltöltési soros portnak meg kell jelennie az eszközkezelőben. Azonban, ha sárga felkiáltójeles eszközként jelenik meg a csatlakoztatott áramkör  (Windows alatt) – akkor meghajtóeszköz-hibával állhatunk szemben. Ebben az esetben a meghajtóprogram frissítése illetve a driver ellenőrzése válik szükségessé…(Tipp: egyes régebbi operációs rendszerek esetén a meghajtóprogram telepítése nem automatikus – a felhasználónak kell megtennie.) Az USB és a sorosport illesztéséről, a működés háttérről az erről szóló tematikus cikkben lehet olvasni: Számítógép USB port – soros illesztés (és minden ami a buktatókkal együtt jár).)

Soros illesztés - eszközkezelő
Az eszközkezelőben a Portok (COM & LPT) kell látszódnia a csatlakoztatott eszköznek.

Az ellenőrzések során nem komplexen az összes rendszert egyszerre kell megvizsgálni – hisz így akár egyetlen kisebb hiba is a teljes rendszer működésképtelenségét mutatja; pedig csak egy-egy rész ellenőrzésével lehetséges lenne a hiba behatárolása. Az Arduino rendszerek kulcs funkciója, hogy a számítógéppel a soros-USB átalakítón keresztül kommunikálni lehet – elsőként ennek működőképességéről kell meggyőződni.

A vizsgálat az PC-USB funkcionális egységre kell hogy kiterjedjen – a processzor és környezete nem szabad, hogy „bekavarjon” a teszt folyamatába! Ehhez két lehetőség kínálkozik: a processzort kivesszük az áramköri lapból (klasszikus DIP tokos UNO esetén ez egyszerűen megoldható) vagy a processzort ún. RESET állapotban tartva kihasználhatjuk, hogy ekkor minden kivezetése bemenetté (illetve tri-state (ún. lebegő) állapotban levővé) válik.

Tipp: RESET gomb nyomva tartása helyett a RESET kivezetést és a GND-t a csatlakozósorban is összeköthetjük.

LoopBack és RESET bekötése
Az UNO lapon a LoopBack (D0-D1) és a RESET (GND-Reset) összekötése.

A tesztelés során a D0 és D1 kivezetéseket (Arduino soros kommunikációs vonala) összekötjük (ún. loopback tesztet hozunk létre). Az Arduino keretrendszerben az Eszközök → Port alatt az áramköri lap által használt soros portot választjuk ki, majd az Arduino terminal emulátorát megnyitva (Arduino → Eszközök → Soros monitor) kiírunk a soros vonalra valamit és elküldjük.

A küldést és a fogadást a Tx illetve Rx LED jelzi azonban a visszajövő adat az Arduino képernyőn nem minden illesztőchip használata esetén jelenik meg (pl. CH340 esetén nem látszik a vett adat)!

1. Szoftver/bootloader teszt

A legelső teszt, hogy a processzorunkkal kommunikálni tudjunk. Ideális esetben az áramkör a gyárilag beépített bootloadere még működik. Ennek ellenőrzése egyszerűen történhet: a Reset gombot megnyomva a D13 (vagy L jelzett) visszajelző LED felvillanással vagy villogással jelzi az üzemszerű működést. (Ha ez nem történik meg, akkor lehetséges hogy a processzor sérült, vagy a bootloader előre beégetett szoftvere hiányzik. Az újraprogramozást az AVR programozása külső programozóval cikk taglalja.)

A bootloader tesztelése a legegyszerűbben az Arduino keretrendszer segítségével történhet meg – valamelyik alapprogram feltöltésével. Ez célszerűen a Blink névre hallgat (Arduino → Fájl → Példák → 01.Basic → Blink útvonalon érhető el).

Az áramköri lap kiválasztása (Eszközök → Alaplap) után a kapcsolódási port (Eszközök → Port) meghatározása következik. Tipp: Az alaplap pontos meghatározása mind a processzort, mind a bootloader működését is meghatározza (pl. Arduino Nano lehet old vagy new bootloaderrel szerelt is!)

673 select board port - Cseh Robert / TavIR - arduino,teszt,mikrokontroller

A mintaprogram feltöltése a Vázlat → Feltöltés menüben indítható. A feltöltés folyamata során a Tx és az Rx LED villogással jelzi a kommunikációt. A sikeres feltöltés végén az Arduino státuszsorában megjelenő Feltöltés kész üzenet jelzi. Hiba esetén piros kiírást látunk a fekete üzenőterületen! (Tipp: A Fájl → Beállítások → Bővebb kimenet mutatása pontban a fordításkor és a feltöltéskor is legyen kipipálva – így a fordítási és a feltöltési üzenetek is láthatóak.)

A sikeres feltöltés után a Blink program feltöltésével ellenőriztük le a bootloader és a feltöltési alapfunkciók működését. A feltöltés után a Blink programban megadott 1 másodperc világítás, 1 másodperc sötét LED a normál működést jelenti.

Blink működése

2. Rendszerfeszültség

Ha már a rendszerfeszültségről volt szó – azok tesztelése sem maradhat el – hiszen ha hiányzik, akkor az ugyanúgy működési problémákat okozhat. A kimutatása egyszerű: a tápfeszültség-kivezetésre 1-1 LED-et teszünk – mintegy visszajelzésként a tápfeszültség és a GND közé (persze védőellenállással).

673 supply led - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
5V; 3V3; Vin (V+) és a GND közt tápfeszültség-figyelés…

Azt, hogy a feszültség értéke megfelelő-e: egy trükkel vizsgálhatjuk nagyon könnyen. Nem, nem egy multiméter. Hanem a látást vesszük alapul, meg azt a trükköt, hogy ha azonos sorozatból származó LED-eken azonos áram folyik át, akkor azonos fényerőt produkálnak. És az emberi szem a fényeket a fényerősség különbségként is érzékeli. A trükk, hogy a LED-eket olyan tartományban használjuk, ahol kis áramváltozás is már nagy fényerőváltozást okoz (áram, mert a LED-ek előtét-ellenállásán és a LED-en levő feszültségesés az bizony áramot hajt át a LED fénykibocsátó félvezető rétegén keresztül.) Az ideális a Piros színű LED – kb. 2-3 mA átfolyó áramnál.
A vizsgálandó tápfeszültségek:  a 3.3V, 5V illetve, ha szükséges a külső betáp feszültsége. Így a kapcsolás részlete a háromféle feszültség figyelésére:

3V3, 5V, Vcc (12V), Vref figyelése...

Tipp (utolsó LED): az Aref belső ADC referenciafeszültsége is ellenőrizhető. Itt beállításfüggő a névleges Aref feszültsége: chiptől és beállítástól függően 1.1V vagy 2.56V vagy 5V lehet. (A kivezetés terhelhetősége ~5mA!). Az ábrán VCCINT-ként jelölve.
Az I/O tesztek vizuális ellenőrzésekor nem csak az adott kivezetés működőképességét láthatjuk, hanem, az esetleges föld-, táp- vagy szomszédos kivezetésekkel való zárlat is láthatóvá válik….

3. I/O teszt

Az áramköri lapok leggyakoribb meghibásodása a ki/bemenetek sérülése. Ezt okozhatja túlterhelés, rövidzár, túlfeszültség, sztatikus kisülés, induktív áramlökés, meg még jónéhány károsító hatás. A ki-/bemenetek a mikrokontroller alapú rendszerek működésének alapját képezik, hiszen a külvilág fele ezeken a kivezetéseken át lehet kommunikálni. A ki- és bemenetek az angol szaknyelvből származóan Input-Output (vagy rövidítve I/O) néven ismertek.

UNO pinout
Arduino Uno ki-/bemenetek jelölése (a funkciók feltüntetésével)

Tipp: A D0/D1 kivezetés funkcionálisan már tesztelésre került, hiszen a programkód ezen át tölthető fel.

A legegyszerűbb I/O funkcionális teszt, hogy az adott kivezetést kimenetre kapcsolva magas illetve alacsony szintre kapcsoljuk és ennek meglétét ellenőrizzük. Ha ide egy LED-sort kapcsolunk, akkor gyakorlatilag egy futófényt hozhatunk létre. Ha a kimenetre mind a magas, mind az alacsony állapotra egy LED-et kötünk be, akkor alacsonyra és magasra állítva is kigyújthatunk egy LED-et. Ha a kivezetés szakadt vagy bemenetre állított, akkor mindkét LED halványan világít. Ez így leírva bonyolult, de a megvalósítás kapcsolási rajza szemléletessé teszi:

I/O kivezetés tesztkapcsolása
I/O kivezetés tesztkapcsolása

A kontroller minden kivezetése alapesetben bemeneti állapotban található  – Reset után a standard, belső funkcionális hardware alapinicializálás miatt (lásd bővebben a kontroller adatlapjában). Ezt az alapállapotot természetesen utána a futó programból át lehet állítani.

Reset állapot

Fontos! A reset gombot nyomva tartva van a mikrokontroller Reset állapotban tartható. A gomb elengedése után a bootloader programja kezd futni – ebben a programban a D13 visszajelző LED kimeneti állapotba kerül, a D0/D1 kivezetés pedig a soros kommunikációhoz inicializálódik.

A haladó információk iránt érdeklődőknek egy kis kiegészítés:673 halalfej - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
A reset gomb elengedése után (vagy a tápfeszültség megjelenésekor) az órajel stabilizálódik (Ennek ideje a kontroller konfigurációs biztosítékbiteknél 65msec + 254 órajel az Arduinohoz konfigurálás esetén). Ezzel párhuzamosan a tápfeszültség is figyelésre kerül és ha adott feszültségszint alatt van, akkor a kontroller továbbra is reset állapotban marad. Ez a tápfeszültségfüggő reset-figyelés az ún. BOD (BrownOutDetect). Ez a feszültségszint az 5V rendszerek esetén 4.3V-ra van konfigurálva. Ezért indul újra a chip például nagyobb relék meghúzásakor fellépő feszültségesés esetén.
A reset állapotot sok esemény kiválthatja – például ezek a lehetőségek az Atmega328P adatlapjából :

673 datasheet reset - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
Ezen 4-féle lehetőség mind RESET állapotot hoz létre:

  • Power on reset (bekapcsolás/tápfeszültség megjelenése)
  • WatchDogTimer reset
  • Brown Out reset (feszültségfigyelés)
  • Külső reset

Kimenetek modellezése

A kimenetek ellenőrzése könnyen modellezhető. Ehhez elég megnézni az adatlap vonatkozó részét:

673 io internal - Cseh Robert / TavIR - arduino,teszt,mikrokontroller

Haladóknak...Az I/O kivezetések alapesetben bemenetek (kikapcsolt felhúzó-ellenállással), így a kivezetésen levő kettős-LED-ek halványan világítanak. A kimenetek beállítása a főprogram elején megtörténik, ugyanis a bootloader által a D0/D1 kivezetések sorosporti beállítását vissza kell állítani az alapértelmezett bemeneti I/O funkcióra (mert ugye bekapcsoláskor a bootloader – mint program, – már lefutott és átállított pár beállítást).

A teszt során a vizsgált kivezetést kimenetre kell állítani és magas/alacsony szintet adni rá. A működést szemmel lehet tesztelni.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void setup() {
  Serial.begin(9600);
  Serial.end();  //A D0 és D1 kivezetés felszabadul
  for(int i=0; i<19; i++){
    pinMode(i,OUTPUT);
  }
}
 
void loop() {
  for (int i=0;i<19;i++){
    digitalWrite(i,HIGH);
    delay(100);
    digitalWrite(i,LOW);
  }
}

A könnyebb illetve gyorsabb teszthez egyszerű minták is beállíthatóak – így a rendellenes működés könnyebben észrevehető (például a felváltva futó fény):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
void setup() {
  Serial.begin(9600);
  Serial.end();    //A D0 és D1 kivezetés felszabadul
  for(int i=0; i&lt;19; i++){
    pinMode(i,OUTPUT);
  }
}
 
void loop() {
  for (int i=0;i&lt;19;i++){
    if ((i mod 2)== 0) {
      digitalWrite(i,HIGH);
      }
    else
      {
      digitalWrite(i,LOW);
      }
    delay(100);
    if ((i mod 2)== 0) {
      digitalWrite(i,LOW);
      }
    else
      {
      digitalWrite(i,HIGH);
      }
  }
  for (int i=1;i&lt;19;i++){
    if ((i mod 2)== 1) {
      digitalWrite(i,HIGH);
      }
    else
      {
      digitalWrite(i,LOW);
      }
    delay(100);
    if ((i mod 2)== 1) {
      digitalWrite(i,LOW);
      }
    else
      {
      digitalWrite(i,HIGH);
      }
  }
}

→ A teljes program ide kattintva letölthető. (Hosszú lenne ide beilleszteni.)

A programkódok trükkje, hogy az összes funkcionális kivezetés használható digitális I/O lábként (kivéve az Atmega328P A7/A6 lába a speciális pro mini esetén.).
A serial.* utasítások magyarázata az Arduino súgóban vagy a 60+15 nap alatt tanfolyam keretében megismerhető.

Tápfeszültség-trükk

Oppsz, egy trükk
Oppsz, egy trükk!

Ha a tesztpanelt több alaplapon is használni szeretnénk, akkor univerzálisnak kell lennie. Ennek egyik sarokköve azonban, hogy egyes panelek 3.3V rendszerfeszültségűek és a bemenetein nem (vagy nem mindegyiken) viselik el az 5V feszültséget (ilyen alappanelek: Arduino Due, ESP8266/ESP32 alapú panelek, STM32 chipcsaládra épülő lapok). Az Arduino standard panelek az R3 lábkiosztás bevezetésével a rendszerfeszültséget megjelenítik az IORef lábon! Azaz a LED-ek közösített pozitív ágát elég ide kötni az 5V rendszer helyett… De ennek a következménye az, hogy a két LED működtetését meg kell tudni oldani a 3.3V tápfeszültségről.

Az IORef (VccIO) közös tápfeszültség a LED-ekhez.
Az IORef (VccIO) közös tápfeszültség a LED-ekhez.

Ebben a kialakításban csak a piros LED jöhet szóba, mivel ezek nyitófeszültsége a legalacsonyabb: 1.4…1.6V (Tipp: Infravörös fényben ha látunk, akkor az infraLED is megfelelő a maga ~1.2V nyitófeszültségével…). Jelen megvalósításban (lebegő I/O kivezetés esetén) a 2 db piros LED világít és a maradék feszültség: 3.3V – (2 x 1.5V) = 0.3V. Az áramkorlátozó ellenállás értéke így: 0.3V/1mA = 300Ohm. Ezt igazságosan  kétfelé osztva kb. 2×150 Ohmos lesz a két ellenállás. Vagy hasonló értékű, ami a fiókban van… (100…220Ohm). Így ha az I/O kivezetésen magas vagy alacsony feszültség jelenik meg, akkor a LED-en átfolyó áram: I=(3.3V-1.4V)/100Ohm =19mA.

Optikailag, így ha az I/O kivezetés bemenet/lebeg, akkor a LED-eken ~1mA áram folyik át, míg alacsony vagy magas szinten tartott I/O kivezetés esetén ~15mA. Így a LED-ek fényereje is utal arra, hogy épp milyen állapotban van a kivezetés.

Persze, ha 3.3V-os paneleket nem kell tesztelni, akkor ez az eszmefuttatás csak egy oldalági kitérő volt…. (ami ugyanúgy alkalmas 5V rendszerek esetére is – az ellenállás javasolt értéke ekkor 2 x 1kOhm).

Lábak száma és a tesztpanel

Persze a tesztekhez nem szükséges 1000+1 shield kivitelű tesztpanelt gyártani minden egyes lapkához – a Mega shield megfelel az összes Mega, Uno, Leonardo lábkiosztású áramköri laphoz; ahogyan a Pro mini – Pro Micro lapokhoz is elég lehet egy egyszerű csupalyuk NyÁK-lapocska. Némi trükkel ezen a csupalyuk panelen a NodeMCU / D1 mini család tesztáramköre is összehozható…

1 LED-soros tesztpanel UNO kialakításhoz
1 LED-soros tesztpanel UNO kialakításhoz (kísérleti/DEMO példány)

 

Analóg rendszerteszt

A kapcsolás lényege – egyetlen lábcsoporton keresztül bemutatva…

A láb
A láb „jóság” mérése

A mérés három alapelven nyugszik:

  • A bemenetre konfigurált kivezetések nagyimpedanciás, de legalábbis MegaOhm bemeneti ellenállást képviselnek (nem terhelik a rákapcsolt külső feszültségszintű (nagy árammal meghajtott jeleket)),
  • Kimenetként erős meghajtást képviselnek, akár 20mA áramot is átküldhetünk rajtuk,
  • Az analóg bemenet >10k bemeneti ellenállású, ugyanakkor ha nagyobb bemeneti ellenállású eszköz mérésére használjuk – csak kimértékben lesz zavarérzékeny és nem romlik jelentősen a pontossága sem.

A mérési trükk: vegyünk (legalább) 3 kivezetést és ezeket azonos ellenállással kössük össze. És a közös pontot egy minimum 15x nagyobb ellenállásból álló ellenállásosztóval fél tápfeszültségere húzzuk. Így a közös pont nem „lebeg” ha mindhárom láb bemenet (input) akkor sem – ugyanakkor a 3 kimenetre állított láb az ellenállásokon keresztül el tudja húzni a közös ponti feszültségszintet. És ezt a közös pontban lévő feszültséget a beépített analóg bemeneti lábra kapcsolva mérhetjük…

 1234567
D7x100010
D6xx10110
D5xxx1110
A0 (Vcc)1/2 Vcc1 Vcc1/2 Vcc1/3 Vcc2/3 Vcc1 Vcc0 GND

Az egyes állapotok igazságtáblázata a bemeneti lábak függvényében:

  • x – Bemenet
  • 1 – Logikai H kimenet
  • 0 – Logikai 0 kimenet
  • A0 – az analóg bemeneten mérhető feszültség (Vcc-arányban)

Tipp: a feszültségeket az IOref lábhoz képest is lehet mérni (Vcc helyett a közös pont az IOref) mérjük – így a 3.3V és 5V rendszerek is egyszerűen mérhetőek… Fontos azonban tudni, hogy a mért feszültségtartománynak a kiértékeléshez a GND és a Vcc közt kell lennie!

Programkód belső működése

A program komplex a működése során a D0/D1 kivezetésen írja vissza a PC felé az eredményt, valamint a dedikált analóg kivezetésen át történik a mérés és ehhez D2 és D3  kivezetések adják a két referencia digit kivezetéseket.

A program több fő részre tagozódik:

  • TEST 001 – az analóg méréshez a kivezetés nem sérült-e?
  • TEST 002 – a digitális lábak H szintje megfelelő-e?
  • TEST 003 – a digitális lábak L szintje megfelelő-e?
  • TEST 004 – az analóg lábak digitális H szintje megfelelő-e?
  • TEST 005 – az analóg lábak digitális L szintje megfelelő-e?
  • TEST 006 – analóg lábak analóg feszültség-mérése megfelelő-e (közép-feszültség – 2.5V)?
  • TEST 007 – analóg lábak analóg feszültség-mérése megfelelő-e (felső-feszültség – 3.33V)?
  • TEST 008 – analóg lábak analóg feszültség-mérése megfelelő-e (alsó-feszültség – 1.66V)?

A feltöltött kód kétféle módú működést tud:

  • Soros vonalon a részeredményeket visszaírja és kiértékel, és
  • Vak (soros kivezetés nélküli) módban az Ok-/hiba-kódot elvillogja.

Az eredmény képe (soros vonal):

Tesztfuttatás - hibás!
A teszt hibára futott…

És a hiba (D6 és D7 közti rövidzár) megkeresése és eltávolítása után:

Tesztfuttatás - rendben
A teszt most már sikeres, a korábbi rövidzár megszüntetésre került.

→ A teljes program ide kattintva letölthető. (Hosszú lenne ide beilleszteni.)

A digitális és analóg kivezetések ellenőrzése az alábbi logika alapján történik (lásd a programkódban sorról-sorra ellenőrizve):

  • az analóg jel mérése: A0 kivezetésen történik,
  • a D0/D1 kivezetések működőképességét feltételezzük (soros kommunikáció / program feltöltése miatt),
  • A digitális kimeneteken a kapcsolgatott ellenállások a D2, D3 kivezetéseken vannak (alap-ellenállások) és ezeket lehet kombinálni a D4…D19 kivezetéseken lévőkkel,
  • Az analóg jelszinteket az A1…A5 kivezetéseken is meg lehet mérni  (ADC működési teszt).

3. Kiegészítő tesztek

A rendszerben néhány beépített eszköz még rendelkezésre áll, hogy funkcionális tesztet hajtsunk végre. A meghibásodások során az I/O hibák után a belső adattárolási hibák következnek: SRAM, Flash, EEPROM.

Az SRAM meghibásodás inkább véletlenszerű fagyásokat okoz – és az átmenetileg tárolt tartalom sérül meg pl. röntgen, háttérsugárzás, BOD nélküli tápfeszültség-ingadozás miatt. De fontos még a memóriakezelés esetleges hibakezelése is – itt az ún. heap elfogyása kritikus. Ez nem a chip hardware meghibásodására vezethető vissza, hanem a memória kihasználásának korlátaira. Bővebben a →Memóriakezelési problémák cikkben olvashatsz róla…

A Flash (program) memória sérülése programozási anomáliára vezethető vissza – például tápfeszültség-ingadozás programozás alatt. Fontos! Az újabb bootloader (Uno, Mega, stb – optiboot néven is fut, 512byte méret) nem véges tényleges Flash memória visszaolvasását ellenőrzéskor! Az összehasonlításra küldött adatot  adatot adja csak vissza – nem a ténylegesen Flashba beírt adatot! A régi (old boootloader: diecimila, duemilanove, nano alaplapok esetén) végez csak tényleges Flash memóriába beírás utáni kiolvasási ellenőrzést!

EEPROM-teszt

Az EEPROM tesztelése viszonylag egyszerű, hiszem a futó programból lehet a háttértár tartalmát byte szinten módosítani. A legegyszerűbb ellenőrzés, hogy az adott memóriarekeszbe beírt adatot visszaolvassuk és összehasonlítjuk, hogy tényleg ezt írtuk-e be.

Fontos! Az EEPROM-ok élettartama nem végtelen – legkedvezőtlenebb esetben cellánként 100.000 írást garantál az adatlapja! (Cellánként és nem a teljes EEPROM területre – összesen)! 

Az EEPROM írási teszt eredménye:

673 eprom ok - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
EEPROM írás rendben…

vagy pedig hiba esetén:

673 eprom error - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
EEPROM teszt – hiba a 1023. címen!

→ A teljes program ide kattintva letölthető. (Hosszú lenne ide beilleszteni.)

Hőfokteszt

Néhány kontroller belső hőmérővel is rendelkezik. Ezek működésének alapja, hogy egy belső diódán eső feszültség-változását lehet mérni. A szilicium-dióda esetén a változás kb. 10mV/C. A gyártási szórás miatt abszolút hőmérsékletmérésre nem alkalmas, csak a hőmérséklet változását lehet vele követni. Az analóg rendszerben érhető el – ATMega328P mikrokontroller esetén a 8. ADC csatornára van kötve.

673 adc bemenetek - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
Az ATMega328P ADC blokkvázlat szintű felépítése az adatlap alapján

A folyamatos hőméréssel kontrollálható a chip működése: a hőfok megszaladása jelentős (külső) áramra, zárlatra utal. Így elegendő a processzor belső hőfokteszt többszöri lefutása során ellenőrizni a hőfok emelkedését. De mely chipekben van hőfokszenzor?

    • ATmega8 : No
    • ATmega8L : No
    • ATmega8A : No
    • ATmega168 : No
    • ATmega168A : Yes
    • ATmega168P : Yes
    • ATmega328 : Yes
    • ATmega328P : Yes
    • ATmega1280 (Arduino Mega) : No
    • ATmega2560 (Arduino Mega 2560) : No
    • ATmega32U4 (Arduino Leonardo) : Yes

A programkód is egyszerű:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void setup()
{
  Serial.begin(9600);
  ADMUX = 0xC8; // turn on internal reference, right-shift ADC buffer, ADC channel = internal temp sensor
  delay(10);  // wait a sec for the analog reference to stabilize
}
 
void loop()
{
  Serial.println(averageTemperature()); // so we can debug
  delay(500); // just to slow things down a bit
}
 
int readTemperature()
{
  ADCSRA |= _BV(ADSC); // start the conversion
  while (bit_is_set(ADCSRA, ADSC)); // ADSC is cleared when the conversion finishes
  return (ADCL | (ADCH &lt;&lt; 8)) - 342; // combine bytes &amp; correct for temp offset (approximate)}
}
 
float averageTemperature()
{
  readTemperature(); // discard first sample (never hurts to be safe)
 
  float averageTemp; // create a float to hold running average
  for (int i = 1; i &lt; 1000; i++) // start at 1 so we dont divide by 0
    averageTemp += ((readTemperature() - averageTemp)/(float)i); // get next sample, calculate running average
 
  return averageTemp; // return average temperature reading
}

Ez a processzor belső hőmérsékletének mérése nem használható a környezeti hőmérséklet leolvasására – mivel a működési melegedés is meghamisítja a mérést. Ha mégis szükség van a környezet monitorozására , az esetben lehetséges, ha a chip belső hőmérője:

  • frissen bekapcsolás után, vagy
  • 10 perc alacsony áramfelvételű (idle/sleep) módban tartás után

kerül kiolvasásra. A belső hőmérsékletszenzor által visszaadott érték akkor is használható, ha a normál üzemi hőmérséklet és a környezeti hőmérséklet ismert. Ekkor a normál működés közben (terhelés és számításfüggő!) a belső hőmérséklet 1…5 fokkal emelkedik – az normál állapot. Azonban a 20 fokos emelkedés már működési problémát jelez.

Tipp: Magas hőmérsékletű helyzetekben a kalibrált hőmérséklet-leolvasás megelőzheti az áramkör illetve a teljes elektronika károsodását. A legtöbb AVR lapka működési hőmérséklethatára 85 Celsius fok – így ha a belső hőmérséklet 80 fokot eléri – egyszerűen vész-üzemmódú lekapcsolást kell indtani és hibajelet generálni.

Fontos! A belső mérődióda abszolút hőfokértéke nem pontos! A gyártási szórása magas, ezért csak a változás monitorozásra alkalmas – a korrekcióval lehetséges a kapott értéket módosítani.

673 internal temperature - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
Belső hőfok mérése – kézrátétellel.

Az eredmény soros monitoron követhető. A változás oka az volt, hogy a ATMega328P chipőre az ujjamat rátettem, és a testhőmérséklet ~35 fokos felülete is melegítette a chip házát. Még semmi drasztikus beavatkozást nem végeztem. Azonban rövidzár vagy egyéb drasztikus hiba esetén a hőfokemelkedés 1-5 fok is lehet másodpercenként!

Tipp: az AVR chipek I/O kivezetései 20…40mA terhelhetőségűek és túlterhelés esetén áramgenerátor jellegű működésűek lesznek. Egyéb kontrollerek esetén is az adatlapokat kell mintaként tekinteni! Azonban az adatlapban megadott limitek összetettek: AVR esetén a táplábak, a porton levő áramigények összessége és az egyedi kivezetések áram-átvezetési képességei is különböző mértékben korlátozottak! Egyes kontrollerek esetén a magas illetve az alacsony szintű kimeneti állapotok terhelhetősége is eltérő lehet!

Zárszó

A korábbi tesztek során oda kellett figyelni, hogy a teszt teljesen jól fut-e le, és nem is egy számítógép érzékeli az eredményt. Így sok alappanel tesztje egy idő után nagyon fárasztó  sok mindenre oda kell figyelni. Sokkal egyszerűbb, hogyha egy előszűréssel a jó/nemjó eredményt pl. egy LED elvillogja a panelen. A holmi úgyis tele van LED-ekkel gyárilag is – erre a célra akár a D13 kivezetésen levő LED is használható.

A trükk, hogy a LED-en a villogás a kivezetés állapotával összefügg, yg a tesztelések során ezt is időnként figyelembe kellett venni. Kettős funkció, hogy épp mérünk rajta, de ugyanakkor a villogással is jelzi a folyamatot – ez a logika nem működik (pl. I/O teszteléskor biztosan hibás eredményt kapnánk).

Azonban a tesztfolyamat végén, amikor már további tesztelés nem lesz – a D13 kivezetés LEDje már felhasználható ilyen célra. Egyszerűen kimenetre állítva a jó/nemjó állapotot villogással jelezheti (pl. jó: lassú villogás, hibás eredmény: gyors villogás). Ha pedig a részletes eredményeket kell ellenőrizni és behatárolni a hibát – ott elegendő a soros monitoron át elolvasni a részletes hibaüzenetet….

Ez a nem is olyan rövid leírás az AVR alapú lapokat járta körbe. De az Arduino alá már rengeteg egyéb rendszer is illeszthető – azok esetén szintén hasonló logikával lehetséges a jóságteszteket alkalmazni (persze igazodva a chipek sajátságaihoz).

Letöltés

A cikkben szereplő programkódok →ide kattintva letölthetőek. Jelenlegi verzió:1.0
A belső tartalma:

  • EEPROM teszt
  • Hőmérő-teszt
  • ArduinoTestSuite (eljáráskönyvtár)
  • I/O LED alapú teszt
  • ADC alapú alappanel teszt

 

Felhasznált források

  • How to check my Arduino board is working or dead?
  • Adafruit Learning System
  • Software start up and test of Arduino Uno

Kapcsolódó cikkek:

– Jön az Arduino Nap 2026 – és idén is érdemes bekapcsolódni (2026. március 28. 14:00)
– Arduino napok (Videoarchívum)
– Készül a magyar Arduino Day 2026 – interjú a szervezés kezdetéről
– Hőmérséklet és páratartalom mérése Arduino-val: DHT11 (KY-015)
– Hogyan válassz mikrokontrollert? – Részletes útmutató kezdőknek és haladóknak

Tags: alappanel Arduino nap eeprom hőmérő teszt

Post navigation

Előző UNO, tükesor és alappanel (meg a távtartó)
Következő Arduino, mint programozó és a bootloader (ArduinoISP)

Kapcsolódó anyagok

ESP-IDF 6.0: nagy ugrás vagy fájdalmas nagytakarítás? 11123 ispidf 55 60 melyviz - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
  • Cikk
  • Mélyvíz

ESP-IDF 6.0: nagy ugrás vagy fájdalmas nagytakarítás?

2026.03.21.
ESP-IDF 6.0 laikus szemmel: mikor válts, mikor ne? Elektronikai munkaasztalon működő ESP32 mikrokontroller és kódoló laptop, amely az ESP-IDF firmware fejlesztés és beágyazott rendszer tanulás folyamatát szemlélteti.
  • Cikk

ESP-IDF 6.0 laikus szemmel: mikor válts, mikor ne?

2026.03.20.
Arduino napok (Videoarchívum) ardudays2025 logo 1024 - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
  • Cikk

Arduino napok (Videoarchívum)

2026.02.28.

Hírlevél

Hogy az újdonságokról első kézből értesülj:
→ Feliratkozás a Hírlevélre

Ingyenes tanfolyam

60 nap alatt Arduino - az ingyenes tanfolyam
→ Kattints ide és iratkozz fel!
60 nap alatt Arduino

Szeretnél egy lépéssel a többiek előtt járni?

Ne hagyd ki a legújabb tanfolyamokat, amik még csak most bontogatják szárnyaikat.

Legyél te az első! Tanfolyamok

Alkatrész-tár

→ TavIR WebShop
→ Tanulókészletek

Témakörök

  • Cikk (58)
  • Hír (42)
  • Könyv (38)
    • Egyszerű elektronika tippek (18)
    • ESP8266/ESP32 (1)
    • Mélyvíz (12)
    • Mit ne használjunk Arduino projektekben? (6)
  • OmegaFlux (2)
  • Tippek (60)
    • Gyorstippek (20)
    • Tippek-trükkök (AVR) (21)
    • Tippek-trükkök (ESP8266/ESP32) (5)

Fórum

  • Apróhirdetés - csere-bere :: Re: Elajándékoznám mérnökhallgatónak ami a fotón látható!
  • Apróhirdetés - csere-bere :: Re: Elajándékoznám mérnökhallgatónak ami a fotón látható!
  • Apróhirdetés - csere-bere :: Elajándékoznám mérnökhallgatónak ami a fotón látható!

TavIR WebShop

→ Tovább a TavIR WebShopba
E22-900T22U USB LoRa modul
E22-900T22U USB LoRa modul

Az Ebyte E22-900T22U USB LoRa modul USB csatlakozású, LoRa szórt [...]

RGB LED-sor vezérlő (GLEDOPTO mini, 5V-24V, WLED, ESP32, MIC)
RGB LED-sor vezérlő (GLEDOPTO mini, 5V-24V, WLED, ESP32, MIC)

ESP32 WLED digitális LED szalagvezérlő mikrofonnal - címezhető WS2812B, WS2815, [...]

Mini servomotor körbeforgó (SG90; 360 fok)
Mini servomotor körbeforgó (SG90; 360 fok)

Az MG90S /körbeforgó egy 9 g-os, folyamatos forgású mikro szervómotor, [...]

6 in 1 kombinált soros illesztő
6 in 1 kombinált soros illesztő

USB-TTL, USB-RS232, USB-RS485, TTL-RS232, TTL-RS485 és RS232-RS485 konverzió egyetlen panelen [...]

JST-SH 1.0 csatlakozó 10 pin, 10cm kábel szerelt összekötő (1mm)
JST-SH 1.0 csatlakozó 10 pin, 10cm kábel szerelt összekötő (1mm)

Ha kompakt elektronikát építesz, előbb-utóbb eljön az a pillanat, amikor [...]

Csupalyuk shield Mega (Arduino Mega protoshield + 170 pontos mini breadboard)
Csupalyuk shield Mega (Arduino Mega protoshield + 170 pontos mini breadboard)

Ha Arduino Mega 2560-ra építesz, akkor ismerős a helyzet: már [...]

JOINT TECH - A1250 - 1.25 csatlakozó, 2 pin, 20cm, szerelt anya (1.25mm, micro, lengő)
JOINT TECH - A1250 - 1.25 csatlakozó, 2 pin, 20cm, szerelt anya (1.25mm, micro, lengő)

Amikor egy kompakt elektronikában már nem fér el kényelmesen a [...]

INMP441 I2S MEMS mikrofon modul (3,3 V / mindenirányú]
INMP441 I2S MEMS mikrofon modul (3,3 V / mindenirányú]

Ha digitális hangot szeretnél mikrokontrollerbe vagy egylapkás számítógépbe vinni külön [...]

Heltec - WiFi LoRa 32 V3 fehér ház/tok
Heltec - WiFi LoRa 32 V3 fehér ház/tok

Amikor a Heltec V3 panel már nem "csak egy fejlesztőpanel" [...]

DC-DC Step Down Buck Converter – 12V-ról 5V (8–20 V, max. 3 A, 15 W)
DC-DC Step Down Buck Converter – 12V-ról 5V (8–20 V, max. 3 A, 15 W)

DC-DC Step Down Buck Converter - 12V-ról 5V USB táp [...]

NeoPixel gyűrű RGB LED-sor (8x RGB LED, WS2812)
NeoPixel gyűrű RGB LED-sor (8x RGB LED, WS2812)

Képzeld el, hogy egyetlen apró gyűrűvel látványos fényjátékot csinálsz a [...]

NeoPixel gyűrű RGB LED-sor (24x RGB LED, WS2812)
NeoPixel gyűrű RGB LED-sor (24x RGB LED, WS2812)

Ez nem egy "LED modul". Ez az a látványos, kör [...]

  • Tovább a TavIR Fórumra...

Címkék

alappanel Arduino Arduino nap Arduino nap 2023 art AVR biztosíték darlington dióda eeprom egyszerű elektronika elem ellenállás ESP Espressif Systems flash Forrasztás ft232 hang hőmérő i2c i2clcd infravörös ISP JTAG kijelző LCD lm35 MOSFET motor pcb páratartalom Qualcomm Relé RTC telepítés tmp36 tranzisztor Történelem Uno wiring WOM Zener április 1 óra

Archívum

  • 2026. április (1)
  • 2026. március (5)
  • 2026. február (4)
  • 2026. január (3)
  • 2025. december (2)
  • 2025. november (2)
  • 2025. október (3)
  • 2025. augusztus (3)
  • 2025. július (7)
  • 2025. június (4)
  • 2025. május (6)
  • 2025. április (3)
  • 2025. március (3)
  • 2025. február (1)
  • 2025. január (6)
  • 2024. december (5)
  • 2024. november (5)
  • 2024. október (6)
  • 2024. szeptember (5)
  • 2024. augusztus (4)
  • 2024. július (3)
  • 2024. június (1)
  • 2024. május (3)
  • 2024. március (1)
  • 2024. február (2)
  • 2024. január (1)
  • 2023. december (5)
  • 2023. szeptember (2)
  • 2023. augusztus (6)
  • 2023. július (2)
  • 2023. június (1)
  • 2023. május (1)
  • 2023. április (10)
  • 2023. február (1)
  • 2022. szeptember (2)
  • 2022. július (1)
  • 2022. május (6)
  • 2022. április (1)
  • 2022. március (2)
  • 2022. január (3)
  • 2021. december (1)
  • 2021. november (4)
  • 2021. október (2)
  • 2021. szeptember (1)
  • 2021. július (1)
  • 2021. május (2)
  • 2021. április (1)
  • 2021. március (2)
  • 2020. szeptember (1)

Eddig nem olvasott...

Signetics WOM-25120: Egy alternatív adatarchitektúra újrafogalmazása a félvezetők korában (ChipTeszt!) WOM-25120 mérés
  • Hír

Signetics WOM-25120: Egy alternatív adatarchitektúra újrafogalmazása a félvezetők korában (ChipTeszt!)

2026.04.01.
ESP-IDF 6.0: nagy ugrás vagy fájdalmas nagytakarítás? 11123 ispidf 55 60 melyviz - Cseh Robert / TavIR - arduino,teszt,mikrokontroller
  • Cikk
  • Mélyvíz

ESP-IDF 6.0: nagy ugrás vagy fájdalmas nagytakarítás?

2026.03.21.
ESP-IDF 6.0 laikus szemmel: mikor válts, mikor ne? Elektronikai munkaasztalon működő ESP32 mikrokontroller és kódoló laptop, amely az ESP-IDF firmware fejlesztés és beágyazott rendszer tanulás folyamatát szemlélteti.
  • Cikk

ESP-IDF 6.0 laikus szemmel: mikor válts, mikor ne?

2026.03.20.
Mit ünneplünk március 14-én? – A PI nap története és érdekességei Egy misztikus, matematikai és csillagászati témájú fantáziafestmény, amelyben a π (pi) számjegyei egy spirális galaxis formájában lebegnek az univerzumban, miközben egy tudós tanulmányozza azokat.
  • Hír

Mit ünneplünk március 14-én? – A PI nap története és érdekességei

2026.03.12.

Információk

Cégadatok-impresszum | Használati feltételek
Adatvédelmi irányelvek | Kapcsolat

Elérhetőség

Ügyfélszolgálat: +36 (20) 99-23-781
E-mail: avr (kukac)tavir (pont) hu
Iroda/telephely: 1181 Budapest, Szélmalom utca 13.
Copyright © TavIR Minden jog fenntartva | DarkNews by AF themes.
TavIR
Manage your privacy

To provide the best experiences, we and our partners use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us and our partners to process personal data such as browsing behavior or unique IDs on this site and show (non-) personalized ads. Not consenting or withdrawing consent, may adversely affect certain features and functions.

Click below to consent to the above or make granular choices. Your choices will be applied to this site only. You can change your settings at any time, including withdrawing your consent, by using the toggles on the Cookie Policy, or by clicking on the manage consent button at the bottom of the screen.

Funkcionális Always active
A technikai tárolás vagy hozzáférés szigorúan szükséges az előfizető vagy felhasználó által kifejezetten kért konkrét szolgáltatás használatának lehetővé tételének jogos céljához, vagy kizárólag a közlés elektronikus hírközlő hálózaton keresztüli továbbításának céljához.
Beállítások
A technikai tárolás vagy hozzáférés a jogos célból szükséges, hogy olyan beállításokat tároljunk, amelyeket az előfizető vagy a felhasználó nem kért.
Statisztika
Kizárólag statisztikai célokra használt technikai tároló vagy hozzáférés. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
A technikai tárolás vagy hozzáférés felhasználói profilok létrehozásához szükséges hirdetések küldéséhez, illetve a felhasználó nyomon követéséhez egy vagy több weboldalon hasonló marketingcélokból.
Statistics

Marketing

Features
Always active

Always active
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
Manage options
{title} {title} {title}