Brushless ESC als RC (Licht)schalter

Wahnsinn ich danke euch vielmals. Jetzt wo ich weiß worauf ich achten muss, sehe ich die Leiterbahn auch.
Vielen Dank. Ich werde das demnächst probieren. :)
 

prima

Neuer Benutzer
Hallo,
vielleicht kann mir einer bei den Afro Esc helfen. Mit Arduino bekomme ich nicht mehr als ein dauerleuchten zusammen.
Ports hab ich auf TGY eingestellt und natürlich angepasst.
Code:
/*****************************************************/
/**************** ESC-Light **************************/
/*****************************************************/
/* Type of Board Layout */
#define TGY      //   
//#define BS      //   
//#define TGY     //   
//#define RB50A   //
//#define RB70A   //

/******************************************************/
/* Selection of switched FET                          */
/* default is common anode (low-side-FET used)        */
/* to use other direction, uncomment related line     */
#define CH1_GND
#define CH2_GND
#define CH3_GND
/******************************************************/


/*****************************************************/
//
// ***   TP   ***
//
/*****************************************************/
// insert tested ESC here
//
// HK RedBrick 20A   [url]http://www.hobbyking.com/hobbyking/store/__25112__HobbyKing_Red_Brick_20A_ESC.html[/url] // tested by Overtuner 11-2013
// Robbe Roxxy BLControl 720 // tested by Overtuner 11-2013
// HK SS Series 25-30A ESC   [url]http://www.hobbyking.com/hobbyking/store/__6460__Hobbyking_SS_Series_25_30A_ESC.html[/url] // tested by Overtuner 11-2013
/*****************************************************/
#ifdef TP
//define input pin for the RC Channel#
  #define IN1 8

//Define the Pins at which channel 1, 2 and 3 are placed
  #define OUT1_VCC 2            //Ap         
  #define OUT2_VCC 10            //Bp
  #define OUT3_VCC 9            //Cp

  #define OUT1_GND 3            //An        
  #define OUT2_GND 4            //Bn
  #define OUT3_GND 5            //Cn
#endif

/*****************************************************/
//
// ***   BS   ***
//
/*****************************************************/
// insert tested ESC here
//
// Turnigy TY-P1   [url]http://www.hobbyking.com/hobbyking/store/__17135__Turnigy_TY_P1_25Amp_HEXFET_Brushless_Speed_Controller.html[/url] // tested by Overtuner 11-2013
// 
/*****************************************************/
#ifdef BS
 //define input pin for the RC Channel#
  #define IN1 2 
  //Define the Pins at which channel 1,2 and 3 are placed
  #define OUT1_VCC 4            //Ap         
  #define OUT2_VCC A5           //Bp
  #define OUT3_VCC A3           //Cp

  #define OUT1_GND 5            //An        
  #define OUT2_GND A4           //Bn
  #define OUT3_GND 8            //Cn
#endif

/*****************************************************/
/*
 ***   TGY   ***
*/
/*****************************************************/
#ifdef TGY
 //define input pin for the RC Channel#
  #define IN1 8 
  //Define the Pins at which channel 1,2 and 3 are placed
  #define OUT1_VCC 2            //Ap         
  #define OUT2_VCC 10            //Bp
  #define OUT3_VCC 9            //Cp

  #define OUT1_GND 3            //An        
  #define OUT2_GND 4            //Bn
  #define OUT3_GND 5            //Cn
#endif

/*****************************************************/
/*
 ***   RB50A   ***
*/
/*****************************************************/
#ifdef RB50A
 //define input pin for the RC Channel#
  #define IN1 2 
  //Define the Pins at which channel 1,2 and 3 are placed
  #define OUT1_VCC 0            //Ap         
  #define OUT2_VCC 4            //Bp
  #define OUT3_VCC 5            //Cp

  #define OUT1_GND 1            //An        
  #define OUT2_GND 3            //Bn
  #define OUT3_GND 7            //Cn
