Forum: Mikrocontroller und Digitale Elektronik Drehzahl messen + auswerten, verändern + ausgeben


von Thomas (Gast)


Lesenswert?

Hallo,

ich suche nach einer Möglichkeit einen drehzahlgeregelten Motor zu 
beeinflussen. Der Motor wird per PWM auf eine festgelegte Drehzahl 
geregelt. Die Drehzahl beträgt ca. 2200 U/min und wird per Hallsensor am 
Motor erfasst.

Ab Drehzahl 600 U/min möchte ich in die Regelung eingreifen können. Ich 
möchte der Motorsteuerung eine höhere Drehzahl vorgeben als er 
tatsächlich hat um die tats. Motordrehzahl zu senken.

Ich bin auf der Suche nach einer Möglichkeit, benötge auch Hilfe bei der 
Ausführung und Programmierung. Über Hilfe freue ich mich!

Grüsse Thomas!

von oldmax (Gast)


Lesenswert?

Hi
Nun, so ganz einfach wird's vermutlich nicht sein, denn du kannt nicht 
einfach einen größeren Istwert ausgeben, um eine kleinere Drehzahl zu 
haben. Du mußt an dieser Stelle in den Regelkreis eingrefen, und ob das 
die Hardware zulässt, kann ich von hier nicht sagen. Es ist auch nicht 
üblich, den Istwert zu verfälschen, sondern man gibt einen anderen 
Sollwert für die Drehzahl vor. Aber wie bereits gesagt, ohne die 
Kenntnis um die Hardware ist von hier aus kaum Hilfe möglich.
Gruß oldmax

von Thomas (Gast)


Lesenswert?

Hallo,

die Steuerbaugruppe gibt ein PWM Signal aus und treibt damit den Motor 
an, der Hallsensor am Motor gibt die Rückmeldung an die Steuerung wie 
schnell der Motor dreht.

Ich möchte mich direkt in die Messung der Drehzahl reinhängen und den 
Wert bewusst verfälschen. Ich kann den Motor nur so selber anpassen.

Grüsse Thomas!

von MaWin (Gast)


Lesenswert?

Variante 1 analog:
Ist-Drehzahl in Spannung,
Spannung so verändern daß sie bei 0rpm und bei 600rpm gleich ist, bei 
2000rpm kleiner, und dann dieses Spannung per VCO in eine Freqeunz 
wandeln.
Statt einem Knick wird man eine logarithmische Kennlinie anstreben die 
per unlinearem Bauelement gemacht wird, wohl eine Diode.

Variante 2 digital:
Ein uC lässt eine Schleife immer rumlaufen.
Er zählt die Zeit (Anzahl der Durchläufe weil so programmiert wird daß 
der Zeitbedarf konstant ist)
Er zählt die Eingangsimpulse
und er generiert Ausgangsimpulse
Dann muß nur eine entsprechende Umrechnung rein, hier realisiert man 
vermutlich einen Knick ab 600 weil das einfacher ist als eine Kurve.
Es geht ja bloss um 10-35 Impulse pro Sekunde.
Interessanter ist bei der Form, daß man Störungen ausfiltert und er 
nicht aus Versehen 5000 Impulse pro Sekunde zählt.

von Thomas (Gast)


Lesenswert?

Hallo,

die Variante 2 ist wohl das was ich benötige. Die ganze Geschichte 
müsste dann angepasst auf die Verhältnisse bei mir werden.

Also wäre der nächste Schritt wohl, Aufnehmen der Istzustände an der 
Anlage und Entwicklung der Schaltung. Dann kann programmiert werden.

Ewt. wäre es dann auch gleich möglich die Drezahl in einem gewissen Band 
per Poti zu verändern unf gleichzeit die Geschichte auf einem einfachen 
Display wiederzugeben.

Grüsse Thomas!

von MaWin (Gast)


Lesenswert?

> Ewt. wäre es dann auch gleich möglich die Drezahl in einem gewissen Band
> per Poti zu verändern unf gleichzeit die Geschichte auf einem einfachen
> Display wiederzugeben.

Wenn du schon Schwierigkeiten mit einfacher Impulserzeugung hast,
bringen dich diese Schmankerl's nicht näher ans Ziel.

BOOL pin, pinold;
int pincount,cycle,poutcount;
#define C600 irgendeine Konstante ab der der Knick erfolgt
for(;;)
{
  pin=PINA&1
  if(pin&&!pinold)
  {
    if(pincount<C600)
      cycle=pincount;
    else
      cycle=2*(pincount-C600)/3+C600;
    pincount=0;
  }
  else pincount++
  pinold=pin;
  if(poutcount==0)
  {
    PORTA.1~=1;
    poutcount=cycle/2;
  }
  else poutcount--;
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.