Hallo Leute,
nun bin ich wieder mal an einem Punkt, an dem ich nicht weiter komme.
Mein Projekt:
ein Grillregler, der die Temperturen im Grill mißt, über einen PID-Regler dann zwei Servos für Zuluft- und Abluftklappe ansteuert und das ganze nochauf SD-Karte mitloggt.
Bereits beim Testlauf fiel mir auf, dass die Servos ständig zittern und knurren, habe das aber auf die billigen Servos und den fliegenden Aufbau geschoben.
Nun, mit festem Aufbau und digitalen Servos ist das leider immer noch so - Wenn ich meinen Grillreglercode laufen lassen.
Wenn ich einen nackten Servosketch drauflade (gleiche Hardware) dann laufen die Servos völlig ruhig, wenn sich der Wert nicht ändert, dann stehen die Servos völlig still.
Wenn ich aber den kompletten Code laden, dann zittern die servos, auch wenn sich die STellgröße garnicht ändert.
Meine Vermutung ist, dass sich der Interrupthandler der Servolib mit einer der anderen Libs in die Quere kommt, und dadurch der Puls zur Servoansteuerung nicht gleichmäßig kommt.
ich habe diese Libs eingebunden:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include <PID_v1.h>
#include <Bounce.h>
#include <SD.h>
#include <DS1307new.h>
#include <Servo.h>
Den ganzen Code kann ich nicht posten, weil ich inzwischen knapp 4000Zeilen Code in verschiedenen Dateien habe.
Was ich ausschliessen kann: Spannungsversorgung, Einstreuung, Übersprechen, gestörtes Signal.
Im Englischsrachigen Teil des Forums habe ich diverse Einträge gefunden, die einen Beeinflussung von wire.h und servo.h nahe legen.
Hat einer von euch sich damit schonmal rumgeschlagen, oder eine Idee, wie ich das vermeiden kann?
Das einzige, was mir momentan einfällt, ist in den Phasen, in denen sich der Stellwert nicht ändert, die Versorgung der Servos abzuschalten. Aber das wäre nur die quick & dirty Lösung.