Für ein Projekt bauen wir einen Flywheel-Shooting-Mechanismus.
Als Hardware dient ein Arduino UNO R4 Minima und als Akku ein 12V 2Ah LiFePO4 (beides vorgegeben). Motoren benutzen wir 2x MAD 4012 430kv, ESC ist folgender von Hobbyking: https://hobbyking.com/de_de/hobbyking-20a-2-4s-esc-3a-ubec.html.
Ansteuerung sieht folgendermassen aus:
#include <Servo.h>
Servo esc;
int val = 1000;
void setup()
{
esc.attach(10); // ESC pin on D10
Serial.begin(115200); // Communication with laptop
while (!Serial) {
delay(10);
}
delay(1000);
Serial.println("Ready");
}
void loop()
{
if (Serial.available()) {
String r = Serial.readStringUntil('\n');
if (r == "c") { // Calibration signal
esc.writeMicroseconds(2000);
delay(2000);
esc.writeMicroseconds(1000);
Serial.println("Finished");
}
else if (r == "q") { // Stop signal
Serial.println("Stopping");
esc.writeMicroseconds(1000);
}
else { // Throttle
val = r.toInt();
Serial.println(r);
esc.writeMicroseconds(val);
}
}
}
Unsere Anwendung erfordert sehr niedrige Geschwindigkeiten (wenige hundert rpm).
Problem:
Die Motoren werden nach kurzer Zeit (etwa 20 Sekunden) signifikant langsamer und wir konnten nicht herausfinden, warum. Spannung (gemessen mit Multimeter) blieb dauerhaft bei 12.5V. Was könnte der Grund dafür sein?
Ein Lösungsansatz wäre vielleicht die Benutzung von besseren PWM Signalen mithilfe der pwm.h library:
#include <pwm.h>
PwmOut esc(D10);
int val;
void setup() {
esc.begin(16000.0f, 0.0f);
}
void loop() {
if (Serial.available()) {
String r = Serial.readStringUntil('\n');
if (r == "c") { // Calibration
esc.pulse_perc(100);
delay(2000);
esc.pulse_perc(0);
Serial.println("Finished");
}
else if (r == "q") {
Serial.println("Stopping");
esc.pulse_perc(0);
}
else {
val = r.toInt();
Serial.println(r);
esc.pulse_perc(val);
}
}
}
Jedoch machen die Motoren keinen Wank. Sieht jemand einen Fehler hier?