sitemap link mailform link home

Schrittmotoren

Links:
Interner Link http://www.fh-aalen.de/dti/doku_stp/stp_doku.htm

Interner Link  http://rn-wissen.de/wiki/index.php/Schrittmotoren

Bei Wikipedia fand ich eine tolle Animation zum Thema "Reluktanz-Schrittmotor":

Animation

Interner Link  http://de.wikipedia.org/wiki/Schrittmotor

Hier erkennt man ziemlich gut, wie der geteilte Anker (Noppen bzw. Zähne) die hohe Schrittzahl pro Umdrehung ermöglicht.

Eine weitere, ausführliche Abhandlung zu Schrittmotoren (mit Animation zum Halbschrittbetrieb eines unipolaren Schrittmotors) gibt es hier:

Interner Link http://www.phyta.net/stepper.htm

 


 

Allgemeines

Schrittmotoren werden heute überall dort eingesetzt, wo eine exakte Positionierung erforderlich ist. Man findet sie beispielsweise in DVD-Laufwerken, Tintenstrahldruckern, Laserdruckern oder Kopiergeräten.
In der Automatisierungstechnik werden meist Schrittmotoren verwendet, um Werkzeugmaschinen zu steuern.
In modernen PKWs werden Schrittmotoren z.B. zur Betätigung der Klappen von Heizungs- und Klimaanlagen verwendet. In manchen Mittelklassewagen sind über 50 Schrittmotore verbaut!

"Schrittmotoren folgen im Prinzip exakt dem außen angelegten Feld und können ohne Sensoren zur Positionsrückmeldung (Encoder, Drehgeber oder ähnliches) genau betrieben werden. Sie zeigen damit ein ähnliches Verhalten wie Synchronmotoren, weisen aber in der Regel eine deutlich höhere Polpaarzahl auf. Daher können sie einfacher betrieben werden als beispielsweise Servomotoren (i. d. R. Gleichstrom- oder Synchronmotoren mit Positionsgeber), welche auf die gewünschte Position eingeregelt werden müssen. Für einen besonders homogenen Verlauf werden Schrittmotoren mit einem gleichförmigen Drehfeld angesteuert." (Quelle: Wikipedia)

Bauformen

Nach der mechanischen Konstruktion unterscheidet man

  • Reluktanzschrittmotore
  • Permanentmagnetschrittmotore
  • Hybridschrittmotore

Eine detaillierte Beschreibung findet man bei Externer Link Wikipedia.

Beschaltung

Schrittmotorbeschaltung

Bildquelle: Wikipedia

Ansteuerung mit Schaltern

Die unipolare Schaltung kann man real auf dem Steckbrett aufbauen und schafft es mit etwas Geschick, den (unipolaren) Schrittmotor anzusteuern, so dass er sich schrittweise bewegt.
Theoretisch geht dies auch mit dem bipolaren Schrittmotor - aber da ist schon etwas mehr Geschick erforderlich (8 Schalter)!

In der obigen Grafik des uinipolaren Schrittmotors gibt es die Schalter A, B, C und D.
Diese Schalter müssen in einem bestimmten Muster (teilweise gleichzeitig) gedrückt werden, um eine schrittweise Bewegung zu erzeugen.

Überlegen wir einmal, wie ein Drehfeld erzeugt werden kann, das den Rotor "mitnimmt"

Der hier dargestellte Vollschrittbetrieb ist relativ leicht zu verstehen und besteht aus nur 4 Schritten. In der Praxis haben die meisten Schrittmotore aber mehr Pole bzw. Wicklungen und brauchen für eine Umdehung bspw. 200 Schritte (1 Schritt = 1,8 Grad) oder 400 Schritte (1 Schritt 0,9 Grad).

Aber auch Schrittmotore mit 7,5 Grad = 48 Schritte oder 15 Grad = 24 Schritte sind erhältlich.

1. Schritt - Die Spule A und D werden eingeschaltet. Die beiden Südpole bzw. Nordpole ziehen den Rotor in die folgende Position:

Schritt1

2. Schritt - Spule A bleibt eingeschaltet und Spule C wird statt Spule D eingeschaltet. Das magnetische Feld dreht sich um 90 Grad gegen den Uhrzeigersinn. Der Rotor wird "mitgezogen":

Schritt2

3. Schritt - Nur die Spulen B und C sind eingeschaltet. Das magnetische Feld dreht sich wiederum um 90 Grad gegen den Uhrzeigersinn und bewegt so auch den Rotor.

Schritt3

4. Schritt (ohne Abbildung)- Nur die Spulen B und D sind eingeschaltet. Das magnetische Feld dreht sich wiederum um 90 Grad gegen den Uhrzeigersinn und bewegt den Rotor weiter.

Danach geht es wieder mit Schritt 1 los!

Ansteuerungstabelle:

Eingeschaltete Spulen = 1       Ausgeschaltete Spulen = 0

SchrittABCD
11001
21010
30110
40101
11001

Diese Werte kann man direkt an 4 Portpins eines Mikrocontrollers oder an den DATA-Pins der parallelen Schnittstelle des PCs ausgeben.

Recycling von Schrittmotoren

Bei der Demontage einer alten elektronischen Schreibmaschine sind mir einige unipolare Schrittmotore in die Hand gefallen.

Unipolarer Stepper

