Es hat sich gewendet, aber fühlt es sich nicht ein bisschen falsch an? Zu langsam? Keine Sorge, wir machen weiter. Gemäß dem am Ende dieses Kapitels erläuterten Prinzip benötigt der Schrittmotor im Achttaktmodus 64 Rhythmen, um sich einmal zu drehen. In unserem Programm dauert jeder Rhythmus 2 ms, eine Umdrehung sollte also 128 ms dauern, also 1 Sekunde . Es gibt mehr als 7 Umdrehungen, aber warum sieht es so aus, als ob eine Umdrehung mehr als 7 Sekunden dauert?
Es ist also an der Zeit, das Konzept der „Beschleunigung“ im „Permanentmagnet-Beschleunigungsschrittmotor“ zu verstehen. Abbildung 9-7 ist ein Demontagediagramm dieses 28BYJ-48-Schrittmotors. Wie Sie auf dem Bild sehen können, ist das weiße Ritzel in der Mitte der Rotoreingang des Schrittmotors. Die 64 Rhythmen sorgen dafür, dass sich dieses Ritzel dreht Kreis, und dann treibt es das große hellblaue Zahnrad an. Dies ist die erste Beschleunigungsstufe. Schauen wir uns die Struktur des roten Zahnrads oben rechts an. Mit Ausnahme des Motorrotors und der letzten Eingangswelle können die drei Getrieberäder eine solche Struktur haben, die aus einer Schicht aus mehreren Zähnen und einer Schicht aus kleinen Zähnen besteht , und jeder Gang verwendet seine eigene. Die kleine Zahnschicht des nächsten Gangs treibt die Vielzahnschicht des nächsten Gangs an. Auf diese Weise bilden alle zwei Gänge eine Beschleunigungsstufe, und es gibt insgesamt 4 Beschleunigungsstufen. Wie groß ist also das Gesamtbeschleunigungsverhältnis? Das heißt, wie viele Umdrehungen dauert es, bis sich der Rotor dreht, bevor sich die Eingangswelle einmal dreht?
Abbildung 9-7 Darstellung des Schrittmotor-Außenzahnrads
Schauen Sie sich noch einmal das Beschleunigungsverhältnis in der Motorparametertabelle an Parameter - 1:64, der Rotor dreht sich 64 Mal und die Eingangswelle dreht sich schließlich einmal. Das heißt, es dauert 64 * 64 = 4096 Rhythmen, bis sich die Eingangswelle einmal dreht, 2 ms * 4096 = 8192 ms, und es dauert mehr als 8 Sekunden, um eine Runde zu drehen, stimmt das mit den experimentellen Ergebnissen gerade überein? 4096 Rhythmen drehen sich in einem Kreis, also beträgt der Winkel einer Rhythmusdrehung – der Schrittwinkel – 360/4096. Schauen Sie sich den Schrittwinkelparameter 5,625/64 in der Tabelle an, und Sie werden wissen, dass diese beiden Werte sind gleich. Alles hat geklickt.
Das grundlegende Verständnis der Prinzipien sollte hier abgeschlossen sein. Wir hoffen jedoch, dass jeder die Denkweise entwickeln kann, dass „Praxis das einzige Kriterium für die Prüfung der Wahrheit ist“! Erinnern Sie sich: Was ist das größte Merkmal von Schrittmotoren? Erfassen Sie das Migrationsvolumen genau! Sollten wir also testen, ob es korrekt ist? Wie genau ist es? Wie übt man? Drehen Sie es um 90 Grad und messen Sie, ob es verboten ist? Das ist in Ordnung, aber wenn es nur um 1 Grad oder sogar weniger als 1 Grad abweicht, können Sie es dann genau messen? Ohne hochentwickelte Instrumente ist es schwierig. Lassen wir es noch ein paar volle Kreise drehen, um zu sehen, ob die Position, an der es schließlich angehalten hat, immer noch nicht die ursprüngliche Position ist. Dementsprechend modifizieren wir das Programm, um die Steuerung des Motors mit beliebig vielen Umdrehungen zu ermöglichen.
#include <reg52.h> void TurnMotor(unsigned long angle); void main(){ TurnMotor(360*25); //360 度*25,即 25 圈 while (1); } /* 软件延时函数,延时约 2ms */ void delay(){ unsigned int i = 200; while (i--); } /* 步进电机迁移转变函数,angle-需转过的角度 */ void TurnMotor(unsigned long angle){ unsigned char tmp; //暂时变量 unsigned char index = 0; //节奏输入索引 unsigned long beats = 0; //所需节奏总数 //步进电机节奏对应的 IO 掌握代码 unsigned char code BeatCode[8] = { 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6 }; //盘算需求的节奏总数,4096 拍对应一圈 beats = (angle*4096) / 360; //判别 beats 不为 0 时履行轮回,然后自减 1 while (beats--){ tmp = P1; //用 tmp 把 P1 口以后值暂存 tmp = tmp & 0xF0; //用&操作清零低 4 位 tmp = tmp | BeatCode[index]; //用|操作把节奏代码写到低 4 位 P1 = tmp; //把低 4 位的节奏代码和高 4 位的原值送回 P1 index++; //节奏输入索引递增 index = index & 0x07; //用&操作完成到 8 归零 delay(); //延时 2ms,即 2ms 履行一拍 } P1 = P1 | 0x0F; //封闭电机一切的相 }
Im obigen Programm haben wir zunächst eine Funktion geschrieben, die den Motor so steuert, dass er sich um einen bestimmten Winkel dreht. Dieser Winkelwert wird durch den Methodenparameter der Funktion angegeben und kann dann einfach aufgerufen werden Durch Ändern in der Hauptfunktion können die tatsächlichen Parameter jederzeit zur Steuerung der Motordrehung in einem beliebigen Winkel verwendet werden. Wir haben 360*25 verwendet, also 25 Kreise. Natürlich können Sie es auch in andere Werte ändern, um zu sehen, welche Konsequenzen es hat. Unser Programm wird 25 * 8 = 200 Sekunden lang ausgeführt. Notieren Sie sich zunächst die Ausgangsposition der Eingangswelle, schalten Sie es dann ein und warten Sie geduldig, bis der Vorgang abgeschlossen ist. Was ist los? Was ist los? Ist es nicht möglich, das Übertragungsvolumen genau zu steuern?
Dieses Problem ist tatsächlich auf das Beschleunigungsverhältnis zurückzuführen. Das vom Hersteller angegebene Beschleunigungsverhältnis beträgt 1:64, solange das Modell 28BYJ-48 ist nominal Das Beschleunigungsverhältnis beträgt maximal 1:64. Aber wie sieht es in der Praxis aus? Durch unsere Demontageberechnungen haben wir herausgefunden, dass das tatsächliche und genaue Beschleunigungsverhältnis nicht dieser Wert von 1:64, sondern 1:63,684 beträgt! Die Methode zum Erhalten dieser Daten ist ebenfalls sehr kompliziert. Zählen Sie einfach die Anzahl der Zähne jedes Zahnrads und multiplizieren Sie dann die Beschleunigungsverhältnisse auf jeder Ebene, um das Ergebnis zu erhalten. Das gemessene Beschleunigungsverhältnis beträgt (32/9)*(22/11). *(26/9)*(31/10)≈63,684, der tatsächliche Fehler beträgt also 0,0049, was etwa 0,5 % entspricht. Wenn Sie 100 Mal drehen, ist es eine halbe Umdrehung Es ist nur ein Achtel einer Drehung, also 45 Grad. Mal sehen, ob der Fehler 45 Grad beträgt. Aus dem tatsächlichen Beschleunigungsverhältnis von 1:63,684 lässt sich dann schließen, dass die Anzahl der Rhythmen, die für eine Umdrehung erforderlich sind, 64*63,684≈4076 beträgt. Ändern Sie dann 4096 in der Motorantriebsfunktion im Programm unten auf 4076 und versuchen Sie es erneut. Erkennen Sie nicht den kleinsten Fehler? Tatsächlich gibt es jedoch immer noch Fehler, da die folgenden Berechnungsergebnisse größtenteils ungefähr sind. Der tatsächliche Fehler beträgt etwa 0,000056, was 0,56 Zehntausendstel entspricht. Es sind nur 10.000 Umdrehungen erforderlich, um einen Unterschied von einer halben Umdrehung zu erzielen .
Warum sind die Parameter des Herstellers fehlerhaft? Wissen die Hersteller es nicht? Um dieses Problem zu erklären, müssen wir auf die praktische Verwendung zurückkommen. Der häufigste Zweck eines Schrittmotors besteht darin, das Ziel so zu steuern, dass es sich um einen bestimmten Winkel dreht, normalerweise innerhalb von 360 Grad Verwendung Um die Lüfterflügel der Klimaanlage zu steuern, überschreitet der Bewegungsbereich der Lüfterflügel 180 Grad nicht. Daher gibt der Hersteller in diesem Anwendungsfall ein ungefähres ganzzahliges Beschleunigungsverhältnis von 1:64 an, was genau genug und angemessen ist. . Allerdings müssen wir es, genau wie unser Programm, nicht unbedingt zum Antreiben der Lüfterflügel der Klimaanlage verwenden. Zu diesem Zeitpunkt sind genauere Daten erforderlich, was wir hoffen Die Schüler werden das tun, was jeder verstehen und beherrschen kann, das heißt, wir müssen in der Lage sein, das System selbst zu „entwerfen“ und die darin gefundenen Probleme zu lösen, und dürfen uns nicht durch sogenannte „vorgefertigte Lösungen“ einschränken lassen. .
Das obige ist der detaillierte Inhalt vonSo erreichen Sie die Übertragungsgenauigkeit und eine detaillierte Analyse des Schrittmotors 28BYJ-48. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!