INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Rotationsachse mit Stepper
13.07.2014, 22:20 (Dieser Beitrag wurde zuletzt bearbeitet: 13.07.2014 22:22 von ulrike1966.)
Beitrag #1
Rotationsachse mit Stepper
Habe folgendes Problem !
Habe ein C-Achse für meine mini Fräsmaschine gebaut Übersetzung ist 6/1 will sie mit einem Schrittmotor ansteuern im 1/8 schritt Modus !! Macht 200*8*6 =9600 Schritt pro Umdrehung . Jetzt zum Problem !! 9600/360 Grad =26.6666666666666 Schritte da aber nur ganze schritte möglich sind bekomme ich einen Fehler bei einer Umdrehung von 240 steps !! Sind ca. 3 Grad . Wie könnte ich das lösen !!!1


[/co// C-Achsensteuerung


#include <Arduino.h>
#include <LiquidCrystal.h>
#include <AH_EasyDriver.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
AH_EasyDriver stepper(1200,11,12,4,5,6); // Initialisation
const int buttonPin = 2; // Pinnummer Reverenzschalter
int StepPin = 12;
int DirPin = 11;
int buttonState ;
int taster = 1;
int lcd_key = 0;
int adc_key_in = 0;
int Winkel = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
int read_LCD_buttons()
{
adc_key_in = analogRead(0);
if (adc_key_in > 1000) return btnNONE;
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE;
}






void setup()
{
pinMode(StepPin, OUTPUT);
pinMode(DirPin, OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin(9600);
stepper.setSpeedRPM(35); // Drehzahl 1/Min



lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(4,0); // display flash screen
lcd.print("C-Achse ");
lcd.setCursor(0,1);
lcd.print("Uebersetzung 6/1");
delay(1500); // wait a few secs
lcd.clear();
lcd.setCursor(0,0); // display flash screen
lcd.print("Fahre Referenz ");
delay(1500);

while(taster)
{
buttonState = digitalRead(buttonPin);
if (buttonState == LOW)
{
digitalWrite(StepPin, HIGH);
delayMicroseconds(150);
digitalWrite(StepPin, LOW); // turn the LED off by making the voltage LOW
delayMicroseconds(150);
}
else if (buttonState == HIGH)
{
Serial.println(buttonPin);
delay(100);
break;
}
}
lcd.clear();
lcd.setCursor(0,0); // display flash screen
lcd.print("Winkel= 0 Grad ");
delay(2000);
lcd.clear();
}
void loop(){
lcd.setCursor(11,1); // move cursor to second line "1" and 9 spaces over
lcd.setCursor(11,1);
lcd.print(Winkel);
lcd.setCursor(0,1); // move to the begining of the second line
lcd_key = read_LCD_buttons(); // read the buttons
switch (lcd_key) // depending on which button was pushed, we perform an action
{
case btnRIGHT:
{
lcd.print(" + 1 Grad");
digitalWrite(DirPin, HIGH);
int x=0;
while(x<26)
{
digitalWrite(StepPin, HIGH);
delayMicroseconds(150);
digitalWrite(StepPin, LOW); // turn the LED off by making the voltage LOW
delayMicroseconds(150);
x++;
}
Winkel++;
delay(100);
break;
}
case btnLEFT:
{
lcd.print(" - 1 Grad");
digitalWrite(DirPin, LOW);
int x=0;
while(x<26)
{
digitalWrite(StepPin, HIGH);
delayMicroseconds(150);
digitalWrite(StepPin, LOW); // turn the LED off by making the voltage LOW
delayMicroseconds(150);
x++;
}
Winkel--;
delay(100);
break;
}
case btnUP:
{
lcd.print(" + 10 Grad ");
digitalWrite(DirPin, LOW);
int x=0;
while(x<267)
{
digitalWrite(StepPin, HIGH);
delayMicroseconds(150);
digitalWrite(StepPin, LOW); // turn the LED off by making the voltage LOW
delayMicroseconds(150);
x++;
}
Winkel=Winkel +10;
delay(100);
break;
}
case btnDOWN:
{
lcd.print(" - 10 Grad ");
digitalWrite(DirPin, HIGH);
int x=0;
while(x<267)
{
digitalWrite(StepPin, HIGH);
delayMicroseconds(150);
digitalWrite(StepPin, LOW); // turn the LED off by making the voltage LOW
delayMicroseconds(150);
x++;
}
Winkel=Winkel -10;
delay(100);
break;
}
case btnSELECT:
{
lcd.print("SELECT");
digitalWrite(DirPin, LOW);
int x=0;
while(x<2400) //Immer 90 Grad drehen
{
digitalWrite(StepPin, HIGH);
delayMicroseconds(150);
digitalWrite(StepPin, LOW); // turn the LED off by making the voltage LOW
delayMicroseconds(150);
x++;
}
break;
}
case btnNONE:
{
lcd.setCursor(0,0);
lcd.print("Winkel=");
lcd.print((Winkel));
lcd.print(" Grad ");
break;
}
}
}



de]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2014, 17:08
Beitrag #2
RE: Rotationsachse mit Stepper
Hallo!
Ein Schrittwinkel ist ja 1,8 Grad, also sind 200 Steps 360 Grad.
9600/200 ist dann 48 bei einem Schrittwinkel von 0,3 Grad an der Spindel..

mfg Martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2014, 21:43 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2014 21:45 von ulrike1966.)
Beitrag #3
RE: Rotationsachse mit Stepper
(14.07.2014 17:08)P.Martin schrieb:  Hallo!
Ein Schrittwinkel ist ja 1,8 Grad, also sind 200 Steps 360 Grad.
9600/200 ist dann 48 bei einem Schrittwinkel von 0,3 Grad an der Spindel..

