Motor regeln mit PID_v1 - funktioniert nicht!

Hallo!
Versuche gerade eine DC-Motor zu regeln.
Dazu habe ich mir die Library heruntergeladen: PID_v1 → extrahiert und in die “libraries” gelegt.
Anschließend öffnete ich die Arduino IDE (exe → Vers. 1.6.10 Hourly Build 2016) und
lud mir über File → Examples → PID_v1 → den Sketch “PID_Basic” auf den Rechner
Dann versuche ich das Programm zu kompilieren - jedoch ohne Erfolg!
Folgende Fehlermeldung ergab sich:

C:\Users\Documents\Arduino\libraries\PID_v1\PID_v1.cpp:8:22: fatal error: WProgram.h: No such file or directory
#include <WProgram.h>

compilation terminated.

Multiple libraries were found for “PID_v1.h”
Used: C:\Users\Documents\Arduino\libraries\PID_v1
Not used: D:\Arduino\arduino-nightly_windows_SW_NEU\libraries\PID_v1
exit status 1
Error compiling for board Arduino/Genuino Uno.

Normal müsste das Programm ja laufen, oder?
Vielleicht kann mir jemand helfen das Problem zu lösen.
Danke
Mad

Irgendwo in der PID lib wird WProgram.h aufgerufen. Das war nur in den Nuller Versionen der IDE so üblich, danach lautet der Befehl Arduino.h
Code und Libs, die für die Nuller Versionen geschrieben wurden, benötigen da ein wenig Nachhilfe.
Ich habe für derartige Sketche den folg. Fix im Netz gefunden:

// #include <WProgram.h>

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

Beim Compilieren wird die IDE Version abgefragt. Ist sie kleiner 1, wird WProgram.h aufgerufen, anderenfalls Arduino.h
Also im Code, im Beispiel, als auch in der Lib nach fraglichem Aufruf suchen und wie oben aufgeführt, ersetzen.

Vielen Dank für die rasche Rückmeldung.
Leider funktioniert es auch nicht, oder ich mache etwas falsch?
Das habe ich geändert:
Im PID_v1.cpp
habe ich die Zeilen:

#include <WProgram.h>
#include <PID_v1.h>

gegen diese getauscht

// #include <WProgram.h>

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif
#include <PID_v1.h>

Gib es keine neue Library für “PI” oder “PID” Anwendungen.
Denn die Drehzahl eines kleinen DC-Motor zu halten, das werden wohl mehrere brauchen, oder?
Danke Mad

Hast Du die Meldung "Multiple libraries were found for PID_v1.h" beachtet und die Datei bei der benutzten Bibliothek geändert?

nix_mehr_frei:
Irgendwo in der PID lib wird WProgram.h aufgerufen. Das war nur in den Nuller Versionen der IDE so üblich, danach lautet der Befehl Arduino.h

Nach 999 posts müßtest Du schon wissen daß es in C keine Befehle gibt und arduino.h einen Bibliothek ist.
Uwe

uwefed:
Nach 999 posts müßtest Du schon wissen daß es in C keine Befehle gibt und arduino.h einen Bibliothek ist.
Uwe

Hallo Uwe, ist das jetzt ein wichtiger Beitrag? Nö, finde ich nicht!

Er hat versucht, dem TO auf vernünftige Art und Weise zu helfen, das zählt.

Super, vielen Dank für eure Hilfe ....
gerade eben habe ich den Sketch kompilieren können.
Muss mich in kürze noch mit den Funktionen auseinander setzen.
Wie eingangs schon erwähnt, möchte ich einen kleinen DC-Motor auf die jeweilige eingestellt Drehzahl halten.
Das Zeitverhalten des Motors bzw. die Abtastzeit - das habe ich noch nicht so richtig verstanden.
Eventuell muss ich euch nochmals um Hilfe bitten.
Bis dahin tausend Dank
Gruß Mad

agmue:
Hallo Uwe, ist das jetzt ein wichtiger Beitrag? Nö, finde ich nicht!

Er hat versucht, dem TO auf vernünftige Art und Weise zu helfen, das zählt.

Ich finde es wichtig, eine richtige Terminologie vor allem bei Antworten für Anfänger zu verwenden. Dies weil nur so ein Anfänger zu diesem Thema was im Internet etwas finden kann.

Grüße Uwe

Alles als "Befehl" zu bezeichnen und nicht zwischen Anweisungen/Schlüsselwörtern, Operatoren und Funktionen zu unterscheiden hilft auch nicht dabei die Sprache zu lernen. Das sind unterschiedliche Dinge, die sich anders verhalten.

uwefed:
Ich finde es wichtig, eine richtige Terminologie vor allem bei Antworten für Anfänger zu verwenden. Dies weil nur so ein Anfänger zu diesem Thema was im Internet etwas finden kann.

Grüße Uwe

Serenifly:
Alles als "Befehl" zu bezeichnen und nicht zwischen Anweisungen/Schlüsselwörtern, Operatoren und Funktionen zu unterscheiden hilft auch nicht dabei die Sprache zu lernen. Das sind unterschiedliche Dinge, die sich anders verhalten.

Ihr habt meine Zustimmung :slight_smile:

Aber "Nach 999 posts müßtest Du schon wissen ..." empfinde ich als demotivierend. Ein Newbie ist neu im Forum, kann aber Informatikprofessor sein. Jemand wie ich mit über 2500 Beiträgen kann aber immer noch unsicher in der C-Terminologie sein (oder ein "=" vergessen :-[ ). Eine Korrektur ist willkommen, aber gleich eine Rüge? Da traue ich mich dann nicht mehr zu schreiben. :cry:


madang:
Das Zeitverhalten des Motors bzw. die Abtastzeit - das habe ich noch nicht so richtig verstanden.
Eventuell muss ich euch nochmals um Hilfe bitten.

Regelung ist auch nicht einfach! Schön, daß Du mit dem Kompilieren eine Hürde genommen hast :slight_smile:

@mandang
Wie machst du die Drehzahl Erfassung am Motor? Das ist bei dieser Sache das a und o.
Noch ein paar Infos über die genutzte Hardware dann ist das mit dem Regler schon auffangbar. Sind es konstant aufkommende Belastungen oder sind diese in irgendeiner Weise von etwas anderem beeinflusst?
Evtl muss dann der KP adaptiert werden um ein gutes Ergebnis zu bekommen.
Gruß
DerDani

Hallo, brauche schon wieder eure Hilfe. Die Drehzahl wird mittels Lochscheibe und Gabellichtschranke via Interrupts ermittelt. Den Motor habe ich von El. CONRAD (50 Watt / 7V). Regeln möchte ich den Motor über PWM mittels MosFet. (IRF 530). Leider wird dieser zu heißt.
Gibt es einen Typen den ihr mir empfehlen könnt?
Danke Mad

Du solltest Logic Level FETs wie IRLZ34, IRLZ44 oder IRLU024 verwenden. Und einen Kühlkörper spendieren

Super, danke für den Hinweis. Habe den irf530 wahrscheinlich an der GS-STRECKE mit einer zu kleinen Spg. (6,7V) betrieben - der hat wahrscheinlich nicht ganz durchgeschaltet - somit ist auch die schnelle Erwärmung zu erklären.
Mal sehen ob es mit dem irlz44 klappt - lt. Datenblatt sollte der den 50 W/7V DC Motor mit PWM Ansteuerung schaffen, oder?
Danke Mad