Kalandozásaim az elektronok világában

Ott kezdődött, hogy automatizálni szeretném a redőny reggeli felhúzását, hogy mire megszólal az ébresztő, addigra legyen világos a szobában. Mint az közismert az ember cirkadián rutmusát megzavarják a mesterséges fények, ezért leengedett redőnnyel alszunk. Viszont ez is összezavarja a ritmust, mert így meg nem jön be a felkelő nap fénye. Ha nem akarunk éjjeli őrt állítani aki húzogatja a redőnyt, akkor ezt a problémát csak automatizmussal lehet megoldani.

(Tipikus példája ez annak, hogy a civilizáció által okozott humán problémákat csak mégtöbb civilizációval lehet megoldani. :-)

Vigyázat! A prototípus áramkörről készült kép a lelki nyugalom megzavarására alkalmas lehet!

Az eredeti hozzáállásom az volt, hogy lehetőleg gyári eszközökkel meg tudjam oldani, ne kelljen pákához nyúlni. Viszont amennyire lehet használjunk szabad vagy saját szoftvereket, piszkálható protokollokkal, hogy a rendszernek valóban én legyek a gazdája. A redőny problematikáját nagyjából megoldottam "gyári" Arduino alapú ARDBOX vezérlőkkel (https://www.industrialshields.com/product/plc-arduino-ardbox-plc-20-ios…) Azért mondom, hogy nagyjából, mert még az ablak sincsen kész, tehát nem tudom, hogy jól fog-e működni.

Az ARDBOX-szal eddig elégedett vagyok, ami baj van vele, az annyi, hogy túl nagy, és ezért a standard szekrényekbe nem lehet beszerelni, hanem külön kellett hozzá dobozt vennem. Szerencsére van elég helyem neki, nem lesz zavaró, de ha nem lenne, akkor pipa lennék. Persze le volt írva, hogy ekkora, én néztem be.

A másik minimális probléma az volt, hogy a weboldalon írt dokumentáció nem jó (talán régebbi revízióhoz tartozó maradt fenn), illetve az Arduino-ba telepíthető kiegészítők nem működtek csont nélkül. A problémát könnyű megoldani, mert a letölthető PDF már rendben van, az SDK kiegészítésekre meg nincsen szükség, mert sima Arduino Leonardo-ként működik a kütyü, a lábkiosztás-define-okat meg kézzel fel lehet venni a PDF alapján.

Megoldandó probléma még a vezérlő IP hálózatra kötése (Itt diszkutáltuk: https://hup.hu/node/158861 ), amire számtalan megoldás létezik, de megcsinálni csak akkor fogom, ha a redőnyhúzogatás elektromos része már tökéletes. Ahhoz meg redőny kell először, tehát a projekt egyelőre pihen.

Van egy Raspberry PI-om (továbbiakban Ráspoly), azon van 3.3V jelszintű serial interfész a GPIO pin-ek között. Ezt elvileg feszülségosztóval is lehet 5V-os rendszerhez kötni (a 3.3V jel már magasnak számít az Arduino bemenetén, a Ráspoly bemenetét viszont feszültség-osztóval védeni kell, hogy ne jelenjen meg rajta 3.3V-nál több.) Az egyetlen megoldandó probléma, hogy közösíteni kell a Ráspoly és az Arduino GND-jét, tehát vagy olyan táp kell, ami ezt megengedi (a két GND-t összekötve nem indul meg az áram), vagy az ARDBOX-ot tápláló 12V-ról kell előállítani az 5V-ot a Ráspoly számára (Kb 1A terhelhetőségű DC-DC konverter kell, és a 12V táphoz is hozzá kell számolni ezt a terhelést). Sajnos az Arduino által adott 5V nem használható, mert jóval kisebb a terhelhetősége, mint ami a Ráspolynak kell.

Feszülségosztó helyett egy valódi level shifter áramkörrel (https://www.sparkfun.com/products/12009) próbáltam ki a Ráspoly-> Arduino kommunikációt. Ez a level shifter elvileg kétirányú kommunikációra is képes (I2C buszra is lehet használni), ide talán overkill, de mivel kéznél volt, ezzel próbáltam ki, hogy működik-e a Ráspoly<->Arduino kommunikáció. Működik hibátlanul. A Ráspolyon érdemes kikapcsolni, hogy a kernel ezt az UART vonalat terminálként aktiválja boot közben, így stabilan működhet ez az elrendezés. (Erre használható parancs: sudo raspi-config ami egy menűt indít, ahonnan egyértelmű) Valószínűleg végleg nem így lesz végleg megoldva az IP->serial, de ki akartam próbálni, hogy működne-e.

Mire idáig eljutottam kedvem lett áramkörökkel játszani - evés közben jön meg az étvágy. Barátaim felhergeltek, hogy csináljak öntöző rendszert is, úgyhogy errefelé indult el a vezérhangya. Csinálok egy öntöző vezérlőt! Igazából nem túl bonyolult, néhány dolgot kell csak tudnia:

* Kb 10 mágnesszelep 10 öntöző körnek (ennek méretezése még folyamatban van, kisebb átfolyású spricnikkel kevesebb kör is elég lehet)
* búvárszivattyú indítása (ásott kutam van, innen fog jönni a víz)
* átfolyásmérő (Hall szenzor, ami impulzusokat ad az átfolyás ritmusában - loggoláshoz és diagnosztikai célból)
* nyomásmérő (analóg feszültség bemenetet adó szenzort tervezek - loggoláshoz és diagnosztikai célból)
* Kijelzés
* 3 gomb kezeléshez, amikkel helyben is elérhetőek a funkciók (az automatizmus vezérlését, a loggolást a Ráspolyon fogom futtatni, de kipróbálni, vagy manuálisan rálocsolni lehessen innen is)
* serial kapcsolat a külvilággal - ezen keresztül lesz automatikusan indítva, illetve ide loggolja a kiszórt vízmennyiségeket és a víz nyomását
* Eső, hőmérséklet, páratartalom érzékelő egyelőre nem lesz, úgy tervezem, hogy online időjárás szolgáltatótól fogom ezeket az adatokat venni (https://openweathermap.org/API), és aszerint korrigálom a vezérlést.

A vezérlő "agya" egy Arduino Pro mini lesz. Szeretem az AVR-eket és az Arduino-t is, na meg ilyenem van kéznél régebbi megvalósítatlan projektekből. Sajnos az én példányom régebbi revízió, ezen még az A6, A7 nincs kivezetve, így összesen 18 be/kimenetem van (a HW serial RX TX kivezetése mellett).

Kijelzésként először LED-ekre gondoltam, akár elegendő lenne a vezérlőjeleket rákötni 1-1 LED-re. De így sajnos nem tudnék úgy kört váltani nyomógombbal, hogy mondjuk az elsőről az 5-ösre ugrok. Muszáj volna végiglépkedni az összes köztes körön, vagy pedig a szivattyút leállítani ha nem akarom, hogy az a kör öntözzön, ami közben van. De az átfolyást és a nyomást is jó volna kijelezni, sokat segíthetne a rendszer építésekor. Úgyhogy inkább egy általános célú Mini OLED mellett döntöttem. És nem bántam meg!

Ezt a típust vettem: D13-12864-I2C https://www.hestore.hu/prod_10035540.html A programozása egy kicsit funky. Úgy terveztem, hogy a teljes képernyőképet tárolom az AVR RAM-jában egy pufferben, és egy lépésben töltöm fel a frame-eket. 128x64 bináris pixel, az 1024 bájt, épp az AVR RAM-jának a fele. A maradék 1024 bájt pont elég lesz minden másnak. A buffer feltöltésével több problémába is ütköztem. Első gondom, hogy az I2C buszon nincsen kivezetbe a képfrissítés sync jele. A tearinget tehát nem lehet elkerülni. Itt mondjuk mindegy, de az esztétikai érzékemet egy kicsit zavarja, ha már programozok valamit, akkor szeretem ha tökéletesen működik. (Egy LED-es kijelzől például egyszer több napot dolgoztam pluszban, hogy az alapfrekvenciát meg tudjam emelni 50-ről 1000Hz körülire, hogy éjjel nézve ne "essen szét" a szemünk perifériáján nézve sem.) Az adatlap többféle címzmódot ajánl, de valamiért Horizontal és Vertical módban nem tudtam működésre bírni. A statusz lekérdezés sem működött. A kijelző tehát write-only módban megy. Mondjuk kijelzőnek elég, de azért jobban éreztem volna magam, ha vissza is tudok ezt-azt olvasni (mondjuk a következő képfrissítés időpontját...) Utolsó említésre méltó gond, hogy valamilyen okból be kellett állítani egy 2-es offszetet a pixelet X irányú címzéséhez. Egyszerűen nem jöttem rá, hogy honnan jön ez, de nélküle az első két sor lelóg a képről, az utolsó kettő pedig felülíratlan marad. Összességében tehát a kijelző működik, szép is, de nincsen igazán "magas minőség" érzésem programozóként a működéstől és a doksitól sem.

A legtöbb OLED lib-et külföldiek fejlesztik, ezért nincs rajtuk ékezet. Ha már nekiálltam csináltam egy libet, ami UTF-8-at kezel, és így képes ékezetes betűk megjelenítésére. Persze csak azok a karakterek vannak megvalósítva, amelyek a generáláskor fel vannak véve egy listába. Ezeknek a képét az AVR program-memóriájába teszi a fordító. Majd ha lesz kedvem megcsinálom, hogy jobbról-balra is tudjon írni, így rovásos megjelenítésre is képes lesz. Persze használhatnék Kelet-Európai kódolást is, akkor nem kellene UTF-8, de így az Arduino IDE-be közvetlenül beírva a kiírandó stringeket minden működik egyből:

A képen a DIN sínre szerelhető prototípus látható. A képernyő rogzítése hipergagyi, mert nem találtam megfelelő csavart. Mögötte a szigszalag valóban szigetel, hogy a kijelző hátulján lévő alkatrészek ne érjenek véletlenül se hozzá semmihez. A szivárványszínű kábelek a "programozó" USB-serial átalakítóba mennek, ami jelenleg a tápot is adja. Ha bekerül a dobozába, akkor csak a gombok és a kijelző fognak szemből látszani, és az alul-felül lévő csavaros terminálokkal kell bekötni majd a tápot és a reléket. A string rajzoló libbel a képen látható eredményhez ennyi kódot kell írni:

void loop()
{
RD_clearScreen();
RD_drawString("Áldja meg\naz Isten\nOrbán Viktort!");
RD_updateScreen();
}

Lássuk tehát a ki/bemenetek számát:

* 10 kör: 10
* szivattyú: 1
* nyomásmérő: 1 analóg bemenet
* átfolyásmérő: 1 input capture bemenet az impulzusok számlálásához
* kijelzés: I2C SDA, SCL 2 láb
* gombok: 3 bemenet
* Serial: RX, TX

Látszik tehát, hogy ezen becslés szerint mind a 18 lábra szükség lesz! Persze lehetséges, hogy kevesebb öntöző-kör elegendő lesz, illetve a 3 gombot is lehetne kevesebb lábbal megoldani (pl gombonként fesz-osztókkal, és analóg bemenetet használva), de azért aggasztó a lábszűke.

A lábszűke mellett a NYÁK-helyhiány is aggasztó. 4 egységes DIN dobozt vettem a projekthez. A kijelző és a gombok "emeleten vannak", de a kimenetek meghajtóinak el kellene férni a földszinten. 10-et kb el tudnék helyezni, de igen zsúfolt lenne, a védődiódákat függőlegesen kellene tennem, hogy kiférjenek. Minden kimenethez kell egy N-FET tranzisztor, egy védődióda és egy lehúzó ellenállás, hogy bekapcsoláskor ne jelenhessen meg tranziens nyitás. Ezekkel a kimenetekkel egy-egy külön elhelyezett relét fogok vezérelni, ami a szivattyú 220V-ját, illetve a mágnesszelepek 24VAC-jét kapcsolják majd. Így a NYÁK-ra elvileg nem kerül csak törpefeszültség. Lehet, hogy az egészet át kell tennem majd egy nagyobb dobozba?

A lábszűke miatt elkezdtem shift-regiszterek után túrni. A kimeneteknek nincs különösebb időzítés igénye, úgyhogy egy sima "shift and store" regiszter is megoldás lehetne. Ezekben van egy átmeneti tároló, amibe be lehet shift-elni egy bájtot, majd egy külön órajellel a kimenetre tenni a biteket. Egy "sima" tároló nélküli shift regiszternél tehát annyiban jobb, hogy nincsen tranziens a kimeneteken miközben shiftelünk. Shift regiszterrel elegendő lenne 4 kimeneti vonal (Data, data clock, store clock és output enable - utóbbi a bekapcsolási tranziensek miatt elkerülhetetlen, egyébként fixen be lehetne kötni aktívra), és szükség esetén kaszkádosítva akárhány kimenetre is bővíthetném a rendszert. Parallel in-serial out regiszterrel pedig a bemeneteket is kaszkádosíthatnám (akár közös clock-ot használva a kimenettel ehhez csak 1 vagy 2 plusz láb kellene). De a bemeneteken most nem kell spórolnom.

Találtam olyan shift regisztert, aminek a kimenete "medium current output buffer". Ha 1-et teszek az adott bitre, akkor egy N-típusú tranzisztor nyit, ha 0-t, akkor zár. Elvileg almalmas relék vezérlésére közvetlenül, sőt még Output "Voltage Clamp" is van benne (bármi legyen is az, nem találtam pontos leírást, hogy mit csinál ez, de elvileg ha a back EMF miatt túlfeszültség jön, akkor azt levezeti a GND-be). Ezzel az alkatrésszel mind a láb, mint a helyhiányt egy csapásra megoldanám! Egyetlen 16 lábú IC helyettesítene 3x8 alkatrészt és egy csomó drótot! (Az egész kütyü próbanyákon forrasztással és wire-wrappel - "vegyes technikával" készül, elég fárasztó aprólékos munka.)

Ilyen csipet vettem: TPIC6B595. Csakhogy a meglévő nagy teljesítményű reléimmel nem működik ez a "csodacsip"! Breadboardon öszeraktam. Az adatlap szerint pillanatnyi 500mA-t és állandó 150mA-t tud a csip. A kisebb relém pedig 100mA konstans áramot vesz fel. Amikor meg kellene szakítani az áramot, az nem szakad meg, a relé behúzva marad. Rámértem, kisebb az áram, mint a teljes nyitvatartáskor, de egyáltalán nem 0.

A relé, amit nem tud megszakítani a csip 12VDC-vel működtethető, behúzva 100mA konstans áramot vesz fel. 10A 220V kapcsolására alkalmas.

Kipróbáltam egy másik 24VDC relével is (hátha kisebb árammal működik az IC), ennek csak 50mA a konstans árama (24V helyett 20V-tal tápláltam, mert ennyit tud a labortápom, de erre is kinyitott), de sajnos ezt sem szakítja meg az IC. A maradó áramot 26mA-nek mértem. (Persze ha 24VDC relét használnék élesben, akkor szükség lesz plusz egy tápra, amit el szeretnék kerülni. Az Arduino pro Mini 12V-ig táplálható, így egy 12VDC és egy 24VAC táp kellene csak. A 24VAC a mágnesszelepekhez kell, ilyenekkel mennek az öntözőrendszerek.)

Sajnos kisebb teljesítményű reléim nincsenek még. A mágnesszelepek nyitásához valószínűleg jóval kisebb relék is elegendőek lesznek, és azokat talán meg tudom hajtani ezzel az egyszerű alkatrésszel. Jó lenne, mert tényleg le akarom spórolni annak a rengeteg tranzisztornak a beszerelését. Ennek a kipróbálásával fogom folytatni a munkát. Ha működne, akkor a szivattyú bika reléjéhez maradna 1 tranzisztor a hozzá való diódával, a gyengébb kimeneteket pedig a shift regiszteres buffer adná.

Az egész projektből arra is rájöttem, hogy meg kell most már tanulnom rendes NYÁK-ot tervezni és gyártatni. Magamnak gyártani nincs kedvem, de tervek alapján gyártatni jó lenne. Persze akkor nem tudnék menet közben újratervezni, ahogy a próbanyákkal most lehetséges.

Hozzászólások

sub

-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…

Szerintem neked MCP23008 vagy MCP23017 kell a shift regisztert követő latch helyett. Aztán lehet, hogy relé helyett triac-ot használnék.

A relé, amit nem tud megszakítani a csip

Ugye, volt a relé tekercsével párhuzamosan záróirányban dióda? Mert ha nem, gyanítom, annak a félvezetőnek már rég vége van.

Szerk.: Kijelző kezelését lehet úgy csinálni, hogy IT-ből kezeled adott frissítési frekvenciával, de csak változás esetén szólítod meg ténylegesen a kijelzőt. Tehát, ha valaki hozzányúl a framebufferhez, akkor bebillen egy flag, az IT-rutin pedig csak ebben az esetben küldi ki a kijelzőre a framebuffer tartalmát. Továbbá amíg az alap szintű rutin szöszöl a framebuffer írásával, addig az IT rutin egyből visszatér, meg sem kísérli a framebuffer kiírását. Bár, ha jobban belegondolok, ugyanezt az eredményt adja, csak egyszerűbben, ha nem IT-ből, hanem alap szinten a framebuffer módosítását követően történik a buffer kijelzőre írása.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nekem is gyanús volt, hogy esetleg tönkrement, be is tettem egy másikat helyette, az is ezt csinálta :-). Szerencsére ez ilyen 100 Ft-os nagyságrendű alkatrész, rendeltem belőle többet, azért is gondoltam, hogy először kipróbálom védődióda nélkül. Az adatlap szerint van benne ez a Voltage Clamping 50V-nál, ami megvédi magától is. Ezt nem kellett volna elhinnem? Mindenesetre a harmadik csippel összerakom diódával.

"The TPIC6B595 device is a monolithic, high-voltage, the operating case temperature range of use in systems that require relatively high load power. The device contains a built-in voltage clamp on the outputs for inductive transient protection. Power driver applications include relays, solenoids, and other medium current or high-voltage loads."

Ez a built-in voltage clamp, amire építettem a légváraimat. De mivel bővebben nem dokumentált, hogy mi ez, magamtól is problémásnak éreztem.

(A kijelző kezelésen szerintem nem kell optimalizálni, mert érzésre 10FPS felett van így is, több meg nem is kell. Gombok kezeléséhez és a kimenetek frissítéséhez is elegendő ez a periódusidő. Az input capture meg interrupttal lesz megoldva. Ha kellene, akkor megírhatnám ezt is interruptosra, az I2C vezérlőt ha jól emlékszem lehet interruptokkal etetni. Amúgy pont ez a része, amihez értek, hivatásosként programozok GUI-t beágyazott eszközre. Szóval ezzel nem lesz gond.)

Van az alábbi összefüggés:

u(t) = L*di/dt

Ebből látszik, hogy az induktivitás árama folytonos időfüggvényű, hiszen ahhoz, hogy szakadása legyen, végtelen nagy feszültség kellene. Ebből tehát adódik, hogy minden időpillanatban a bal- és jobboldali határértéke az áramnak megegyezik az adott pillanatban felvett értékével.

Mindebből az is jön, hogy ha 200 mA-t folyattál a tekercsen, s azt kikapcsolod, akkor valamerre továbbra is 200 mA fog folyni az első pillanatban. Ha ez egy zárórétegen halad át, az többnyire szívás, bár a Zener-dióda is épp egy záróréteg, az akár ki is bírhatja. Viszont gondolni kell arra, hogy ennek a clamp diódának el kell disszipálnia az induktivitásban tárolt 1/2*L*I2 energiát, illetve többet. Külön szerencsétlenség, hogy közben a tápfeszültség nem válik nullává, így lényegében a tápfeszültség lassítja az áram csökkenésének sebességét.

Induktív terhelés esetén kötelező az a dióda. Anódját tedd az IC által meghajtott pontra, katódját a tekercs tápfeszültségen lévő végére.

A kijelzőre azért reagáltam, mert írtál arról, hogy nincs infód a vsync idejéről. Erre szerintem az egy jó workaround, hogy csak akkor nyúlunk a kijelzőhöz, ha nagyon muszáj, azaz a legritkább esetben.

off

Vicces lenne, ha kiderülne, hogy kollégák vagyunk, bár én szeretnék megmaradni nick mögött ebben az online térben. Nem keverném az online megnyilatkozásokat a munkahelyi élettel. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Köszi a tippet, a diódát becsavaroztam a relé csatlakozói közé, és vígan kattog az eddig használt csippel is :-). Teljesen tehát nem ment tönkre, de a végtermékbe inkább egy újat rakok majd. Közben egy 12VDC, 50mA állandó kapcsolóáramú relém is lett (Finder, 250VAC 8A-t kapcsol), ezzel működik percek óta. Lassan leállítom, mert idegesítő a kattogás.

:-) Nem hiszem, hogy kollegák lennénk, amiket eddig írtál azalapján más területen vagy. De ne félj, ha rájövök akkor sem bombázom le az inkognitódat!

Ezt az induktivitásos dolgot elvben vágom, csak azt a részét nem, hogy az alkatrészek tranziens tűrésével hogyan kell számolni. Ha a védődióda elvben elbírja a 200mA-t, akkor az már jó? Ezzel az adatlappal pont ez a rész nem tetszett, hogy nem részletezte ki ennek a Voltage Clamping résznek a paramétereit. De annyira örültem, hogy lehet alkatrészeket spórolni, hogy mindenképp ki akartam próbálni plusz védelem nélkül.

Gondoltam, hogy külön posztban kiírom a nagy kérdést, hogy mégis hogy kell ezeket az induktív dolgokat méretezni? A másik topikban gabrielakos leírta, hogy "Bekapcsolni be tudod a motort de ki nem (vagy nem mindig)." Ez hasonló jelenség, mint amit itt tapasztalatam. Mi az a folyamat, ami nyitva tartja a tranzisztort? És hogyan kell ezt helyesen méretezni? A back-EMF elvezetésén felül másra is kell figyelni? Vagy ha a back-EMF védelem meg van oldva, akkor elvben egy 200mA-t tudó tranzisztorral vezérelhetek egy 200mA-t "evő" relét?

A méretezés egyszerű. Ahogy írtam, kikapcsoláskor az üzemi áram folyik tovább. Ha a dióda ideális volna - az, amelyet végre beletettél az imént -, a tekercs meg szupravezető, az áram örökké folyna tovább, a mágneses tér fennmaradna. A valóságban a dióda nyitófeszültsége, illetve az áram által a tekercs saját ellenállásán eső feszültség miatt csökken az induktivitás árama. Ha gyorsabb kikapcsolást szeretnél, a diódával sorba lehet kötni egy ellenállást, de akkor már a tápfeszültség fölé fog növekedni a drain feszültsége, mégpedig a tekercs üzemi árama szorozva az ellenállással, plusz a dióda nyitófeszültsége lesz a növekmény a táp fölött.

mindenképp ki akartam próbálni plusz védelem nélkül

Ezek ilyen utolsó mondatok. :) Tudsz élni! ;) Nehogy már egy pár forintos 1N4148 okozza a problémát. Ne használj Schottky diódát, mert annak kisebb a nyitófeszültsége, s itt most a nagyobb nyitófeszültség gyorsítja az áram csökkenésének sebességét, tehát kívánatos.

