Posts mit dem Label arduino werden angezeigt. Alle Posts anzeigen
Posts mit dem Label arduino werden angezeigt. Alle Posts anzeigen

Der Schrittmotor. Control mit Arduino und Fahrer. Beispiel Bewegungsprogramm

Einen Motortyp, der verwendet wird, um die Position seiner Achse genau zu steuern, ist der Schrittmotor.
Motor mit Gleichstrom (DC) arbeitet, hat keine Bürste und kompakte Bauweise, ist widerstandsfähig und wirtschaftlich.
Wir in der Regel in kleinen Kraft und Abmessungen wie Drucker, Scanner, Magnetventile, CNC-Maschinen, und an anderer Stelle gefunden.
Der Name ist: "Stepper" kommt aus der Art, wie es funktioniert, so dass Gleichspannung ohne Änderung seiner Polarität ein einziges Winkelschritt vorgenommen wird. Eine typische Nummer ist 200 Schritte für eine volle Umdrehung.
Um den Motor erforderlich sind, müssen wir Treiberschaltung, die die notwendige Elektronik zu liefern und die Verbindung der beiden Spulen, die üblicherweise, in dem Stator in den Festabschnitt Spulen können in der Mitte des Motors zu steuern, ist das, was gemeinhin als ein Rotor .
  Normalerweise sind die Steuertreiber haben zwei getrennte Stromquellen, eine für die logische Partition, in der Regel in einem 5-Volt- und eine um den Motor anzutreiben, in der Regel von 12 bis 50 Volt, wird das Steuerprogramm üblicherweise Mikrocontroller

Das Video zeigt einen Schrittmotor von Arduino und Dual-Vollbrücken-PWM-Motortreiber AM2170 Board of Amtek gesteuert.
Der Motor und die Steuerung durch fehlerhafte Drucker demontiert.

//_________________________________________________________________
// From the arduino serial monitor the control environment we delay (in msec) among the four steps.
// A negative value changes the direction.
           
// Set pin of AM2170 connected to arduino uno
#define I01 5
#define I11 6
#define phase1 7
#define I02 8
#define I12 9
#define phase2 10

int xronos = 230; //msec.
int xrono;
int peristrofi = 1;

void setup()
{
   Serial.begin(9600);

//  Outputs
    pinMode(I01, OUTPUT);
    pinMode(I11, OUTPUT);
    pinMode(I02, OUTPUT);
    pinMode(I12, OUTPUT);
    pinMode(phase1, OUTPUT);
    pinMode(phase2, OUTPUT);

//   Initialization    
     digitalWrite(I01, HIGH);
     digitalWrite(I11, HIGH);
     digitalWrite(I02, HIGH);
     digitalWrite(I12, HIGH);
     digitalWrite(phase1, LOW);
     digitalWrite(phase2, LOW);

}

void loop()
{
    if (Serial.available() > 0)
    {

               xronos = Serial.parseInt();
           
               if (xronos > 0)
                    {
                     Serial.println(xronos);
                     peristrofi = 1;
                     }
               else
                  if (xronos == 0) // not 0 allowed
                    {
                     xronos = 1;
                     peristrofi = 1;
                     Serial.println(xronos);
                    }
               else
                   {
                    peristrofi = -1;
                    Serial.println(xronos);
                   }                    
    }

    if (peristrofi==1)
    {
// The four steps of the one-way
  digitalWrite(I01,LOW);
  digitalWrite(I02,HIGH);
  digitalWrite(phase1,HIGH);
  digitalWrite(phase2,LOW);
  delay(xronos);

  digitalWrite(I01,HIGH);
  digitalWrite(I02,LOW);
  delay(xronos);

  digitalWrite(I01,LOW);
  digitalWrite(I02,HIGH);
  digitalWrite(phase1,LOW);
  digitalWrite(phase2,HIGH);
  delay(xronos);

  digitalWrite(I01,HIGH);
  digitalWrite(I02,LOW);
  delay(xronos);
    }
    else
    {
    xrono=abs(xronos);

// The 4 steps of other direction
    digitalWrite(I01,HIGH);
    digitalWrite(I02,LOW);
    digitalWrite(phase1,LOW);
    digitalWrite(phase2,HIGH);
    delay(xrono);

    digitalWrite(I01,LOW);
    digitalWrite(I02,HIGH);
    delay(xrono);

    digitalWrite(I01,HIGH);
    digitalWrite(I02,LOW);
    digitalWrite(phase1,HIGH);
    digitalWrite(phase2,LOW);
    delay(xrono);

    digitalWrite(I01,LOW);
    digitalWrite(I02,HIGH);
    delay(xrono);
    }

}


// fur 2nd video
// Έλεγχος bipolar stepper μοτέρ με τον οδηγό ΑΜ2170 της ΑΜtek από
// το serial interface δίνοντας 3 νούμερα:
// αριθμός βημάτων, μέγιστη ταχύτητα, επιτάχυνση(+επιβράδυνση).
// http://greekelectrician.blogspot.gr/

#include <AccelStepper.h>

