Zitat von
Klingon77
... Eine Alternative wäre der DC-Motor mit Encoderscheibe im geschlossenen Regelkreis.
Da sind ganz andere Drehzahlen möglich.
Kräftig sind sie auch; nur die Ansteuerung ist aufwändiger.
Die Trägheit der Masse wird sich bei den höheren Motordrehzahlen auch deutlicher bemerkbar machen ...
Stimmt natürlich, wobei man für eine genau abgezählte Menge von Umdrehungen im Prinzip garnicht regeln muss. Ich finde auch die Ansteuerung nicht schwieriger als normalerweise für DC-Motoren.
Ich fahre als Ausweichmanöver bei meinem Zweiräder z.B. eine Kurve "rückwärts" rechts, 60° und das geht so. Es werden beide Motoren gestoppt, dann wird der Encoderzähler rechts auf 0 gesetzt. Jetzt rechten Motor hochfahren und laufen lassen, bis der Encoder die gewünschte Anzahl erreicht hat. Ich habe einen zweiflügeligen Unterbrecher - sozusagen zwei Striche auf dem Motorencoder - und bei einer Drehzahl von rund 700 Ups (pro Sekunde) brauche ich bei der Übersetzung 768:1 und meinem Radumfang genau 1068 Encodertics. Nichts ist einfacher:
Code:
/* ============================================================================== */
/* Fahre Kurve 60° rückwärts rechts, Zähle Iencdr0 bis 1068
================================================================================ */
void K60_z_re(void) // Fahre Kurve 60° rückwärts rechts
{
.... Definitionen etc., Motoren beide stop
Iencdr0 = 0; // Setze Encodercounter auf Null
.... Es folgt das Hochfahren des Motor rechts "zurück"
// Motor ist hochgelaufen
while ( 1 )
{
if ( Iencdr0 >= 1068) break;
}
.... Es folgt das Runterfahren des Motor rechts und Motor stop
Aus purem Luxus fahre ich den Motor (die Motoren) in einer Rampe runter - das geht fast auf den Tic reproduzierbar genau, sodass der eigentliche Schwenk nach meinen Messungen genau 60° ist.
Fazit: selbst bei rund 40 000 Upm kann (m)ein mega168/20MHz bequem die Encodertics zählen und so den Motor eine genaue Anzahl Umdrehungen laufen lassen.
Lesezeichen