boxtec Forum
Microcontroller => Microcontroller & Motors => : SeviT January 13, 2013, 06:31:04 PM
-
Hallo Zusammen
Ich mache im moment ein solar tracking projekt.
hardware und alles habe ich nun läuft das peogramm, jedoch spinnen die servos ein bisschen. hat jemand einen ratschlag worann das liegt??
sie bewegen sich langsam und tönen komisch.
lg sevi
mein program
#include <Servo.h>
Servo servoRotation;
Servo servoPitch;
int ldrLeft = 0;
int ldrRight = 4;
int ldrTop = 2;
int ldrDown = 3;
int valRotation = 90;
int valPitch = 135;
int valLeft;
int valRight;
int valTop;
int valDown;
int delayTime= 1;
int buttonState = 0;
void setup() {
servoRotation.attach(6);
servoPitch.attach(9);
// Serial.begin(9600);
}
void loop() {
//reading LDR values depending on incoming light
valLeft = analogRead(ldrLeft);
valRight = analogRead(ldrRight);
valTop = analogRead(ldrTop);
valDown = analogRead(ldrDown);
if (valLeft - valRight > 2 || valLeft - valRight < -2){
if (valLeft > valRight && valRotation > 0) {
valRotation--;
}
if (valRight > valLeft && valRotation < 180) {
valRotation++;
}
}
if (valTop - valDown > 2 || valTop - valDown < -2){
if (valTop > valDown && valPitch > 90) {
valPitch--;
}
if (valDown > valTop && valPitch < 180) {
valPitch++;
}
}
servoRotation.write(valRotation);
servoPitch.write(valPitch);
delay(delayTime);
}
-
Salut,
auf den ersten Blick fällt mir nichts auf. Wenn ich den Code richtig verstehe, wird bis zu 1000 mal pro Sekunde geprüft, ob sich der Wert der beiden RefernezLDR um mehr als 2 unterscheidet. Das sind ~10 mV am anlog Port. Das erscheint mir sehr sensitiv und ich gehe davon aus, dass die Servos so komisch klingen, weil sie sehr häufig pro Sekunde um jeweils wenige Grad verstellt werden.
Ich würde mir erst einmal den Output der LDR anschauen und entscheiden, welchen Schwellwert man am besten einsetzt.
Außerdem würde ich die Tatsache nutzen, dass die Sonne in ihrem Verhalten recht vorhersagbar ist. Man kann also noch einige Plausibilitätsprüfungen einbauen, da man weiß, dass die Sonne maximal 15 Grad pro Stunde durchläuft. Weiterhin sollte man über eine Mittlung nachdenken, so dass man nicht von Schwankungen im Licht/Schatten abhängig ist.
Ich hoffe, das gibt einen Anstoß
Ciao, Mathias
-
Hallo
vielen dank für die antwort hat mir geholfen habe die zeit au 1000 geändert jetzt läuft das ganze schon besser :)
ich habe auch noch ein problem, dass die drehung des solarpanel nicht wirklich funktioniert. das ab und auf funktioniert problemlos. mal schauen.
lg sevi
-
hallo ich melde mich gleich nochmals
ich habe die sache einpendlen lassen, bis er die optimale position gefunden hat. dann habe ich die einzelnen ldr's ausgemessen mit meinen programm und bin auf diese werte gekommen.
links 927
oben 925
unten 918
rechts 875
irgend etwas stimmt nicht finde jedoch nichts.
lg sevi
-
Ich musste an das Bordbuch der Fluglinie QANTAS denken:
Pilot: Im Cockpit ist irgendetwas locker.
Mechaniker: Wir haben im Cockpit irgendetwas wieder fest gemacht.
;D
Warum programmierst du eine optimale Position, wenn du einen Tracker baust, der diese ja selber suchen soll ?
Dann die üblichen verdächtigen: Liefert die Stromversorgung genügend wenn beide Servos laufen ? (Kondensator schadet nie)
Ich würde mit Pausen dazwischen mehrmals messen, um Störungen wie z.B. Reflexionen vom Öffnen/Schliessen von Fenstern auszufiltern.
Weiter würde ich eine Hysterese einfügen, dass sich die Servos erst bewegen ab +/- 3 und nicht flattern.
Und müssen die Servos die ganze Zeit laufen, würde es reichen, sie nur zum richten einzuschalten ?
-
hallo
naja es ist einfach ein projekt für mich besser als den abend vor dem tv sitzen :) mal etwas sinnvolles machen
ja strom hat er genug
eine hysterese habe ich ich habe einfach eine abweichung von 2 programmier, doch ich probiere es mal mit 3.
ja eine gute idee werde ich gleich umsetzen
lg
danke für die antworten