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.