Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

Arduino

Indította gaben, 2025 február 03, 18:09

Előző téma - Következő téma

Devecz Miklós

Hozzáértők segítségét kérném.
Adva van egy Arduino Uno és két léptető motor.
Hogyan lehetne két különböző fordulatszámmal hajtani egy időben a két motort?

ebalint

Konkrétan nem tudok programot adni-írni, de gondolom a PWM kimeneteken keresztül lehetséges.

morvfer7

Úgy szeretnéd, hogy a programban fixen legyen a kód megírva, hogy melyik motor mennyit menjen, milyen sebességgel? Vagy van más paraméter is hozzá, mondjuk potméterek, vagy kapcsolók?

Devecz Miklós

Nincs sem kapcsoló, sem potméter.
A feladat, hogy az "A" motor, mondjuk fordul 100-at, ez idő alatt a "B" motor fordul 10-et.

Ennyi.

frob

Kell egy timer, hogy viszonylag pontos legyen a dolog.
pl a timerone.h egy jó lib erre

majd beállítod hogy mennyire legyen gyors a 100 at forduló, és miközben billegeted a lábon a lépés jelet a motor meghajtójának szépen elszámolsz 10 ig és akkor billented a másikét is....

stb

Nagy Zoli

Igy is lehet, de ha valaki nem annyira jártas a dologban az jobban jár ha keres egy stepper library-t, van arduinohoz egy pár, azokhoz mindjárt van mintapélda is.

morvfer7

Részemről így oldanám meg:

Mellékelt képen a stepper motor:

"A" motor:
1a
2a
1b
2b
"B" motor:
1a
"A" motor:
1a
2a
1b
2b
"B" motor:
2a
"A" motor:
1a
2a
1b
2b
"B" motor:
1b
"A" motor:
1a
2a
1b
2b
"B" motor:
2b

Így "A" motor 4-et fordul, mire "B" motor 1-et, nem akartam hosszabban írni, ha más arány kell, arányosan osztanám el.

Bizonyára van más megoldás is, részemről egy saját elképzelést írtam le.

  

dtb

Amennyiben mindkét motor csak egy irányban kell hogy forogjon, akkor 4 timert kell definiálnod. Egy lesz az A motor indítója (STEP ON, PIN HIGH), 1 a B motot indítója, 1-1 pedig a motorok impulzushosszát vezérli a step jel megfelelő kikpacsolásával (STEP OFF, PIN LOW)
A timerek ről itt (is) találsz egy tutorialt, de ezen kívül is van sokmillió
Link: Arduino 101: Timers and Interrupts

Devecz Miklós

Köszönöm a segítségeket.

Most egy kicsit gyakorolok.[#wave]

frob

4 timer? csak a mega boardokon van 3 nál több, amiből eleve a rendszer lekap 2 őt!azokat közvetlen nem is éred el csak alányúkálva de a timer1 re direkt van lib és mindent szépen meg lehet vele oldani

1 nek kell lennie, aminek olyan időt kell beállítani hogy mindent végre tudjon hajtani

frob

ebben a módiban, nincs stepper driver, tehát valami tranyó mező vagy tranyók kellenek a meghajtáshoz, de az elv rendes step dir jelet fogadó meghajtóknál is így néz ki, csak akkor a step lábakat kell csak birizgálni

Devecz Miklós


dtb

Szerintem egy timerrel nem tudja megoldani.
Amit belinkeltem, azért nézzetek rá.

vjanos

Nem felel meg a célnak egy GRBL meg a G1X100Y10 kód?
Vagy G1X1000000Y100000... vagy tetszőleges, az arányt megtartva, lépésszámot figyelembe véve... [#nemtudom]

morvfer7

Természetesen, igazad van, de nem ismerem, hogy milyen meghajtás van tervezve, így csak a megvalósításhoz való elképzelésemet vázoltam.
Összedobhatok egy kódot is, ha kell, szerintem DRV8825 érdemes, ha már arduinorol beszélünk, és step dir megoldással.