Onko kellään kokemusta askelmoottorin ohjauksesta Javalla?
On, AVR:llä oon testannu et toimii, eka meinasin LPT-portilla mut se jäi sit ku tuli AVR tilalle.
Voisitko laittaa koodia?
Joo, huomenna otan kotoa ku oon nyt koulus.
Tai ei en mä sille koodia oo tehny muutaku avr:llä mut tosta http://koti.mbnet.fi/~stinger/stepperi.php löytyy jotain.
Sit oli jossain muuallaki mut en muista ny sitä sivua muista.
Mut mä huomenna katon lisää!
http://www.hut.fi/u/mheimone/projektit/
Sielä stringer sivulla oli kans esimerkki koodia lpt-ohjaukseen.
Seuraavas koodi AVR ohjaimelle (AT90S2313) CodeVisionAVR-kääntäjälle.
Kytkentä löytyy osotteesta http://koti.mbnet.fi/millerii/kuvat/stepper.jpg (tulee tänään illalla? jos ehdin laittaa kun koulus ei pysty)
AVR piirin PB4-7-pinnit tulee ULN2003 inputteihin (pinnit 1-4) ja outputteihin (pinnit 13-16) moottorin käämit. Ja tietenkin gnd (8) ja Vcc (9), ULN piirin Vcc -pinniin kannattaa laittaa zener-diodi vielä väliin ("nuoli" piiriinpäin).
PD2 ja 3 pinneihin tulee kytkimet suoraan maahan.
#include <90s2313.h>
#include <delay.h>
// Kytkinten paikkojen määrittely
#define S1 !PIND.2
#define S2 !PIND.3
// Käämien paikkojen määrittely
#define C1 PORTB.4
#define C2 PORTB.5
#define C3 PORTB.6
#define C4 PORTB.7
int i = 2; // Suuremmalla luvulla kääntyy hitaammin (ms)
// Jos liian pieni (mun omas < 2 ms) niin moottori ei pyöri
void CC1(void)
{
// 1. Käämin "nykäisy" maihin
C1 = 0;
delay_ms(i);
C1 = 1;
}
void CC2(void)
{
// 2. Käämin "nykäisy" maihin
C2 = 0;
delay_ms(i);
C2 = 1;
}
void CC3(void)
{
// 3. Käämin "nykäisy" maihin
C3 = 0;
delay_ms(i);
C3 = 1;
}
void CC4(void)
{
// 4. Käämin "nykäisy" maihin
C4 = 0;
delay_ms(i);
C4 = 1;
}
void main(void)
{
// Porttien suunnat (Tietomyrskyn EXB2313-kortilla)
// B-portin alustukset
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTB=0xFF;
DDRB=0xFF;
// D-portin alustukset
// Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=1 State5=P State4=P State3=P State2=P State1=T State0=T
PORTD=0x7C;
DDRD=0x40;
while (1)
{
if (S1)
{
// Vastapäivään kokoaskelin
CC1();
CC2();
CC3();
CC4();
}
if (S2)
{
// Myötäpäivään kokoaskelin
CC4();
CC3();
CC2();
CC1();
}
}
}Aihe on jo aika vanha, joten et voi enää vastata siihen.