Ha a tranzisztor képes leadni azt az áramot, amelyet a tekercsed eszik, s a tranzisztoron közben eső feszültségből adódó disszipáció nem vet véget az életének, akkor minden rendben, de kell a dióda, ellenkező esetben kikapcsoláskor a kollektor vagy drain feszültség az egekbe emelkedik, a záróréteg letörik, a félvezető pedig tönkremegy.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ezek ilyen utolsó mondatok. :) Tudsz élni! ;) - Ahhoz képest alig mennek tönkre az alkatrészeim. Egy alaplapi USB portot azért sikerült kinyírnom, azóta csak tápolt hubbal hekkelek.

Papírforma szerint le tudja adni állandóra a 150mA-t egy lábon, több kimenet meg sosem lesz aktív huzamosan, úgyhogy hőleadási probléma nem lehet. De azért egy tesztet csináltam 50mA mellett semmi melegedés nem érezhető kézzel.

Körváltáskor nyitva lesz két relé az átmeneti időre, hogy a szivattyú ne menjen zárt csapok mellett. Az pont a diódavédelem nélküli tekerccsel lenne analóg probléma vízárammal :-).

"Erre szerintem az egy jó workaround, hogy csak akkor nyúlunk a kijelzőhöz, ha nagyon muszáj, azaz a legritkább esetben." Ja, felfogtam. Nincs villogás frissítéskor, csak ha változik egy pixel. Szóval a villogástól mindegy, hogy mindent frissítünk-e. A vsync hiánya csak aninációnál számítana, olyat meg most nem csinálok. Esetleg ha csak a változásokat frissíteném az segíthetne, de olyat már implementáltam és ha nem muszáj nem akarom megismételni többet :-P.

Az MCP23008-at meg MCP23017-et néztem. Az I2C vezérelt IO extenderre gonoltál, igaz? Ezekkel egyetlen plusz portot sem pazarolnék, de azért a 4, ami a shift-latch-hez kell belefér, annyira nem kell spórolni itt. De majd másik projektben kipróbálom ha kell. A felületszerelt alkatrészek forrasztása is hátravan még, egyelőre nem is kacérkodok vele.

A triac-okat is néztem, de az már pláne ismeretlen terület számomra. A 24VDC-t a mágnesszelephez kapcsolnád triac-cal? Vagy a búvárszivattyút is? Ez a triac nem ugyanaz, mint a szilárdtest-relé?

A váltóáram oldalon is van back-EMF, azzal lehet/kell valamit kezdeni? Vagy elég egy bika nagy relé és kész?

Triac-kal DC-t ne kapcsolj, mert nem tudod kikapcsolni, bekapcsolva marad a világ végezetéig. Fogalmazzunk úgy, hogy a szilárdtest relékben triac látja el a nagy teljesítményű fogyasztó kapcsolását.

Kell a váltakozóáramú oldalra is mindenféle bűvölés triac esetén is, relé esetén is. Egyrészt relénél lesz villamos ív, egy rakás harmonikus, amitől jó eséllyel szét fog fagyni az egészet vezérlő számítógép. Tehát ekkor is kell valami.

