Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: askelmoottorin ohjaus

tirsku [09.09.2004 11:01:20]

#

Onko kellään kokemusta askelmoottorin ohjauksesta Javalla?

millerii [10.09.2004 09:21:56]

#

On, AVR:llä oon testannu et toimii, eka meinasin LPT-portilla mut se jäi sit ku tuli AVR tilalle.

tirsku [13.09.2004 09:19:03]

#

Voisitko laittaa koodia?

millerii [15.09.2004 15:25:45]

#

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ää!

millerii [16.09.2004 07:56:27]

#

http://www.hut.fi/u/mheimone/projektit/askelmoottori/ Tosta osotteesta löytyy kans jotain asiaan liittyvää.
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();
		}
	}
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta