Archiv verlassen und diese Seite im Standarddesign anzeigen : ASURO: kleine Aufgabe - ganz langsam fahren
Hallo Miteinander,
hier eine kleine herausfordernde Aufgabe:
Wer schaft es, den ASURO ganz langsam ( 1cm/sec ) gleichmässig fahren zu lassen?
Warnung ! Das ist schwieriger als man denkt.
Gruss,
stochri
Für das Thema elektronisches Differenzial oder den Unterpunkt virtueller Schrittmotor interessiere ich mich auch für die langsame kontrollierte Fahrt. https://www.roboternetz.de/phpBB2/viewtopic.php?t=11135
Man wird wohl nicht nur die Spannung einstellen, sondern PID-Verhalten einbringen müssen. Hierfür braucht man dann wohl auch eine Zeitkonstante des Fahrzeugs mit seinem Anfahrverhalten.
Manfred
Interessante Aufgabe!
Ich bin sowieso gerade dabei die Trägheit bzw. Trägheitsmoment vom Asuro auszumessen um dann mit Regelschleifen zu experimentieren.
Ob so eine langsame Fahrt sinnvoll geregelt werden kann, weiss ich noch nicht. Das Problem ist das ebenfalls langsame Encodersignal. Bei 1cm/sec kommt nur alle 0.3sec ein Signal vom Encoder.
Waste
Zu den ASURO Daten habe ich gerade noch einmal das Gewicht unter (Trägheitsmoment des ASURO) nachgesehen, 126g ohne Räder. https://www.roboternetz.de/phpBB2/viewtopic.php?t=11135
Mit Rädern doch noch mal gemessen 162g. Im Buch mehr Spass mit ASURO ist er mit 170g angegeben.
Die Untersetzung ist 1:25 der Radumfang 122mm.
Mit den weiteren Angaben aus dem Buch mit Reibungskoeffizient Ball 0,3 und Haftung der Reifen 0,7 und einer Gewichtsverteilung von 65% auf den Hinterrädern hätte man ja mit dem Motordiagramm bald schon einen groben Datensatz zusammen. https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=101059#101059
Es gibt natürlich auch individuelle Varianten, so hat ja Storchies ASURO die Batterien nach hinten verlagert.
Eine Alternative ist natürlich das Ausprobieren der Parameter dazu wäre es günstig die Parameter ohne Programmänderng einstellbar zu machen. Hat das eigentlich schon jemand gemacht?
Manfred
Hallo Miteinander,
es freut mich, dass Ihr euch für das Thema interesiert.
Bei meinen praktischen Versuchen hat sich gezeigt, dass die Motoren erst ab einer bestimmten PWM-Einstellung zu laufen beginnen ( bei mir so ca. 100).
Wie es scheint, muss zuerst das Haftreibungsmoment überwunden werden, damit die Motoren überhaupt los laufen.
Und da genau liegt die Schwierigkeit: Bei der von mir genannte Geschwindigkeit von 1cm/sec liegt die PWM-Leistungseinstellung vermutlich unter der zur Überwindung der Haftreibung notwendigen Leistung. Eine Regelung unterhalb dieser Leistung ist vermutlich einigermassen schwierig zu realisieren, wie alle Regelungen bei Systemen mit stark sprunghaftem Verhalten.
Es gibt natürlich auch individuelle Varianten, so hat ja Storchies ASURO die Batterien nach hinten verlagert.
Hierzu eine kleine Anmerkung:
Die Kabelbinder zur Befestigung der Baterien haben mich gestört, deshalb hab ich das ganze durch einen Klettverschluss ersetzt. Damit muss man nicht jedesmal beim Batteriewechsel einen Kablebinder opfern und ist flexibler mit der Position der Batterien.
Durch das minimale Gewicht meines ISP-Aufsatzes neigte der ASURO bei der Fahrt zum Schwingen, deshalb musste ich die Batterien nach hinten verlagern.
Viele Grüße,
stochrie
@Manfred
Ich hab die grösseren Akkus (Mignon) drin, komm damit auf 240g Gesamtgewicht des Asuros.
Steht in dem Buch auch was zum Trägheitsmoment des Motors, das darf man nämlich nicht vergessen. Ich komm da auf das Gewicht umgerechnet ca. 150g pro Motor. Allerdings habe ich da noch eine Diskrepanz zwischen 2 verschiedenen Messungen. Muss das erst noch klären.
Waste
@Storchi
Vielen Dank für die Hinweise, dann weisst Du ja schon wie schwierig es wird. Zu den Daten würde noch passen, wie schnell der ASURO mit dem Anfahr-PWM Wert (von 100) fährt. Kannst Du das abschätzen oder messen?
@Waste
Im Buch steht nichts über das dynamische Fahrverhalten.
Du hast aber früher schon einmal von der Bestimmung des Momentes über die Überwindung des Trägheitsmomentes erzählt.
Kannst Du ein paar Hinweise geben was Du hier misst?
Die Anfahrkurve des Stroms?
Manfred
@Manfred
Die drehenden Teile im Motor (Anker) haben ein Trägheitsmoment, das nicht zu vernachlässigen ist. Beim Asuro ist es z.B. grösser als durch das Gewicht verursacht. Ich habe es folgendermassen gemessen:
Einen konstanten Strom in den Motor eingespeist und anhand der Spannung die Beschleunigung bestimmt. Aus meinem Excelsheet das Drehmoment abgelesen und daraus das Trägheitsmoment berechnet. Zur Gegenprobe habe ich auch noch das Abbremsen durch die Eigenreibung gemessen und daraus das Trägheitsmoment berechnet. Ich bin auf ein Trägheitsmoment von 85*E-9 Nms² gekommen.
Über die Übersetzung wirkt sich das als zusätzliches Gewicht beim Beschleunigen aus. Umgerechnet ergibt das 150g pro Motor, also insgesamt zusätzliche 300g. Das ist mehr als das Gewicht.
Waste
Hier die geforderte Messung.
Ganz zufrieden bin ich damit nicht, weil ich dachte, ich kann die Stoppuhr nicht so genau bedienen. Aber siehe da, es gibt trotzdem Geraden.
Was macht man sich nicht für eine Arbeit für dieses Forum ....
Hier die geforderte Messung.
Abschätzen oder messen habe ich gesagt, dass jetzt Messungen Olympischer Qualität vorliegen war nicht verlangt (aber gut für spätere Auswertungen).
Ich habe auch manchmal gerne Reserven bei der Auflösung, und habe mal eine Bewegung gefilmt und konnt sie später mit einem Videoschnittprogramm auf 40ms auswerten.
Nur als Anregung zur Automatisierung mit Hausmitteln.
Manfred
Hier noch mal eine etwas genauere Messung.
Diese mal mit Messprogramm, damit man auch den eigenen Asuro mal vermessen kann.
Einen konstanten Strom in den Motor eingespeist und anhand der Spannung die Beschleunigung bestimmt. Aus meinem Excelsheet das Drehmoment abgelesen und daraus das Trägheitsmoment berechnet. Zur Gegenprobe habe ich auch noch das Abbremsen durch die Eigenreibung gemessen und daraus das Trägheitsmoment berechnet. Ich bin auf ein Trägheitsmoment von 85*E-9 Nms² gekommen.
Wie hast Du die Werte aufgenommen?
Motor mit Getriebe und Rad?
Mit Oszilloskop?
Anfangssteigung der Spannung oder Zeitkonstante oder curve fitting?
Ich bin eigentlich nicht neugierig, ich will halt nur alles wissen.
Manfred
Ich hab jetzt einige Messungen zur Odometrie gemacht und bin zu dem Schluss gekommen, dass man nur die gleichen Übergänge von hell auf dunkel oder umgekehrt nehmen darf. Die Dauer von hell ist unterschiedlich zu der von dunkel und auch noch abhängig vom Umgebungslicht. Das erschwert die Sache noch zusätzlich, da die Abtastrate jetzt 0.6sec ist. Eine kontinuierliche Geschwindigkeitsregelung wird da schwierig wenn nicht unmöglich sein. Ich werde jetzt einen anderen Weg mit schrittweiser Fortbewegung verfolgen.
Zusätzlich habe ich bei den Messungen eine im Takt der Reflexscheibe schwankende Geschwindigkeit festgestellt. Eine genauere Untersuchung zeigte, dass die Reflexscheibe nicht zentrisch ist, dadurch ergibt sich die schwankende Geschwindigkeit bei der Odometrie. Siehe auch das Bild der Geschwindigkeitsmessung. Deutlich zu sehen: eine Schwingung dauert 8 Messungen und das entspricht einem Umlauf der Reflexscheibe.
Das muss ich auch noch erst verbessern.
Waste
Hier noch mal eine etwas genauere Messung.
Diese mal mit Messprogramm, damit man auch den eigenen Asuro mal vermessen kann.
Vielen Dank für die weitere Messung.
Ein Frage zu den Angaben: früher hieß es Teppich und glatter Boden. Low friction ist glatter Boden?
Wie ist es zu erklären, dass bei der höheren Geschwindigkeit bei gleichem PWM Wert der Sprung beim Anfahren vorhanden ist?, Haftreibung auf glattem Boden? Kollektor-Stellung des Motors.
"low friction" fährt langsamer?
Manfred
@Manfred
Bezüglich Messung des Trägheitsmoment vom Motor
Wie hast Du die Werte aufgenommen?
Motor mit Getriebe und Rad?
Mit Oszilloskop?
Die Spannung habe ich mit dem Oszi gemessen. Bei konstantem Strom ergibt das eine stetig steigende Spannung. Die Steigung der Spannung ist ein Mass für die Winkelbeschleunigung.
Ich habe sowohl den Motor alleine als auch mit Getriebe und Rad gemessen. Da ergeben sich nur sehr geringe Unterschied, das Hauptträgheitsmoment hat der Motor allein.
Waste
@Waste
sehr schöne Messung. Stammen die Messwerte vom Atmega selbst, oder hast du extern gemessen ?
Geschwindigkeitsregelung wird da schwierig wenn nicht unmöglich sein. Ich werde jetzt einen anderen Weg mit schrittweiser Fortbewegung verfolgen.
Das halte ich auch für den richtigen Weg. Ich glaube nicht, dass es notwendig ist, bei jedem Encoder-Tic regeln. Die Bewegung des Asuro kann mit Sicherheit ohne zu regeln über eine Sekunde stabil gehalten werden.
stochri
@Manf
Ja so ist es halt: was nützt eine Messung genaue Beschreibung des Messvorgangs ?
Ein Frage zu den Angaben: früher hieß es Teppich und glatter Boden. Low friction ist glatter Boden?
ramp down = Lererlaufgeschwindigkeit bei Schrittweiser Verkleinerung des PWM-Wertes
ramp up = Lererlaufgeschwindigkeit bei Schrittweiser Erhöhung des PWM-Wertes
Low Frichtion = Geschwindigkeit auf glattem Boden bei Schrittweiser Erhöhung der Geschwindigkeit
Leerlaufmessung: ohne Bodenberührung der Räder .
In dem Diagramm kann man sehr schön den Punkt der Überwindung der Haftreibung des ASURO-Getriebes und Motor erkennen. Wird die Motorgeschwindikeit von scnell nach langsam verändert ist die minimal erreichbare Geschwindigkeit wie zu erwarten niedriger.
stochri
Ja, danke, das war es, Leerlaufgeschwindigkeit bei der blauen Kurve, jetzt ist es mir klar. Das andere ist dann mit low friction.
Manfred
@stochri
Stammen die Messwerte vom Atmega selbst, oder hast du extern gemessen ?
Die Messwerte wurden vom Atmega während der Fahrt aufgenommen und gespeichert. Danach auf Anfrage(Tastendruck) ausgelesen. Dann vom Hyperterminal nach Excel kopiert und das Diagramm erstellt.
Waste
So, ich hab jetzt den Asuro dazu gebracht, sich mit der Geschwindigkeit von 1cm/sec zu bewegen. Eine Fahrt kann man es aber nicht wirklich nennen, es ist mehr ein Gehoppel. Aber er bewegt sich exakt mit 1cm/sec, sowohl auf Teppich als auch auf glattem Untergrund. Das Testprogramm ist angehängt.
Das Prinzip ist, dass er sich alle 0.3sec um 3mm fort bewegt. Die 3mm entsprechen einem Encoder-Tick. Damit er die Haftreibung auch bei schwerem Gelände überwindet, ist eine PWM von 120 eingestellt. Dadurch bewegt er sich ruckartig. Mit dem PWM-Wert kann man noch variieren, aber zu klein darf er nicht werden, sonst läuft er nicht an und zu gross auch nicht, sonst macht er gleich 2 Ticks auf einmal.
Mit dem Testprogramm kann man per Tastendruck die Geschwindigkeit von 0.2cm/sec bis 5cm/sec verändern. Siehe dazu den Sourcecode.
Waste
/************************************************** *****************************
*
* Description: Schleichfahrt
*
************************************************** ***************************/
#include "asuro.h"
#include <stdlib.h>
int main(void)
{
unsigned char flagl, flagr, links, rechts, weiter, sw;
unsigned int data[2], dt;
unsigned long zeit;
Init();
MotorDir(BREAK,BREAK);
MotorSpeed(120,120);
OdometrieData(data);
OdometrieData(data);
if (data[0] > 600) flagl = TRUE; // Flag setzen
else flagl = FALSE;
if (data[1] > 600) flagr = TRUE; // Flag setzen
else flagr = FALSE;
dt=300;
zeit=Gettime();
zeit += dt;
while(1){
if (Gettime() > zeit){
links = FWD; rechts = FWD;
MotorDir(FWD,FWD);
weiter = 1;
while(weiter){ // fahre einen Schritt
OdometrieData(data); // messe Odometrie
if ((data[0] < 550) && (flagl == TRUE)) {flagl = FALSE; links = BREAK;}
if ((data[0] > 650) && (flagl == FALSE)) {flagl = TRUE; links = BREAK;}
if ((data[1] < 550) && (flagr == TRUE)) {flagr = FALSE; rechts = BREAK;}
if ((data[1] > 650) && (flagr == FALSE)) {flagr = TRUE; rechts = BREAK;}
MotorDir(links,rechts);
if ((links == BREAK) && (rechts == BREAK)) weiter = 0;
}
zeit += dt;
}
sw = PollSwitch();
if (sw & 0x01)
dt = 60; //5cm/sec
if (sw & 0x02)
dt = 100; //3cm/sec
if (sw & 0x04)
dt = 150; //2cm/sec
if (sw & 0x08)
dt = 300; //1cm/sec
if (sw & 0x10)
dt = 600; //0.5cm/sec
if (sw & 0x20)
dt = 1500; //0.2cm/sec
}
while(1);
return 0;
}
Hallo Waste,
ich habe Dein Programm gerade ausprobiert. Lustig wie der Asuro fährt. Er tickert ein bischen wie ein Uhrwerk. Bei meinem Asuro musste ich allerdings den PWM-Wert auf 140 setzen, sonst ist er stecken geblieben. Nach meinem gemessenen PWM-Diagramm sollte das eigentlich nicht so sein, war aber trotzdem so.
Die Grundlage Deines Programms ist also:
Für einen Tic darf ich 300ms brauchen, dann bewegt sich der Asuro mit 1cm/s.
Beim der 6-fach Kodierscheibe enspricht ein Tic einem Radweg von ca. 2mm ( ich hoffe das stimmt )
2mm/300ms=0,67cn/sec oder hast Du die 8fach Kodierscheibe verwendet ?
Viele Grüße,
stochri
Allgemein zum Thema:
Bei meinen Messungen schien es mir, als wenn die Überwindung der Haftreibung hauptsächlich innerhalb des Motors notwendig ist.
Daher müsste es doch eigentlich möglich sein mit einem hohen, aber sehr kurzen hohen Motorleistung diese Reibung zu überwinden und dann mit der Gleitreibungsleistung weiterzufahren. Dann sollte eigentlich auch eine ruhige langsame Fahrt möglich sein.
Was haltet Ihr davon ?
Gruss,
stochri
Hallo stochri,
wenn du die 6-fach Kodierscheibe verwendest, dann dt auf 200 setzen damit er 1cm/sec fährt. Alle anderen dt-Zeiten auch um den gleichen Faktor runter setzen.
Mit einem Tick bewegt er sich dann genau 2mm weit. Kommen die Ticks alle 200ms, dann kommt der Asuro in einer Sekunde gerade 1cm voran.
Waste
@stochri
Es stimmt, die Reibung wird hauptsächlich vom Motor verursacht, das habe ich auch festgestellt. Nur die Reibung ist so hoch, dass er nicht sehr weit ausrollen wird. Ich habe es mal überschlagen bei 1cm/sec wird er gerade mal ca. 14ms lang ausrollen, das sind dann nicht mal 0.1mm. Das kommt mir jetzt auch sehr wenig vor, kommt aber raus, ich hab's nochmal nachgerechnet.
Man könnte noch versuchen kürze Pulse aber dafür öfters zu verwenden.
Gruss Waste
Ich habe mir mal die Unregelmäßigkeit des Motors selbst angesehen. Dazu wurde der Motor mit 2Ups bewegt, also etwa der Geschwindigkeit bei 1cm/s und dabei wurde die induzierte Spannung aufgenommen.
Im ersten Versuch mit einer Kupplung über ein Stück Silikonschlauch war nicht nur die unterschiedliche Induktion pro Winkel zu sehen, sondern auch die Wirkung des Rastmomentes. Dabei ergaben sich deutliche Lücken zwischen den induzierten Impulsen.
Um es objektiver und von der Kupplung unabhängig zu machen habe ich dann einen elektrischen Schraubenzieher hart angekoppelt.
Dabei ergab sich das Bild mit einer induzierten Spannung von 80mV und einer Welligkeit von etwa 30mV. Das Bild zeigt eine Umdrehung.
Wenn der Motor später mit 70mA betrieben wird, dann fällt am Widerstand der Spule (18Ohm) 1,26V ab. Das sind wie bekannt keine guten Voraussetzungen für eine stabile Drehzahl.
Mal sehen was noch geht, viellicht sollte man später auch eine gleichmäßige Fahrt bei 3cm/s ins Auge fassen. Ich bin noch an überlegen und habe leider noch nicht so schöne Ergebnisse.
Manfred
Wenn man mit der Hand an der Achse der Motoren dreht, kann man die Rastpunkte der Motoren erfühlen. Allerdings fühlen sich die Rastpunkte auch unterschiedlich kräftig an, das könnte auch ein Indiz für die Ungleichmässigkeit des Oszilloskopbildes sein.
Bei einer Umdrehung hat der Motor 12 Rastpunkte. Der Motor ist also so etwas wie ein selbskommutierter Schrittmotor.
Für eine Radumdrehung ergeben sich 12*25=300 Rastpunke, bei einem Raddurchmesser von ca.40mm ergibt sich also eine Auflösung von 40mm/300=0.13mm. Das ist interessanterweise ein ähnlicher Wert wie die oben berechnete Ausrollweite ( hat aber bestimmt nichts miteinander zu tun ).
Gruss,
stochri
Der Motor sieht innen sicher wie die einfachste Ausführung für solche Anwendungen aus, mit 3-fachT Anker und zwei Feldpolen. Das führt zu 6 Induktionsänderungen pro Umdrehung, die möchlichst gut verteilt sein sollen.
Mir ging es einerseits um die Welligkeit und die tiefsten Werte und andererseits um die Höhe der induzierten Spannung überhaupt.
Nebenbei ist es ja ein recht niedriger Wirkungsgrad, wenn die induzierte Spannung mal dem Strom die Abgabeleistung ist und der Spannungsabfall mal dem Strom in etwa der Verlust. Aber darum geht es hier ja nicht. Man kann dann durch Pulsbetrieb den Wirkungsgrad wohl eher erhöhen. Für das Fahrverhalten ist der Pulsbetrieb mir seinem klappernden Getriebe eher unangenehm.
Manfred
http://www.physik.uni-muenchen.de/leifiphysik/web_ph10/zusatzaufgaben/09_kraft_auf_leiter/3fach_anker/image1189.gif
Heiho! Ich hab mir mal ein paar Gedanken zur "stabilen" Drehzahl gemacht. Wenn man den Motor inkrementell aus- und einschalten würde, in einem genügend langen Takt (damit der Motor auch wirklich in der Zeit anlaufen und wiederum abschalten kann), kann man diesen Effekt ja zumindest mal simulieren (wenn auch eeetwas ruckartig).
Hier mal mein kleines Proggi dazu (OHNE Odometrie - die Motoren werden lediglich für bestimmte Zeitintervalle an und abgeschaltet). Die vorderen Switches bestimmen, wie lange der Motor an bleibt (ab ca. dem 4. Switch fängt er an, sich "vernünftig" zu bewegen - wenn man das so bezeichnen kann). Wäre das hier in das Proggi von waste implementiert ne Lösung?
PS: Sehr grobes Proggi, ist sicher noch verbesserungsfähig (bin ja noch Newbie :) ).
#include "asuro.h"
#include <stdlib.h>
int main(void)
{
unsigned char sw;
unsigned int dt, i;
Init();
MotorDir(FWD,FWD);
dt=1;
while(1){
MotorSpeed(150,150);
for(i=0;i<10;i++){
Sleep(dt);
}
MotorSpeed(0,0);
for(i=0;i<10;i++){
Sleep(255);
}
sw = PollSwitch();
if (sw & 0x01)
dt = 8;
if (sw & 0x02)
dt = 16;
if (sw & 0x04)
dt = 32;
if (sw & 0x08)
dt = 64;
if (sw & 0x10)
dt = 128;
if (sw & 0x20)
dt = 255;
}
while(1);
return 0;
}
@Manf
Was mich ein wenig wundert:
1. Dreht man den Motor mit der Hand, kann man feststellen, dass er in 12 Positionen/ Umdrehung eine Ruhepostion finden kann
2. Nach Deinen Messungen erhält man 6 Schwingungen der Induktionsspannung/ Umdrehung.
@Alle
Hier ein Vorschalg zu Motorsteuerung:
1. Man gibt einen Spannungspuls an den Motor, der ausreicht um einen Rastpunkt zu überspringen
2. man bremst den Motor nach dem Impuls ( zur Not mit Spannung umgekehrter Polarität, damit er den nächsten Rastpunkt nicht überspringen kann.
Damit sollte es möglich sein, den Motor als Schrittmotor zu benutzen.
Der Motor sollte dann etwas ruhiger als beim Programm von Waste laufen, dort muss der Motor 10 Rastpunkte überspringen und dann eine längere Ruhepause einhalten.
Gruss,
stochri
-das war leider ein Doppelpost-
pebisoft
11.08.2005, 19:11
die reibung am asuro ist am stärksten an den nicht gelagerten rädern auf der achse, es tritt hier eine verkantung auf, die ja nach v0 auftritt. weiterhin nehmen die schlecht verarbeiteten zahnräder (das modul ist ungenau) eine grosse reibung auf. die sogenannte anpressung des motorzahnrades an dem abtriebszahnrad tut hier auch noch einmal etwas dazu.
man sollte auch etwas teuere motoren einbauen. diese billigdinger verfälschen auch noch die antriebswerte.
mfg pebisoft
Das passt auch gerade zum Thema:
Ich habe mal die Motoren zum Test über Kabel direkt an ein Labornetzteil angeschlossen und bei verschiedenen Spannungen den Strom für die gerade Fahrt auf dem Schreibtisch und auf dem Teppich gemessen. Ich war überrascht, wie sehr die Werte ab 2V bis 4,5V relativ konstant waren, beim Tisch ab 1,2V.
Nach dem Anfahren war der Strom pro Motor
auf dem Tisch 50mA, bei Abgabemoment 60µNm und
auf dem Teppich 65mA, bei Abgabemoment 140µNm.
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=620
Die Motoren waren dabei gut positioniert und die Lager leicht gefettet. Bei 40mA Leerlaufstrom und 50mA Laststrom muss man schon feststellen dass die meiste Leistung als Verlust im Motor hängen bleibt und man leicht einen Motor finden kann der für den halben Strom oder weniger (niedrigstrom Arbeitskraft?) die gleiche Leistung erbringt.
CD Motoren mit 15-20mA Leerlaufstrom haben entsprechende Daten bei niedrigen Beschaffungskosten (Auschlachtung alter Laufwerke) aber es geht erheblich weiter mit kugelgelagerten Glockenankermotoren von Maxon oder Faulhaber. Neu kosten die dann kaum mehr als zwei ASUROs.
Manfred
Der schlechte Wirkungsgrad der Motoren hat aber auch einen Vorteil, wenn man die Motoren regeln will. In einer Regelschleife ist es von Vorteil, wenn die Zeitkonstanten für das Beschleunigen und Abbremsen gleich ist. Leider ist das beim Asuro nicht der Fall. Man kann zwar durch BREAK die Motoren bremsen, aber nicht mit der PWM-Einstellung. Wird beim Asuro von einem hohen PWM-Wert z.B. 255 auf einen kleinen Wert z.B. 0 umgestellt, so rollt der Asuro einfach aus und bremst nur durch die Reibung aber nicht aktiv. Das ist ein Nachteil, da hierbei eine grössere Zeitkonstante auftritt. Ich habe dazu einige Messungen gemacht, siehe Bilder.
1.Bild: Asuro beschleunigt von 0 auf Vollgas
2.Bild: Asuro bremst aktiv mit MotorDir(BREAK,BREAK);
3.Bild: Asuro rollt aus mit MotorSpeed(0,0);
Man sieht deutlich, dass das Ausrollen etwa 3mal länger dauert als das Bremsen. Mit einem besseren Motor wäre der Unterschied sogar noch deutlicher.
Das Bremsen ist durch die zusätzliche Reibung schneller als die Beschleunigung.
Waste
@waste
Sehr anschaulich und praktisch, Deine Messungen. Interessant, dass Dein Asuro die 0.5m/s erreicht, bei meinem liegt die Maximalgeschwindigkeit ca. 10% tiefer ( ich nehm mal an, Du hast die Messungen auf glatter Oberfläche durchgeführt und die Messungen gelten für Deinen 240g ASURO ).
Der schlechte Wirkungsgrad der Motoren hat aber auch einen Vorteil, wenn man die Motoren regeln will. In einer Regelschleife ist es von Vorteil, wenn die Zeitkonstanten für das Beschleunigen und Abbremsen gleich ist. Leider ist das beim Asuro nicht der Fall. Man kann zwar durch BREAK die Motoren bremsen, aber nicht mit der PWM-Einstellung. Wird beim Asuro von einem hohen PWM-Wert z.B. 255 auf einen kleinen Wert z.B. 0 umgestellt, so rollt der Asuro einfach aus und bremst nur durch die Reibung aber nicht aktiv. Das ist ein Nachteil, da hierbei eine grössere Zeitkonstante auftritt. Ich habe dazu einige Messungen gemacht, siehe Bilder.
Die Zeitkonstanten für Beschleunigung und Verzögerung sind in Deinen Diagrammen aber ähnlich ( nicht um 10er Potenzen verschieden ), sollte da ein Regler nicht damit zurecht kommen ?
Die wesentlichen Probleme bei der Regelung beim Langsamfahren sind meiner Meinung nach:
1. Die Motordrehmomente liegen bei langsamer Fahrt unterhalb der Haftreibungskraft, sodass zwischen Beschleunigung und Verzögerung riesige Unterschiede entstehen.
Die Motoren können zwischen den Reglezyklen zeitweise hängen.
2. Die Encoderauflösung bei der 6-fach Scheibe beträgt nur 2mm.
Folgendes habe ich festgestellt:
Die Motoren können bei glattem Untergrund
- in 6 Positionen pro Umdrehung rasten
- notwendige Pulsänge 10ms
Wie wäre es, die 10ms Pulse in eine Regelschleife als 'Entrastung' einzubauen ? Der Motor bewegt sich dann zwar ein wenig ungleichmässig, bleibt aber nicht hängen.
Gruss,
stochri
Hallo stochri,
deine Annahme ist richtig, die Messung wurde auf glattem Untergrund durchgeführt.
Bei den Zeitkonstanten meine ich den Unterschied zwischen Beschleunigen und Ausrollen. Denn in einer Regelung wird der Motor über die PWM beschleunigt und verzögert. Bei der Verzögerung gilt die Zeitkonstante wie in der Messung "Ausrollen" und die ist 500ms, im Gegensatz zur Beschleunigung, wo ich etwa 125ms ablesen kann, also Faktor 4 als Unterschied. Die Zeitkonstante wird durch Anlegen einer Tangente an die Kurve bestimmt.
Es gibt schon Methoden dieses in einer Regelung in den Griff zu bekommen. Einfacher ist es allemal, wenn der Motor auch mit gleicher Zeitkonstante verzögert. Wenn man die Regelung auf Schnelligkeit trimmen will, dann sollte man unbedingt die Ansteuerung elektrisch so umbauen, dass der Motor auch mittels PWM aktiv verzögert.
Das grösste Problem bei der Regelung einer Schleichfahrt sehe ich in der Totzeit der Odometrie. Da hierbei nur alle 0.2s ein Tick kommt, kann die Regelung nicht sehr schnell gemacht werden. Das in Verbindung mit dem Überwinden der Haftreibung bzw. des Rastmoments macht die Sache so schwierig, für mich wenigstens. Aber vielleicht gibt es da auch Lösungen. Im Moment liegt mein Augenmerk auf einer anderen Sache. Die ist ähnlich, scheint mir aber einfacher zu sein. Ich will einen Linienfolger mit einem PD-Regler realisieren. Da ist die Totzeit wesentlich geringer, so ca. 1ms. Vielleicht gibt es dabei Erkenntnisse, die man dann auf die Schleichfahrt umsetzen kann.
Aber vorerst muss ich meinen Asuro wieder reparieren. Der ist mir nämlich vom Tisch gefallen und hat sich ein paar Beulen geholt.
Waste
Was hat der Asuro eigentlich für einen Motortreiber? Sind dort keine Freilaufdioden drin? Weil die müssten den Motor doch eigentlich aktiv bremsen, wenn keine PWM-Signal mehr anliegt, oder?
gn8, ähM_Key
Der Asuro hat eine H-Brücke mit Freilaufdioden. Trotz der Freilaufdioden läuft der Motor beim Zurücknehmen der PWM frei. Die Dioden schützen nur die Schaltung vor den Spannungsspitzen, bremsen aber nicht den Motor. Ob die Freilaufdioden wegen dem Freilauf des Motors so heissen, kann ich aber nicht sagen.
Waste
Der Asuro hat eine H-Brücke mit Freilaufdioden.
Da verlässt man sich einmal auf die Aussagen eines angeblichen ET-Freaks ;)
Der hat nämlich gesagt, dass es sinnlos ist den Motor zum Bremsen z.B. durch ein Relais (praktisch zu aufwändig) kurzzuschließen, weil der den Akku sogar beim bremsen lädt.
...naja
MK
Über die Freilaufdioden wird die relativ geringe Energie abgebaut, die in der Ankerinduktivität gespeichert ist.
Wird der Motor beim Drehen kurzgeschlossen, dann fließt aufgrund der durch die Drehung induzierten Spanung ein Strom und der Motor wird gebremst.
Die Freilaufdioden lassen den Strom bei gesperrten Transistoren aber nur fließen, wenn die induzierte Spannung größer ist als die Versorgungsspannung.
Da die Versorgungsspannung die höchste Spannung ist die den Motor antreibt, wird die durch die Drehung induzierte Spannung nicht größer als die Versorgungsspannung und über die Dioden tritt keine Bremsung ein (außer vielleicht bei extremer bergabfahrt).
Ein Freilauf ist es also also nur für die im Anker gespeicherte Feldenergie, daher der Name. Danach werden die Dioden nicht mehr leitend und es tritt kein Energieaustausch über die Dioden auf.
Manfred
Ich habe mal den Motorstrom für beide Fälle, also Freilauf und aktiver Bremse, simuliert. Die Kurven sind im Anhang zu sehen. Die rote Kurve ist der Motorstrom im Freilaufbetrieb, die grüne bei aktiver Bremse. Aktive Bremse bedeutet, dass auch der low side Transistor in der H-Brücke durchgeschaltet wird und nicht nur der high side. Simuliert wurde ein Schiebebetrieb bei 50% PWM, d.h. der Asuro wird mit Höchstgeschwindigkeit geschoben aber der Antrieb (PWM) steht nur auf 50%.
Man sieht, dass im Freilauf (rote Kurve) der Strom gar nicht negativ wird. Kann auch nicht, da die Freilaufdiode nur die Selbstinduktion der Ankerinduktivität ableitet und wenn die null ist, hört der Strom zu fließen auf. Anders ist es bei aktiver Bremse, hier ist der Strom immer negativ, im Mittel etwa -80mA. Der Motor ist wirklich im Generatorbetrieb. Durch den low side Transistor wird für 50% der Zeit der Motor kurzgeschlossen. Der Motor erzeugt einen Strom, der durch die Ankerinduktivität langsam bis über -125mA ansteigt. In der restlichen PWM-Phase fließt der Strom über den high side Transistor (oder auch obere Freilaufdiode) wegen der Induktivität weiter und lädt sogar den Akku. Dabei fällt der Strom auf ca. -25mA zurück. Dann wiederholt sich das Spiel.
Das Ganze ist schon sehr kompliziert und deshalb auch schwer zu erklären, aber vielleicht hilft es ein wenig weiter.
Waste
Hallo Waste,
interessante Idee, den Motorstrom zu simulieren. Da aber eine Simulation immer nur eine Annäherung an die Wirklichkeit ist, stellt sich mir sofort die Frage:
Was ist die Grundlage Deiner Simulation bzw, wie sieht Dein Modell aus ?
Ich, gestehe, dass ich mich noch nicht allzusehr mit Motormodellen auseinandergesetzt habe, aber folgende Fragen stellen sich mir:
1. Der Anker des Motors wird zwangskommutiert, bei jeder Umdrehung entstehen also möglicherweise Unterbrechungen des Motorstroms durch die Umschaltung, wie wirkt sich das auf den Ankerstrom aus ?
2. Der Motor hat einen bestimmten Wirkungsgrad im Motorbetrieb, unter anderem wird der Wirkungsgrad durch den Ankerwiderstand sowie Wirbelströme beeinflußt. Wie verhält es sich mit dem Wirkungsgrad im Generatorbetrieb? Welchen Einfluss hat die Magnetfeldstärke der Permanentmagnete und die Koppelung der Ankerspule mit dem Magnetfeld auf den induzierten Strom ?
Vielleicht kannst Du ja mal Dein Modell hier posten.
Gruss,
stochri
Die Simulation hat den Vorteil, dass die Signale sauberer sind als in Wirklichkeit, also ohne Störungen durch z.B. die Kommutierung. Des weiteren kann man schnell was ausprobieren ohne den Lötkolben schwingen zu müssen. Vieles macht auch erst die Simulation verständlicher.
Ich simuliere mit LTSpice. Das Modell für einen Gleichstrommotor ist angehängt. Der gestrichelt umrahmte Teil ist der Motor. Er ist unterteilt in einen elektrischen und einen mechanischen Teil. Es wird also auch Drehmoment und Drehzahl simuliert.
Der elektrische Teil besteht aus:
La1 = Ankerinduktivität
Ra1 = Innenwiderstand
B1 = Gegen-EMK
Die Gegen-EMK ist das Produkt aus Winkelgeschwindigkeit omega und der Motorkonstanten Km.
Der mechanische Teil besteht aus:
B2: Stromquelle, die das Drehmoment simuliert, 1A entspricht einem Drehmoment von 1Nm.
I1: simuliert die Reibverluste (trockene Reibung)
R1: simuliert drehzahlabhängige Verluste
Cm1: simuliert das Trägheitsmoment des Rotors, 1F entspricht 1kgm²
omega: Die Spannung an dem Knoten entspricht der Winkelgeschwindigkeit in rad/s.
Das Modell funktioniert sehr gut. Ich kann damit auch die Dynamik beim Hochlauf oder Auslaufen simulieren. Allerdings geht es nicht so ins Detail, dass auch die Kommutierung mit berücksichtigt ist. Das war auch gar nicht die Absicht. Die hauptsächlichen Verluste entstehen durch den Innenwiderstand und durch die Reibung und die sind mit erfasst.
Der Wirkungsgrad im Generatorbetrieb sollte gleich sein, sind ja die gleichen Verlustbringer beteiligt, vorausgesetzt die Bürstenplatte ist nicht verdreht.
Zum Einfluss der Magnetfeldstärke möchte ich auf den Artikel von Manfred hinweisen: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=2463&highlight=motorkonstante
Waste
bloodyDragon
05.04.2007, 03:01
der thread scheint ja nichtmehr umbedingt der aktuellste zu sein aber mir ist durch einen fehler in meinem programm eine idee gekommen ...
ich habe aufs minimalste reduziert in meinem programm dass hier gemacht :
MotorSpeed(200,200);
MotorSpeed(0,0);
wenn man dazwischen passend viel/wenig zeit vergehenlässt könnte man damit eine ganz langsame bewegung realisieren ^^
ich hab mir das jetzt so angeschaut und kam zum schluss, dass man theoretisch nur die untersetztung vergrößern muss => kleinere höchstgeschwindigkeit, mehr Kraft.
damaltor
05.04.2007, 17:29
nein leider nicht. im endeffekt ist das eine art selbstgebaute PWM, also volle leistung und keine leistung im wechsel. der asuro hat ohnehin schon eine PWM eingebaut buz programmiert, deshalb dürfte das nicht viel bringen.
na ja, dann halt nich. war nur so ne idee
bloodyDragon
10.04.2007, 00:13
naja...das ist eine 8 bit pwm soweit ich weis .. ( 255 is max)
.. der prozessor hat einen wesentlich feineren takt man könnte also viel näher an den punkt wo der asuro geradenoch fährt
aber im endeffekt treten dann vermutlich wieder die probleme mit der haftreibung und den bauteilungenauigkeiten auf die das feineinstellen aka herumprobieren erschweren ...
naja da's meine idee ist werd ichs auch ausprobieren wenn mein asuro entlich lichter finden und linien folgen kann ^^
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.