Triac használatánál limitálni kell a du/dt-t, ezt jellemzően az A1 és A2 közé kötött soros RC taggal érik el. Aztán az abszolút feszültséget pedig varisztorral limitáljuk. Ha ezekkel megvagy, s nem feleded, hogy a gyengeáramú rész is galvanikus kapcsolatban lesz a 230 V-tal - amit le lehet választani saját kis tápegységgel és optocsatolóval -, akkor nyertél.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

És hogyan méreteznéd a soros RC védelmet? Mert erről sincs sok fogalmam. :-)

Mondjuk beteszek egy 47 nF / 1,6kV fóliakondenzátort (hasraütésre választottam). Annak a reaktanciája 50Hz-en 0.4 megaOhm, tehát állandósult esetben sok vizet nem zavar. Még 10,000 Hz-nél is 2kOhm, ami 100mA áramot jelent. 1MHz-nél 12 Ohm, ami már elég jól elvezeti a felharmonikusokat.

Emellé beteszek egy 1 Ohm-os 3W-os ellenállást Max. üzemi feszültség 350V Max. impulzus feszültség 600V-tal. Megintcsak hasraütésre választottam. Úgy érzem, hogy a teljesítmény számít főleg, hogy felharmonikusok teljesítményét el tudja fűteni.

Varisztorból egy 275V-os, Pmax=1W-os megfelel? (Megintcsak hasraütésre) A túllövéseket jó ott elvágni?

Relé esetén is kell a DC áramkörbe is optocsatolós leválasztás? Ott elvileg nincsen galvanikus kapcsolat, de a relén belül az igazán nagy frekvenciák végülis "átugorhatnak" a tekercsbe :-). Mondd, hogy erre már nem kell védelem! Lécci! :-)

A relé leválaszt galvanikusan. A példád nem rossz, bár érzésre nagyobb ellenállást választanék, mondjuk 22 Ω körül, s picit nagyobb kapacitást, úgy 100 nF környékén. Ennek az az oka, hogy egyfelől el kellene fűteni az energiát, nem az a cél, hogy az lengjen a kondenzátor és az induktív terhelés között. A nagyobb kapacitás kisebb du/dt enged meg azonos áram mellett. Valóban nagyfeszültségű kondenzátor kell, hiszen az induktív terhelés energiája próbálja feltölteni a kondenzátort. Szerencsére a varisztor megfogja majd a feszültséget.

A pontos méretezés azért nem egyszerű, mert ez függhet a terheléstől is.

Az az átugrás, amiről beszélsz, lényegében a kontaktusok és a tekercs közötti kapacitív csatolás. Éppen ezért volna jó limitálni a kontaktuson a du/dt-t, ezzel csökken ez a kapacitív áram is, s nem fog szétfagyni a számítógép.

Szerk.: Az 1 Ω azért is para, mert a kontaktusok rövidrezárásakor iszonyú nagy áram indul majd el, ami nem tesz jót sem a kondenzátornak, sem pedig a záródó kontaktusoknak.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nagyon jó leírás és +1 a képért :-)

Like meg minden. Egyreszt, az az 500A egy kicsit sok igy ranezesre, nem 500mA-t tud rovid ideig?
Masreszt, ha nem szeretsz sok tranyot hasznalni, ott az ULN200x sorozat, vedodiodakkal a belso darlington tranyonal es a tekercsnel is. Arban sem sok, es a bemeneteit/kimeneteit ossze tudod kotni, ha nem eleg.

Triacbol meg letezik phototriac is (a hutombe G3MB-202P-t epitettem be), tovabbra is valtot tud kapcsolni, de sima LED-kent tudod vezerelni (mert az is), plusz galvanikusan le van valasztva.

--
Any A.I. smart enough to pass a Turing test is smart enough to know to fail it. -Ian McDonald

Köszi! Javítottam az ampereket, nehogy valakit megtévesszen!

Az ULN200x sorozat jól néz ki, ésszerűen mögé lehetne tenni egy egyszerű shift regiszternek.

Ez a fototriac kapcsolja a kompresszorját a hűtőnek az eredeti hőszabályzója helyett? Hasznos alkatrésznek tűnik.

Megjegyzem ezeket, jól jönnek majd az újratervezérkor :-).

Gondoltál már ütemezett, fokozatosan világosodó fényforrásra? A redőny hangja nem lesz zavaró?

A természetes fénynél nincsen jobb. Miért világítanék, amikor kinn világos van, csak fel kell húzni a redőnyt?

Az időtényezőt ki fogom kísérletezni, hogy mennyivel ébresztő előttre jó állítani. Még az is lehet, hogy napfelkeltére fogom tenni.

A relé kattogására, és a redőny zajára nem hiszem, hogy felkelnék, de majd kiderül.

Pont az a problémám, hogy nehezen kelek. Szóval attól hogy felébredek a kimászás még egyáltalán nem triviális kérdés. Ezen remélem, hogy segítene, ha természetes fény lenne a szobában.

A kisebb relém pedig 100mA konstans áramot vesz fel. Amikor meg kellene szakítani az áramot, az nem szakad meg, a relé behúzva marad. Rámértem, kisebb az áram, mint a teljes nyitvatartáskor, de egyáltalán nem 0.

Tehát:
- bekapcsolva 100mA
- kikapcsolva 0mA
- jelen esetben 0mA < áram < 100mA
- a csip nem megy tönkre, tehát sem túlfelszültség, sem a megengedetnél nagyobb disszipáció nem lépett fel
Ezt a kapcsolást úgy hívják: Oszcillátor. :-D

A probléma gyökere a breadboard, az ebből adódó bizonytalan hidegpont/táplálás, a csatolásmentesítő kondenzátorok hiánya és a parazita induktivitás.
Ennél az áramkörnél aktív clamping működik. (Lásd: Figure 5.) Ha a drain túfeszültséget kap, akkor a drain-gate közé kötött zener dióda kinyit. Amíg tart a túlfeszültség, addig nyitásba kényszeríti a kimeneti tranzisztort, tehát az lesz az enerigaelnyelő elem. Ráadásul a kapcsolási és reverse recovery idő is 100..300ns tartományban van, azaz elég gyors a kapcsoló. Ennek alapján a kialakított kapcsolás valószínűleg 1-2MHz tartományban rezgett. :)

A jelenség megértéséhez az adatlap megad minden lényeges adatot:
6.6 Switching Characteristics
...
ta Reverse-recovery-current rise time (IF = 100 mA, di/dt = 10 A/µs) 100ns
trr Reverse-recovery time 300ns

Az értékek értelmzése a Figure 10 ábrán látható. Látszik, hogy ezeket az értékeket brutális 2500uF szűrőkondenzátorral - nyilvánvalóan igen rövid vezetékekkel - mérik, ami igen messze esik a breadboardon megvalósított kapcsolástól.

A túlfeszültség csillápítására lehet használni zener diódát (Uz < V(BR)DSX), vagy a relével párhuzamosan kötött DR tagot. Bármelyik megoldás hatástalannak bizonyulhat, ha a topológia olyan, hogy a parazita induktivitás miatt a túlfeszültség előbb éri el a kapcsoló elemet, mint a csillapító tagot. Ez itt olyan 10-15cm vezetéket jelent.
A csatolásmentesítő kondenzátorokra is érdemes odafigyelni! Hatásukat leginkább ott fejtik ki, ahol áram is folyik. ;) Tehát nem elegendő, ha "darabra" ott van, de semmi hatása.

Breadboard!
A '70-es évek technológiája. Ezen próbálnak a modern amatőrök olyan kapcsolásokat elkészíteni, amihez néha csak SMD alkatrészek léteznek - okkal, mert "lábasjószággal" már nem is lehet a megfelelő termikus vagy topológiai követelményeknek megfelelni. A többit meg az rpi megoldja. :)

Szerintem kapcsolási rajzzal se mentél volna sokra. A mai divi a "csomókba rajzolás". Régen egy szempillantással el tudtad dönteni egy rajzról, hogy
- televízió készülék, vagy habverő ;)
- a jelek haladási irányát
- a táplálást és szűrést

A breadboard nagyon hasznos dolgok kiprobalasara, ha figyelembe veszed a limitacioit. Pl. hosszu osszekottetesek, nagy kapacitasok, mindenfele zavarokat osszeszed, emiatt relative kis sebessegig jo, foleg digitalis kutyukhoz. Radiot, meg mikrohullamu dolgokat ne probalj meg osszerakni rajta!

Ja, es az SMD alkatreszekhez is lehet jo, ha rateszed egy kis atalakitora - a nepszerubbekhez meg terveznek is ilyen dugdosos modult, es keszen lehet kapni. Pl. van olyan modulom, amin rajta van egy 1117 LDO, a megfelelo kondikal, meg tapledet is kapott. Csupa SMD alkatresz, de hasznalhato breadboardon.

--
Any A.I. smart enough to pass a Turing test is smart enough to know to fail it. -Ian McDonald

Ezek szerint a topicnyitó esete meg sem történt. ;)
Szerintem egy relé egyszeri kikapcsolása igen messze van a mirohullámtól. Aki breadboardon kísérletezik, az általában annyira nincs tisztában az alapokkal, hogy egy adatlapot értelmezni tudjon. Talán pont ezért végig sem olvassa.

Egy egyszerű előírás egy PIC mcu adatlapjából: The decoupling capacitors should be placed as close to the pins as possible. It is recommended to place the capacitors on the same side of the board as the device. If space is constricted, the capacitor can be placed on another layer on the PCB using a via; however, ensure that the trace length from the pin to the capacitor is no greater than 0.25 inch (6 mm).
Ez még nem feltétlenül SMD, meg akár működhet az előírás betartása nélkül is. A valóságban esélyed sincs betartani. Mint látszik, egy relé kikapcsolásakor is 1-5MHz a balesetet okozó domináns frekvencia. Ezért pont digitáls kütyükhöz nem jó.
Az SMD-nem SMD kérdésben az egyik szempont, hogy a nem SMD választékban sokszor nem létezik hasonló képességű akatrész. Kis panelen, hosszabb összekötésekkel meg teljesen más kapcsolás áll elő, amit tényleg csak próbálgatni lehet, de megközelíteni a cél áramkört nem. A gyakorlatban azt jelenti, hogy jó ideje nem készítek deszkamodellt. A prototípus egyből a gyártmány is.
Az SMD alkatrészek adatlapja végén megtalálod a javasolt layout-ot képes vagy szöveges formában. Ráadásul az apró alkatrészek pont azért jók, mert kis induktivitású és kapacitású összekötéseket lehet alkalmazni. A népszerű* alkatrészekhez készült kis lapkát tényleg csak a kipróbálgatáshoz jók.
* Az ebay "népszerű" választékában gyakran csak az elavult alkatrészek szerepelnek. Játékra jók, de terméket nem lehet belőle csinálni.

DIP28 tokos Atmega8/48/88/168/328 es hasonlokon pl. a tap es az egyik fold egymas mellett van. A ketto koze felulrol ra lehet forrasztani egy SMD kondit, onnantol breadboardba dughato, es nincs vele gond.
Azt en is tapasztalom, hogy egyre tobb alkatreszbol van csak SMD valtozat.
A rogton NYAK pedig neked, joval tobb tapasztalattal jo megoldas. Nekem nem lenne, mert tul sok iteraciot igenyelne mig tokeletes lesz. Van NYAKtervezessel is foglalkozo kollegam meg ismerosom, altalaban 2-3 valtozat kell nekik mig jo lesz (kiveve ha korabbi eszkoz uj verzioja, es kicsi a valtoztatas). Persze a korabbiakat is lehet pl. atkotessel javitani, de azert az nem a legjobb megoldas. A gyartas/gyartatas meg vagy draga vagy lassu, otthon meg maceras is, es mindenkepp lassabb a breadboardos valtozatnal - mar amikor az utobbi mukodik.

Egy kerdes a vegere: Linuxra milyen nyaktervezot ajanlasz?

--
Any A.I. smart enough to pass a Turing test is smart enough to know to fail it. -Ian McDonald

Ez is egy megoldás, de csak egyszerű esetre. Van 2-3 táppal rendelkező tok is.

Mutatok egy példát, ahol a méret 8x4cm, és a felén (tehát 4x4 cm) van kb. 84 alkatrész. (Ugyanannak az áramkörnek látod mindkét oldalát.) Ez egy második verzió. Az elsőtől annyiban különbözik, hogy nagyobb csatlakozó és kb. +25 alkatrész került rá. ;) Sőt, az elsőből két példányt én szereltem kézzel = 2 nap. A szakember szerint itt a határ, amikor alkatrész még férne, de a két réteg már nem elég. No, ebben van 3 féle FET + 2 féle P-N duálFET, 3 négyes hálóellenállás - a méretek miatt. Ezt sem breadboardon, sem lábas alkatrészekkel nem lehet összerakni.

Rossz hírem van: A nyákot én csak terveztetem és konzultálom (beleszólok mi hogyan legyen) egy még nálam is öregebb öregúrral. Elküldöm a rajzot, adatlapokat, majd a bonyolultságtól függően 1-4x konzultálunk. Mivel a korábban említett stílusban rajzolok, ezért általában csak szépészetről szólnak a megbeszélések.

Ha nem is tervezek nyákot, de rajzolni azért kell. Az sem kis játék. A legtöbb probléma a hiányos libekkel van, meg az új fejlesztésű vagy ritkább alkatrészekkel. Csak olyat szabad használni, amibe könnyen lehet saját elemet felvenni. Nekem a KiCad jött be. Aki nyáktervezésre is használta linuxon, az dícsérte. (Nekem fut WindowsXP/SP2 alatt is, amin nem is lenne szabad. ;))
Ahol terveztetek, ott meg régebbi Windows-on futó DOS alapú szoftvert használnak. ;) Meg szidják az Eagle vagy akármi egyebet használókat, hogy milyen dilettáns terveket adnak le. :-D

A breadboard egy kiserletezos, hobbi eszkoz. Lassan az osszes through hole alkatresz is az lesz. Ha a hatsokertedben van nehany paradicsom meg paprika, ahhoz nem kell traktor meg mindenfele mezogazdasagi gep, ez egyszeruen masik liga. A negyzetcentinkenti 5 alkatresz mar boven tullepi a breadboard limitacioit, arra nem alkalmas, de ertelmes ember nem is probalkozna vele. Szerintem mar annyit foglalkoztal elektronikaval, hogy nem erted mire jo a breadboard. Mint amikor a gazdanak emlited a vodrot/lapatot, es csak nez leesett allal, mert 100 hektar alatti meretekben mar nem tud gondolkodni.

