Hallo miteinander,

ich bräuchte etwas Unterstützung.

Situation: RN-Control 1.4 mit einem Schrittmotor ( PL15S-020 von NMB) aus einem CD-Laufwerk, Motor ist an Motoren-Pins (über L293D) angeschlossen.

Datenblatt Schrittmotor:http://www.fh-augsburg.de/~mgoebel/f...nearMotors.pdf

Mein Quellcode sieht so aus:
Code:
;*************************************************
;
;Autor: Göbel Markus
;
;Schrittmotor PL15S-020 an RN-Control V1.4 über L293D
;
;Stand: läuft halbwegs
;
;Datum: 02.10.06
;
;**************************************************


;*****includes

.include "c:\m32def.inc"

;*****Namen****

;*****INIT*****
	.org 0x0000			
		rjmp main		;starting at 0x00
	
	.org 0x0060
;*****Main*****
main:
		ldi r16, low(RAMEND)
		out SPL, r16
		ldi r16, high(RAMEND)
		out SPH, r16

immer:		rcall fahr
		rjmp immer

;*****Subr. fahr
fahr:					;I/0 Register init
		ldi r16,0xFF
		out DDRB,r16		;Port B as output
		out DDRC,r16		;Port C as output

					;A1=PC6  A3=PC7   B1=PB0   B3=PB1
					;step 1
fah_lo:		cbi PORTC,6		;-++-
		sbi PORTC,7
		sbi PORTB,0
		cbi PORTB,1
		rcall wait		;step 2
		cbi PORTC,6		;-+-+
		sbi PORTC,7
		cbi PORTB,0
		sbi PORTB,1
		rcall wait		;step 3
		sbi PORTC,6		;+--+
		cbi PORTC,7
		cbi PORTB,0
		sbi PORTB,1
		rcall wait		;step 4
		sbi PORTC,6		;+-+-
		cbi PORTC,7
		sbi PORTB,0
		cbi PORTB,1
		rcall wait
		ret

;*****Subr. wait

wait:					;ca 1 700 000 cycles
	ldi 	r20,0x03		;ca 0,1 sec. --> 10 steps/sec
out_lo:	subi 	r20,1
	breq 	wa_end
	ldi 	r21,0xFF
in_lo:	subi 	r21,1
	breq 	out_lo
	ldi 	r22,0xFF
iin_lo: subi 	r22,1
	breq	in_lo
	rjmp 	iin_lo
wa_end:	ret
Dabei treten 2 Probleme auf:
1: Der Motor wird sehr schnell sehr heiss, auch bei der schnellsten Drehzahl die ich hinbekomme (was das 2. Problem ist). Ich habe gelesen, dass die Dinger heiss werden, aber so schnell und so heiss? Im Datenblatt steht nix über ne max. Temperatur drin. Anfassen kann man ihn jedenfalls nach 2 Sekunden nicht mehr.

2: Die schnellste Drehzahl, die funktioniert, sind ca. 10 Schritte pro Sekunde. Wenn ich versuche, den Motor schneller laufen zu lassen, indem ich die wait-Schleife weniger Durchläufe machen lasse, bewegt sich das Ding gar nicht. Laut Datenblatt sollen da 1400 PPS (soll das 1400 Schritte pro Sekunde heissen??!) gehen.

Ich habe ausser die INx vom L283D und DDRx von den entsprechenden Ports nichts belegt.

Könnte das Problem daran liegen, dass ich die einzelen Leitungen (A1,A3,B1,B3) nacheinander schalte, und so immer (wenn auch nur SEHR kurz) eine falsche Schaltfolge entsteht?
Ist es möglich, dass ich das Ding einfach (trotz mehrfacher Prüfung) falsch angeschlossen habe? Würde sich dann überhaupt irgendwas bewegen?
Wenn nur das Hitzeproblem wäre, würd ich mir denken, alles is schon o.k. irgendwie, aber das mit der niedrigen Drehzahl macht mich nachdenklich.

Wer weis was??

Danke schonmal,

Gruss

Markus



*edit: Quellcode besser Formatiert, danke für den Hinweis