Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Köszönöm mindenkinek a segítséget !
Idézet: „a PORT regiszter törlődik, azaz a kimenetük alacsony szintre kerül RESET után” Hol van ez dokumentálva ?!
A bootloader és a keretrendszer sem rontja el? Én sose mertem erre hagyatkozni
Köszi, ezt néztem, de nem látom benne...PIC-eket szoktam használni, ott "kapásból" látszik a RESET utáni állapot !
Segíts, légy szíves, hogy hol keressem benne !? A hozzászólás módosítva: Okt 5, 2021
Az "Initial value" sorban az összes regiszter felsorolásánál ott van a kezdeti érték. A reset szekcióban pedig a következő: "During reset, all I/O registers are set to their initial values, and the program starts execution from the reset vector."
Atmega-hoz nem használom az arduino-t (néha esp-hez igen), így nem tudom mely regisztereket hogyan piszkálja. Viszont a bootloader és a keretrendszer által futtatott kód forrása is megtalálható az arduino mappájában, megtekinthető mihez nyúl hozzá (a bootloaderé nem biztos, de neten az is elérhető). Ha nincs kedved ehhez, akkor meg a setup-ban írasd ki soros portra az általad kívánt regiszterek tartalmát. A soros portot tartalmazó adatirány regiszteréhez biztosan hozzányúl, mert másképp nem tudna üzenetet sem küldeni. Az időméréssel kapcsolatos dolgok miatt (delay, millis, stb.) pedig hozzányúl az egyik timerhez is (talán a timer0-hoz).
Aha, így már megvan, köszi ! A PIC-es logikámmal a PORT-nál kerestem, de ez így is teljesen OK ... !
A PORT-nál is ott van. Ports as General Digital I/O 14.2-es fejezet. Az ábrán egyértelműen látszik, hogy a RESET a PORT Latch CLR vezetékére csatlakozik, tehát törli.
General Digital I/O
Igazad van, csak megszokásból (és kevés időben) szövegesen kerestem ! Köszi!
A PIC-es adatlapok után nekem is kevésbé tűnt informatikusnak az Atmel adatlapja.
Sziasztok! Mielőtt fel tenném a kérdésemet, annyit le írok, hogy én nem értek a programozáshoz, az arduinóhoz! Egy tortadíszítő forgatót építek léptető motorral, ami tud majd potméterrel szabályozva forgatni , plusz kapcsolókkal 1/4 , 1/8 , 1/16 , 1/32 részekre osztva megállni, és újra indulni, díszítés könnyítésére! Bele futottam egy kis problémába, mégpedig, hogy ha pl folyamatos forgatásnál (Krém simítás) meg állítom a motort, az ugye azonnal meg áll, és így a rajta levő súly tehetetlenség miatt kicsit tovább mozdul! Aki meg írná a programot, annak fel adja a leckét, hogy a léptető motort hogyan lehetne felfutással, lefutással vezérelni programban. Tudnátok ötletet adni, hogy miként lehetne fel és le futtatva indítani a motort (Name17)? Úgy gondolom, hogy egy fordulaton belül elég lenne a felfutás, lefutás. A tányér-motor áttétel, 1-19 ha jól emlékszem. Lényeg, hogy ne satufékkel álljon meg a tányér! Ha van valakinek ötlete, ajánlása, hogy miként lehetne meg oldani, meg köszönném, és továbbítanám az ismerősömnek!vezérlő 4A 42V TB67S109 Köszönettel Zsolt!
A léptetőmotor megfelelő mechanikával társítva nagyon precíz! Ha azt akarod ,hogy "ne satufékkel álljon meg a tányér" ahhoz szerintem inkább szervómotor kéne.
Szerk: Vagy megállásnál lehetne valami racsni mechanikát használni ami engedélyezi a továbbforgást. A hozzászólás módosítva: Okt 10, 2021
Felfutásnál két lépés között egyre kevesebb időt kell várakozni, amíg el nem éri a kívánt fordulatot a motor. Lassításnál fordítva kell eljárni.
Sajna a mechanika már készen van, de ha nem lesz vezérlési megoldás, marad a motor csere!
Köszönöm az ötletet, továbbítom az ismerősömnek!
Léptető motort is lehet különböző karakterisztikák mentén vezérelni. Amire szükséged lehet, az a trapezoidal vezérlés. Egy lehetséges megoldás a Motion Generator. Ennek a velocity kimenetét kell applikálni a léptetőmotor vezérlőhöz szoftveréhez, amiről nem tudunk semmit, ezért megoldást sem tudok adni rá.
Keresni kell egy olyan programot ami ezt meg tudja csinálni, legegyszerűbb arduini alapú 3d nyomtato szoftver, g kódokkal lehetne mozgatni a motort, prohramozható a fel és lefutása, de ugyanez a grbl lasergrbl is.
Ez a kérdés elég hiányos. Ha pl. a sebességet számmal állítod be (ami nagyon valószínű), akkor pl. 100-ról lelassítva nullára mindig csökkented a motor fordulatszámát és vársz kicsit. A másik, hogy ha ezt valaki le tudta programozni, akkor miért nem ő módosítja a programot? A mechanikát nehogy módosítsd! Ez szimpla programozással fél óra alatt megoldható (ha ott vagyok, ha előttem van a program és az egész mechanika, és ha már a géppel össze is van kötve az Arduino).
A hozzászólás módosítva: Okt 10, 2021
Idézet: Minden valszínűség szerint egy igen kezdő programozóról van szó, elég csak a nyitó kérdést elolvasni. "1/4 , 1/8 , 1/16 , 1/32" Gondolom ilyen opciók vannak a léptető meghajtón, különben a fordulatszám kis túlzással fokozatmentesen állítható lenne. „szimpla programozással fél óra alatt megoldható”
Nem ő programozta/programozza szerintem. A motor bizonyos osztásonként kell, hogy megálljon, tehát mondjuk 20 step után szünet, ha jól értettem. De csak a találgatás megy a részünkről, az meg időpazarló.
A hozzászólás módosítva: Okt 10, 2021
Szia!Szerintem ezt nem a fordulatszámra kell érteni, hanem ő akarja ezekkel az osztásokkal, azaz pozíciókban, megállítani a díszítéshez ( az más kérdés, hogy egybecseng bizonyos lépési opciókkal ! )
Az biztos, hogy nem ő programozza. Újra elolvasva valóban a kör osztásáról lehet szó, kissi jól látja a tévedésem okát, első pillantásra a mikrolépések jutottak eszembe.
Nem, a tányér sebességet potival szeretném állítani, plusz a program választó egy 6 állású kapcsoló lesz, és van egy indító és leállító gomb, plusz a tervek szerint van egy időzítő poti, ami a 1/4 vagy 1/8 stb léptetést fogja időzíteni, mennyi idő után lépjen a következő pontig. Ezeket a funkciókat fel tudja majd programozni egy arduinóra, csak ugye amire nem számítottam, hogy a hirtelen megállás indulás okozhat problémát! A program írás folyamatban, és a félreértések érdekében, nem én írom, én csak a mechanikai részét hoztam össze! én ebben a csoportban a felfutás lefutás problémára keresem a választ, és továbbítom neki az ötleteket! Köszönöm a türelmet mindenkinek, mivel én mint laikus, nem szakszerűen teszek fel kérdéseket a témában!
'/4 ,1/8 . stb osztás az a torta tányér felosztását jelentette volna, ne kelljen kézzel tekergetni miközben a leendő tulaj díszít! Bocsánat ha félre érthető volt! Ha jól saccoltam, 2700 lépés lesz a motoron, mire a korong körbe ér egyszer, de ez nem biztos még csak sacc!
Igen az a cél, hogy bizonyos osztásonként álljon meg a tányér (1/4 vagy 1/16)! A fő kérdés az lenne, hogy ha a program megálljt ad a motornak, bármilyen állásban is van a tányér osztás kapcsoló, a motor ne abban a pillanatban álljon meg, hanem lefutással, vagy indításnál felfutással, ez megoldható-e? Csak egy példa, indításnál pl 20 lépés legyen ami fokozatosan fel fut a potival beállított sebességre, vagy vissza, leállításnál!
Az hogy milyen gyorsan forog a motor, egyszerűen attól függ, hogy milyen sűrűn adod neki a léptető impulzusokat. Ha a megállási helyet kezdi megközelíteni, akkor mondjuk 50 lépésnél legyen kétszer annyi idő két lépés között, majd 20 lépés mulva már csak háromszor annyi, stb. Így tetszőlegesen be lehet állítani a gyorsulást, lassulást. Nem kell túl bonyolítani. De amekkora áttétel van ott a képek tanúsága szerint, szerintem ez a hirtelen megállás lehet hogy nem is okozna gondot. Én azért ezt is kipróbálnám.
A forgás fizikájából indulnék ki. Az volna ideális, ha a lassulás mértéke, azaz a szöggyorsulás állandó lenne. Másképpen a szögsebesség az idő függvényében az állandó sebességtől a 0-ig egy egyenes mentén csökkenne le.
Két megoldás lehetséges: Olyan vezérlőd van, aminek szögsebességet adsz, és ő lépeget. Itt egyszerűen idő szerint egyenletesen egyre kisebb szögsebességeket kell adni neki. A probléma csak annyi lehet, hogy előre tudni kell, hogy hol fog megállni, vagy másképpen, hogy mikor kell elkezdeni a lassítást. Egyszerűen a szögsebesség-idő függvény alatti területet kell kiszámolni, ami egy háromszög, a megfelelő képletek szerint. (Pl: w0 kezdeti szögsebességről b szöggyorsulással t=w0/b idő alatt lassulunk 0-ra, és ezalatt az elfordulás w0*t/2 lesz.) A kiinduló paramétereink tehát azok, hogy milyen szögsebességről indulunk (w0), mi a szög-lassulás (b), mennyi idő alatt lassulunk le (t), és mennyi szöget teszünk meg a lassulás alatt (alfa). Ezekből kettőt megválaszthatunk, a másik kettő ezekből kiszámolható. Ha a saját programja adja a léptető jeleket, akkor valószínűbb, hogy a két lépés közötti időt kell megadni. Az egyenletesen lassuló forgásban a megtett szög számítása: szög=w0*t+b*t*t/2 (w0 a kezdeti szögsebesség, b a szöggyorsulás, ami nekünk negatív lesz). A leállás folyamata alatti egész lépéshez tartozó szögeket tudjuk (pl ha 7200 lépés egy kör, és 10 fok alatt akarunk megállni, akkor az 200 lépés, és 1/20-ad fokonként kell a képlet szerint kiszámolni, hogy az adott szöget melyik időpontban érjük el), és a szögekhez tartozó időpontokat kell kiszámolni. Ha a megállás helyett az elindulást számoljuk, annak egyszerűbb a képlete: alfa=b*t*t/2 Időre rendezve: t=sqrt(alfa/b*2). Ebből kijönnek az időpontok, amikor meg kell történni a lépéseknek. Ezeknek a különbségeik pedig a lépések között szükséges idők. A leállásnál pedig ugyanezeket az időközöket kell fordítva lejátszani. Meg lehet úgy is oldani, hogy paraméterek alapján a program számolja ki az időközöket, de úgy is, hogy előre kiszámoljuk, és az időkonstansokat írjuk már csak bele a kontrollerbe.
Látom nem nagyon érted a trapezoid mozgást, hogy mi is az tulajdonképpen. De úgy tűnik, nem is neked kéne értened, hanem aki írja a programot. Talán neki segítség lehet az az elv, ahogyan megvalósítottam egy 5 léptető motoros robotkar mozgatását. Abban mondjuk az a lényeg, hogy mind az 5 motor képes egyidejűleg más-más sebességgel mozogni, egymástól teljesen függetlenül. De a módszert át lehet venni 1 motoros hardverhez is, mivel a motorok mozgását létrehozó függvény bemenetei sebesség és lépésszám (igény esetén megosztom, ha tényleg tudsz vele valamit kezdeni).
Amúgy én eléggé meddő dolognak látom ezt a témát, mert közvetítő által eléggé nehézkes segíteni, főleg úgy, hogy szinte semmit sem értesz a mozgatás mikéntjéből (ezt abból gondolom, hogy már kaptál néhány használható tanácsot, de semmit sem tudtál vele kezdeni). Talán ha az írna ide, aki készítené a programot és elárulná, hogy hol akadt el, úgy talán közelebb lehetne jutni a problémához.
Köszönöm az építő jellegű hozzá szólásokat, ötleteket, és a türelmet! Át fogom adni a program írónak az információkat, és remélem megoldást találunk a kérdésre! Úgy gondolom, kaptunk kiinduló pontokat, és ebből lehet építkezni! Tudom, ez így kicsit zsák utcának tűnik, hogy én kérdeztem de mindenből lehet tanulni, és egy fórum erről is kell szóljon! Még egyszer köszönöm! Sikeres projekteket!
Sziasztok elkészítettem egy 8x8x8 led kockát vezérlővel.
Bővebben: Link Sémát ez alapján. Hogy érdemes a fényjátékokat leprogramozni hogy azért átlátható legyen. Arra gondolok hogy milyen alprogramba lehetne írni amivel az majd nem összes animációt le lehetne programozni. 5x5x5 nél igy csináltam de szerintem 8x8x8 hosszú lenne a kód. led(1led,2led,..........25 ig, SZINT(1...5)) led(1led,2led,..........25 ig, SZINT(1...5)) ........ kirajzolas(ms) // a fenti kép ennyi ms ig mutatjuk Ez az elképzelés igy 8x8x8 elég nehéz már átlátható kódot csinálni. Ki hogy csinálná ? |
Bejelentkezés
Hirdetés |