Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Persze, mert én 1 órajel alatt szorzok, te meg csak 2 alatt
![]()
Köszönöm, hogy kikerested ezeket az adatokat. Ezek szerint az adatlap eleje kicsit marketinges
![]() Viszont akkor mindjárt fel is merült egy kérdésem ezzel kapcsolatban: mivel hardveres osztásról beszélünk (tehát ennél elvileg egyetlen utasítás, míg ha jól sejtem 8 bites proci esetén elvileg több utasításra fordul le a kód), ennél előfordulhat-e, hogy a művelet közben (mivel több órajel ciklus) bejön egy megszakítás és megváltozik miatta az eredmény (hasonlóképen mint amit korábban felvázoltál)?
Az STM32 32 bites adatbusszal az ISR-ben előállt 32 bites long-ot 1 lépésben olvassa be, aközben nem fog befutni megszakítás, így nem lesz a fent vázolt probléma 32 bites kontrolleren. (De ott is figyelni kell erre, ha esetleg több összefüggő adat keletkezik az ISR-ben.)
Egyébként RISC processzorokon az aritmetikai műveletek mindig csak regisztereken történnek, szóval itt a load utasítás ami érdekes, ami betölti a ISR-ben előállt long-ot egy regiszterbe. Az 1 lépésben történik, és nem lesz közben megszakítás.
![]() ![]()
Köszönöm az észrevételeket neked is meg Skori-nak is. Feltétlenül ki fogom próbálni őket.
Szia!
Köszönöm mindenkinek a választ és a segítséget! Igazából nekem a fordulatszámmal arányos jelre van szükségem, csak ha már van akkor azt jó lenne megjeleníteni. A delay-t csak elvből nem szeretem mert az egy fék a program futásának... amúgy a milllis-el próbálkozom, igyekszem megoldani saját kézből, nem várok konkrét progikat. Egy jó ideje nem foglalkoztam az arduval, PLC-re volt szükség és hát rengeteget felejtettem... Nem szeretném ha egymásnak esnétek, hiszen mindenki csak a saját tapasztalatát osztja meg, nem "farok méregetés" ez! Igyekszem össze szedni a tudásom és az adott tapasztalatokat, amiből sikerül megvalósítani az alap progit, a többi már menni fog... csak hát minden kezdet nehéz. A progi amit feltettem az csak egy példa, kiindulásnak szántam. Mindenesetre Köszönöm Mindenkinek aki segített! ![]() Még mindig kinlódok amúgy az értelmes megoldással... ![]()
Csináltam egy kis tesztet (Atmel Studio 7 gcc -O0 optimalizációval Atmega328P-re fordítva, mert itt lehet ciklusidőt mérni.)
tachotime = 123456 TACHOPULSES = 12 Tesztkódsor 1:
314 bytes / 622 cycles / 38.88uS @ 16Mhz Tesztkódsor 2:
766 bytes / 547 cycles / 34,19uS @ 16Mhz A méret a teljes program mérete, a futási idő pedig csak a teszt sor. A futási idő függ a műveletben lévő számok nagyságától, a jelen példában a float volt valamivel gyorsabb, viszont a program mérete 450 byte-tal nagyobb lett, csak emiatt az egy float számítás miatt. Itt abbahagytam a kísérletezést, és kerestem inkább egy kicsit kifinomultabb tesztet, ami 1000 random számmal végzi el ugyanazt a műveletet és ennek a min max és totál végrehajtási ideje látszik a táblázatban: Bővebben: Link (Innen) Ez Codevision fordítóval készült, de az Arduinónál hasonló eredményekre lehet számítani. Ebben a tesztben nem látszik a program mérete, de látszik, hogy a float számítás szinte minden esetben 3x lassabb mint a unsigned long. Az osztás a kivétel, ahol nagyjából hasonló eredményeket ad. Itt jól látszik a hardware osztó hiánya.
Szia! Úgy gondoltam hogy a motor egy constant sebességgel forog a potival beállított ideig. Az idő akkor indul ha kap egy impulzust a dig inputon. Ez bonyolult?
A léptetômotor sebességét meg kell határozni, azt a konstans sebességet hogyan kívánod beállítani? Azzal ugye nem mondunk újat, hogy a DM542 vár majd egy impulzus-sorozatot az Arduinotól ami meghatározza a motor sebességét. Azonkívül a léptetômotoroknak kell egy fel-lefutási rámpa (az Arduinonak motor indulásakor kell egy egyre gyorsuló sebességû impulzust kiadnia, majd megálláskor egy egyre lassulót) mert különben nem fog a motor elindulni, csak rángatózni (vagy legalábbis nem a kívánt eredményt fogja adni).
Tehát alapvetôen nem bonyolult, de néhány dolgot figyelembe kell venni. Mi van eddig meg, és hol akadtál el a projektben?
Az még egyszerübb. Meghatározod a sebességet. Meghatározod ebböl hány lépés mondjuk 1 sec.
Utánna már csak számolni kell az impulzusokat. Ha mondjuk 20 lépés 1 sec, akkor attol a pillanattol, ha elindul a motor számoltatsz 20iig és leállitod ( vagy az impulzust, vagy a meghajton az EN bemenetet). Vagy mindkét eset kombináciojával. Az indito impulzus bekapcsolja az EN- a számolo meg kikapcsolja, ha kiment az utolso impulzus. Attol függ, hogy mit hajtasz meg a motorral, ha komoly nehéz berendezést, akkor kell a kolléga által irt felfutási meg lefutási meghajtás, de ha kicsi a terhelés és jo a tápod, akkor nem kell okvetlenül ilyesmi..
Picit off, de írnál nekem valamit erről a felfutás/lefutási dologról? Eddig azt hittem csak a komolyabb vezérlők csinálják, arduinóval még nem láttam kombinálva (nem mintha mérvadó lenne bármiben is hogy én mit láttam és mit nem
![]() Hogy csinálod meg ezt az említett rámpát?
Én ilyen megoldást a tekercselögépen használtam, mert különben szaggatta a vékony huzalt.
Van egy fix munkafordulatszám ( frekvencia/ T idö az impulzusok között) amit azonban az induláskor lépésenként ér el a motor, azaz minden impulzus egy kb 10szer lassabb frekiböl egy szublépéssel (T/10) gyorsabban megy ki a vezérlöre, amig el nem éri a névleges frekvenciát. Az én gépemen ezt 10 lépésben teszi meg. A hozzászólás módosítva: Okt 22, 2021
Az Arduino nem szab határt, ha jó a programozó (ember), bármit megold! Vagy ha nem lehetséges, akkor választ más kontrollert.
Én komolyan úgy gondolom hogy ezt neked nem kellene bemutatni.
![]() Arduino nano-ra van CNC-Shield ami ezt komplettan 3 tengelyre megcsinálja.
Látom sikerült megborzolni a kedélyeket! Tényleg csak kétszer használtam eddig léptetőmotorokat, és ez a dolog nem került elő.
Sziasztok.
Egy animáció leprogramozásába szeretném a segítségeteket kérni kicsit bonyolultabbnak nézki. Videó Hogyan lehetne ezt elkészíteni elméletre lennék kíváncsi a kóddal elküzdöm csak nem tudom mivel lehetne könnyedén le programozni. Segítségeteket előre köszönöm.
Ez egy szinusz görbe térbeli leképzése.
Mivel akarod ezt megjeleníteni ? Hány led -del ?
Sziasztok
![]()
Idáig sikerült megoldani keresgélés és a matek tudásommal ami kevés ![]() Hasonlít egy szinusz függvényhez de messze nem a legtökéletesebb mint a képen. Néha bebe villognak a ledek gondolom olyan értéket is kap vissza ami neki nem megfelelő. De a ledek nem olyan rendezettek mint a videón. Segítségeteket Megköszönném .
Sziasztok. Ma újfent megépítettem egy régi kapcsolásom az AD9851-es DDS modullal, viszont amit észrevettem hogy ebből a modulból szinte alig jön ki jel (100mVpp max), még a régebbiből 2Vpp simán kijött. Mi lehet a gond? Igaz az előzőt majd 4 éve építettem, lehet az arduino-ban az egyik lib. frissült vagy valami? Vagy a modul lehet hibás? A szkópon is olyan zavarosan jön be a képe. Arduino nano + AD9851 DDS + I2C 4*20 LCD.
Válaszokat előre is köszönöm. ![]()
Sziasztok.
Tudnátok segiteni? Egy Arduino nano az alany. Linken letölthető programot valaki ki tudná esetleg próbálni, hogy a feltöltés sikeres e? Köszi Bővebben: Link A hozzászólás módosítva: Okt 23, 2021
Ha ezt egy 8x8x8 -as LED kockában akarod megcsinálni, az 512 db. led. Hogy akarod a led -eket meghajtani, mivel ? Egy fél színusz hullám ebbe nem hiszem, hogy belefér, kicsi lesz a felbontás. Inkább egy körbe forgó félkör íven mozgó
síkkal próbálkozz. Az egyes világító pontok helyzetét is könnyebb lesz kiszámolni.
De lehet egyszerűbb lesz, ha nem számoltatsz semmit a procival ...
Felosztod a kockát 8 síkra. A 8 síkokon előre - papíron - kiszámolod mely ledek világítsanak. Ezt soronként egymás után - ez így ugye 3x8 sor - berakod egy ciklusba. ( Kigyújtod a ledet, vár egy kicsit, leoltod. ) Szerintem - ilyen méretben - gyorsabb és egyszerűbb, mint függvényeket számoltatni ...
A videót nézve ez nekem nem szinusz, hanem trapéznak látszik. Nézzük a jobb oldali legközelebbi oszlopot, minden ütemben 1-et lép fel, legfelül marad 4 ütemet, majd minden lépésben 1-et lép le, majd legalul marad 4 ütemet. A balról mellette lévő követi 1 ütem lemaradással, az melletti kettővel, a következő hárommal. Innen pedig szimmetrikus a minta, ezért elég a 4x4 oszlopra számolni, és kirajzolni 4 helyen egyszerre.
A trapéz mintát legegyszerűbben egy lookup táblával tudod megvalósítani, valahogy így:
Hasonló táblázatos módszerrel megy a szinusz is a trapéz helyett, de ilyen kis felbontás esetén nem biztos, hogy látványra jobb:
Szerintem meg pontosan egy lecsengö szinusz, illetve amikor a folyadékban keletkezik egy hullám. ( jol ismert videotrükk az egyik élvezhetetlen mükávé reklámból, Clooneyval a föszerepben). Az van itt lemodellezve.
Nem hiszem, hogy jol fog mutatni egy 8x8x8 LEDs kockában.
Szia.
Letöltöttem, valamint külön az RTClib.h-t is, mert azt nem tartalmazta az oldal. És simán lefordította az Arduino IDE 1.8.13. és sikeres feltöltöttem egy UNO-ra, mert épp az volt kéznél.
Nekem szükségem volt egy olyan lcd író programra a legutóbb, ami a lehető legkevesebb, illetve mindig azonos időt töltsön az lcd írásával. Ez pontosan 1 karaktert ír csak az lcd-re egyszerre és azt is csak akkor, amikor meghívod az lcd refresh függvényt. Így annak az időzítésével vezérelheted a folyamatot. Én Due-n használtam...Bővebben: Link
A hozzászólás módosítva: Okt 25, 2021
Moderátor által szerkesztve
Köszi. Akkor valamit én nem csinàlok jól. Pedig az rtclib is telepotve van. 1.8.16
Basszus tök jól működik köszönöm.
Kicsit elemzem a kódot hogy és miért.. |
Bejelentkezés
Hirdetés |