Messen Sie bei Recycling-Motoren vorher den ohmschen Widerstand der Schrittmotor-Wicklungen aus, falls kein Datenblatt vorliegt. Ältere unipolare Schrittmotore können in der Regel direkt (ohne Strombegrenzung) an 12 Volt angeschlossen werden, da sie meist relativ hochohmig sind (50 - 200 Ohm). Der hier von mir verwendete Schrittmotor stammt aus einer elektrischen Schreibmaschine Baujahr 1998 und besitzt pro Wicklung genau 50 Ohm. Daher stellt sich dann pro eingeschalteter Wicklung ein maximaler Strom I = 12 V / 50 V/A = 240 mA ein. Ein zur Ansteuerung geeigneter Transistor ist der BC337 mit 800 mA bzw. 625 mW.

 

Einfachste mögliche Hardware zur Ansteuerung unipolarer Schrittmotore mit dem PC

Schaltung

Alle Widerstände sind 3,3 KOhm und alle Dioden 1N4002.

Der Testaufbau wurde mit einem Bausatz "SUB-D Anschlussplatine" von www.pollin.de (Bestellnummer: 810 055) sowie einem kleinen Labor-Steckbrett realisiert.

Testaufbau

Die Transistoren BC337 vertragen einen Kollektorstrom von 800 mA und sind daher bestens geeignet. Gemessen wurde nämlich ein Gesamt-Stromverbrauch in der Größenordnung von 150 mA. Das wäre für Transistoren wie BC546 oder BC548 schon etwas grenzwertig!
Die Freilaufdioden dürfen nicht vergessen werden, da hohe Induktionsspannungen an den Wicklungen auftreten.

Für eine professionelle Lösung würde man allerdings "schnelle" Dioden verwenden.
Siehe auch Interner Link "Bauanleitung Schrittmotorcontroller".

Die Ansteuerung machen wir mit MS Visual C# 2008 über den Parallelport.

In MS Visual C# gestalten wir eine kleine Benutzeroberfläche mit "Windows Forms":

Screenshot

 


 

Für die Combobox müssen noch die Anzeigewerte eingetragen werden über "Eigenschaften - Auflistung":

Screenshot

 


 

Hier nun das C#-Programm:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; // Für DLL-Import benötigt

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        // LPT1 bei meiner PCMCIA-Karte ist FEE8 HEX!
        // Öffnne Systemsteuerung - System - Hardwaremanager und schaue nach!
        public int LPT_PORT_ADRESS = 0;
        public int[] BackwardStepArray = { 9, 10, 6, 5 }; // Bitmuster der Einzelschritte rückwärts
        public int[] ForwardStepArray = { 5, 6, 10, 9 }; // Bitmuster der Einzelschritte vorwärts
        public int StepCounter = 0; // Zum Abrufen der Werte aus dem StepArray

        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            CParallelPort.Output(LPT_PORT_ADRESS, 0x00);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            int Wert = ForwardStepArray[StepCounter]; // Auslesen eines Wertes
            CParallelPort.Output(LPT_PORT_ADRESS, Wert); // Ausgabe an Parallelport
            StepCounter++; // Schrittzähler erhöhen
            // Insgesamt sind nur 4 Werte im Array
            // Deshalb muss der StepCounter schließlich wieder auf Null gesetzt werden
            if (StepCounter > 3)
            {
                StepCounter = 0;
            }
        }

        // Timer1 Start
        private void button4_Click(object sender, EventArgs e)
        {
            if (LPT_PORT_ADRESS == 0)
            {
                label3.Text = "Fehler: Bitte LPT-Port auswählen!";
            }
            else
            {
                label3.Text = "Alles okay!";
            }
            timer1.Enabled = true;
        }

        // Timer1 Stopp
        private void button5_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           // LPT_PORT_ADRESS =
            switch (comboBox1.SelectedIndex)
            {
                case 0: LPT_PORT_ADRESS=0x378;
                    break;
                case 1: LPT_PORT_ADRESS = 0x278;
                    break;
                case 2: LPT_PORT_ADRESS = 0xFEE8;
                    break;
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int Ausgabewert = 0x9;
            CParallelPort.Output(LPT_PORT_ADRESS, Ausgabewert); // Ausgabe an Parallelport
            int Testwert = CParallelPort.Input(LPT_PORT_ADRESS); // Einlesn vom Parallelport
            if (Ausgabewert == Testwert)
            {
                label3.Text = "Der gewählte Port existiert.";
                CParallelPort.Output(LPT_PORT_ADRESS, 0x00); // Ausgabe an Parallelport / Zurücksetzen
            }
            else
            {
                label3.Text = "Fehler: Der gewählte Port existiert nicht!";
            }
        }

       
    }
}

class CParallelPort
{
    // inpout32.dll muss im /bin/ebug-Ordner vorhanden sein!
    // Dieser Code funktioniert nur mit Windows XP
    // Für Windows 7 wird eine 64-Bit-DLL inpoutx64.dll benötigt!
    [DllImport("inpout32.dll", EntryPoint = "Out32")]
    public static extern void Output(int adress, int value);
    [DllImport("inpout32.dll", EntryPoint = "Inp32")]
    public static extern int Input(int adress);
}

 


Die Idee zu diesem Grundlagenversuch stammt von Wolfgang Back (www.wolfgang-back.com).

Eine interessante Variante für die Ansteuerung eines unipolaren Schrittmotors gibt es hier:

Externer Link http://www.aaroncake.net/Circuits/stepper.asp

Noch weitere interessante Seiten mit Schrittmotor-Controllern:

Externer Link http://home.cogeco.ca/~rpaisley4/Stepper.html
Externer Link Schrittmotorcontroller mit Dezimalzähler 4017


Hier ein Bild vom Innenleben eines Hybrid-Schrittmotors (Bildquelle Wikipedia):

Stepper

xxx

 

 

 

Letzte Änderung:
June 21. 2024 19:13:39
«    top    »