Forum: Mikrocontroller und Digitale Elektronik Schrittmotoransteuerung Mit Atmega8 und IC ULN 2003


von Anton L. (pavlov)


Angehängte Dateien:

Lesenswert?

Hallo alle zusammen, ich bin im mom Ein Tutoriell zur Ansteuerung eines 
Bipolar Schrittmotors am ausprobieren (Siehe Anhang) und Bekomme Leider 
ein Fehler beim Übersetzen der Programms.

Es wäre echt super wenn ihr mir weiter helfen könntet
Und Sry dass es ev. ein banaler Fehler ist.

Hardware:
Myavr Board mit dem Atmega8
IC ULN 2003
Unipolar Schrittmotor

von Karl H. (kbuchegg)


Lesenswert?

Was genau gibt es an
"warten.h: no such file or directory"
nicht zu verstehen

Anyway.

Schmeiss es raus.
Da drinn ist höchst wahrscheinlich die Implementierung der Funktion
1
   warten10ms();

die kannst du aber mit den üblichen Mitteln durch
1
    _delay_ms( 10 );
ersetzen, wenn wir mal davon ausgehen, dass der Name der Funktion ihrer 
Funktionalität entspricht.

von Anton L. (pavlov)


Lesenswert?

Danke für den Tipp, soweit Läuft dass Programm, nur jetzt bekomme ich 
den nicht nach links gedreht. Obwohl ich für links n-- geschrieben habe.

#define F_CPU 3686400
#include <avr/io.h>
#include <avr/delay.h>
//#include "warten.h"

//Steuerung eines unipolaren Schrttmotors
//(3.6 Grad/Vollschritt)
// W.Tschallener 4.10.2006
//Tabelle Vollschritt
uint8_t vs[4]={9,5,6,10},
//Tabelle Halbschritt
hs[8]={9,1,5,4,6,2,10,8},
n;

void rechtslauf_Vschritte(uint16_t ns){
uint16_t z;
for ( z=0;z<ns;z++){
n++;
PORTC =vs[n&3];
_delay_ms(5);
}
}

void linkslauf_Vschritte(uint16_t ns){
uint16_t z;
for(z=0;z<ns;z++){
n--;
PORTC =vs[n&3];
_delay_ms(5);
}
}

void rechtslauf_Hschritte(uint16_t ns){
uint16_t z;
for (z=0;z<ns;z++){
n++;
PORTC =hs[n&7];
_delay_ms(20);
}
}
void linkslauf_Hschritte(uint16_t ns){
uint16_t z;
for(z=0;z<ns;z++){
n--;
PORTC =hs[n&7];
_delay_ms(15);
}
}

void main(){
n=0;
DDRC = 0b00001111;

while(1)
{
rechtslauf_Vschritte(200);
_delay_ms(500);
linkslauf_Vschritte(600);
_delay_ms(500);
}
}

von Marcel V. (antis)


Lesenswert?

Ohne genauer hingeschaut zu haben:

Gibt es bei Schrittmotortreiber nicht immer ein Vorzeichenbit, das die 
Drehrichtung definiert?

von Blende22 (Gast)


Lesenswert?

Hallo Anton!
Bist Du sicher, dass die Werte in Deinen Tabellen passen, abgesehen 
davon, dass Du den Ratschlag von Karl Heinz befolgen solltest? Könnte es 
sein, dass die Halbschritt-Reihenfolge 9,1,3,2,6,4,10,8 bei 
Rechtsdrehung  lautet? (Vermutung!!)
Gruss Gerhard

von Wolfgang (Gast)


Lesenswert?

Marcel V. schrieb:
> Ohne genauer hingeschaut zu haben:
Gut, dass du das erwähnt hast.

> Gibt es bei Schrittmotortreiber nicht immer ein Vorzeichenbit, das die
> Drehrichtung definiert?

Bestimmt nicht bei einem ULN2003

von Blende22 (Gast)


Lesenswert?

Hallo,
er muss nur die Zahlen-Reihenfolge umkehren, also 8,10,4,6,23,1,9  in 
dem Beispiel.

von Blende22 (Gast)


Lesenswert?

Ich korrigiere, weil meine Beistrichtaste spinnt:
8,10,4,6,2,3,1,9

von Michael (Gast)


Lesenswert?

Blende22 schrieb:
> er muss nur die Zahlen-Reihenfolge umkehren, also 8,10,4,6,23,1,9  in
> dem Beispiel.

Und was macht n-- anderes? Da wird das Bitmusterarray von hinten 
abgearbeitet. Für Vollschritt ist außerdem die Vollschritttabelle 
aktuell, sonst würde die Maskierung mit '&3' beim Index auch nicht 
passen.

von Blende22 (Gast)


Lesenswert?

Tipp: Versuch mal, die Richtungsänderung von einer Taster-Eingabe 
abhängig zu machen, also den automatischen Richtungswechsel mal beiseite 
zu lassen.

von Blende22 (Gast)


Lesenswert?

>Und was macht n-- anderes?

Jo, stimmt schon. Mein Gedanke war nur der, dass der Motor trotzdem 
nicht die Richtung wechselt. Automatisch ohne Eingabetaste habe ich auch 
Probleme, aber ich lerne noch und seit gestern intensiv!! ;-)
http://www.youtube.com/watch?v=UpxemFUVnFI
Und das als Rentner! ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.