#endif

/*****************************************************/
/*
 ***   RB70A   ***
*/
/*****************************************************/
#ifdef RB70A
 //define input pin for the RC Channel#
  #define IN1 2 
  //Define the Pins at which channel 1,2 and 3 are placed
  #define OUT1_VCC 1            //Ap         
  #define OUT2_VCC 4            //Bp
  #define OUT3_VCC 5            //Cp

  #define OUT1_GND 0            //An        
  #define OUT2_GND 3            //Bn
  #define OUT3_GND 7            //Cn
#endif

/*****************************************************************************************************************/
// select FET to switch - NEVER EVER CHANGE THIS, except you want to blow up your FET's or have some funny fire ;-)
/*****************************************************************************************************************/
#ifdef CH1_GND
 #define OUT1 OUT1_GND
 #else
 #define OUT1 OUT1_VCC
#endif
#ifdef CH2_GND
 #define OUT2 OUT2_GND
 #else
 #define OUT2 OUT2_VCC
#endif
#ifdef CH3_GND
 #define OUT3 OUT3_GND
 #else
 #define OUT3 OUT3_VCC
#endif    
/*****************************************************************************************************************/
/************************************************** ***************************
* 
* Copyright (c) 2013 Peter Blos 
* 
* 
* This library is free software; you can redistribute it and/or modify it 
* under the terms of the GNU Lesser General Public License as published 
* by the Free Software Foundation; either version 2 of the License, or 
* (at your option) any later version. 
* 
* This software is distributed in the hope that it will be useful, but 
* WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
* Lesser General Public License for more details. 
* 
* You should have received a copy of the GNU Lesser General Public 
* License along with this library; if not, write to the Free Software 
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
* 
************************************************** ***************************
* Version 1.0
*
* ESC Light
* Uses an Brushless ESC as light switch. For compatible ESCs see config.h.
* switches the different lights on dependent to the RC-Channel Position.
* 
* Thanks to:
*    der Frickler   for having the Idea and writing the Basic Code in AVR-GCC
*    Overtuner      for testing working ESCs and writing most of the config.h
*
*  
* 
************************************************** ***************************/

#include "config.h"

// Definitions of Switching Stick Positions
#define STICK_LOW 1000        //define the maximum Time in microseconds of the RC-Pulse, 
#define STICK_CENTER 1500     //to be recocnised as LOW or Center, 
#define STICK_HIGH 2000      //everything above is considered HIGH
#define STICK_OVERFLOW 4000

// Definition of Blinking Delays
#define STROBE_DIST 500        //timing for the Blink patterns
#define STROBE_TIME 20
#define STROBE_REPEAT 300
#define ACL_DIST 600
#define ACL_TIME 20

int STICKPOS;

void setup() {
  // define Pins as in/out - DO NOT CHANGE
  pinMode(IN1, INPUT);
  pinMode(OUT1_VCC, OUTPUT);
  pinMode(OUT2_VCC, OUTPUT);
  pinMode(OUT3_VCC, OUTPUT);
  pinMode(OUT1_GND, OUTPUT);
  pinMode(OUT2_GND, OUTPUT);
  pinMode(OUT3_GND, OUTPUT);
  // init outpins all off  - DO NOT CHANGE
  digitalWrite(OUT1_VCC , LOW);
  digitalWrite(OUT2_VCC , LOW);        
  digitalWrite(OUT3_VCC , LOW);
  digitalWrite(OUT1_GND , LOW);
  digitalWrite(OUT2_GND , LOW);        
  digitalWrite(OUT3_GND , LOW);
}


