-
IT café
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
zka67
őstag
válasz dave0825 #1747 üzenetére
Szia, pont erről beszélgettünk a minap egy Új-Zélandi barátommal, aki ezt írta: Mains + relays + microcontrollers are not easy bedfellows. ami magyarul: A hálózati feszültséget, reléket és mikrokontrollereket nem egyszerű egymással összehozni.
Az egyenáramú relékben a tekercs eltárolja az energia egy részét, ami a meghúzásához kell. Amikor megszakítod a tekercs tápját, az visszaadja a benne levő energiát, azaz "visszarúg". Ezt egy párhuzamosan kötött diódával szokták kivédeni, pl. így: [link]
A mikrokontrollerek érzékenyek a tápfesz ingadozásra, amit kiválthat pl. egy relé meghúzásakor fellépő áramlökés, ill. az elengedésekor keletkező túlfeszültség. Továbbá a relék lábai elég közel vannak egymáshoz, a 220V-ot illik megfelelő távolságban elvinni a tekercset meghajtó vezetékektől.
Szóval a mikrokontrollerek tápját illik megszűrni egy tekercs-kondi kombinációval, amit már te is csináltál. Filléres alkatrészek, mégis szinte minden amatőr kispórolja ezeket az alkatrészeket.
Viszont nálad ennek ellenére szerintem más lesz a gond. Az arduino library-k sem tökéletesek. Én az infra vevőkhöz csináltam egy kis áramkört, egy olcsó atmel mikrokontrollerrel, az soros vonalon kiköpi nekem a kódot, vagy azt, hogy "REPEAT", ha nyomva tartod a gombot, és nem kell foglalkozom vele a továbbiakban, hogy hogyan és miért működik egy infra vevő. Mert működik, nem téveszt, én írtam a programját.
-
zka67
őstag
válasz dave0825 #1775 üzenetére
Márpedig ha nem tudjuk, hogy milyen kódot kap, akkor elég nehezen fogunk rájönni a hiba okára. De van egy sejtésem: szerintem az utoljára vett kódot küldi vissza néha valamiért a library, egy OK-val. Próbáld meg törölni a result.value értékét miután kiolvastad, ha jó volt a kód, ha nem. Így nem marad benne véletlenül sem.
-
zka67
őstag
válasz Pubszon #1803 üzenetére
Szia, próbáld meg így:
void setup()
{
pinMode(DS_pin, OUTPUT);
pinMode(STCP_pin, OUTPUT);
pinMode(SHCP_pin, OUTPUT);
digitalWrite(STCP_pin, LOW);
digitalWrite(SHCP_pin, LOW);
}
...
void writereg()
{
digitalWrite(STCP_pin, LOW);
digitalWrite(SHCP_pin, LOW);
for (int i = shiftoutput; i >= 0; i--)
{
digitalWrite(DS_pin, registers[i] );
digitalWrite(SHCP_pin, HIGH);
digitalWrite(SHCP_pin, LOW);
}
digitalWrite(STCP_pin, HIGH);
digitalWrite(STCP_pin, LOW);
} -
zka67
őstag
Szia, a működése: a prev változó tárolja a nyomógomb előző állapotát, a state a kimenet aktuális állapotát.
Utána egy végtelen ciklusban beolvassa a curr változóba a nyomógomb aktuális állapotát, majd megnézi, hogy a nyomógomb most le van-e nyomva és az előző állapotban nem volt-e lenyomva, azaz most került-e lenyomásra. Ha igen, megváltoztatja a kimenet állapotát és kiírja azt a portra. A végén minden esetben átkerül az előző állapotba a nyomógomb aktuális állapota, és vár 100ms-et a nyomógomb prell elkerülésére.NYOMÓGOMB ___ _________ _____ ______
\____/ \/\______/ \_/
LED ______________ _______
___/ \______________/
MINTAVÉTEL | | | | | | | | | | | | | | |Szerk: lásd gyapo11 válaszát is
[ Szerkesztve ]
-
zka67
őstag
Srácok, igaza van tvamos-nak, ide soros vonal kell, mégpedig RS485-ös adó-vevőkkel, különben nem fog működni a rendszer. Egy I2C buszt nem lehet elvinni még 2 méterre sem, soros vonalat árnyékolt vezetékkel talán 15m-re alacsony sebességgel. RS485-öt meg csavart érpáron (UTP vezetéken) akár 1200m-re is (nekem egy ipari parkban működik 80 darab kártyaolvasóm ezzel a megoldással).
Továbbá figyelembe kell venni azt is, hogy mit használtok kapcsolónak? Relét? Szerintem marhaság, egyrészt drága, másrészt meg sok a gond vele, néha több kárt csinál mint hasznot. Én MOSFET-et használnék, ha a kapcsolt áramköröknek nem kell összekötve lennie a GND pontjuknak. (Egy relé árából veszek tíz mosfetet).
Én úgy csinálnám meg a rendszert, hogy - ha már ardunionál kötöttetek ki - vennék egy vezérlő adruinot, aminek a soros port kimenetére tennék egy 75176-os IC-t adó üzemmódban, majd UTP-n sorba felfüznék rá annyi aurduinot, amennyi szükséges. Ezeknek a soros port bemenetükre tennék szintén 75176-os IC-ket vevő üzemmódban. Minden egyes vevő arduinonak adnék egy báziscímet és kész is a protokoll.
Ha be akarok kapcsolni egy kimenetet, akkor kiküldöm a kapcsolni kívánt port címét, 0-127 között, valamint a 7-es bitet 1-be kapcsolom, ha ki akarom kapcsolni, akkor pedig a 7-es bitet nullába kapcsolom. Ha a cím az adott arduino tartományába esik, akkor feldolgozza a parancsot, ha nem, akkor figyelmen kívül hagyja.
Ezzel ki lehet védeni azt is, hogy esetleg gyorsan ki-be kapcsolgathassa az adott portot (vannak olyan áramkörök, amik nem igazán szeretik ezt). Pl. ha ki van kapcsolva a port és bekapcsolás parancs jön, akkor bekapcsolja. De pl. ha 5 mp-en belül kikapcsolás parancs jön, akkor azt eltárolja, de nem kapcsolja ki azonnal a portot. Ha közben ismét bekapcsolás parancs jön, akkor marad bekapcsolva a port, különben 5 mp múlva kikapcsolja.
-
zka67
őstag
Szia, te nem olvasol, csak írsz?
-
zka67
őstag
válasz DrojDtroll #1953 üzenetére
Vagy optocsatolóval + fet-tel, tranzisztorral. (Pl. PC817 + BSS170, vagy PC817 + BC337)
Használhatsz logikai kimenetes optocsatolót is, pl H11L1-et, ennek 5V táp kell a vevő oldalról, és TTL kimenetet ad, utána ott már azt kapcsolsz vele, amit akarsz.[ Szerkesztve ]
-
zka67
őstag
válasz dave0825 #2000 üzenetére
Szia, igaz magyarországon drágább mint az arany, de szerintem ez a legegyszerűbb megoldás:
MAX7219CNG+ Driver; display controller; Common Cathode; DIP24
Egyszerű vezérelni, be lehet állítani a max fényerőt, és azon belül programból tudod állítani is. Nem kellenek ellenállások a ledekhez, simán mátrixba kötöd, ráaggatod az ic lábaira, aztán szoftver és működik.
Szerk: közben találtam olcsóbban, ehhez adnak nyákot és egy 8x8-as (gondolom piros) kijelzőt, amit vagy elhasználsz ,vagy majd jó lesz valamire:
[ Szerkesztve ]
-
zka67
őstag
válasz dave0825 #2006 üzenetére
Szia, az adatlapját le tudod tölteni, pl az alldatasheet.com-ról. A vezérlése nagyon egyszerű, az egyik lábon küldöd neki az órajelet, a másikon meg az adatot, oszt ennyi. 16 bitet kell kiküldeni egy sorhoz, ebből 4 bit nem használt, 4 bit a regiszter címe, 8 pedig az adat. A regiszterek között vannak sorcímek és vezérlő regiszterek, pl a fényerő meg egyebek.
Miért nem csinálod meg úgy, hogy a jégcsap mögé beteszed az IC-t is, és akkor csak néhány vezetéket kell elvinned?
-
zka67
őstag
válasz gyapo11 #2009 üzenetére
Szia, bocs, hogy beleszólok, de már nagyon régen feltalálták a MOSFET-eket
Én kapcsolgatásra csak ezeket használom, 500mA-ig BSS170-eseket, filléres cuccok. Ha kell valakinek több ezer darab BC337, mondjuk 5 Ft/db áron, akkor szóljonSzerintem félnek az emberek a MOSFET szó hallatán, mert nem tudják, hogy mi az, mire jó, hogyan kell vezérelni, pedig jóval egyszerűbb, mint egy tranzisztort.
[ Szerkesztve ]
-
zka67
őstag
válasz dave0825 #2008 üzenetére
Szia, közben megtaláltam a jégcsapodat
WS2812B-nek hívják, ez egy RGB led és egy bele integrált IC. Összesen 3 vezeték kell hozzá, GND, +5V és az adat, hogy vezérelni tudd. Sorba lehet kötni őket az adatvonalukon. Filléres cucc.
Így még a jégcsap színét is tudod változtatni, nem csak a méretét
Szerk: Ja és true color
[ Szerkesztve ]
-
zka67
őstag
válasz dave0825 #2021 üzenetére
Szia, így értettem a filléres cuccot, de most már emlékszem hogy ez nem játszik nálad.
Egyébként ahhoz képest, hogy RGB és true color, nem is drága. Szerintem a bolti jégcsap csak egyszínű lehet...
A fantáziámat különben beindítottad, én úgy csinálnám meg a jégcsapokat, hogy tennék rá egy icipici kis mikrokontrollert, és az vezérelné egy előre megírt vagy random program alapján a jégcsapok növekedését és színét. Így csak a tápot kellene elvinni a jégcsapig, és mindegyik mást mást csinálna.
Na mindegy, jövő karácsonyig ráérsz újat fejleszteni
-
zka67
őstag
válasz dave0825 #2025 üzenetére
Szia, én mindenképp a legkisebb méretű uC-t választanám, pl. ezt:
ATTINY10-TSHR vagy ezt
ATTINY13A-SUCsak egy kimenetre van szükség, azt kell megfelelő időzítéssel röcögtetni (4/8 órajelenként változtatni a kimenetet). Van benne 32/64 bájt ram, az bőven elég a ledek aktuális szín értékeinek tárolására, 1k flash meg a programnak is 3x sok.
-
-
zka67
őstag
válasz gyapo11 #2035 üzenetére
Szia, kezdünk átmenni a hobbielektronika topikba való témákra...
Ja, a sima 5050-es RGB led eBay-en 20Ft, a WS2812B meg 37Ft/db 100db esetén. Csak nem mindegy, hogy pl. egy jégcsapnál ott van 8-10 db led, mögötte meg egy számítógép hatalmas hűtőbordával és azok lógnak a fán, vagy csak a ledek egy 6 lábú mikrokontrollerrel, ami egyáltalán nem is észrevehető, akkora. (Most egy kicsit túloztam, de a dolog lényegét próbáltam meg érzékeltetni).
-
zka67
őstag
válasz peter1998 #2048 üzenetére
Szia, Tápegységáruház
23.-án délig vannak nyitva, legközelebb csak január 6. után lesznek.
-
zka67
őstag
válasz dave0825 #2066 üzenetére
Szia, megrendelheted ám az SMD-set is, (én inkább DIY-t rendelnék belőle), mert ehhez már van nyák, csak a ledeket kell beledrótoznod majd. Azt nézd meg, hogy hogyan férne el két darab ezekből az órádban. A mátrix helyére egyszerűen az óra ledjeit kötöd be. Remélem érted, hogy mi akarok mondani (magyarul nem kell külön a nyákkal bíbelődnöd).
Szerk: egyénként az IC árustól én is szoktam rendelni, megbízható eladó
[ Szerkesztve ]
-
zka67
őstag
válasz dave0825 #2068 üzenetére
Szia, a kijelző és a lábai kb 11mm magasak. Maga a nyák és az ic kb 4mm magasak együtt. (Az ic a kijelző alatt van, annak a magassága 2.5mm, azt ne számold bele az össz magasságba.
Ne legyél tanácstalan, rendelj 5db IC-t, 5db DIY kitet, és rendeld meg az 5db-os összeszereltet is
Keress az eBay-en olcsóbb DIY-t, rengeteg 2db-os aukciós van, le kell csapni rájuk az utolsó pillanatban. -
zka67
őstag
válasz dave0825 #2102 üzenetére
Szia,
Akkor azt hogy csinálja, hogy 1:24-nél a középső 6 ledet kikapcsolja?
Úgy, hogy a középső zöld ledek rosszak, egyáltalán nem világítanak
A WS2812B-vel meg lehet csinálni, de ehhez kevés lesz a digitalWrite az arduinon, itt már assembly szinten kell majd programoznod a chip időzítései miatt.
Az EQ-t én úgy csinálnám meg, hogy csinálnék egy 7 vagy akárhány sávos sávszűrőket, analóg módon, ellenállásokkal, kondikkal és LM324-el vagy hasonló IC-vel. Az IC kimenetére tennék egy diódát és egy kondi+ellenállást, ez tárolná az aktuális hangerőt azon a sávon. Aztán mehet az ADC-be.
Ha viszont kevés lenne az arduino a feladathoz (itt a led szalagok frissítésére gondolok, az időzítésekre, mert elég precíz időzítést igényel az IC), akkor én azt javasolnám neked, hogy mozdulj inkább az ARM procik irányába. Kezdésnek szerintem ezt választhatnád: ARM Cortex-M0 Core Module LPC1114 Development
Ehhez van Keil IDE, full szoftveres debug (azaz nem is kell hozzá az áramkör), simán le tudod tölteni a programot soros porton keresztül, nincs vacakolás, hogy van-e rajta bootloader vagy milyen verziójú van, mert benne van a chip-ben. Az IC ugyan 3.3V-ról jár, de az összes IO lába 5V toleráns, azaz nem kell az 5V-os cuccokhoz se level shifter. 48MHz-es, Cortex-M0 mag van benne, ami jelen esetben lényegtelen, tanulni, gyakorolni szerintem nagyon jó.
Ha érdekel a dolog, szívesen segítek benne, mind szoftveresen, mind hardveresen.
Sőt, van is egy ilyen modulom, ha érdekel, eladó, kb. 200x volt írva a proci. (10000-t simán kibír) -
zka67
őstag
válasz dave0825 #2111 üzenetére
Szia, először is nem poén volt, hanem ha jobban megnézed a videót, a középső zöld ledek egyáltalán nem világítanak. A linkelt videódon én nem látom, hogy arduinot használnának.
De:
Nagyjából erről beszéltem, amit itt az Adafruit_NeoPixel.cpp-ben találsz
Szerintem ha már kigondoltad, csináld is meg, ne add fel!
A sávszűrők alkatrészköltsége kevesebb, mint 500 Ft.
Ha hobbiból csinálod, munkaidő költsége 0 Ft.
Tapasztalatszerzés: felbecsülhetetlen érték! -
zka67
őstag
válasz dave0825 #2117 üzenetére
Szia, ez alapján szerintem el lehet indulni.
Ebből neked csak a rajz bal oldala kell az órajel generátor nélkül. Mivel az ardiunonak ha jól tudom, csak 6 ADC bemenete van, ezért szükséged lesz neked is analóg kapcsolókra, mert itt tíz jelet kell feldolgoznod. Szerintem jobban jársz, ha CD4051-es IC-t használsz (2db-ot, filléress cucc), mert akkor összesen 3 kimenetre lesz szükséged a bemenet kiválasztásához, és 2 ADC bemenetre.
A frekvenciák: 32Hz, 64Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz és 16kHz, fentől lefele.
Szerintem nyugodtan nekiállhatsz egy-két csatornával kísérletezni (pl. a 125Hz és 1kHz).
Ráteszel 1db CD4051-et, hogy a bemenetek választását is ki tudd próbálni.
Soros porton pedig kiíratod az aktuális értékeket. -
zka67
őstag
Szia, igen, én is találkoztam ezzel a hibával, bár nem arduinon, hanem ARM uC-n, de a lényegen ez nem változtat, mert u.a. a könyvtárat írtam át az ARM-ra. Néha hülyeségeket küldözget a hálózatra, és aztán le is áll az ethernet vezérlő. Nem volt idegrendszerem hozzá, hogy megkeressem benne a hibát.
A megoldásom az volt, hogy kerestem egy másik könyvtárat, átírtam és azt használom, azzal abszolút nincs semmi gondom. Itt az eredeti arduinos könyvtár, kicsit másképp működik, de jóval egyszerűbb.
-
zka67
őstag
válasz gyapo11 #2244 üzenetére
Szia, a mikrokontrollerek baromi érzékenyek a külső zavarokra. Gondolok itt elsősorban az autó gyújtótrafójára. Ha nincs megfelelően leárnyékolva és a táp megszűrve, akkor felejtsd el, hogy megbízhatóan fog működni.
Az ablaktörlőre szerintem a ford fiestában kitalálták a tökéletes megoldást: úgy működik, hogy bekapcsolod a szakaszos törlést, majd ki is kapcsolod. Utána amikor úgy látod, hogy törölni kell, akkor ismét bekapcsolod és megjegyezte az időt, ezután ebben az ütemben fog törölni.
-
zka67
őstag
válasz gyapo11 #2249 üzenetére
Szia, a változtatás is ugyan úgy megy, mint ahogy leírtam. A törlés után kikapcsolod a szakaszos törlést, és amikor úgy látod, hogy most már törölnie kell, akkor visszakapcsolod, és ebben az ütemben folytatja. A visszajelzés te magad vagy: kicsit esik az eső, bekapcsolod a szakaszos törlést, aztán ki is kapcsolod, majd a törlés után, amikor úgy látod, hogy most már törölhetne, akkor visszakapcsolod és úgy hagyod, és megjegyezte az ütemet. Ha gyorsítani vagy lassítani akarod, akkor is ugyan ez a teendő. Pl. gyorsítani akarod, akkor látod, hogy már törölhetne, akkor csak ki és be kell kapcsolnod, mert az utolsó törléstől eltelt időt méri. Ha lassítani akarod, akkor kikapcsolod, és ha elég eső esett, akkor kapcsolod vissza. Remélem érthető vagyok
Én nagyon szeretem, sokkal jobb, mint a 2 fokozatú vagy potival állítható törlők, mert nem időt kell beállítanod, hanem az eső mértékéhez tudod igazítani a sebességet.
-
zka67
őstag
válasz gyapo11 #2258 üzenetére
Szia, majdnem. Addig jó, hogy ha bekapcsolod, akkor egy default idővel töröl.
Mindig az utolsó törléstől méri az időt.
Ha a következő törlés előtt kikapcsolod, majd később visszakapcsolod, akkor az előző törlés és a visszakapcsolás közti idővel fog törölni. Túl hosszú időt nem lehet vele beállítani, akkor visszaáll a default időre, de szerintem percenkénti törlést nincs is értelme beállítani, akkor csak megpöccintem a kart és töröl egyet.
-
zka67
őstag
válasz Pubszon #2317 üzenetére
Szia, ennek valójában már nem sok köze van az ENC28J60-hoz, ez már inkább a html programozás kategóriába tartozik. De röviden, csinálsz egy formot GET küldéssel, majd a fogadott adatokból kihámozod a GET paramétereit. Nem tudom milyen library-t használsz, de pár hsz-szel korábban említettem egy nagyon jó könyvtárat, amivel tudsz multipackettet is küldeni. Előbb-utóbb kevés lesz az egy buffernyi méretű oldalad...
-
zka67
őstag
Szia, nem nyit ki rendesen a tranzisztorod. Szerintem túl nagy értékű ellenállást használsz a bázison. De ez nem is érdekes, hiszen az ilyen tranzisztorokat darlingtonba szokták kötni.
Én azt javaslom neked, hogy ne használj tranzisztort ilyen helyeken, ide sokkal jobb megoldás a FET. Pl. egy IRF540 filléres dolog és elviszi még a házadat is. Ugyan úgy kell bekötni, mint a BD241-et, azzal a különbséggel, hogy a G-S közé (B-E) tegyél egy 100k-s ellenállást, a G-Arduino (B-Arduino) közé pedig egy 10k-sat.
-
zka67
őstag
Szia, és (#2382) razorbenke92:
A BD241-nek tudjátok mennyi a hFE-je? 10-25. A VBE 1.8V, és ez azt jelenti, hogy 1k-s ellenállással 30-60mA-t tudsz kapcsolni vele Ennek a tranzisztornak ahhoz, hogy teljesen kinyisson 0.6A bázisáram kell. Ezért mondtam, hogy vagy darlington (ami a mai világban felejtős), vagy FET.
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen