INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Analogwert bei Änderung anpassen ?
30.09.2014, 13:29
Beitrag #1
Analogwert bei Änderung anpassen ?
Hey Leute Wink

Ich habe einen APM 2.6 Autopilot hier liegen für den Modellbau.

Ich wollte diesen für meinen Roboter mal testen da er Wegpunkte anfahren kann über GPS und diverse Sensoren.

Das problem ist das dieser Autopilot einen PWM wert für Motor rechts und Motor links alle ca 2 Sekunden schickt.

Ich habe mir jetzt mal diesen code gebaut das Problem dabei ist das der Pwm wert nur kurz an die Motoren gesendet wird und die natürlich nicht fahren sondern nur zucken da der Wert alle 2 Sekunden nur kurz anliegt ich bräuchte also einen code der den PWM wert nur anpasst an die eingelesen Werte die vom APM an den Arduino kommen und wenn sich nichts ändert der letzte Wert aktuell bleibt.

Hier mein code:

Code:
// Analog Eingang auf Analog Ausgang ausgeben.
// Version 1.0


const int analogPin0 = A5;           // ACHTUNG PIN ANALOG 5 auf 4-Pin Steckerleiste ganz links!
const int analogOutPin0 = 3;         // rechtsspeed PWM

const int analogPin1 = A4;           // ACHTUNG PIN ANALOG 4 auf 4-Pin Steckerleiste 2te von links nach rechts!
const int analogOutPin1 = 5;         // linksspeed PWM

int sensorValue0 = 0;            
int outputValue0 = 0;    

int sensorValue1 = 0;
int outputValue1 = 0;


const int motorenrechts_rechtslauf  = 4;
const int motorenlinks_rechtslauf   = 7;


void setup() {
  Serial.begin(9600);
  
  pinMode(motorenrechts_rechtslauf, OUTPUT);    // rechts / rechtslauf

  pinMode(motorenlinks_rechtslauf , OUTPUT);    // links / rechtslauf

    digitalWrite(motorenrechts_rechtslauf, HIGH);
    digitalWrite(motorenlinks_rechtslauf , HIGH);
}

void loop() {
  
    


  sensorValue0 = analogRead(analogPin0);
  outputValue0 = sensorValue0;
  analogWrite(analogOutPin0, outputValue0);
  
  sensorValue1 = analogRead(analogPin1);
  outputValue1 = sensorValue1;
  analogWrite(analogOutPin1, outputValue1);



  delay(2);
}


Was könnte ich da ändern ?

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 13:48
Beitrag #2
RE: Analogwert bei Änderung anpassen ?
eingehende pwms in Variablen zwischenspeichern und nur die gespeicherten Werte an die Motore weitergeben?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 15:09
Beitrag #3
RE: Analogwert bei Änderung anpassen ?
Danke stimmt das wär am einfachsten Wink

Grus Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 16:31
Beitrag #4
RE: Analogwert bei Änderung anpassen ?
Hi,
woher weißt Du, das ein ermittelter Wert gültig ist?
Mit anderen Worten: Woher weißt Du, dass bei "analogRead(analogPin0)" der Wert vom Autopiloten gesendet wurde?
...oder nochmal anders: Welchen Wert hat "analogRead(analogPin0)", wenn der Autopilot gerade "nichts" sendet?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 16:43 (Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2014 16:48 von Marc2014.)
Beitrag #5
RE: Analogwert bei Änderung anpassen ?
Hey Wink

Also das ganze ist leider doch komplizierter :/

Zu der Frage von dir Thorsten:

Der APM sendet 0 konstant.

Das Problem ist jetzt aber das der mit werten von 800-2000 arbeitet und meine dc Motoren ja 0-255 PWM geregelt werden.

Und da der APM zwischendurch 0 sendet würden die Motoren ja stoppen.

Mir ging es darum keine Brushlessmotoren zu verwenden da das Projekt dann nicht einfach auf größere dc Motoren zu erweitern wäre.