void loop() {
  // READ RC PULSE 
  STICKPOS = pulseIn(IN1,HIGH);

  // SWITCH OUT1/OUT2/OUT3 as you want your blinking sequences.


  if(STICKPOS < STICK_LOW){                //RC-Channel is in HIGH Position and default pattern when signal loss

    digitalWrite(OUT1 , LOW);
    digitalWrite(OUT2 , LOW);        
    digitalWrite(OUT3 , LOW);

  }
  else {
    if(STICKPOS < STICK_CENTER){           //RC-Channel is in Mid Position
      digitalWrite(OUT3 , LOW);
      digitalWrite(OUT1 , HIGH);
      delay(STROBE_TIME);    
      digitalWrite(OUT1 , LOW);
      delay(STROBE_REPEAT);       
      digitalWrite(OUT1 , HIGH);
      delay(STROBE_TIME);
      digitalWrite(OUT1 , LOW);
      delay(ACL_DIST);
      digitalWrite(OUT2 , HIGH);
      delay(ACL_TIME);
      digitalWrite(OUT2 , LOW);
      delay(ACL_DIST);   
    }
    else{                              //RC-Channel is in High Position

      digitalWrite(OUT3 , HIGH);
      digitalWrite(OUT1 , HIGH);
      delay(STROBE_TIME);    
      digitalWrite(OUT1 , LOW);
      delay(STROBE_REPEAT);       
      digitalWrite(OUT1 , HIGH);
      delay(STROBE_TIME);
      digitalWrite(OUT1 , LOW);
      delay(ACL_DIST);
      digitalWrite(OUT2 , HIGH);
      delay(ACL_TIME);
      digitalWrite(OUT2 , LOW);
      delay(ACL_DIST);   

    }
  };
Hier die Afro-nfet.inc
Code:
;*****************************************
;* AfroESC 3 *
;* 2012-12-02 *
;* Fuses should be lfuse=0x3f hfuse=0xca *
;*****************************************

.equ F_CPU = 16000000
.equ USE_INT0 = 0
.equ USE_I2C = 1
.equ USE_UART = 1
.equ USE_ICP = 1

.equ DEAD_LOW_NS = 300
.equ DEAD_HIGH_NS = 300
.equ MOTOR_ADVANCE = 15
.equ CHECK_HARDWARE = 1

;*********************
; PORT B definitions *
;*********************
;.equ = 7
;.equ = 6
;.equ = 5 (sck)
;.equ = 4 (miso)
;.equ = 3 (mosi)
.equ BpFET = 2 ;o
.equ CpFET = 1 ;o
.equ rcp_in = 0 ;i r/c pulse input

.equ INIT_PB = (1<<BpFET)+(1<<CpFET)
.equ DIR_PB = (1<<BpFET)+(1<<CpFET)

.equ BpFET_port = PORTB
.equ CpFET_port = PORTB

;*********************
; PORT C definitions *
;*********************
.equ mux_voltage = 7 ; ADC7 voltage input (18k from Vbat, 3.3k to gnd, 10.10V -> 1.565V at ADC7)
.equ mux_temperature = 6 ; ADC6 temperature input (3.3k from +5V, 10k NTC to gnd)
.equ i2c_clk = 5 ; ADC5/SCL
.equ i2c_data = 4 ; ADC4/SDA
.equ red_led = 3 ; o
.equ green_led = 2 ; o
.equ mux_b = 1 ; ADC1 phase input
.equ mux_a = 0 ; ADC0 phase input

.equ O_POWER = 180
.equ O_GROUND = 33

.equ INIT_PC = (1<<i2c_clk)+(1<<i2c_data)
.equ DIR_PC = 0

.MACRO RED_on
sbi DDRC, red_led
.ENDMACRO
.MACRO RED_off
cbi DDRC, red_led
.ENDMACRO
.MACRO GRN_on
sbi DDRC, green_led
.ENDMACRO
.MACRO GRN_off
cbi DDRC, green_led
.ENDMACRO

;*********************
; PORT D definitions *
;*********************
;.equ mux_c = 7 (comparator AN1)
;.equ sense_star = 6 (comparator AN0)
.equ CnFET = 5
.equ BnFET = 4
.equ AnFET = 3
.equ ApFET = 2
.equ txd = 1
.equ rxd = 0

.equ INIT_PD = (1<<ApFET)+(1<<txd)
.equ DIR_PD = (1<<AnFET)+(1<<BnFET)+(1<<CnFET)+(1<<ApFET)+(1<<txd)

.equ AnFET_port = PORTD
.equ BnFET_port = PORTD
.equ CnFET_port = PORTD
.equ ApFET_port = PORTD
Also hin und her wechseln der Firmware mit dem kkMulticopter Flash Tool und dem Usb Programmer von Afro funktioniert super. Kann auch immer wieder auf die Afro n-fet zurück wechseln. Leider bekomme ich mit ESC-Lightduino nur ein dauerleuchten zusammen. Ports müssten eigentlich passen. Vielleicht hat jemand eine Hex mit diesem Einstellungen zum probieren.
2 //Ap
10 //Bp
9 //Cp

3 //An
4 //Bn
5 //Cn
8 //RC Channel
Danke im voraus
gruss Werner
 

pete1990

Erfahrener Benutzer
Hey,

das sieht soweit eigentlich richtig aus. Hast du in der Arduino IDE auch "Arduino NG or older w/ Atmega8" als Board ausgewählt vor dem kompilieren? Wenn nicht mach das und versuchs nochmal. Ich kanns dir auch kompilieren, aber ichs kanns nicht testen, da nicht keinen solchen ESC da habe. Sag bescheid ob das der Fehler war, was anderes fällt mir spontan auch nicht ein. Und immer schön mit strombegrenzung testen...

Grüße
 

prima

Neuer Benutzer
Hey Peter,

ja hab ich vor dem kompilieren eingestellt.RCin scheint zu funktionieren. Auf Low ist ein dauerleuchten und auf Center und High bekomme ich so ein knattern auf dem Netzteil. Vielleicht kann ich von dir eine Hex probieren.

Gruß Werner
 
Zuletzt bearbeitet:

pete1990

Erfahrener Benutzer
hmm, das klingt irgendwie nach Netzteil geht manchmal in die Strombegrenzung. Vielleicht stimmt doch was mit den Ports nicht. Hier sind auf jeden Fall mal 2 Hexen von mir, ohne Gewähr. Wenn das nicht geht, können wir gerne mal über Skype oder so auf die Fehlersuche gehen, meld dich dann per PN. Den bekommen wir schon zum laufen...
 

Anhänge

Hey,

auch von mir noch die Rückmeldung. Es hat funktioniert :)
Ich hab die abgerissene Signalleitung am Widerstand angelötet, bzw einen dünnen Draht mit eingelötet und mit reichlich Sekundenkleber und zusätzlich Heißkleber fixiert. :D
Vielen Dank für eure Unterstützung. Jetzt blinkt mein Quad mit den HK LEDs: http://hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=22387
Sind entgegen der Beschreibung auch nur 10 mm hoch und passen daher prima an Aluausleger. Direkt an 3S als Blitzer sehr hell.
 

