Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   779 / 850
(#) Pethical válasza Massawa hozzászólására (») Márc 27, 2023 /
 
Ha a Cycle() hívás nélkül jól működik, akkor lehet annak a kódjában érdemes keresni a bűnöst.
(#) Kovidivi válasza Massawa hozzászólására (») Márc 27, 2023 /
 
A programban a gomb ha le van nyomva, akkor 5V-ot kapcsol az analog bemenetre. Ha felhúzó ellenállással húzod le a GND-re, akkor a programban a LOW-t írd át HIGH-ra. Remélem, nem A6 és A7-et használsz, mert azokon nincs felhúzó ellenállás sem (Arduino nano/uno)!
(#) Massawa válasza Pethical hozzászólására (») Márc 27, 2023 /
 
Kezd igen érdekes lenni.

Ha a Cyclet kihagyom akkor a nyomogomb hibátlanul kapcsolja a status LEDet.
Induláskor sötéten indul, ha megnyomom a gombot, akkor átkapcsol ( világit) azaz indulnia kellene a Cycle-nek ha ott lenne).

Ha benne van a Cycle is a loopban akkor azonnal elindul sötét LEDdel ( igy kellene mennie) . Ha lefut, akkor a LED megint kigyullad, de már csak a addig alszik ki amig a gombot nyomom, de nem inditja ujra a Cycle alprogramot.
A Cycle csak egy sereg kimenet kapcsolás mindenféle algoritmusokkal és mindez 10x ismétlödik.

Lehet, hogy át kellene irnom State Machine formába.
Az a gyanum, ha a Cycle meg a nyomogomb egy loopban van ami a gond. Lehet, hogy az kellene, hogy ha a Cycle lefut automatikusan billentse vissza a nyomogombot. Ez valahogy nem akar összejönni.

Érdekes, ha e közé a

digitalWrite(outPin, state);
previous = READING;

két sor közé rakom be a

if (state ==0){
Cycle();
}
hivást akkor a gomb müködik. Bekapcsoláskor lefut az egész program, a gomb továbbra is müködik, de nem indul ujra a Cycle.
(#) GPeti1977 válasza morgo hozzászólására (») Márc 27, 2023 /
 
(#) morgo válasza GPeti1977 hozzászólására (») Márc 27, 2023 /
 
Köszi. Tanulmányozom mindkét linkelt oldalt.
(#) Kovidivi válasza Massawa hozzászólására (») Márc 27, 2023 /
 
Idézet:
„Érdekes, ha e közé a”
- inkább az lenne az érdekes, ha beraknád a programot, úgy át lehetne nézni.
(#) Massawa válasza Kovidivi hozzászólására (») Márc 27, 2023 /
 
Nem akarom itt a nagyérdemüt zavarni, mert hosszu és meglehetösen sok dolog van benne, amit el kéne magyarázni ( azok már hiányoznak belöle), mert már vagy 2 éve müködik. Most csak azt a nyavajás START funkciot akartam belerakni.
Majd még leülök, lehet, hogy eszembe jut még valami.
(#) KoblogPerGyok válasza Massawa hozzászólására (») Márc 27, 2023 /
 
Ha ez egy függvény, és a kód többi része használ megszakításokat, akkor a függvényben lévő változóknak esetleg lemaradt a volatile.
Nem vágom, de ilyenek tudnak problémát okozni. Nézzd meg a kódodban a megszakításokban, ha vannak egyáltalán, milyen változók vannak, és aztakarja-e változtatni a függvényed.
(#) Massawa válasza KoblogPerGyok hozzászólására (») Márc 27, 2023 /
 
Nem használok ebben a programban megszakitásokat. Épp most gondolkolkodom, hogy más eljárással talán egyszerübb lesz. (switch - case), mert akkor az egyes szekciokat teljesen függetlenül hivná le a for függvény.
Igy számomra is talán áttekinthetöbb lenne a kod.
Az egyes részek hibátlanul müködnek, igy azokat csak átmásolgatom a egyes case fejezetekbe.
Egyenként természetesen és figyelve a müködést.

Addig kösz mindenkinek a segitséget.
( az mindig bonyolult számomra, ha egy régi kodba kell beleturni.)
(#) KoblogPerGyok válasza Massawa hozzászólására (») Márc 27, 2023 /
 
  1. void loop (){
  2. reading = analogRead(inPin);    // nyomogomb
  3.     if (reading < 250) {
  4.     READING = LOW;
  5.   }
  6.   if (reading > 320) {
  7.     READING = HIGH;
  8.   }
  9.  
  10.   if (READING == 1 && previous == 0) {
  11.     delay(dt);
  12.  
  13.     if (state == 1) {
  14.       state = 0;
  15.     }
  16.     else
  17.     {
  18.       state = 1;
  19.     }
  20.   }
  21.  
  22.   digitalWrite(outPin, state);
  23.   previous = READING;
  24.   delay(dt);
  25.   Cycle();               //Inditja a müködö szekvenciális programot. (for (R=0; R<10;R++);
  26. }


Lehet ez a kód nem jó. Mi van, ha 275-t olvas be? Lehet, hogy a hibát nem látod szabad szemmel, mert mikor a Cycle()-nélkül hívod meg, a loop igen hamar lefut. Ha benne hagyod a cycle()-t akkor elképzelhető olyan állás, mikor a prvious nem a valós korábbi értéket veszi fel esetleg. (prellezhet esetleg)
OK, tudom nem biztos hogy ez a hiba, mert a többi kódot nem mutattad meg, de ilyesmi rejtett hiba is lehet ám!
A másik, hogy ha a cycle() rutinban esetleg return-t használsz, akkor a változóid esetleg nem lettek kinullázva ahol kellettek volna, így rossz paraméterekkel fut bele ebbe a loop-ba újra.

DE könnyű ezt kideríteni. A loop-be tegyél egy ciklust, ami 4x fut le. Adj megfelelő értékeket a változóidnak, majd a cikluson belül negáld. Azaz szimuláld le a gombnyomásokat. Természetesen 1-2s várakozás után. Namármost, ha úgy megy, akkor a gombnyomás nem biztos, hogy jó. Ha úgy sem megy, akkor a cycle() ben lesz rejtett hiba.
Legalábbis szerintem.
(#) Jonni válasza Massawa hozzászólására (») Márc 27, 2023 /
 
Idézet:
„( az mindig bonyolult számomra, ha egy régi kodba kell beleturni.)”


Ezért jó ha minden sor ki van kommentelve
(#) usane válasza Massawa hozzászólására (») Márc 27, 2023 /
 
Az a gyanum, hogy valamelyik meghivott alrutinban hasznalod valamelyik globalis valtozodat. Ha tippelnem kellene akkor a previous-t. Ezert mukodik a gomb ha azt az if vizsgalatot a previous=READING sor ele rakod. Ha a gomb mukodik akkor a ciklusnak is le kell futnia, mert a LED-et a state valtozo villogtatja, tehat a state erteke valtozik gombnyomaskor. Legalabbis azt feltetelezem, hogy a gomb mukodesere a LED valtozasabol kovetkeztetsz.
(#) Pethical válasza Massawa hozzászólására (») Márc 27, 2023 /
 
220 sor nem a világ, dobd be, akit untat az meg hagyja figyelmen nélkül.
(#) Massawa válasza KoblogPerGyok hozzászólására (») Márc 27, 2023 /
 
Azzal nincs baj, már a tapasztalat alapján határoztam meg a szintet. A LED tarja magán a kb 3 Voltot, és ez az átkapcsolás gyönyörüen müködik.
A baj van amikor kiágozik a program mási részeire (Cycle ();
Nem Cycle gyakoraltilag egy számlálo for 0-9 ig

Void Cycle() {

for (R; R<Repeat; R++) {. // itt még bizonytalan vagyok, hogy az R; helyett ne használja R=0;
Itt van a 6 alprogram
Void Valami();
}
}
Ez már évek ota jol müködik, csak az volt az igény, hogy a ciklus végén álljon meg, és gombnyomásra induljon ujra.
Azaz a 6 alprogramot kell 10x ismételnie

Semmi mas.
és végigjátsza a 6 alprogramot 10 szer, majd megáll. A nyomogomb továbbra is müködik, de nem inditja ujra a Cycle rutint.
A cél az lenne, hogy, ha befejezödik a Cycle rutin visszabillentse a nyomogomb állását kiindulási állapotban, és várjon a gombnyomásra.
Ezt még nem sikerült megoldanom.

Na még alszok rá egyet, vagy ujra irom az egészet.
(#) Massawa válasza usane hozzászólására (») Márc 27, 2023 /
 
A gomb hibátlanul müködik a Cycle nélkül. Amint az bekerül akkor 3 állapot fordult elö.

1. induláskor vár a gombra, majd lefut a ciklus, de nem indul ujra és nem müködik utánna a gomb
2. induláskor lefut a ciklus is, de a gomb nem müködik
3. a gomb folyton átkapcsol, de nem indul el a ciklus.
A state=0 érték a feltétel a ciklus inditására. Ezt kellene átbillenteni a ciklus végén, de nem sikerült, illetve az megint megakasztotta a gomb müködését.
Ezért gondoltam, hogy a gombbal egy ujabb változot generálnék, mondjuk egy Startot, ami elinditja a ciklust, majd a végén nullázná a Start változot és várna a gombnyomásra. De ezt még nem probáltam ki.
(#) Massawa válasza Pethical hozzászólására (») Márc 27, 2023 /
 
Majd holnap talán, ha addig nem sikerül kitalálni valamit.

Addig is kösz a segitséget. Igy az ember eldumálgat, és közben a fejemben ujabb ötletek születnek amit még ki szeretnék probálni.
(#) Pethical válasza Massawa hozzászólására (») Márc 27, 2023 /
 
Az R egy lokális változó? Kap ő valahol értéket? Arra gondolok, hogy, ha végig megy a for ciklus és utána az R értéke nem változik, akkor ez a for ciklus soha nem fog lefutni újra, hiszen az már nem lesz kisebb többé, mint a Repeat.
(#) usane válasza Massawa hozzászólására (») Márc 27, 2023 /
 
Idézet:
„a gomb folyton átkapcsol, de nem indul el a ciklus.”

Arra lennek kivancsi ez mibol derul ki. Felteszem az outPIN egy LED ami a state erteket tukrozi. Ha a feltevesem helyes a ciklusnak is le kell futni ilyenkor. Az egy masik dolog, hogy csak minden masodik gombnyomasra. Ugyebar minden elengedeskor belefut ide:
  1. if (READING == 1 && previous == 0) {
  2.     delay(dt);
  3.  
  4.     if (state == 1) {
  5.       state = 0;
  6.     }
  7.     else
  8.     {
  9.       state = 1;
  10.     }
  11.   }

Igen am, de amikor 0 akkor egyre valt amikor 1 akkor pedig nullara. Vagyis csak minden masodik elengedeskor lesz a state erteke 0.

Ha nem a LEDbol derul ki a gomb mukodese akkor tevedtem. Viszont meg mindig all, hogy hasznalsz valami valtozot a ciklusban meghivott rutinokban ami a foagban is szerepel.pl: a previousra tippeltem de akar a state is lehet. Masik dolog esetleg: A nyomogomb fel van huzva kulso ellenallassal? Tudom alap kerdes, de hatha. Keves reszletet adtal meg.
(#) Massawa válasza usane hozzászólására (») Márc 27, 2023 /
 
Igen az outPin egy LED.
Az tökéletesen müködik ha nincs a kodban a Cycle hivása. Ha ott van akkor a LED nem kapvsol át vagy csak arra az idöre amig nyomom a gombot.

Na majd holnap a breadboardon csinálok egy teszt kapcsolást, csak a gombbal meg a Cicle alprogrammal.
Nem a ciklusokban csak egy sereg LEDet müködtetek különbözö modusokban ( idö, villogás stb)
Ott van néhány egybetüs változo, de csak kizárolag az alpromgramban kapcsolt LEDek sorrendjere stb.
(#) Massawa válasza Pethical hozzászólására (») Márc 27, 2023 /
 
Igen a kezdetben az R=0;
Eredetileg a for (R=0; stb volt, de késöbb kivettem, mert az R=9-l akartam a kapcsolot visszabillenteni, s utánna R=0 val ujra inditani a cyklus.
Ha a for (R=0; van akkor meg folyton megy, azaz az R=9 után ujraindul.

Itt holnap rendet teszek, mert a sok kisérletezés már egy kicsit összekuszálta a dolgokat.
(#) Zoli_bácsi hozzászólása Márc 28, 2023 /
 
Sziasztok.

...már a második Nano-t ölöm meg. Adott egy arduino nano-val felépített áramkör. Valami oknál fogva túlfeszt kap a tápon keresztül, és ez megöli a DC-DC step down tápot, a Nano-t, és a kijelzőn használt 74595-ös IC-ket.

A Betáp 24V, ezután van egy DC-DC step down konverter, ami szolgáltatja az 5V-ot a Nanonak, a kijelzőnek és az egyéb perifériáknak. A Nano 5V jelű pin-jére kötöttem az 5V-os táp részt.

Egy üzemben négy présgép üzemel. Ezeknek a DC24V-os részeit egy 24V-os nagy teljesítményű kapcsolóüzemű tápegység látja el feszültséggel.

Jelenség: A DC 24V-os mágneskapcsoló bekapcsolja a 24V-os fő tápegységet. Ekkor az egyik présgépre felszerelt kiegészítő nano-s áramkör (ami semmilyen kapcsolatban nincs a présgép vezérlésével, teljesen autonóm eszköz, csak a tápot kapja) azonnal eldurran a DC-DC konverter, és visz magával mindent. Egy másik présgép esetén pedig a bekapcsolásnál még minden oké, de ha kikapcsolom a fő tápegységet a mágneskapcsolóval, akkor megy tönkre a DC-DC konverter, a nano, és a többi.

Amire gondolok: Mágneskapcsoló által gerjesztett túlfeszültség (ez a második présgép esetén tapasztalom, ahol a bekapcsolás még ok, a kikapcsolásnál viszont megdöglik minden) Viszont az első présgép esetén, ahol rögtön a bekapcsolásnál hiccen el minden, nincs ötletem.

Szükségem volna valami atom stabil tápegység kapcsolásra, vagy valami megbízható védelmi áramkörre. Túlfesz levezetés, vagy valami olyan bevált kapcsolásra, amit a DC24V-os bemeneti ágba beköthetek, egyfajta előtét védelem a nano-s áramkör bemeneti feszültség oldalra.

Köszönöm.
(#) icserny válasza Zoli_bácsi hozzászólására (») Márc 28, 2023 /
 
AZ 5 V-os oldalon egy "helyreállító asztal biztosíték" (nem röhögni, nálunk a könyvelésen ilyen néven futott át a megrendelt "resettable fuse" alkatrész) meg egy Zener dióda, vagy egy szupresszor dióda talán megvédi az Arduino nanot és környékét.
(#) Bakman válasza Zoli_bácsi hozzászólására (») Márc 28, 2023 1 /
 
Milyen DC/DC konvertert használsz? Gyaníthatóan az a gyenge láncszem. Ezt keresd: TEL 5-2411. A bemeneti oldalra pedig 30 V körüli szupresszor diódát.
(#) Zoli_bácsi válasza Bakman hozzászólására (») Márc 28, 2023 /
 
(#) sdrlab válasza Zoli_bácsi hozzászólására (») Márc 28, 2023 /
 
Tégy a DC/Dc konverter elé egy 100uH+22R tagot, mögé pedig egy 27V-os zenert...
(#) KoblogPerGyok válasza Zoli_bácsi hozzászólására (») Márc 28, 2023 /
 
Szia!

Itt szerintem több gond is lehet. Egyrészt nem tudjuk, hogy az Arduino a szenzorain keresztül kaphat-e feszt, és milyen polaritással.

De szerintem az történik, hogy mikor bekapcsolod a nagyteljesítményű 24V kapcsoló üzemű tápegységet, akkor vagy fordított polaritást kap rövid ideig (mikor kikapcsolod, akkor a tekercsekben tárolt energia felszbadul fordított polaritással ráadásul) és mindkét esetben 36V-nál sokkal nagyobb tüskékkel. A tüskéket szűrni kellene, és kellene pl. egy nagyteljesítményű Graetz híd is, ami több okból lehetne jó. Mikor kikapcsolás történik, akkor is megfelelő lesz a polaritás, illetve hülyebiztos lesz. Igaz elveszítesz pár voltot a hídon, de 24-be belefér.

Erre kell keresni megoldást, mert ugyan házilag is összerakható, de nem ajánlott. Esetleg kellhetne még egy késleltető relé is, ami 0.5-1s késéssel kapcsol, mikor már stabil minden a 24V felől. De ezt is védeni kellene a túlfesz tüskéktől fordított polaritástól, szóval gyári cuccot kell keresni.

Keresek, hátha találok.
Esetleg ezt a tápegységek körében kell feltenni kérdésnek, de az itt lévő emberek értenek ehhez is! (rajtam kívül)
(#) KoblogPerGyok válasza Bakman hozzászólására (») Márc 28, 2023 /
 
Ilyesmi megoldja?
Azért kérdezem, mert később nekem is fontos lehet, tanulnék belőle!

Bővebben: Link

Ez kikapcsol mikor túl nagy a fesz, majd visszakapcsol mikor minden renben van?
Köszi!
(#) Zoli_bácsi válasza KoblogPerGyok hozzászólására (») Márc 28, 2023 /
 
Az Arduino bemeneti semmilyen kapcsolatban nincs a présgéppel. Kizárólag a présgép kisfeszültségű (DC 24V)tápját használjuk tápegység gyanánt. A Graetz hidat úgy értsem, hogy simán bekötöm a gratz híd váltó bemenetére a +/- vezetéket, (gyakorlatilag mindegy milyen polaritással) A graetz +/- kimenetét pedig polaritás helyesen az arduino-s kütyü tápjára.

A présgép DC24V-os rendszerét úgy csinálták meg, hogy a 230V/DC24V-os táp állandóan megy. Ha megnyomják a "zöld be" gombot, akkor egy mágneskapcsoló adja a DC24V-ot a présgépek felé. Ha megnyomják a "piros ki" gombot, akkor a mágneskapcsoló old, és lekapcsolja a DC24V-ot a présgépről. A 230/24VDC tápegység mindaddig működik amíg le nem kapcsolják a fő-fő-fő kapcsolót.
(#) sargarigo válasza Zoli_bácsi hozzászólására (») Márc 28, 2023 / 1
 
Nem lehet az, hogy amikor a présgép megindul, akkor izomból megrántja a tápját, mire az elkezdi pumpálni a kimenetét és túl nagy a lengése? Ez megmagyarázhatná hogy miért durrognak el a dolgaid. A gépnek meg tök mindegy hogy impulzusban mit kap, ledolgozza. Felteszem egy présgép azért nem móriczkajáték, kéri a kraftot.
Szerintem a 24V bemenetedre kellene tenni túlfesz védőt, de én is csak törpölök..
Tovább megyek: Az nem megoldás ha beteszel az áramkörödnek egy külön 12V-os trafót és el van intézve? Felteszem a javítási költségek erősen felülmúlják már az árát. Hely meg gondolom van hozzá.
szerk.: trafó+greatz+kondi természetesen.
A hozzászólás módosítva: Márc 28, 2023
(#) Bakman válasza KoblogPerGyok hozzászólására (») Márc 28, 2023 /
 
Ez, ha túlfeszültséget kap (elegendő energiával), akkor feláldozza magát a többiek érdekében, ugyanakkor sokkal nagyobb energiát tud lenyelni, mint egy egyszerű szupresszor dióda. A kisebb energiákat általában maradandó károsodás nélkül túléli. Az, hogy mi a "kis" és "nagy" energia, katalógusadat.
Következő: »»   779 / 850
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem