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 vagy legalábbis félreérthető (vagy ez rajtam kívül mindenkinek egyértelmű?).
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.
Ráadásul az órajelem is elég lassú, kell még kávé
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 |