-ghost-

Erfahrener Benutzer
Hallo,


ich bräuchte eure Hilfe bei der Umsetzung eines Futterboot-Projektes.

Und zwar würde ich gerne 2x Futterluke und 2x Haken-Rig, sowie 1x dimmbare Beleuchtung, und 1x Reserve mit 2 Brushles-ESC (F10a) schalten können.

Allerdings hab ich bisher keine für mich passende FW gefunden, die das nachfolgende realisieren würde:

Regler 1:

-100 % = Futterluke links (Schaltung für 2 Sekunden an, danach 10 Sekunden aus)
- 80 % = Haken-Rig links (Schaltung für 2 Sekunden an, danach 10 Sekunden aus)
- 60 % = Reserve (Dauer an)


Regler 2:

- 40 % = Futterluke rechts (Schaltung für 2 Sekunden an, danach 10 Sekunden aus)
- 20 % = Haken-Rig rechts (Schaltung für 2 Sekunden an, danach 10 Sekunden aus)
+ 10 bis + 90 = Licht permanent an / Helligkeit von 10 – 100%
+ 100 % Licht auf 100 % Helligkeit, Blinken mit 2-3 Hz

Kann mir jemand für diese Funktionen die beiden FWs bereitstellen/programmieren, oder mir Schritt für Schritt erklären, wie ich das selbst machen kann?

