www.elektronik.si
Arduino, NEMA34 stepper, DM860 driver

www.elektronik.si -> Arduino sekcija

Avtor: marko11Kraj: Dobrepolje PrispevekObjavljeno: Ned Jun 30, 2019 3:14 pm    Naslov sporočila:  Arduino, NEMA34 stepper, DM860 driver
----------------------------------------------------------------------------
Hi
Ker sem šele sedaj začel delati na Arduno-tu in C++, do sedaj sem delal z Bascom-AVR, pa še tukaj tak-tak, bi prosil za kakšen nasvet.

Imam :
- Arduino UNO,
- koračni motor NEMA34, (34HS46-5004D), 8.5Nm(1204 oz.in), 1.8 st.,
- driver DM860I,
- napajalnik 350W-60V-5.8A

Sprašujem:

- kaj pomeni pri motorju (1204 oz.in),

- kolikšni so lahko najvišji obrati tega motorja?

- zakaj se motor ustavi pri najvišji hitrosti, ko zamenjam smer, če je hitrost nekje na 2/3 pa lepo deluje.

Glede testnega programa, ki sem ga naložil na Arduino-ta pa me zanima,

- kako se lahko poveča hitrost motorja, sedja je frekvenca približno 0-5000Hz merjeno na PUL pinu od driverja.

- kaj pomeni ta stavek? oziroma 0,1023,3600,1
Koda:

pd = map((analogRead(spd)),0,1023,3600,1);


- kje v kodi in kaj bi moral napisati, da se izvede določeno število korakov?

Celotna testna koda je pa tole:
Koda:


// Defin pins

int reverseSwitch = 2;  // Push button for reverse
int driverPUL = 7;    // PUL- pin
int driverDIR = 6;    // DIR- pin
int spd = A0;     // Potentiometer

// Variables

int pd = 500;       // Pulse Delay period
boolean setdir = LOW; // Set Direction

// Interrupt Handler

void revmotor (){

  setdir = !setdir;
 
}


void setup() {

  pinMode (driverPUL, OUTPUT);
  pinMode (driverDIR, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(reverseSwitch), revmotor, FALLING);
 
}

void loop() {
 
    pd = map((analogRead(spd)),0,1023,3600,1);   
    digitalWrite(driverDIR,setdir);
    digitalWrite(driverPUL,HIGH);
    delayMicroseconds(pd);
    digitalWrite(driverPUL,LOW);
    delayMicroseconds(pd);
 
}

- Ali je ta program primeren za ta motor-driver?

Spodaj pa je shema priklopa, vse je tako samo napajanje je 60V.

LP, in hvala, marko

Avtor: igo PrispevekObjavljeno: Ned Jun 30, 2019 4:15 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Guglaj
Arduino Reference
da sploh vidiš, katere ukaze in funlcije imaš na razpolago.

Funkcija
map(virVhod, minimalniVhod, maksimalniVhod, minimalniIzhod, maksimalniIzhod);
preslika vhodni razpon vrednosti vir-a v izhodni razpon vrednosti.
V danem primeru je vir analogni vhod 0 do 1023, ki se preslika na 3600 do 1.


1204 oz.in je navor.
Oz je enota za silo, inch pa za ročico. Angleška zadeva. Pri nas je enota za navor Nm, pri malih motorčkih pa Ncm (centimetri).

Maksimalni rpm so v datasheetu motorja. Če na driverju nastaviš microstepping, bodo impulzi iz Arduinota množeni s tem razmerjem, kar moraš upoštevati.

Avtor: marko11Kraj: Dobrepolje PrispevekObjavljeno: Ned Jun 30, 2019 8:40 pm    Naslov sporočila:  
----------------------------------------------------------------------------
igo je napisal/a:


Funkcija
map(virVhod, minimalniVhod, maksimalniVhod, minimalniIzhod, maksimalniIzhod);
preslika vhodni razpon vrednosti vir-a v izhodni razpon vrednosti.
V danem primeru je vir analogni vhod 0 do 1023, ki se preslika na 3600 do 1.



Tole pa ne razumem, "ki se preslika na 3600 do 1."

Pa še tole me zanima:

- zakaj se motor ustavi pri najvišji hitrosti, ko zamenjam smer, če je hitrost nekje na 2/3 pa lepo deluje.

- kako se lahko poveča hitrost motorja, sedja je frekvenca približno 0-5000Hz merjeno na PUL pinu od driverja.

- kje v kodi in kaj bi moral napisati, da se izvede določeno število korakov?

lp,

Avtor: polkic PrispevekObjavljeno: Ned Jun 30, 2019 11:31 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Pozdravljen;

map funkcija ni nič druga kot linarizacija. Sepravi če imaš analogne vrednosti od 0-1023 in jih recimo mapiraš na procente (0-99) to pomeni, da ti bo funkcija sama preračunala izhodno vrendost za podano vhodno vrednost. To pomeni, če bi imel potenciometer na analognem vhodu bi bile prednsoti pri 0(o voltov) enako 0%, 512 (2,5 volta) 50% in 1023 (5 voltov) 99%.

Glede ustavljanja je najbrš problem, da gre za prehiter pojav.

Hitrost in število korakov pa sta neposredno povezana.

Najprej se odloči kaj bi rad imel...Večja kot je natančnost (microsteping) manjša je moč motorja. Iz tega boš določil število pulzov za 1 obrat. Iz tega naprej pa je izpeljan vsa ostala matematika.

HItreje kot boš pošijav pulze hitreje bo šibal motor. Seveda do neke meje, ki jo premore Arduino sam....

Lep pozdrav.

Avtor: Jaka57Kraj: Grosuplje PrispevekObjavljeno: Pon Jul 01, 2019 9:02 am    Naslov sporočila:  
----------------------------------------------------------------------------
polkic je napisal/a:
.....Seveda do neke meje, ki jo premore Arduino sam....

Dvomim, da se zmore motor tako hitro vrteti, kolikor hitro mu arduino, preko driverja, pošilja impulze, brez izgube korakov.

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group