// Ορισμός pin του ΑΜ2170 που συνδέονται στο arduino uno
#define I01 5
#define I11 6
#define phase1 7
#define I02 8
#define I12 9
#define phase2 10

// Ορισμός του μοτέρ και των pin που συνδέεται.
AccelStepper stepper (2,phase1,phase2); // FULL2WIRE = 2 (2 pins) στα 7 και 10

int vimata; // Από -32768 έως 32767
float taxitita; //βήματα το sec
float epitaxinsi; // βήματα το sec^2
 
void setup()
{
    Serial.begin(9600);

    //  Ορισμοί εξόδων
    pinMode(I01, OUTPUT);
    pinMode(I11, OUTPUT);
    pinMode(I02, OUTPUT);
    pinMode(I12, OUTPUT);

    //   Αρχικοποίηση
    digitalWrite(I01, LOW);
    digitalWrite(I11, HIGH);
    digitalWrite(I02, LOW);
    digitalWrite(I12, HIGH);

    Serial.println("\nDose (+-)vimata,taxitita,epitaxinsi(ENTER)\n");
}

void loop()
{
  // Αν υπάρχουν διαθέσιμα νούμερα διαβασέτα:
  while (Serial.available() > 0)
  {
    // έλεγχος για τα επόμενα 3 έγκυρα νούμερα από την σειριακή είσοδο:
    vimata = Serial.parseInt();
    taxitita = Serial.parseFloat();
    epitaxinsi = Serial.parseFloat();

    taxitita = abs(taxitita); // όχι αρνητική
    epitaxinsi = abs(epitaxinsi); //όχι αρνητική
    if (taxitita == 0) taxitita = 0.1; //όχι μηδέν
    if (epitaxinsi == 0) epitaxinsi = 0.01; // όχι μηδέν

    // εμφάνιση στην οθόνη του Η/Υ
    Serial.print("vimata\t\t=\t");
    Serial.println(vimata,DEC);
    Serial.print("taxitita\t=\t");
    Serial.println(taxitita,2);
    Serial.print("epitaxinsi\t=\t");
    Serial.println(epitaxinsi,2);
   
    stepper.setMaxSpeed(taxitita);
    stepper.setAcceleration(epitaxinsi);
    stepper.move(vimata);
   
    while(stepper.distanceToGo() != 0)
    stepper.run();
   
    Serial.println("\n\nTelos kinisis\nDose (+-)vimata,taxitita,epitaxinsi(ENTER)\n");
  }
}

Arduino. Board programmierbaren AVR Mikrocontroller Atmel. Beispiel Programmierung.

Das Arduino Uno R3-Version. 
 Das Arduino ist ein kleines, relativ, Leistungsfähigkeit, ein Computer-Board mit Speicher für Programm und Daten, digitale Eingänge, analoge Eingänge und Ausgänge bis 5 Volt DC, oder 3,3 Volt DC für neuere Modelle. Es hat den Vorteil eines geringen Preis im Vergleich zu dem, was sie bietet.

Die meisten Modelle haben eine Simulation der Analogausgang an spezifischen Stellen unter Verwendung der Technik der PWM (Pulsweitenmodulation ), werden die Ausgänge auf der Platine sind das Symbol für die Welle als Wechselstrom.

Das Arduino fällig und hat echte Analogausgänge.

Angeschlossen und der Computer ist mit einfachen Kabel USB programmiert.

Der Prozessor ist das Unternehmen Arduino Atmel (Advanced Technology für Speicher und Logik), die die griechischen George Perlegas 1984 in den USA gegründet hat Vor der Gründung der Arbeits in Intel.
Der AVR ist ein RISC-Architektur Bau (Reduced Instruction Set Computer)-Prozessoren bieten hohe Geschwindigkeit der Ausführung, in der Regel in einem Kreis der Uhr.

Auf der Hauptplatine Arduino angepasst verschiedenen Platinen genannt Shields und fügen Sie Extras wie Möglichkeit: Monitore, GSM-Karte, Ethernet, Bluetooth, Akku-Relais usw. Das jeder von ihnen hat seine eigene Befehle (Routinen) integrierte Steuerung Entwicklungsumgebung wie Bibliotheken.

Es gibt eine kleine PLC, wie die LOGO! basierend auf Arduino, ist mit ihm und rief controllino kompatibel. http://www.controllino.cc/

Die Programmierung erfolgt in einer integrierten Entwicklungsumgebung (IDE Integrated Development Environment), basierend auf der Sprache C durchgeführt und ist kostenlos über die Website http://www.arduino.cc/.

Diese Programme werden Skizze genannt, weil die Umwelt wird auf der Verarbeitungssprache für Grafiker und Designer abzielt.
Die Arduino Programmierumgebung mit einem Beispiel. 
Mit pinMode gesetzt, wenn die entsprechenden Pin ist Eingang oder Ausgang, weil der Arduino kann sowohl natürlich nicht zur gleichen Zeit sein.

Das Programm läuft kontinuierlich, bis Sie die aktuelle Durchflussrate zu schneiden, es in der Routine loop () von der Basislinie ({) auf die endgültige Halterung gesetzt (}).

Recht von den "//" setzen Kommentare zu den besten Programmdokumentation