Hirdetés

2024. május 4., szombat

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-03-11 00:46:52

LOGOUT.hu

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.

Összefoglaló kinyitása ▼

Hozzászólások

(#22301) tibi-d


tibi-d
tag

Mi történik akkor, ha pl. egy UNO egyik bemenetére 5V kerül úgy, hogy nincs rajta tápfeszültség.

(#22302) Aryes válasza tibi-d (#22301) üzenetére


Aryes
nagyúr

Az attól függ, hogy GND összeköttetés van-e, csak táp nincs, és attól is, hogy mekkora áram érkezik az 5V-tal.

(#22303) tibi-d válasza Aryes (#22302) üzenetére


tibi-d
tag

A GND össze van kötve, a bemenet és az 5V között kb. 6k8 ellenálás van.

(#22304) Aryes válasza tibi-d (#22303) üzenetére


Aryes
nagyúr

Az a ~0,7mA, ami azon át tud folyni, szerintem egész biztosan nem tud kárt tenni semmiben. :N
Most azon gondolkodtam el, hogy a védő diódán keresztül amúgy meg tudja táplálni magát a uC-t (kb. 4,3V jutna a Vcc lábra), ha nagyobb áram érkezne, egészen addig nem lenne attól sem baja, amíg a bemenetet védő dióda túl nem terhelődik, ezt viszont sajnos nem tudom, mekkora áram lehet.

(#22305) tibi-d


tibi-d
tag

Egy tapasztalat, hogy más ne fusson bele.
Aki enkódert használ, és a Paul Stoffregen féle Encoder.h könyvtárat használja olyan programban, aminek a ciklusideje nagyobb 20ms-nál, akkor az enkóder hibás értéket adhat vissza.

(#22306) tibi-d


tibi-d
tag

Még egy tapasztalat, amiről nem találtam információt.
A TimetOne.h időzítő könyvtár kizár néhány I/O pontot a PWM használatából.
Pl. a Mega2560 11, 12-es lábait is lehet PWM-ként használni (leírás szerint). Ha a fenti időzítőt akarja valaki használni, akkor ezeken a lábakon nem működik a PWM. A TimerThree.h mellet viszont használható.

(#22307) Wolfram


Wolfram
aktív tag

Wifi routert váltottam, és a WiFi.setHostname
az ESP oldalon megszűnt működni, azaz hiába állítja be saját magának az ESP a host nevet, azt sehol, semmi nem látja.
Van itt olyan hálózati guru aki tudja mi a probléma? 🤔

(#22308) Aryes válasza tibi-d (#22305) üzenetére


Aryes
nagyúr

Encodert nem szokás loop-ból használni, megszakítással lehet csak megbízhatóan.

(#22309) tibi-d válasza Aryes (#22308) üzenetére


tibi-d
tag

Ezért csináltam én is megszakítással, annak ellenére, hogy a példaprogram loop-ot használ. Igaz, hogy semmi más nem futott rajta kívül. A megszakítás vezérlő pedig kilőtte a PWM funkciót néhány lábról.

[ Szerkesztve ]

(#22310) ekkold válasza Aryes (#22308) üzenetére


ekkold
Topikgazda

Meg lehet azt jól is csinálni. A forrasztóállomásomban [link] pl. a loop-ból kezelem a gombokat és/vagy az enkódert is, ráadásul úgy, hogy nincs hardveres prellmentesítés, hanem azt is szoftverből oldottam meg (hibátlanul működik). Persze ehhez olyan program felépítés kell, ahol a loop nagyon gyorsan fut (de igyekszem mindig ilyen elven programozni).
Most egy másik projektben gombokat és egy forgó kereket, amit két optokapu figyel (enkóderhez hasonlóan kell kezelni) egy 40µs-os timer megszakításból kezelem. Azért így mert a kijelző multiplexelését is szoftveresen kellett megoldani.
[link-video] [link-video]
Baloldalt a fordulatok számát - jobb oldalon a másodpercenkénti fordulatszámot mutatja.

Lehetne persze az input lábakkal indítani megszakítást, de így sokkal nehezebb a prellezést szoftveresen kezelni (akkor kellene pl. RC tag a bemenetre, hogy ne tudjon túl sűrűn megszakítást indítani).

[ Szerkesztve ]

(#22311) Aryes válasza ekkold (#22310) üzenetére


Aryes
nagyúr

Persze, igazad van, de egy olyan program, aminek a ciklusideje nagyobb 20ms-nál nem ilyen módon optimalizált kód. :)
Én csináltam már szoftveres prellmentesítést megszakítással is. Nyilván nem elegáns, de azért a feladatát teljesítette. :))

(#22312) ekkold válasza Aryes (#22311) üzenetére


ekkold
Topikgazda

Ezt a prellmentesítést hogyan oldottad meg?
Ami megoldást láttam eddig ott a megszakításban kivárta a prellezés végét, ami akár 1ms is lehet - hát az nem túl szép. Vagy rá lehet nézni a loop-ból, hogy abbahagyta-e már a prellezést, vagy timer megszakításból is, de akkor meg majdnem ugyanott vagyunk mintha eleve így kezelnénk pollozással...

De hátha tudsz valami jobb megoldást... ?

(#22313) Aryes válasza ekkold (#22312) üzenetére


Aryes
nagyúr

Így:

volatile long encoder0Pos=0;
volatile long previousMillis0 = 0;
volatile int currentPos = 0;
volatile int previousPos0 = 0;
volatile long currentMillis = 0;

attachInterrupt(0, doEncoder0, CHANGE );

void doEncoder0()
{
currentMillis = millis();
currentPos=digitalRead(encoder0Pin);
if (currentMillis - previousMillis0 >= interval) {
if (currentPos != previousPos0) {
previousPos0=currentPos;
previousMillis0 = currentMillis;
encoder0Pos++;
}
}
}

(#22314) ekkold válasza Aryes (#22313) üzenetére


ekkold
Topikgazda

Ennek így nem látom át a működését. Az interrupt eleve akkor hívódik meg amikor változik a láb állapota. Megnézed, hogy eltelt-e bizonyos idő, és tényleg változott-e a láb állapota, és ha igen akkor növeled az értéket.
Mi történik prellezéskor, és mikor fog csökkenni az érték?

Mi történik ha a prellezés éppen hamarabb befejeződik mint az interval? Akkor mi fogja a függvényt meghívni?

[ Szerkesztve ]

(#22315) Aryes válasza ekkold (#22314) üzenetére


Aryes
nagyúr

Az interrupt eleve akkor hívódik meg amikor változik a láb állapota. Megnézed, hogy eltelt-e bizonyos idő, és tényleg változott-e a láb állapota, és ha igen akkor növeled az értéket.
Ezt vagy 6 évvel ezelőtt írtam. Nem emlékszem pontosan, hogy miért került bele az állapot ellenőrzés, de volt oka, az biztos. :) Optokapu jelét fogadta a 0-s interrupt és úgy emlékszem a nagyon lassú mozgásnál előfordult, hogy fals interrupt keletkezett (hiszen az egészet emiatt csináltam, gyors mozgásnál nem volt prell probléma), ezzel tudtam kiszűrni.

Mi történik prellezéskor, és mikor fog csökkenni az érték?
Melyikre gondolsz? Csökkenni nem fog egyik se.

Mi történik ha a prellezés éppen hamarabb befejeződik mint az interval? Akkor mi fogja a függvényt meghívni?

A függvény az első interruptra aktiválódik, vagyis a jelsorozat indulásakor, nem a prell lecsengése után. Vagyis bizonyos időn belül nem reagál a következő változásra, ami ez esetben 3ms-ra volt belőve (egy autó kerekének a forgását ellenőriztem ezzel).
Az elfordulást már a loopban értékeltem ki. Ez esetben irány érzékelés nem volt, mert csak 1 szenzor volt /kerék, csak az elfordulás mértékét (sebesség) kellett regisztrálni, az irányt tudtam, mert én forgattam a kereket. :) Egy saját PID vezérléshez kellett, csak akkor még nem tudtam, hogy ezt így hívják és van hozzá library, úgyhogy elég sokat kínlódtam akkor vele, hogy két olcsó kínai DC motorral tudjon egyenes vonalban gurulni az autó. :))

[ Szerkesztve ]

(#22316) Janos250 válasza Aryes (#22315) üzenetére


Janos250
őstag

Lehet marhaságot mondok, mert nagyon rég foglalkoztam vele, de nekem úgy rémlik, hogy rotary encodernél nem volt prell probléma, mert amikor az egyik változott, onnantól a másikat kellett figyelni. De lehet, rosszul emlékszem, keverem valamivel

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#22317) ekkold válasza Aryes (#22315) üzenetére


ekkold
Topikgazda

Így már értem, bár enkódernek hívod, de voltaképpen ez nem egészen az volt :)

(#22318) ekkold válasza Janos250 (#22316) üzenetére


ekkold
Topikgazda

Sajnos a mechanikus kontaktusokkal felépített rotary enkóderek, tapasztalatom szerint prelleznek mint a fene, ami csak elvileg nem gond, gyakorlatilag viszont olyan gyorsan is prellezhet, hogy kimarad megszakítás, mert hamarabb jön az újabb impulzus, mint ahogy az irq lefut. Emiatt volt nekem hatékonyabb a pollozás, mint a szintváltásra induló irq. Ha viszont van hardveres szűrés is (pl. sima RC-tag) akkor nem tud túl sűrűn új megszakítást indítani, és simán van idő mindenre a szoftverben.

(#22319) Aryes válasza ekkold (#22317) üzenetére


Aryes
nagyúr

Hát ez enkóder néven volt kapható annak idején és most is (bal oldalon a fekete korong + résoptó kombináció). Gyakorlatban ugyanaz a működés, csak irányt nem tudsz vele meghatározni.

(#22320) Tankblock válasza Aryes (#22319) üzenetére


Tankblock
aktív tag

Ennél az esetnél a DC motorra adott polarítás azért itt segíteni fog abban h merre megy...

visszatérve UNO ra 16MHz mellett 4 ciklus azaz 250 [ns] lesz mire elkezd futni az IRQ. Hardveres szűrés után elegendő lehet ha a tickeket számolunk és ciklusidő elején nullázzuk az értékét....

Ha ismert a kerék kerülete a sebessége is ismert lesz. Már csak az lesz a kérdés h tapad e a kerék.... innentől jöhet egy jó longacc, latacc yawrate szenzor.... kérdés mennyire akarja a projectet szenzorizálni.....

Release the Beast....

(#22321) Aryes válasza Tankblock (#22320) üzenetére


Aryes
nagyúr

Igen, a kerék tapadás az valóban probléma, egy 6-9 axis MPU sokat dob a pontosságon, na de ez volt az első Arduino projektem. :))
Mellesleg akkor én inkább egy optikai egér alvázra szerelésében gondolkodtam inkább, mint irány és mozgás meghatározására alkalmas eszköz.

(#22322) ViZion


ViZion
félisten

Sziasztok!
ESP32 Wroom-al (30 pines változat) tervezgetek jelenleg. A feladat "AC power meter" lenne, a kismegszakítók után lenne a szekrényben. Terv a fogyasztár mérése (nem kell 2 tizedes pontosság) az analóg bemeneteket felhasználva, árammváltóval.
Már az elején elakadtam :D :
Van, ahol ADC bemenetre 3,3 Vmax-ot írnak, van ahol 1,1 Vmax-ot (ESP8266-nál ennyi az biztos).
Most még csak keresgélek, mcu ez lenne, áramváltónak ezekből a 10A 1 V és a 20A 1 V (több helyen ajhánlották, de sztem vmi kisebb jobb lenne...). Valami védelem is kell majd az ADC pinekre, de ott még nem tartok... :B
:R

Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy

(#22323) Aryes válasza ViZion (#22322) üzenetére


Aryes
nagyúr

Ha lehet egy javaslatom: ragassz egy fototranzisztort a villanyóra villogó piros ledére, és számold a villogást. ;)
De ha jól tudom, van már olyan villanyóra, aminek van adatcsatlakozója ugyanerre a célra. Lehet a tiéd is ilyen.

(#22324) ViZion válasza Aryes (#22323) üzenetére


ViZion
félisten

:F Minek? Látom a fogyasztás nagy részét... meg a termelést is. Kismegszakítók után szeretném mérni. Itt is van pár mérő (Shelly 1PM), de szeretném 1 db wifi eszközzel kiváltani, ill. azokat is mérni, amiket eddig nem mértem, hamár van ez a rengeteg ADC pin.

Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy

(#22325) JulianSinulf válasza ViZion (#22324) üzenetére


JulianSinulf
senior tag

Én is akartam ilyet. Nézegettem is a dolgokat, de a fogyasztáshoz nem csak az áramot kell mérni, hanem a feszültséget is, ami plusz egy eszköz még.
Aztán ott van az ADC pontatlansága. Azt találtam róla, hogy sokkal pontatlanabb, mint egy arduino ADC-je.
Sokat gondolkodtam, hogy mi legyen. Végül a sonoff gyári megoldását választottam.
Sínre szerelhető megoldás a Sonoff POW Elite. 29€-ért EU-s raktárból, 20A-ig. Remélem ez már bírni fogja a garázs hőmérsékletét és a kocsi töltőjét. Van amúgy 16A-es kiszerelés is.
Bár ezek szélesek a kijelző miatt. Más márkából láttam olyan vastagot, mint egy biztosíték, de az 100€ körüli.
Másik megoldás lehet az S60TPF konnektorba dugható. Ezt aliexpress-ről tudtam megrendelni Kínából, 12,36€ darabáron. 5-öt rendeltem. Elég hamar ideért.
Fontos volt, hogy Home Assisstant támogatás legyen. Ezekhez van. ESP van bennük.
Persze, ha mindenképp fontos, hogy csak egy ESP-vel old meg, akkor ezek nem megoldások számodra.
Ha nagyon elakadnál, akkor alternatívának még mindig jól jöhet.

(#22326) ViZion válasza JulianSinulf (#22325) üzenetére


ViZion
félisten

Shelly 1pm van, sonoff az macerásabb Homa Assistanthoz. Feszültség mérve van mind a 3 fázison. nem a hajszálpontos fogyasztás érdekel, esp32 12 bit felbontás elég, áramváltó sem hajszálpontos. jelenleg 3 Shelly van ott, kellene még 3... 6 db wifi egy helyen, ez helyett lenne jó 1 eszköz, Shellyk mennének kötődobozba. k

Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy

(#22327) ViZion


ViZion
félisten

Találtam ilyet is: [link] ez már pontosabb. ESP32 ADC-ről nem találtam imfót, csak annyit, h kb. minden pontosabb nála... akkor viszont lehet ESP8266 is, amihez BluePill-t lehet csatolni, asszem I2C-n keresztül. :U

Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy

(#22328) Aryes válasza ViZion (#22324) üzenetére


Aryes
nagyúr

Én kérek elnézést... :U

(#22329) ViZion válasza Aryes (#22328) üzenetére


ViZion
félisten

nincs miért :B
Az a fura, h mindenhol azt írják, az ESP ADC nem pontos. Viszont a Shelly cuccok ESP8266, az újabbak pedig ESP32 alapon működnek...
Akkor mi a nem pontos? :U Vagy ott hogy oldják meg a fogyasztásmérést? Nagyobb Shelly-ken van áramváltó, a kicsik hall sensorosak gondolom.

Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy

(#22330) Airedhyal válasza ViZion (#22329) üzenetére


Airedhyal
aktív tag

Van mellette BL0942 vagy hasonló, és az végzi a mérést az esp csak vezérel, adatot dolgoz fel.

(#22331) ViZion válasza Airedhyal (#22330) üzenetére


ViZion
félisten

Köszi! :R
Ez így már túl könnyű... [link]

Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy

(#22332) User_2 válasza ViZion (#22331) üzenetére


User_2
tag

biztos csak a kezdők lelkesedésével írom:

lehet egyszerűbb áramváltóval és az áramváltó feszültségértékét mérni feszültségmérő modullal. így az ESP ADC-jét nem kell használni, ez valamivel biztonságosabb az ESP számára és pontosabb mérés is lehetővé válik.
pl nem kell félni az 5A-eresnek mondott áramváltó 1V feletti nem lineáris feszültségértékeitől 20A esetén.

talán csak azért nem használnak egyszerűbb noninvazív áramváltót a szerelődobozba építhető eszközökben, hogy mert nincs hely. viszont mindenféle kapcsolásoknak és SMD alkatrészeknek van hely a nyákon.

(#22333) ViZion válasza User_2 (#22332) üzenetére


ViZion
félisten

igen, az áramváltó az eredeti terv, fesz mérés nélkül, mert az már van mind a 3 fázison logolva. De a fenti megállapítás is jogos, h az ESP nem olyan pontos az ADC-je, kérdés, h mennyire nem? Áramváltónak is van egy pontatlansága + az ESP32 ADC... de nem gondolom, h ezzel bajom lenne. A hiteles úgyis az, amit a villanyóra mutat. De nem elszámoláshoz kell, csak felügyelni a ház részeit, hamár szétkaptam nagyfogyasztókra meg mindenféle körökre a rendszert. Láttam komolyabb ADC modult is, de annyi extra modul megdobná az árat. Fesz mérő modulra nem gondoltam, de ez is lehet opció :U

Most ez hátrébb lett sorolva, megjött a motoros szelep, annak kell vmi vezérlés.

Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy

(#22334) JohnnyX


JohnnyX
senior tag

Sziasztok! Mikro usb-s Nodemcu v3-at építenék be kisebb dobozba 2x16-os kijelzővel, 1 piros leddel, kis hangszóróval együtt. Usb type-c kábellel, töltőről való tápláláshoz megoldás lehet az, hogy veszek ilyen 2pines csatlakozót, és ráforrasztom erre, és ezt csatlakoztatom a boardhoz?

_Z87-Extreme3_-_4670k_-_16Gb_-_1050Ti_

(#22335) Wolfram válasza JohnnyX (#22334) üzenetére


Wolfram
aktív tag

Minek a microusb csatlakozó? Mekkora a doboz hogy ilyen toldásokat tudsz csinálni? Az USB-C csatlakozóról direkt ráköthetsz a nodemcu-ra.

(#22336) JohnnyX válasza Wolfram (#22335) üzenetére


JohnnyX
senior tag

A doboz 90 x 65 x 36.
Usb-c-ről akkor mehet egyből a vin-re meg a mellette lévő gnd-re? Eddig úgy tudtam hogy micro usb-ről stabilabb a táplálás, de lehet csak rögeszme.

_Z87-Extreme3_-_4670k_-_16Gb_-_1050Ti_

Copyright © 2000-2024 PROHARDVER Informatikai Kft.