Leute ich brauch eure Hilfe :o
Wie der Titel schon sagt verusch ich einen Schrittmotoren zu regeln und ich habe gleich mehrere Fragen mit gebracht. (Im internt findet man nicht sehr viel ist das er untypisch?)
Zuerst mal das Setup:
Arduino Mega 2560,
Druck-Sensor AMS5812
Barometer
Die Ansteuerung für die 2 benutzen Schrittmotoren mittels einem Timer (ISR) steht und funktioniert auch Problem los.
Nun zu dem was ich machen will.
Ich will die Drezhal der Schrittmotoren über den Druck reglen.
Dazu hab ich ein Array in dem ich bestimmte Schwelllenwerte deklariert habe. Die Drezahl soll sich so lange erhöhen oder verringen bis der Schwellenwert erreicht wurde.
Ist der Schwellenwert erreicht worden wird das nächst Schwellenwert vom Array hergezogen und das ganze geht von vorne los. Wenn der letzte Wert vom Array heranggezogen wird, soll der Feldzähler des Arrays wieder auf das erste Feld zeigen, damit das ganze von vorn los geht.
Den Druckwert der von Sensor gelsen wird stelle ich über den Barometer ein den ich mittel Silikonschläuchen und einer Großen Sprizte einstelle. Barometer und Sensor sind mit der Sprizte parallel verzeigt verbunden, deswengen stellt sich bei beiden der gleiche Druck ein
Die Drehzahl beeinfluss über den Timer, das stimmt eigt. nicht sondern megr über die Funktion
Setspeed() der Timer zieht sich nur den Wert aus der Funktion schreibt sich den bei cih in den Regsiter rein und löst danach aus und macht dan eine Step für beide Motoren.
Der Wert den sich der Timer zieht liegt zwischen 3200 bis 22.400.
Der Code steht nocht nicht so wie oben beschreiben und befindet sich noch in der entwicklungspahse aber es gint schon erste probleme
Meine erste Frage:
Also ich lasse in der Main die unten genannte Funktion laufen. Mein Problem wenn ich am Barometer den gewünschten Druck einstelle, ziehn die motoren die Drehzahl an bis sie hangen bleiben egal on sie Unterhalb, Oberhalb oder genau im Druckberech liegen.
Wenn ich aber die ber die Auskommentierten Prints einkommentire sehe ich am Seriellem monitor das, er Arduino genau das macht was er machen soll. leigt darüber runterzählen... liegt darunter hoch zählen ..... ....
void ReglerStellen()
{
if(InputDruck <= (SetponitArray[Setpointzeahler]-15)) // SetponitArray[Setpointzeahler] entspricht 100.
{
Steller= Steller + 50; // Steller wird der Funktion Setspeed() über geben.
//Serial.println("Hochzählen");
}
if(InputDruck >= (SetponitArray[Setpointzeahler]+15)) // SetponitArray[Setpointzeahler] entspricht 100.
{
Steller = Steller - 50; // Steller wird mit 3200 deklaiert,Steller hat sollte nicht weit über unter 3200 und 22400 liegen.
//Serial.println("Runterzählen");
}
if( (InputDruck >= (SetponitArray[Setpointzeahler]-15) ) && (InputDruck <= (SetponitArray[Setpointzeahler]+15) ) )
{
//Serial.println("Eingependelt");
}
}
ich verstehe nicht warum das so ist ??? echt ratlos?? vlt ist es auch was einfachs und ich sehs nur net, HOFFENTLICH ![]()
Meine zweite frage:
ich hab nach PID Libraries gesucht und keine passenden gefunden der von Brett Beauregard <PID_v1_h> ist zwar ginal aber der geeignet sich nicht , weil dieser ja so Funktionert das er einen Inpunt einen einliest und versucht einen Output entsprechend dem Setpoint zu reglen......
Mein Output der zu Regeln ist ist ein interner rechneter wert von Setpeed. Und so weit ich den jetzt einschätzen drufte bracht die Libraries einen PIN als Output.
An dieser Stelle wen iht eine Libraries kennt die dazu passt bitte nennen.
Oder hab ich Bertts Librarie falsch genutzt.
ich hoffe ihr könnt mir weiter helfen. Und sorry für die Schlechte Darstellung ist das erste mal das ich was hier Poste