szerk: ja, es amit emlitettem (atmega8), annak a tqfp32-es valtozata pont ilyen tobbtapos

--
Any A.I. smart enough to pass a Turing test is smart enough to know to fail it. -Ian McDonald

+1
Igazából a breadboard egy remek eszköz, mert könnyen és gyorsan lehet vele haladni. Könnyen variálható és ha már nincs rá szükség, könnyen szétszedhető.

-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…

A breadboard nem Godzilla, tehát nem a méret a lényeg. ;) Megegyeztünk abban, hogy vannak korlátozások, de azon belül jó amire jó. Lehet profi módon paradicsomot termeln a balkonon is. ;)
Amit ellenzek az az illuzió: Ha lemásolom az internetről a színes madzagokat, akkor már értek is hozzá. Persze ez úgy néz ki, mintha minden okostelefon felhasználónak a hardvert is meg kellene tudnia tervezni. ;) Ehhez képest itt mégis csak hardveres hobbiról van szó, amikor a gyenge felkészültség megoldhatatlannak tűnő problémákba végződhet. És nem is a gyakorlat hiányára gondolok, mert az úgy is minden kezdőt utolérhet. Talán csak öreg vagyok a mai világhoz. Régen először megértettük a feladatot, utána rajzoltuk a folyamatábrát és csak a végén készült a program. Mostanába meg azt tapasztalom, hogy az első két lépés kimarad, a program meg a programnyelv elegendő mértékű ismerete nélkül készül el. Működik, gyorsan készült, a hibakeresés pedig szerves része a megoldásnak, ami természetesen több, mint a programozásra szánt idő. Remélem ez is van olyan jó, mint a paprikás példa! :)

Köszi a megfejtést! Valóban nem volt ott kondenzátor, rendkívül trehány módon dobáltam össze gondolván, hogy nézzük meg, aztán majd finomítunk rajta. Tudom, hogy téged dühít ez a módszer, de nekem ez hobbi, nem szakma úgyhogy talán megengedhetem magamnak. A célom az, hogy közben megtanuljam a dolgokat, de először hadd csináljak néhány hülyeséget is!

Legközelebb ha lesz rá időm ránézek szkóppal, hogy mi lett a frekvencia végül. A rezgés tehát abból adódik, hogy a tranzisztort nyitásba kényszeríti a túlfeszültség, ez fennáll ameddig a túlfesfzültség fennáll, utána pedig újra zár, de eddigre a tekercsben ugyanaz az áram mint kiinduláskor, tehát úgyanez folyik le újra és újra.

Egyébként szerinted hogyan kellene ezeket a dolgokat megtanulni? Tankönyvből (tudsz ajánlani jót?) megtanulom, aztán rajzolok NYÁK-ot programmal beültetem és a kész terméket végül többnapos párezer forintos "debug" iterációkkal javítsam?

Nem a módszer dühít. :-) Inkább az, amikor valaki elmagyarázza, hogy neki MÚKODIK (Uri Geller) és különben is mit okoskodok. Ne aggódj, láttam évtizedek óta a szakmában dolgozó "szakembertől" olyan topológiát: táplálás -> fogyasztó -> szűrés. :-D Ha kicsit szívsz, jobban megtanulod! Persze csak akkor, ha abba is feketetsz energiát, hogy mégértsd a történteket.

Ha meg tudod mérni, dobhatsz egy ábrát. Talán nem teljesen pontos az értelmezésed. Az adatlap teszt áramkörénél az látszik, hogy egy átlagos relénél járulékos alkatrész nélkül csillapodik a rezgés. Két tippem is van. Vagy a táp is részt vett a lengésben, vagy a vezeték parazita induktivitása akkora csúcsot okozott, hogy a meghajtó áramkörnél is elbillent valami a tokon belül. Az utóbbit nem mindig lehet megmérni olcsó digitális szkóppal.

És most nem röhögni!
Amiből az alapokat meg lehet tanulni - Texas: TTL receptek. Műszaki Könyvkiadó, 1978.
Ami a mai napig nem változott, az az áram folyása, zavarok, csatolásmentesítés. Nem számít, hogy TTL áramkörök vagy egyéb. Olyan ökölszabályokat írnak le, amit bármilyen áramkörben alkalmazni kell az évjárattól függetlenül! Konkrétan a 3. és 12. fejezetben.
...végül többnapos párezer forintos "debug" iterációkkal javítsam?
Ezt csinálod most. Ha tisztában vagy az ökölszabályokkal, akkor fontosnak fogsz olyan dolgokat is tartani, amiről eddig talán nem is hallottál vagy csak nem értetted. Igaz, én - hosszabb megszakítással - '83 óta űzöm a szakmát, biztosan könnyen beszélek. Szerinted. Pedig nap mint nap újat tanulok!

Van még egy másik fontos dolog: az alkatrészek választékának és az adatlapoknak az ismerete. Itt rosszindulatúan arra is gondolok ;), hogy hátha nem jutottál el addig az ábráig, amire felhívtam a figyelmedet. A clamping gyakorlati megvalósítás nem derül ki az adatlapból. Ehhez el kell menni az alkatrész Texas oldalára és érdemes további Application Note-ot is tanulmányozni. (linkeltem!)tanulmányozni kell.

Még egy fontos dolog: Hogyan működnek a MOSFET-ek? Miért mehet tönkre/hibázhat egy mcu, ha egy végtelelen bemeneti ellenállású MOSFET-et vezérelsz vele? Vagy esetleg a FET olvad el... Egy '83-as AN szerint a fejlesztőkben nem igazán tudatosult, hogy a MOSFET GHz-es eszköz. Hogyan kell egy FET-et kiválasztani? Ha ezekre nem tudod a választ, akkor érdemes tanulgatni.

Hogy csinalsz atfolyasmerot hall szenzorral? Mi a mukodesi elve?