|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
marko11 Član
Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 866 Aktiv.: 3.89 Kraj: Dobrepolje
|
Objavljeno: 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
Opis: |
|
Velikost datoteke: |
55.71 KB |
Pogledana: |
1 krat |
|
|
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.06
|
Objavljeno: 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.
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
marko11 Član
Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 866 Aktiv.: 3.89 Kraj: Dobrepolje
|
Objavljeno: 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,
|
|
Nazaj na vrh |
|
|
polkic Član
Pridružen-a: Pon 04 Dec 2017 20:27 Prispevkov: 68 Aktiv.: 0.88
|
Objavljeno: 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.
|
|
Nazaj na vrh |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5773 Aktiv.: 25.92 Kraj: Grosuplje
|
Objavljeno: 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.
_________________ Lp, Jaka |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 68 dni
Powered by phpBB © 2001, 2005 phpBB Group
|