Aber jetzt bin ich mir unsicher wie ich das machen soll mit diesem merkwürdigem verhalten der APM :/

Grus Marc

Link: http://rover.ardupilot.com/wiki/apmrover...and-setup/

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 18:04
Beitrag #6
RE: Analogwert bei Änderung anpassen ?
(30.09.2014 16:43)Marc2014 schrieb:  Das Problem ist jetzt aber das der mit werten von 800-2000 arbeitet und meine dc Motoren ja 0-255 PWM geregelt werden.
Hä?
Wenn Du mit analogRead() arbeitest, dann gehst Du davon aus, dass da 0 bis 5V anliegen. ...und zwar "glatte" Gleichspannung, kein PWM oder so.
Was meinst Du "Werte von 800-2000"? 800 bis 2000 was? kHz? Volt? mCd?
Könntest Du mal genauer spezifizieren, was Du da messen willst?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 19:02
Beitrag #7
RE: Analogwert bei Änderung anpassen ?
hey Wink

also ich dachte erst dass diese Steuerung (APM 2.6) einen wert von 0-5V DC ausgibt.

Aber in der Online Beschreibung steht:

RC minimum PWM pulse width. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper limit.

Range: 800 2200
Increment: 1
Units: pwm

Also ging ich jetzt davon aus das die Steuerung:
800 für links.
1500 für gerade aus.
2000 für rechts.

ausgibt.


Die Steuerung ist eigentlich für die Ansteuerung von BEC's für Brushless Motoren gedacht aber nachdem die ja meines Wissen auch über (GND, VCC, Signal) wie ein Servo angesteuert werden dachte ich mir das müsste der Arduino ja umwandeln können.

Die ganzen Quadrocopter laufen ja auch mit einem Arduino Nano V3 als Board und dieser steuert die BEC's der einzelnen Motoren an.

Das Problem ist das ich nicht weis wie ich diese Werte auf meine für die DC Motoren benötigten PWM-Werte im Bereich (0-255) anpasse.

Da ich ja nur 2 Motoren nutzen will so wie in der Anleitung, wird sich das lenkverhalten wohl wie ein Panzerantrieb verhalten.

Ich gehe jetzt also davon aus dass:
beide Motoren laufen wenn der gerade fahren soll.
zum rechts abbiegen wird vermutlich Motor links an und rechts aus geschaltet.
zum links abbiegen motor links aus und rechts an.

Aber wie fährt er zurück??

Also müsste das dann so in etwa aussehen:

APM ARDUINO

2000 255 PWM
1500 125 PWM
800 0 PWM

Wenn ich wüsste was bei einer normalen RC Funke rauskommt könnte man das ja als Anhaltspunkt nehmen denn diese gibt ja das selbe aus wie der APM .

Leider hab ich keine RC Funke hier zum testen.

Ich verstehe das nicht wirklich mit diesen Werten ?!

Hier der Link zur kompletten Anleitung:

http://rover.ardupilot.com/wiki/apmrover...Parameters

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2014, 19:11
Beitrag #8
RE: Analogwert bei Änderung anpassen ?
Hi,
häng die Dinger mal an einen (digitalen) Eingang und probiere aus, was Du mit der Funktion pulseIn() rausbekommst. Das funktioniert normalerweise bei digitalen RC-Empfängern.
Falls wir da was sinnvolles herausbekommen, dann muss man das wahrscheinlich nur noch sinnvoll mappen.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 538 06.07.2016 14:59
Letzter Beitrag: Binatone
  wie Parameter der seriellen Schnittstelle anpassen? avoid 6 479 29.04.2016 16:44
Letzter Beitrag: avoid
  Änderung von Bibliotheken chhec 9 1.241 04.02.2016 09:51
Letzter Beitrag: hotsystems
  Gute Sketches für das EthernetShield für das WiFiShield anpassen. getiteasy 4 1.112 21.11.2014 20:13
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste