Hallo Leute,
ich versuch einen Programm zu schreiben das einen Schrittmotor zum laufen bringt.
Beim Ansteuern eines Getriebemotors hat alles geklappt, aber bei Schrittmotoren setzt es bei mir total aus. Hab schon mehrere Tutorials durchgelesen und werd aber nicht schlau daraus.
Ich hab das RN-Control Board und einen Unipolaren Schrittmotor (6 Anschlusskabel).
Ich hab wie in dem Tutorial
https://www.roboternetz.de/wissen/in...Schrittmotoren
beschrieben die Leitungen identifiziert und dann angeschlossen (die Mittelanzapfung hab ich nicht angeschlossen).
Ich hab folgendes Prog
Bin totaler Anfänger auf dem Gebiet und würde mich über jeden Denkanstoss freuen.Code:#include <avr/io.h> void init(void); void timer1_init(void); void delay_ms(unsigned int ms); int main(void) { init(); timer1_init(); while(1) { OCR1AL = 60; OCR1BL = 60; //Schritt1 PORTC |= (1<<PC6); PORTC &= ~(1<<PC7); PORTB |= (1<<PB0); PORTB &= ~(1<<PB1); //Schritt2 PORTC |= (1<<PC6); PORTC &= ~(1<<PC7); PORTB &= ~(1<<PB0); PORTB |= (1<<PB1); //SChritt3 PORTC &= ~(1<<PC6); PORTC |= (1<<PC7); PORTB &= ~(1<<PB0); PORTB |= (1<<PB1); //SChritt4 PORTC &= ~(1<<PC6); PORTC |= (1<<PC7); PORTB |= (1<<PB0); PORTB &= ~(1<<PB1); } return 0; } void init(void) { /* Port A als Eingang deklarieren ( A/D-Wandler Eingänge ) */ DDRA = 0x00; PORTA = 0x00; /* Port B als Ausgang deklarieren */ DDRB = 0xff; PORTB = 0x00; /* Port C als Ausgang deklarieren */ DDRC = 0xff; PORTC = 0x00; /* Port D als Ausgang deklarieren */ DDRD = 0xff; PORTD = 0x00; } /* Timer1 initialisieren */ void timer1_init(void) { /* normale 8-bit PWM aktivieren ( nicht invertiert ), Das Bit WGM10 wird im Datenblatt auch als PWM10 bezeichnet */ TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<WGM10); /* Einstellen der PWM-Frequenz auf 14 kHz ( Prescaler = 1 ) */ TCCR1B = (1<<CS10); /* Interrupts für Timer1 deaktivieren Achtung : Auch die Interrupts für die anderen Timer stehen in diesem Register */ TIMSK &= ~0x3c; OCR1A = 0; OCR1B = 0; }
Gruss
Torsten







Zitieren

Lesezeichen