Show Posts
Pages: [1]
1  International / Deutsch / PID Regler on: October 19, 2012, 09:36:05 am
Hallo Leute!

Ich bin gerade dabei mich mit der PID-Lib auseinanderzusetzen! Als Test wollte ich einen Taster betätigen und der Regler soll sozusagen dem Signal folgen!

Also bedeutet das für mich folgendes:

Output = das was ich haben will. Sollte sich solange dem Setpoint nähern, bis er schließlich erreicht ist!
Setpoint = entweder 100 wenn der Taster nicht gedrückt ist oder 0 wenn der Taster gedrückt ist.
Input = Hier liegt wohl mein Problem? Das sollte ja im Endeffekt Setpoint - Output sein, oder?

Code:
#include <PID_v1.h>

const int buttonPin = 11;     // the number of the pushbutton pin
const int ledPin =  10;      // the number of the LED pin

int buttonState = 0;         // variable for reading the pushbutton status
double Setpoint, Input, Output;
PID myPID(&Input, &Output, &Setpoint,2,5,1, DIRECT);

void setup() {
  Serial.begin(9600);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);     
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);   
  //turn the PID on
  myPID.SetOutputLimits(0,100);
  myPID.SetMode(AUTOMATIC);
}

void loop(){
  Setpoint = digitalRead(buttonPin)*100;
  Input = Setpoint - Output;
  myPID.Compute();
  Serial.println(Output);
 
  buttonState = digitalRead(buttonPin);
  if (buttonState == LOW) {     
    // turn LED on:   
    digitalWrite(ledPin, HIGH); 
  }
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

Aber die Ausgabe ist leider völliger mist... was mache ich denn falsch?

Gruß,
Markus
2  International / Deutsch / Re: Servo-Lib für Brushless-Motoren on: October 18, 2012, 08:35:57 am
Hallo uwefed,

in weiter Ferne sollen damit mal Motoren für ein Hubschrauber gesteuert werden! D.h. ich müsste doch die Periodendauer auf 2,5ms runterschrauben?

Gruß,
Markus
3  International / Deutsch / Servo-Lib für Brushless-Motoren on: October 18, 2012, 07:39:35 am
Hallo,

ich habe diesmal im weitesten Sinne eine Frage zu Brushless-Motoren sowie die dafür benötigten Regler!

Die Regler sollen bei 400Hz optimal arbeiten und werden mit PWM angesteuert. Nun habe ich gelesen, dass man die Motoren mit der Servo-Lib ansteuern kann. Nur habe ich da ein kleines Problem. In meinem Buch steht was von 20ms konstanter Pediodendauer einer Schwingung, was nur 50Hz sind, die die mit der Servo-Lib realisierbar sind ... Gibt es nun eine Möglichkeit die Perdiodendauer zu verringern oder muss ich auf irgendwelche Tricks zurückgreifen? Oder muss ich mir gar keine Gedanken über die Perdiodendauer machen?

Gruß,
Markus
4  International / Deutsch / externe Stromversorgung on: October 17, 2012, 03:38:02 pm
Hallo Leute,

ich habe ein MPU6050 an meinem Arduino zum laufen gebracht, nur habe ich damit noch ein kleines Problem! Ich möchte, dass ein Servomotor den vorgegeben Werten des Gyros folgt!
Ich kann einen Servomotor ansteuern und die Werte des Gyros stimmen auch, aber sobald ich beides gleichzeitig versuche, spinnt das Gyro rum :/

Nun hab ich gelesen, dass es an der Stromquelle liegen kann? Also nun zu meiner eigentlichen Frage! Ich habe einen 3S Lipo, welchen ich für mein Arduino als Stromquelle benutzen möchte!

11.1V
25-35C
5000mAh

Muss ich dabei irgendwas beachten?
Wie schließe ich ihn am besten an?
Was ist der Unterschied zwischen dem VIN Pin und dem 5V PIN?
Was passiert, wenn ich USB und externe Stromquelle gleichzeitig angeschlossen habe?
Im Datenblatt steht, dass maximal 40mA pro PIN abgegriffen werden können. Wenn ich nur mehr als 40mA brauche, z.B. für einen Motor, dann muss ich dafür einen neuen eigenständigen Stromkreis aufbauen oder?

Grüße,
Markus
Pages: [1]