Falls benötigt, hätte ich sogar einen Linux-Rechner im Zugriff mit Debian 7.5

Danke!
-ghost-
 
Zuletzt bearbeitet:

pete1990

Erfahrener Benutzer
Kann mir jemand erklären, was ich zur Erzeugung der FW-Dateien benötige und evtl. auch wo ich das "Rohfile" herkriege?

-ghost-
Hier gibt es den Quelltext: http://fpv-community.de/showthread....Licht)schalter&p=493263&viewfull=1#post493263

Für Regler 1 sind nur kleinere Anpassungen notwenig, für Regler 2 dagegen müsstest du erstmal noch eine vierte Schalterstellung programmieren.

Bei Regler 1 musst du nur die Schaltschwellen anpassen und dir als Blinkmuster deine ON/OFF zeiten an den jeweiligen Kanälen setzen. Schau dir den Code einfach mal an, vielleicht steigst du ja durch.

grüße
Peter
 

MussWeg

Neuer Benutzer
Hallo Leute, ich bin am verzweifeln =) wie bekomm ich das eigene pattern auf meinen 6a hobbyking regler drauf?
nach stundenlangem lesen und 2 toten esc´s komm ich nicht weiter...
Danke im Voraus

Das Frickler hex file hab ich schon probiert das geht mit dem multicopter tool problemlos zum raufspielen, nur ist es nicht die blinkfrequenz die ich gern hätt. Deswegen die GUI mit dem pattern.
 

tomm

Erfahrener Benutzer
wo hängt es denn genau?
im vorletzten post hat peter ja nochmal den quelltext verlinkt und im zipfile ist ja auch das tutorial enthalten.
scheitert es am kompilieren der hex oder am generieren eines individuellen blinkmusters und anpassen im sourcecode?
wenn du dein problem etwas einkreist kann ich vielleicht helfen, hab's schließlich auch hinbekommen mit meinen rudimentären kenntnissen und der hilfe aus dem thread :D
grüsse
tom
 
Habe mich auch mal an dem Projekt versucht. Habe noch ein HK 30A Blue ESC rumliegen. Da habe ich aber frusrtiert aufgegeben die Pins mit dem USB ASP zu verbinden.

Dann habe ich noch ein Afro ESC von Hobbyking, aber da geht es mir wie "prima": Ich bekomme nur ein Leuchten der LEDs an allen Ausgängen.

Am liebsten wäre es mir, wenn ich es mit dem Afro ESC hinbekommen würde. Die haben schon einen Bootloader im Auslieferungszustand, sodass man sofort mit dem Turnigy USB Linker flashen kann.

Ich hoffe ihr könnt mir da weiterhelfen.

P.S.: Mit den HEX-files von pete1990 ging es leider auch nicht. Auch da bekomme ich an allen drei Ausgängen ein Dauerleuchten.
 

pete1990

Erfahrener Benutzer
Puhh, Ich sehe da so spontan keinen Fehler. Hat denn der Afro ESC überhaupt nen Atmega8 als Prozessor?

Die Pins die in der SimonK Datei stehen müssen noch von der AVR Notation in die Arduino Notation umgemappt werden. Vielleicht liegt da irgendwo noch ein Fehler versteckt. Ich tue mich auch immer schwer einen Fehler zu finden wenn ichs nicht testen kann...

wenn du es nochmal überprüfen willst, hier ist die Zuordnung



z.B.
PortD 2 entspricht also dem Arduino Pin 2 oder PortB 2 entspricht Arduino Pin 10

