Go Down

Topic: Brauche schnelle Hilfe ... Weiß nicht weiter! ( RPM auslesen) (Read 5061 times) previous topic - next topic

ReDSnoW

Danke erstmal =)
Der Motor dreht erst am 150 ...

Zudem kommen werden von 1-10 raus .... Querbeet...



150  7
150  4
150  4
150  7
150  2
150  7
150  3
150  8
150  4
150  4
150  2
150  6
150  4
150  4
150  5
150  3
150  5
150  4
150  5
Target-RPM-Counter: 7
150  7
155  3
160  4
165  3
170  5
175  4
180  3
180  6
185  4
185  6
190  4
190  7
190  7
195  2
200  5
205  5
210  4
215  5
220  4
225  5
230  5
235  3
235  6
240  4
245  3


ReDSnoW

Das ist unser Motor ...


http://www.yatego.com/aldiho-de/p,4dab0d3c4651d,4d6bb16431bd38_9,lego-set-5225-lego-motor-9v--71427-43362-

Joghurt

Tja dann fürchte ich, dass Dein Aufbau anders ist als meiner. Ich hatte hier nur nen Lüfter rumliegen...


Udo Klein

Sicher nicht dadurch, daß Du einen zweiten Thread zur gleichen Frage aufmachst: http://arduino.cc/forum/index.php/topic,98828.0.html.

Eine bessere Idee ist es erst einmal sehr genau zu beschreiben was Du tust und wie Dein Aufbau aussieht. Die Leute die sich besser auskennen haben in der Regel keine Zeit zu raten was Du möglicherweise aufgebaut hast.

Also:
- wie sieht die Schaltung aus?
- wie sieht im Moment die Software aus? (Bitte mit code Tags setzen, so wie Joghurt das macht)
- wie sollte sich die Software verhalten?
- wie verhält sie sich im Moment?
Check out my experiments http://blog.blinkenlight.net

ReDSnoW

Ok danke ...

Also ich benötige Hilfe um einen Motor zu regeln.
Fakten ich habe einen Legomotor über einen Transistor (Toshiba 2N3055) mit dem Ardunio verbunden.
Dieser Motor hat bewegt eine Art Scheibe, diese Läuft durch eine Lichtschranke (Aus alter Maus).
Diese soll nun erfassen, wie schnell sich der Motor dreht.
Sollte dieser seine Geschwindigkeit verringert haben, soll er nach regeln.
Momentan sehe ich nur den Aus/An - Zustand auf Pin 13

Im Anhang bilder zum Projekt.
[/URL]
[/img] Lichtschranke
[/URL]
[/img] Transistorschaltung
[/URL][/img] Schaltung

Code: [Select]
int val;
int stat=LOW;
int sens=457;


void setup()
{
  Serial.begin(9600);
  pinMode(13,OUTPUT);

   
}

void loop()
{
  val=analogRead(0);
  if(val<sens)
    stat=LOW;
   else
    stat=HIGH;
     
}


High-Signal auf LED-Pin13

Udo Klein

Das Regeln kann Dir die PID Library abnehmen:
http://arduino.cc/playground/Code/PIDLibrary

Dein Problem ist aber vermutlich erst einmal die ein/aus Pulse in eine Drehzahl umzurechnen.
Grundsätzlich mußt Du dabei nicht nach High/Low sondern nach "Flanken" also Wechsel zwischen High/Low schauen. Das erreicht man indem man sich jeweils den vorherigen Wert in einer Variable merkt.

Weiterhin muß Du Dir mit millis() jeweils die bereits verstrichenen Millisekunden abholen. Also grobe Vorgehensweise:

millis abholen und merken
Flankenzähler auf 0 setzen
loop
    Flankenwechsel?
        ja --> Flankenzähler weiterzählen
 
    millis holen und mit gemerktem Wert vergleichen, mehr als 1s Unterschied?
        ja --> Differenz auswerten,
                 gemerkten Wert für millis mit dem aktuellen Wert überschreiben
                 Flankenzähler auf 0 setzen

   PID Regler für Motor ansteuern

endloop


   
Check out my experiments http://blog.blinkenlight.net

ReDSnoW

Mein problem ist nicht die Logik sondern der Code  :smiley-roll-blue:
Würde mich auch echt erkenntlich zeig sofern jemand mir helfen würde!
Habe nur einen Deadline bis morgen und sitze schon seit x-Stunden dran da mein Motor erst heute kam ... 2 Wochen zu spät.
Und langsam bin ich kurz vorm Heulen ....

Udo Klein

Deadline? Sieht aus wie ein Hausaufgabenprojekt, oder liege ich da falsch?
Check out my experiments http://blog.blinkenlight.net

ReDSnoW

Eher ne Art zusatz projekt ...
... hardware habe ich heute alles zusammen gebaut und unserem lehrer gezeigt und das passt alles.
Nur der Code fehlt eben....
Die Logik dahinter raff ich nur ich kann nicht coden ...

Udo Klein

Hmmm. Eigentlich ist das hier kein Forum zwecks kostenlosen Outsourcing von Projektarbeiten. Tipps OK, aber Code komplett schreiben? Ich weiss nicht. Was sagen eigentlich die Lehrer wenn sie von sowas Wind bekommen?
Check out my experiments http://blog.blinkenlight.net

Udo Klein

Nur mal so zum Nachdenken: wenn Dein Lehrer auch nur halbwegs den Leistungsstand seiner Schüler kennt, dann wird er das merken. Grund: wenn Du nichteinmal einfache Dinge hinbekommst und dann nach 2 Wochen so eine Regelung hinbekommst, dann ist entweder ein Wunder geschehen oder jemand hat Dir massiv geholfen.

Auf was ich raus will: diese Art von Regelung bekommen Anfänger nur hin wenn sie entweder sehr viel Zeit oder kräftig Rückenwind haben. Und die Erfindung des Internets ist den meissten Lehrern mittlerweile auch bekannt. Wie die meissten Schüler auch hat zwar noch nicht jeder Verstanden wie Google und Facebook tatsächlich funktionieren, aber zum Suchen reicht es bei den meissten.
Check out my experiments http://blog.blinkenlight.net

ReDSnoW

Das ist ja erst der Anfang!
Ich will dies dann noch mit Leds erweitern und eventuel einem LCD-Display.
Nur muss morgen der Grundstein fertig sein.
Ich VERSPRECHE!!! das ich nie wieder nach einem komplett code fragen werden!!!!
Und werde mich weiterhin intensiv mit dem Board beschäftigen ...
Nur ich habe mittlerweile echt eine Art "Brainfuck"....

Grüße

Ps wenn wir Quellen angeben ist dies ok!
kann dir gerne meine Doku nachher schicken.

ReDSnoW

Könntet ihr mir dann bitte bei einem Werte Counter helfen?
Also ich bekomme ja ein High signal am pin 13, nun bräuchte ich eine schleife die einen array bei jeden high hochzählt.
Art counter (if pin13 high =+ 1 ins array) diese soll dann pro minute ausgegeben werden.
Ala rpm ....


sth77

Das ist kein Array, das hochzählt, sondern eine einfache Variable, deren Wert um 1 erhöht wird. Ich finde, dass hier viel zu viele Fragen offen geblieben sind. Woher kommt denn das High an Pin 13 zustande? Kommt dieser Impuls einmal pro Umdrehung? Einmal pro Wechsel am Lichschrankenrädchen? Fotos vom Aufbau? Kompletter Schaltplan?
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Go Up