Jump to content
Renchtaler

Ein billiger Hobbyking ESC mit Arduino

Recommended Posts

Moin.

Ich habe hier einen günstigen Hobbyking ESC und einen Arduino, den ich per akkubetriebenen Arduino und W-LAN ansteuere. Ist es möglich per Software eine regenerative Bremse hinzuzufügen? 
Bei dem ESC gibt es zwar eine Bremse, aber die haut mit 100% rein. Hier ein Link zum ESC

Gruß 

Renchtaler

Share this post


Link to post
Share on other sites

Klappt leider nicht da die "bremseigenschaften" auf dem Esc selber hinterlegt sind man müßte also den regles flashen. 

Share this post


Link to post
Share on other sites

Müßte man testen also bei Benutzung der bremse den pwm Wert mit einer frequenz k. A. 30hz von bremsen auf Freilauf wechseln lassen. Dann sollte man mit der frequenz die bremsstärke regeln können. Interessantes Projekt schreib mal ob das alles so klappt. 

Share this post


Link to post
Share on other sites

Erstmal mal muss ich meine Motorhalterung fertig bekommen^^ Die fräst gerade ein Bekannter von mir. Müsste ich mal tatsächlich mal testen. Ich kann das mal nächste Woche oder sogar noch diese Woche testen. Mal schauen.

Share this post


Link to post
Share on other sites
Posted (edited)

Der ESC empfängt PWM Signale von 1000 us bis 2000 us. Ich habe jetzt erstmal mir eine delay function gebastelt. Hier der erste Snippet.
 

/*
  ESC_Ramp
    Based on the Sweep example in the Servo library, this allow a ramp up and down of the ESC speed based on the Min and Max values.
    The Min and Max speed are defined so you can change them at one location and it will be used in the ramp as well.
*/
#include <ESC.h>

#define SPEED_MIN (1000) // Set the Minimum Speed in microseconds
#define SPEED_MAX (2000)// Set the Minimum Speed in microseconds                                           
ESC myESC (2, SPEED_MIN, SPEED_MAX, 500);// ESC_Name (ESC PIN, Minimum Value, Maximum Value, Default Speed, Arm Value)
int deadmen= 0, oESC, cruiseButton = 1, pot = A0, val, curval = 1000;// Variable for the speed sent to the ESC
void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);// LED Visual Output
  pinMode(pot, INPUT);
  pinMode(cruiseButton, INPUT);
  myESC.arm();// Send the Arm value so the ESC will be ready to take commands
  digitalWrite(LED_BUILTIN, HIGH);// LED High Once Armed
  delay (5000);// Wait for a while
  Serial.println("init finished");
}
void loop() {
  Serial.println(val, DEC);
  val = map(val, 800, 1023, 1000, 2000);//map potentiomater value (0-1024 to 1000-2000 micro seconds);
  if (digitalRead(deadmen) == LOW){
    if (digitalRead(cruiseButton) == LOW) {//check if cruise button is pressed, if it is dont modify the curval
      // do nothing to curval
    } 
    if (curval < val) {  //check if curval is less than potentiometers mapped value
      curval = curval + 8; // if it is less, add 5 to the curval
    } else if (curval > val) { //check if curval is more than potentiometers mapped value
      curval = curval - 10; //if it is more, remove 5 from the curval
    }else if (curval > 1000) { //if deadmans switch isnt turned and curval is more than 1000ms (throttle down value)
    curval = curval - 10; //remove 5 from curval to start slowing down if above condition is true
  }
  }
  Serial.println(curval);
  myESC.speed(curval); //write microseconds to esc
  delay(50); //delay the loop 50ms
}

 

Edited by Renchtaler

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×