Das muss man jetzt halt mit der Afro_nfet.inc abgleichen und in die EscLight config schreiben.

überprüf das bitte nochmals, wie gesagt vielleicht hab ich nur irgendwo was übersehen...

grüße,
Peter
 
Danke für die schnelle Antwort. Kenne mich leider nicht so aus mit dem Code.
Ich verstehe zum Beispiel nicht wie man auf Cp (Pin 9)und Bp (Pin 10)kommt.
Diese sind an PortB (?) angeschlossen und da jeweils an Pin 1 und Pin 2.
Woher weiß ich dass PortB Pin 1 = Pin 9 ist?

Schaue aber ob ich vlt doch noch was finde.

Edit:
Habe mir gerade deine Abbildung nochmal genauer angeschaut. Jetzt ist mir klar, wie man auf die Pins kommt. Danke!
Es ist ein ATmega8 verbaut, das sollte also passen.


Edit 2:
Habe mir bei Ebay heute mittag folgenden Regler gekauft:
http://www.hobbyking.com/hobbyking/store/uh_viewitem.asp?idproduct=21247

Frickler hat soweit ich weiß geschrieben, dass seine Dateien mit der 6A und der 10A Variante funktionieren sollte.
Welche #define muss ich denn dann in Lightduino auswählen, damit die Pin-Belegung passt?
 
Zuletzt bearbeitet:
Habe die Strombegrenzung immer an.

Gerade habe ich versucht den HK 30A Blue Series nochmal zu verbinden. Erfolgreich!
Habe dann das Hex-File mit der entsprechenden Define generiert und geflasht. Das hat soweit geklappt.

Nur habe ich jetzt an Ausgang 1 und 3 gar nichts anliegen und an Ausgang 2 ein Dauerleuchten.
Bei dem Regler kann ich allerdings nicht ausschließen dass er einen Defekt hat, deshalb warte ich jetzt auch auf den Hk UBEC 10A Regler und teste dann nochmal.

Vielen Dank schonmal für die Hilfe!
 
So, heute kam der Regler an (HobbyKing UBEC 10A; F10).

Kann jetzt meine eigene Software nach belieben anpassen und flashen. In der Hinsicht bin ich absolut zufrieden.

Nun wollte ich den Bootloader aufspielen, um in Zukunft über meinen Turnigy USB linker flashen zu können.
Also habe ich mit den angelöteten Pins die ESC_Lightduino firmware geflasht. Bekam dann auch eine entsprechende Meldung, dass alles unktioniert hat.

Nur kann ich nicht über den USB Linker flashen. Bekomme immer eine timeout-Meldung.

Habe am USB Linker den Servostecker angeschlossen und dann geflasht. Als das nicht ging, habe ich noch das Netzteil angeschaltet, weil ich dachte evtl reicht der Strom des USB Anschlusses nicht. Das hat aber auch nichts gebracht.

Ich hoffe es kann mir jemand von euch weiterhelfen.

Edit:
Habe es doch noch hinbekommen. Ich habe einmal die SimonK Firmware mit Bootlaoder enable geflasht. Zusätzlich habe ich noch das + Kabel vom Regler zum USB Linker entfernt (per Verlängerungskabel). Sietdem geht es.

Bin nun rundum zufrieden!

Vielen Dank für die Hilfe aus dem Forum und generell für dieses Projekt!
 
Zuletzt bearbeitet:

Kyrill

Neuer Benutzer
Pinbelegung seitliche Programmierpins am HK 10A BEC

Kann bitte jemand die Pinbelegung der Programmierpins am HK 10A UBEC Regler bezeichnen? Ich habs irgendwo gelesen, aber ich find das Bild bzw. den Beitrag nicht wieder. Ich meine den Regler, wo die 6 Anschlüsse auf der Seite des Motorausgangs liegen.
 
Zuletzt bearbeitet:
FPV1

Banggood

Oben Unten