Go Down

Topic: Projekt Drehachse für Fräsmaschine (Read 7183 times) previous topic - next topic

DrFlopp

Hallo Zusamen,
ich plane gerade mir eine Drehachse für meine Fräsmaschine zu bauen, diese Achse soll mit der Spindel Synchonisiert werden können. Dazu benötige ich natürlich zwei Encoder Eingänge. Also benötige ich 4 Interrupts. Kann der Duemilanove um progammiert werden oder kann der Mega das? Wie würdet Ihr das machen?
Vielen Dank für eure Hilfe
DrFlopp

uwefed

Wieso brauchs Du  2 interrups pro Encoder? Genügt da nicht nur einer?
Viele Grüße Uwe

DrFlopp

Ich benötige Kanal B und Kanal B des Encfoders für die Auswertung mit voller Auflösung.

uwefed

Du willst die doppelte Auflösung indem Du die Flanken beider Kanäle kontrollierst?
Kontrollierst Du die ansteigende und abfallende Flanke?
Grüße Uwe

DrFlopp

Ich benutze natürlich beide Flanken.

DrFlopp

Hallo Leute,
ich habe jetzt die Hardware zu sammen. Ich habe einen Seeeduino V2.21, eine Schrittmotor und einen Pololu Schrittmotortreiger. Als Sensor für die Drehgeschwindigkeit der Frässpindel habe ich einen Encoder mit 16 Imp.
Jetzt suche ich ein Beispilprogramm zur Ansteuerung des Pololu Treibers.
Vielen Dank für eure Hilfe
DrFlopp

Udo Klein

Wenn eh nur Flanken interessieren kann man jeden beliebigen Pin für Interrupts benutzen http://www.arduino.cc/playground/Main/PcInt.

Allerdings verstehe ich immer noch nicht wieso man dazu 4 Interrupts braucht. Man kann im Interrupt doch auslesen ob jetzt gerade HI oder LO anliegt und daraus die Flanke folgern.
Check out my experiments http://blog.blinkenlight.net

DrFlopp

Mein Ursprünglicher Plan war zwei Encoder auslesen zu wollen. Diesen habe ich jetzt geändert. ich versuche zunächst einen gesteuerten Schrittmotor und die an der Frässpindel vorhandene Lichtschranke zu benutzen. Bei dieser Konfiguration benötige ich natürlich nur einen Interrupt.
Jetzt arbeite ich an der Ansteuerung des Schrittmotors.
Viele Grüße
DrFlopp

DrFlopp

Hallo Leute,
die Stepper.h bereitet mir noch ein kleines Problem.

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9,10,11);

Welcher Pin steht wofür?
Vielen Dank für Eure Hilfe.
DrFlopp

flomei

Ich zitiere:

Code: [Select]
Stepper(steps, pin1, pin2, pin3, pin4)
[...]
pin1, pin2: two pins that are attached to the motor (int)

pin3, pin4: optional the last two pins attached to the motor, if it's connected to four pins (int)


Ist also eine Frage, was für einen Schrittmotor bzw. wieviele Steuerleitungen du daran hast...

Beste Grüße
Florian

http://www.flomei.de

DrFlopp

Ich bin kein Elektroniker, heist das ich kann den Schrittmotor direkt an die Pins klemmen?
Wenn ich das richtig verstehe kann ich meinen Pololu-Treiber so nicht mit der Stepper.h betreiben.
Ich habe einen Pololu Treiber, der braucht einen Enable- einen Direction- und einen Stepp-Pin.
Gruß
DrFlopp

kurti

Hallo,

welchen Treiber benutzt Du ?

Ich selbst bin gerade dabei einen Pololu A4988 Schrittmotortreiber + Spannungsregler in Betrieb zu nehmen.
Die Grundschaltung läuft schon und per Drahtbrücken kann ich Schrittweite und Richtung einstellen.

Gruss
Kurti
Zitat Jurs: falsche Verkabelung ist sowieso immer wenig förderlich für das Funktionieren der Hardware



hier könnte Ihre Werbung stehen

DrFlopp

Hallo Kurti,
ich benutze auch einen A4988. Der scheind aber nicht mehr zu wollen oder ich mache etwas grundlegend falsch.
Heute mittag habe ich die Example Stepper ausprobiert mit dem Pololu, das hat scheinbar funktioniert, dachte ich.
Dann habe ich das System auf meine Mechanische Hardware losgelassen und nichts funktionierte mehr.
Jetzt habe ich versucht ein Programm zu schreiben das ohne die Stepper.h auskommt. Doch auch das hat nicht funktioniert.


DrFlopp

Das mit den Anhängen bekomme ich immer noch nicht hin, Hier mein Code:

/*
Drehachsensteuerung

*/
int i;                     // Getriebeübersetzung
int s;                     // Sinunsfunktion
int R = 10;                // Rechteckausgang
double w;                  // Omega
float Speed;               // Spindeldrehzahl
unsigned long T1;          //Zeitstepel 1
unsigned long T2;          //Zeitstepel 2

// Encoder Interruptports
#define A 2      //Belegung der Encoderkanale A

void setup() {
i=40;
pinMode(R,OUTPUT);
pinMode(8,OUTPUT);   //Enable Pin
pinMode(9,OUTPUT);   //Direction Pin
 
Serial.begin(9600);  // initialize the serial port:
 
  attachInterrupt(0,CHAInt,RISING);                // Interrupt 0 führt CHAInt aus mit wechslende Flanken
  pinMode(2,INPUT);                               // Pin2 als Input
  digitalWrite(2,HIGH);                            // Interne Pull Ups benutzt
}

void loop() {

  Speed= 1000/(T2-T1);//16;                  //Spindeldrehzahl
  //Serial.println(Speed);
  Serial.println(s); 
  // Rechtecksignal
  w= (Speed*36*4)/(16*200*i);
  s=5*sin(w*millis()*1000);
  if (s<0){
    digitalWrite (R, LOW);
  }
   if (s>0){
    digitalWrite (R, HIGH);
  }
  digitalWrite(8, HIGH);               // Enable Pololu
  digitalWrite(9, LOW);               // Direktion Pololu
 
}
void CHAInt ()
{
  int Aread=0;

  Aread=digitalRead(A);

  if (Aread==HIGH){
    T1 = T2;
    T2 = millis();
   
  }
}

uwefed

A4988 oder A4983 ?

Wenns der Pololu Stepper Motor Driver ist dann der A4983.

Der A4983 ist ein Konstantstromdriver. Damit der A4983 den Strom limitieren kann muß die Versorgungspannung genügend groß sein, damit die Spuleninduktanz den Strom nicht limitiert. Dei Versorgungspannung des A4983 sollte die 4-fachen Nennspannung des Motors sein.

Für die Steuerung genügen 2 Pins: Richtung (directioon) und Steps. die restlichen Pins sind für Standby, und Microschritte.
Grüße Uwe


Go Up