mfg Martin

Hi du hast einen Denkfehler ich habe 9600 Steps pro 360 Grad Übersetzung von 1zu6 nicht vergessen !
Müsste so funktionieren
1 Grad =26 Schritte
2 Grad=27 Schritte
3 Grad=27 Schritte
Macht zusammen 80 Schritte alle 3 Grad was heißt das alle 3 Grad die Position genau stimmt !!! 80 Schritte mal 120 (3Grad) =360Grad. Nur wie bekomme ich das Programmiert das es auch bei links und rechts Drehung funktioniert

http://www.ebay.de/itm/CNC-Fresado-Route...417d996aab

So ähnlich schaut meine C-Achse aus !!!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.07.2014, 15:50
Beitrag #4
RE: Rotationsachse mit Stepper
Hallo!
1200 Steps sind ja 360 Grad am 3 BackenFutter.
Daraus ergibt sich eine Teilung von 0,3 Grad.
150 Steps für 45 Grad...

mfg Martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.07.2014, 21:37
Beitrag #5
Smile RE: Rotationsachse mit Stepper
(15.07.2014 15:50)P.Martin schrieb:  Hallo!
1200 Steps sind ja 360 Grad am 3 BackenFutter.
Daraus ergibt sich eine Teilung von 0,3 Grad.
150 Steps für 45 Grad...

mfg Martin

Hast ja recht aber du hilfts nicht wirklich da ich in 1Grad Schritten verfahren will !!
ausserdem in 1/8 Sritten macht also doch 9600 Angel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 17:27 (Dieser Beitrag wurde zuletzt bearbeitet: 13.08.2014 18:20 von Damir.)
Beitrag #6
RE: Rotationsachse mit Stepper
Vollschritt=1,8Grad (200 Schritte):6 = 0,3Grad am Ende
Halbschrittt= 0,9 Grad (400 Schritte):6 = 0,15 Grad am Ende
Viertelschritt= 0,45 Grad (800 Schritte): 6 = 0,075 Grad am Ende
Achtelschritt= 0,225 Grad (1600 Schritte):6 = 0,0375 Grad am Ende
Sechzehntelschritt=0,1125 Grad (3200 Schritte):6 = 0,01875 Grad am Ende

So wie ich das sehe kannst du dich aus den oben aufgeführten Zahlen bedienen, mehr ist nicht drinnen.
Bei einem Fehler bitte ich um Berichtigung, danke
P.S. 240 Schritte bei Achtelschritt sind 9 Grad am Ende. Der Motor macht Schritte nicht Grad! Der Winkel ist nur das Ergebnisse der Schritte die der Motor gemacht hat, nicht umgekehrt.

Gruß
Damir
Edit: kleiner Rechenfehler am Ende. Ist natürlich :6 und nicht x6
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste