$ 4,5 besseren Schrittmotorsteuerung

5 Schritt:Schritt 1: Was Sie brauchen: Schritt 2: Ein L2619, was ist das? Schritt 3: Pre-Software Schritt 4: Software. Das Ding, das Zeug macht do stuff. Schritt 5: Abschließende Verdrahtung. Endlich.

$ 4,5 besseren Schrittmotorsteuerung

$ 4,5 besseren Schrittmotorsteuerung

In den letzten Jahren, haben 3D-Drucker, persönliche CNC-Maschinen, und Plotter enorme Popularität in der DIY-Community gewonnen. Das Kraftpaket Begind davon ist der Schrittmotor, der in der Lage, präzise Bewegung ist, und kann leicht für fast nichts geborgen werden. Fahren dieser Motoren ist jedoch komplizierter als fast jede andere Motor, und obwohl viele Möglichkeiten vorhanden sind, können ein paar Schritttreiber nach oben von 40 € Genug, um einen 3D-Drucker laufen kosten kann das teurere athan jeder andere Teil sein.
Nachdem ich einen sehr günstigen Treiber mit dem L293 und machte ATtiny 85 (http://www.instructables.com/id/5-stepper-driver/), dachte ich, ich hatte eine gute Lösung, aber ich wurde schnell mit der Geschwindigkeit zufrieden , Tendenz, Schritte zu verlieren, und der Mangel an Stromregelung. Dieser Schrittmotor-Treiber versucht, diese Probleme zu beheben, und sogar weniger als das ursprüngliche Projekt. Schritt 1: Was Sie brauchen:



$ 4,5 besseren Schrittmotorsteuerung
Die meisten Teile können aus Jameco.com oder den meisten Elektronik-Lieferanten gekauft werden. Der L6219 nicht, aber dazu später mehr.
1xAttiny 2313 (oder einem Arduino-kompatibel mit mindestens 16 IO-Pins und 2 Interrupts. Ein uno oder Leonardo funktionieren wird, aber ein ATtiny ist nur 3 € aus Jameco.com, etwa ein Zehntel der Kosten eines normalen Arduino. Die 8-Pin- attinies (attinys?), wie zum Beispiel die 85 wird nicht funktionieren)
2xL6219
8x820pf Kondensator
4x1k Widerstand
4x1ohm Widerstand
4x30K-60K-Widerstand
4x100nf Kondensatoren
2x100 + uf Kondensatoren
(Ich habe nicht die letzten beiden als mein Netzteil hat bereits einige große Kappen auf sie. Ein guter electronicist würde zumindest die 100nF Kappen aufgesetzt, aber ich nur vergessen,)
Schritt 2: Ein L2619, was ist das?

$ 4,5 besseren Schrittmotorsteuerung

$ 4,5 besseren Schrittmotorsteuerung

Der L2619 ist eine eher ungewöhnliche seits und wird selten von Hobbyisten verwendet, obwohl es mehrere Vorteile gegenüber häufiger Motortreiber hat. Es erfordert eine kleine ammount von Schaltungen (obwohl nur 10 gemeinsame Komponenten), aber wenn richtig funktioniert, kann es Strom zu regeln, erfordert wenig oder keine Kühlkörper erfolgt Phase / Stromeingang und keinen schrillen Jaulen zu machen, wenn die Stepper laufen.
Schließen Sie alle Teile wie auf Seite 6 des Datenblattes hier dargestellt: http://pdf.datasheetcatalog.com/datasheet/SGSThomsonMicroelectronics/mXsqwuv.pdf
Testen Sie es zunächst mit einigen LEDs mit 1k Widerstände, bei 9V auf Vs (Vss MUSS bei 5 V bleiben), und beachten Sie, dass die I0 und I1 Stifte gesetzt Strom, Phasensätze Polarität, und dass es Low-Signal (Masse) als aktive recoginizes. Sobald Sie festgestellt haben, dass es korrekt funktioniert, schließen Sie ihn an einen Gleichstrommotor an jedem Ausgang, und schließen Sie das I0 und I1 Pins separat. Der Motor sollte beschleunigen, wenn Sie beide zu verbinden und zu verlangsamen (aber nicht zu stoppen), wenn ein Stift verbunden ist. Wenn er alle Kontrollen, dann löten, überprüfen Sie es wieder, und stellen Sie einen anderen.

Wenn Sie finially gemacht haben, vorbei an den Prüfungen der Elektronik Götter und haben zwei funktionellen Motortreiber, bewegen wir uns auf die spaßige Teil. Software. Schritt 3: Pre-Software

$ 4,5 besseren Schrittmotorsteuerung
Ich habe gelogen. Noch keine Software. Bald. Zuerst müssen Sie die Einrichtung, dass blau-Ding mit einem magischen Ding auf sie, um die Magie Zeug, um die Magie schwarze Raupe Ding zu bekommen. Oder Sie könnten Setup Arduino Code zur ATtiny schicken. So oder so.
Das hat etwas rund zehn Milliarden Mal geschrieben worden, da die Kerne wurden vor einigen Jahren freigegeben, so folgen Sie einfach den Anweisungen hier: http://www.instructables.com/id/Arduino-ATtiny2313-Programming-Shield/#intro Sie kann nur mit einem Steckbrett, so brauchen Sie nur den Code einmal zu senden, obwohl attiny2313s sind groß, also würde ich eine dauerhaftere Programmierer für andere Projekte zu machen. Stellen Sie sicher, Sie verwenden ein Arduino-Software 1.0.3 oder früher, als 1.5+ funktioniert nicht.
Sobald Sie eine LED zu blinken auf Ihrem ATtiny oder einem anderen etwas Test-Code, ist es Zeit, zu der lustige Teil zu bewegen.

Schritt 4: Software. Das Ding, das Zeug macht do stuff.

$ 4,5 besseren Schrittmotorsteuerung
Jetzt, nur kopieren und die Software weiter unten, um die IDE und klicken Sie auf ... Tools?
Ja, Werkzeuge. Dann gehen Sie zu "Board" und wählen Sie "ATtiny2313 @ 8Mhz". Ja, ich weiß, die andere instrucable sagte, es bis 1MHz früher eingestellt. Diese nutzt 8MHz becuase es macht es laufen 8-mal schneller, mit absolut keine Veränderung, Software oder anderweitig. Sicherzustellen, als Ihre normale Arduino ist konfiguriert, um Programme auf die ATtiny senden (es kann dem Arduino zu zerstören, wenn es nicht), klicken Sie auf "Tools> Burn Bootloader". Einige Lampen sollte blinken und dann sollte sie sagen, "getan brennenden Bootloader". Wenn er keinen Fehler zurück, dann einfach den Code normalerweise hochladen. Wenn die blinky Lichter zu stoppen, ziehen Sie den Arduino, ziehen Sie den ATtiny, und brechen Sie Ihre Steckbrett noch einmal.

// ATtiny 2313 Schrittmotorsteuerung durch Jduffy. Vollständige Instruktionen für instrucatables.
const Byte I011 = 1; // die Stifte für jede Funktion.
const Byte I111 = 2; // Namen mit der Endung 1 sind für Schritt 1
const Byte-DR11 = 3;
const Byte I021 = 8;
const Byte I121 = 9;
const Byte DR21 = 10;
const Byte I012 = 11; // selben für Schritt 2
const Byte I112 = 12;
const Byte-DR12 = 13;
const Byte I022 = 14;
const Byte I122 = 15;
const Byte-DR22 = 16; // für alle der folgenden, 0 steht auf "on" pin
// Als 2619 Registern günstig wie aktiv.
// Listen wie diese werden verwendet, weil sie sehr wenig von dem zu nehmen
// Chips-Speicher, der für die ATtiny2313, ist knapp (nur 2k!)
// Außerdem vereinfacht den Code unten.
boolean STP10 [] = {1,0,1,0,1,0,1,0,1,0,1,0}; // Ausgabe an LSB Strombegrenzung 1
boolean stp11 [] = {1,1,0,0,0,1,1,1,0,0,0,1}; // Ausgabe an MSB Strombegrenzung 1
boolean stpd1 [] = {1,1,1,1,1,1,0,0,0,0,0,0}; // Ausgabe in Richtung 1
boolean stp20 [] = {0,1,0,1,0,1,0,1,0,1,0,1}; // Ausgabe an LSB Strombegrenzung 2
boolean STP21 [] = {0,0,1,1,1,0,0,0,1,1,1,0}; // Ausgabe an MSB Strombegrenzung 2
boolean stpd2 [] = {0,0,0,1,1,1,1,1,1,0,0,0}; // Ausgabe in Richtung 2
Byte stepp1; // Stufenteil für Schritt 1
Lang pos1; // "tatsächliche" Position der Schritt 1
Lang dpos1; // gewünschte Position des Schritt 1
Byte-in1 = 6; // Richtung Eingangspin für Schritt 1
Byte stepp2; // gleichen Sachen für Schritt 2
Lang pos2;
Lang dpos2;
Byte in2 = 7;
Leere Setup () {
DDRB = B11111111 // Dies ist sehr wichtig, da dies die
DDRD = B1000011; // gleiche wie "pinMode () ;, sondern nimmt sehr wenig Platz.
// Wenn Sie etwas anderes verwenden als eine ATtiny 2313, dann müssen Sie alle diese Änderungen
// Der Standard "pinMode ();" Befehl.
DDRA = B011; // wenn Sie Stifte 6 oder 7 als Ausgänge verwenden, müssen Sie diese Zeilen ändern
//
// Wenn Sie nicht wissen, was diese Zeilen bedeuten, gibt es eine
// Erklärung bei http://arduino.cc/en/Reference/PortManipulation
attachInterrupt (0, Schritt 1, RISING); // IMMER auf digitalen 4 oder 5 (0 = 4, 1 = 5), die Interrupts kann nicht sein,
attachInterrupt (1, Schritt 2, RISING); // auf jeder anderen Stiften, wenn Sie pcinterrupts, verwenden Sie die wenig bietet
} // keinen Vorteil. Die 0 und 1 sind dieselben für alle avr Bretter, wenn die PIN-Nummer selbst unterschiedlich sein
Leere Schleife () {
if (pos1! = dpos1) {// wenn der Schritt ist nicht, wo es sein sollte ...
if (pos1 <dpos1) {// und es muss foward zu gehen ...
stepfwd1 (); // foward zu gehen!
} else {// sonst
stepbck1 (); // rückwärts zu gehen!
}
}

if (pos2! = dpos2) {// das gleiche tun für Schritt 2
if (pos2 <dpos2) {
stepfwd2 ();
} else {
stepbck2 ();
}
}
delayMicroseconds (3); // warten, ein wenig
}

Leere step1 () {// wenn die "Stufe" Pin für Schritt 1 wurde hoch gebracht
if (digitalRead (in1) == LOW) {// und die "Richtung" Pin niedrig
dpos1 ++; // sagen, die Schleife zu foward Schritt 1
} else {// otherwire
dpos1 - // Schritt zurück 1
}
}

Leere step2 () {// selben für Schritt 2
if (digitalRead (in2) == LOW) {
dpos2 ++;
} else {
dpos2--;
}
}

Leere stepfwd1 () {// wenn Schritt 1 muss gehen foward
stepp1 ++; // voran die Schrittfolge 1
pos1 ++; // erhöhen die wahrgenommene Position 1
if (stepp1> 11) {// wenn es eine volle Schritt beendet dann
stepp1 = 0; // zurücksetzen zu Beginn der Schrittfolge
}
out (); // digital alle Stifte, die es brauchen.
}
Leere stepfwd2 () {// selben für Schritt 2
stepp2 ++;
pos2 ++;
if (stepp2> 11) {// wenn es eine volle Schritt beendet dann
stepp2 = 0; // zurücksetzen zu Beginn der Schrittfolge
}
out ();
}

Leere stepbck1 () {// wenn es braucht, um zurück zu gehen
stepp1 - // verschieben Sie die Schrittfolge wieder ein
pos1 - // verschieben Sie die wahrgenommene Position wieder ein
if (stepp1> 12) {// wenn es eine volle Schritt beendet dann
stepp1 = 11; // es an den Anfang der Schrittfolge zurückgesetzt
}
out ();
}

Leere stepbck2 () {// selben für Schritt 2
stepp2--;
pos2--;
if (stepp2> 12) {// wenn es eine volle Schritt beendet dann
stepp2 = 11; // es an den Anfang der Schrittfolge zurückgesetzt
}
out ();
}

nichtig heraus () {
if (stepp1> 11) {// Diese halten die "Stepp" Byte vom Ausgehen des Daten
stepp1 = 0; // in den Schritt Listen.
}
if (stepp2> 11) {
stepp2 = 0;
}
digital (I011, STP10 [stepp1]); // schreibt die Werte jeder Liste auf seinem Stift.
digital (I111, stp11 [stepp1]);
digital (DR11, stpd1 [stepp1]);
digital (I021, stp20 [stepp1]);
digital (I121, STP21 [stepp1]);
digital (DR21, stpd2 [stepp1]);
digital (I012, STP10 [stepp2]);
digital (I112, stp11 [stepp2]);
digital (DR12, stpd1 [stepp2]);
digital (I022, stp20 [stepp2]);
digital (I122, STP21 [stepp2]);
digital (DR22, stpd2 [stepp2]);
} Schritt 5: Abschließende Verdrahtung. Endlich.

$ 4,5 besseren Schrittmotorsteuerung

$ 4,5 besseren Schrittmotorsteuerung

$ 4,5 besseren Schrittmotorsteuerung

$ 4,5 besseren Schrittmotorsteuerung

Wir sind fast fertig. Der letzte Schritt ist nur die Verbindung ein paar Stifte und testen. Going durch die inklusive Pinout, befestigen Sie die beiden Motortreiber, die Sie zuvor mit dem ATtiny gemacht. Das I0, I1 und DIR auf jedem Prüfungsmotortreiber den Stift. Die erste Ziffer nach die angibt, welche Hälfte des Fahrers, um es zu verbinden ist, zeigt die Sekunden, die Treiber. Die Stief # und # Dir-Pins sind die Eingänge. Sobald die Drähte sind alle miteinander verbunden, würde ich ein paar LEDs auf 2k2 Widerstände in den auf einigen Stifte geschliffen (alle Stifte geben Ihnen Feedback, obwohl die Schritt- und Richtungsstifte sind besonders nützlich). Verbinden Sie dann eine Steuerung (Ich habe einen UNO mit GRBL) an die vier Eingänge, (stellen Sie sicher, um die Gründe zu verbinden!) Und starten Sie einige süße, stille, einfache Schrittschritt. Wenn die Motoren vibrieren, aber nicht Schritt, überprüfen Sie für lose Verbindungen, und stellen Sie sicher, dass die Treiber in die richtigen ATtiny Pins verbunden.

Wenn er (irgendwie) korrekt funktioniert, wenn breadboarded, dann übertragen Sie alles, um PC-Platine, und schließen Sie sie (ich habe einen alten Lautsprecher-Gehäuse). Testen Sie es noch einmal, und wenn es alle Kontrollen, herzlichen Glückwunsch! Du bist fertig.

Dies ist nicht eine extrem schnelle, genaue und leistungsstarke Schrittmotor-Treiber, aber es ist ein wichtiger Schritt von Verwendung von Zählern und Decodern. Es verfügt über 1 / 3rd Mikro, die zwar eine ungewöhnliche Zahl, (die meisten sind ein Vielfaches von 2) gibt immer noch ziemlich gute performace. Ich habe es bekommen, um eine NEMA23 Motor bei so hoch wie 8300 Schritten pro Sekunde durch. Man beachte, dass höhere Drehzahlen erfordern Beschleunigung von der Steuerung, wird die ATtiny nicht langsam beschleunigen die Motoren sich. Solange es mindestens 750mA zu nehmen, kann dies bei den meisten Motoren sehr schnell fahren, da jede Spannung bis 40 V kann ohne Überschreiten der Nennstrom eingesetzt werden. Die Versorgungsspannung sollte in der Lage, mindestens 1.5A RMS handhaben sein, und sollte größer als 10V sein.