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
Druckbare Version
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/ze...=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.
Hierzu eine kleine Anmerkung:Zitat:
Es gibt natürlich auch individuelle Varianten, so hat ja Storchies ASURO die Batterien nach hinten verlagert.
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 ....
Abschätzen oder messen habe ich gesagt, dass jetzt Messungen Olympischer Qualität vorliegen war nicht verlangt (aber gut für spätere Auswertungen).Zitat:
Hier die geforderte Messung.
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.
Wie hast Du die Werte aufgenommen?Zitat:
Zitat von waste
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
Vielen Dank für die weitere Messung.Zitat:
Zitat von stochri
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
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.Zitat:
Wie hast Du die Werte aufgenommen?
Motor mit Getriebe und Rad?
Mit Oszilloskop?
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 ?
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.Zitat:
Geschwindigkeitsregelung wird da schwierig wenn nicht unmöglich sein. Ich werde jetzt einen anderen Weg mit schrittweiser Fortbewegung verfolgen.
stochri
@Manf
Ja so ist es halt: was nützt eine Messung genaue Beschreibung des Messvorgangs ?
ramp down = Lererlaufgeschwindigkeit bei Schrittweiser Verkleinerung des PWM-WertesZitat:
Ein Frage zu den Angaben: früher hieß es Teppich und glatter Boden. Low friction ist glatter Boden?
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
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.Zitat:
Stammen die Messwerte vom Atmega selbst, oder hast du extern gemessen ?
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
Code:/*******************************************************************************
*
* 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
Bild hier
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 :) ).
Code:#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-
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.
Bild hier
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 ).
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 ?Zitat:
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 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
Zitat:
Zitat von waste
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