Anzeige 
RC-Network Hangflugführer
Seite 1 von 5 12345 LetzteLetzte
Ergebnis 1 bis 15 von 72

Thema: Software und Hardware für Solarflieger

  1. #1
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard Software und Hardware für Solarflieger

    Moin Freunde der Sonne

    Da es im Solarflieger-Thread die Details was so auf Platinchen drauf ist, und wie sie funktionieren, die Sache nicht übersichtlicher macht, mache ich dafür mal ein eigenen Thread auf.

    Der Ursprung etwa war etwa hier, auch auf den Seiten davor ging es um Elektronik, evtl mag ein Mod die Beiträge hier rüberschieben, wäre sehr nett
    http://www.rc-network.de/forum/showt...=1#post4666023
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  2. #2
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard

    Ich fange hier mal an.

    Im Moment bastel ich an einen "VolksMPP", es soll irgendetwas möglichst einfaches, aber auch leichtgewichtiges werden, das vor dem Regler die Spannung des Solarpanels fix hällt.

    Möglich wäre ein Attiny85, in Gesprächen ergibt sich immer eine geringere Berührungsangst, (ja so ein IC anlöten schaff ich schon...).

    Ich will den Code mal kmpl. neu aufbauen, gerade grübel ich über Soft-PWM nach, zwei Varianten habe ich zusammengebastelt, funzen beide auch, weiß aber nicht welche (oder andere) die bessere sein sollte. Der At85 hat ja nur einen 8Bit Timer für die PWM, so das man nur per Soft-PWM aufstocken kann. Hier fehlt es noch an einer guten Lösung.

    Die beiden Varianten sind in der ISP, bei der einen sind die drei Zeilen auskommentiert, die andere gerade aktiv, und ist angelehnt an: http://www.technoblogy.com/show?1NGL

    Code:
    #define  F_CPU 8000000UL
    #include <util/delay.h>
    #include <avr/io.h>
    #include <avr/interrupt.h> 
    volatile uint8_t  count  = 0;
    volatile uint8_t  PWM_L  = 0;
    volatile uint8_t  PWM_H  = 0;
    volatile uint16_t PWMi   = 0;
    volatile uint16_t PWM    = 0;
    
    int main(void){
      DDRB   |= 0b00000010;
      TCCR1   = 0b01010100;
      TIMSK   = 0b00000100;
      sei();
    
      
      PWM   = 1500;
      
      PWM_L = (uint8_t)(PWM&255);
      PWM_H = (uint8_t)(PWM >>8)*32;  
      
    while(1){}} 
      
    ISR (TIM1_OVF_vect){
     
    //Variante 1
    //  if (count >  PWM_H) {OCR1A = 0;     }  else {
    //  if (count == PWM_H) {OCR1A = PWM_L; }  else {
    //  if (count <  PWM_H) {OCR1A = 255;   }  }}
        
    //Variante 2
      if (count == 0)                 PWMi = PWM;
      if (PWMi >= 256) {OCR1A = 255;  PWMi = PWMi - 256; }
      else             {OCR1A = PWMi; PWMi = 0; }
      
    //Variantenende
    
      count = count + 32;
    }
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  3. #3
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard

    Der andere Kandidat wäre der USB-Tiny-ISB, eigentlich ein ISP, aber die Anschlüsse reichen.
    Er hat einen Attiny44, 12MHz was uns besonders beim ADC entgegenkommt, und die Timer passen perfekt 8(12) + 16Bit
    Man bekommt die Platinchen für ca. 1,50€ in der Bucht, taugen auch als ISP, um einen zu bespielen kann man einfach zwei "stapeln".





    Ich habe einen PPM Passthrough schon mal fertig gemacht. 50Hz RC-PPM geht rein, und 500Hz PPM geht raus, stellt man den PWM Timer eins höher (x8) dann ist es OneShot.
    Sicherungen im ISR u.s.w. fehlen noch....

    .include "tn44adef.inc"

    .def ZERO = r0

    .org 0x0000
    rjmp main
    .org 0x0002
    rjmp PCINT0_ISR

    main:
    ldi r16, low(RAMEND)
    out SPL, r16
    ldi r16, high(RAMEND)
    out SPH, r16
    ldi r16, 0b00000000
    mov ZERO, r16
    ;--------------- Port Setup ----------------
    ldi r16, 0b00100000
    out DDRA, r16
    ldi r16, 0b00010000
    out PORTA, r16
    ;--------------- Read RC -------------------
    ldi r16, 0b00010000
    out GIMSK, r16
    ldi r16, 0b00010000
    out PCMSK0, r16
    ldi r16, 0b00000000
    out TCCR0A, r16
    ldi r16, 0b00000010
    out TCCR0B, r16
    ldi r16, 0b00000100
    out USICR, r16
    ;------------- Write PWM -------------
    ldi r16, 0b00100010
    out TCCR1A, r16
    ldi r16, 0b00011010
    out TCCR1B, r16
    ldi r16, 0b00001011 ; ICR1 = 3000; 1011 10111000
    out ICR1H, r16
    ldi r16, 0b10111000
    out ICR1L, r16
    sei

    loop:
    rjmp loop


    PCINT0_ISR:
    sbis PINA, PINA4
    rjmp falling_edge
    ldi r16, 0b00000010
    out TCCR0B, r16
    out TCNT0, ZERO
    out USISR, ZERO
    reti

    falling_edge:
    out TCCR0B, ZERO
    in r17, TCNT0
    in r16, USISR
    cbr r16, 0b11110000
    out OCR1BL, r17
    out OCR1BH, r16
    reti

    edit
    C Version, gefrickel in der ISR, im USISR sitzen in den unteren 4Bit die H-Byte Daten des 12Bit Zählers, in den oberen 4Bit wehen da Fähnchen. im ASM habe ich die einfach per cbr r16, 0b11110000 gelöscht, in der C-Version durch subtrahieren, in der Hoffnung, das sie niemals anders aufpoppen (vorsichtshalber den Timer vorher gestoppt )
    Code:
    #define  F_CPU 12000000UL
    #include <util/delay.h>
    #include <avr/io.h>
    #include <avr/interrupt.h>   
    
    int main(void){  
    //-------------  Read ADC -------------
      //ADMUX   = 0b10000110;   //  Read ADC6 
      //ADCSRA  = 0b11000111;   //  Prescale 1/128 188KHz 139uS SlowMode // 
      //ADCSRA  = 0b11000110;   //  Prescale 1/64   94KHz  69uS FastMode
    //--------------- Read RC ------------------- 
      PORTA  |= 0b00010000;     //  PA4 is RC Input 
      GIMSK   = 0b00010000;     //  PCINT activ
      PCMSK0  = 0b00010000;     //  PCINT is
      TCCR0A  = 0b00000000;     //  Timer ON
      TCCR0B  = 0b00000010;     //  010 Prescale 1/8 2MS  
      USICR   = 0b00000100;     //  count is 192-207 (4Bit 16count    
    //-------------  Write PWM -------------
      DDRA   |= 0b00100000;     //  Write ESC is PA                 
      TCCR1A  = 0b00100010;     //  PWM  Mode 15      
      TCCR1B  = 0b00011010;     //  Prescale 1/8 Channel-B // 001 1/1 ONESHOT
      ICR1    = 3000;
    
      sei(); 
    
    while(1){}}
      
    ISR(PCINT0_vect) { 
    if    (PINA   & (1<<PA4))
    {       TCCR0B  = 0b00000010;
            TCNT0   = 0b00000000; 
            USISR   = 0b00000000;     
    }else{  TCCR0B  = 0b00000000;    
            OCR1BH  = 
            USISR   - 0b11000000;
            OCR1BL  = TCNT0;
    }     }
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  4. #4
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard

    Grad mal nen halbes Stündchen Zeit gehabt, das Chaos im letztem Codemal aufgeräumt.
    -USI Fähnchen ordentlich gelöscht (da war der C-Knoten im Hirn, hoffe das passt auch so)
    -Timer1 auf prescale 1/1 statt 1/8 dadurch höhere schreibare Auflösung (aber kein Oneshot)
    -Die Routine in der Loop mit Timer1 syncronisiert (stumpf per abfragen der OVF Flag, wobei ich nicht verstehe, wieso nach 1 fragen, sowie per 1 löschen ??? (Datenblatt))
    -ISR nach oben verlegt, damit es nachher auch noch SEXY aussieht
    -Code auch auf Arduino-IDE tauglichkeit getestet (Spence-Code At44 12MHz funzt)

    Anregungen und Kritik sind gerne willkommen (Denkfehler?)


    Code:
    #define  F_CPU 12000000UL
    #include <util/delay.h>
    #include <avr/io.h>
    #include <avr/interrupt.h>   
    
    ISR(PCINT0_vect) { 
    if      (PINA   &   (1<<PA4))       //  Read RC rising edge
    {       TCCR0B  =   0b00000010;     //  Read RC start Timer
            TCNT0   =   0b00000000;     //  Read RC zero Timer
            USISR   =   0b00000000;     //  Read RC zero Timer
    }else{  TCCR0B  =   0b00000000;     //  Read RC falling edge, stop Timer       
            OCR1AH  =                   //  Read RC store High-Byte
            USISR   &  ~0b11110000;     //  Read RC Delete Flags
            OCR1AL  =   TCNT0;          //  Read RC store Low-Byte
    }}  
    int main(void){ 
    //      ADMUX   =   0b10000110;     //  Read ADC Read ADC6 
    //      ADCSRA  =   0b11000111;     //  Read ADC Prescale 1/128 188KHz 139uS SlowMode 
    //      ADCSRA  =   0b11000110;     //  Read ADC Prescale 1/64   94KHz  69uS FastMode   
            PORTA  |=   0b00010000;     //  Read RC PA4 is RC Input 
            GIMSK   =   0b00010000;     //  Read RC PCINT activ
            PCMSK0  =   0b00010000;     //  Read RC PCINT is
            TCCR0A  =   0b00000000;     //  Read RC Timer ON
            TCCR0B  =   0b00000010;     //  Read RC Prescale 1/8  
            USICR   =   0b00000100;     //  Read RC count 192-207 (4Bit)       
            DDRA   |=   0b00100000;     //  Write PWM Write ESC is PA                 
            TCCR1A  =   0b00100010;     //  Write PWM PWM  Mode 15      
            TCCR1B  =   0b00011001;     //  Write PWM Prescale 1/8 Channel-B // 001 1/1 ONESHOT           
            ICR1H   =   0b01011101;     //  Write PWM ICR-Top 24000 (2000mS)
            ICR1L   =   0b11000000;     //  Write PWM ICR-Top 24000 (2000mS)  
            OCR1BH  =   0b00110011;     //  Start ESC 13200 (1100mS)
            OCR1BL  =   0b10010000;     //  Start ESC 13200 (1100mS)
            sei(); 
    
    while(1){
        if  (TIFR1  & (1<<TOV1)){       // sync with PWM-Timer1 
            TIFR1  |= (1<<TOV1) ;       // OVF1 Flag löschen
            OCR1B   = OCR1A << 3;       // Read RC(2000) zu Write PWM (24000)
      }   
    }}
    
    
    //  ppm mS  Read Write  
    //  1000mS  1500 8800
    //  1100mS  1650 13200
    //  1500mS  2250 18000 
    //  1900mS  2850 22800
    //  2000mS  3000 24000
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  5. #5
    User Avatar von derjuwi
    Registriert seit
    15.08.2005
    Ort
    Hamburg
    Beiträge
    457
    Daumen erhalten
    8
    Daumen vergeben
    1
    0 Nicht erlaubt!

    Standard

    Holger, das ist nutzlos und unverstaendlich so. Bitte Kommentiere und beschreibe was du machst als kurzen Text + Warum in den Zeilenkommentaren.
    Dein derzeitiger Programmcode ist fuer den Muelleimer, das kann keiner verwenden. Waere doch schade um deine Muehe?

    Gruesse Julian
    Like it!

  6. #6
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard

    Moin Julian
    Meinst Du das so? (ist ja fast mehr Arbeit als der Code an sich)

    edit, Kommentare zwischen den Zeilen machte es für mich eher unübersichtlicher, da mein Schleppi-Schirm nicht riesig ist, und auch eher breit ist statt hoch, besser rechts daneben, weil dann sieht man mehr Code am Stück

    Code:
    #define  F_CPU 12000000UL
    #include <util/delay.h>
    #include <avr/io.h>
    #include <avr/interrupt.h>   
    
    ISR(PCINT0_vect){                 //  Interuptroutine zum Auslesen des Empfängers
    if      (PINA   &   (1<<PA4))     //  Wenn die eingehende Flanke vom RC-Signal steigend...
    {       TCNT0   =   0b00000000;   //    dann wird Timer0 (L_Byte) genullt,
            USISR   =   0b00000000;   //    der Timer-USI (H_Byte) wird genullt,
            TCCR0B  =   0b00000010;   //    und der Timer0/USI wird gestartet.
    }else{  TCCR0B  =   0b00000000;   //  Ansonsten haben wir eine fallende Flanke, und Timer 0 wird getoppt.       
            OCR1AH  =                 //    In OCR1AH werden die unteren 4Bit des USI-Timers als H_Byte zwischengespeichert
            USISR   &  ~0b11110000;   //    hierzu müssen die oberen 4Bit (Flags) gelöscht werden.
            OCR1AL  =   TCNT0;        //    In OCR1AL wird Timer0-Wert als L_Byte zwischengespeichert.
    }}  
    
    int main(void){    
    
    //      ADMUX   =   0b10000110;   //  Read ADC  |  
    //      ADCSRA  =   0b11000110;   //  Read ADC  | Prescale 1/64   188KHz  69uS
    
            PORTA  |=   0b00010000;   //  Read RC   | Pullup aktiviert für PA4 als Eingang für den Empfänger
            GIMSK   =   0b00010000;   //  Read RC   | Pinchance-Interupt wird aktiviert
            PCMSK0  =   0b00010000;   //  Read RC   | Pinchance-Interupt Pin ist PA4 (PCINT4)
            TCCR0A  =   0b00000000;   //  Read RC   | Normaler Timer-Mode (keine PWM)
            TCCR0B  =   0b00000010;   //  Read RC   | Prescale 1/8 ergibt saublöde 1,5 Steps pro mS
            USICR   =   0b00000100;   //  Read RC   | Timer0 wird per USI-Timers auf 12Bit erweitert (Datenblatt 14.4.3)
               
            DDRA   |=   0b00100000;   //  Write PPM | Regler wird an PA5 angeschlossen                  
            TCCR1A  =   0b00100010;   //  Write PPM | Fast PWM Mode 14, PWM-Channel B (OFFEN !!!)     
            TCCR1B  =   0b00011001;   //  Write PPM | Prescale 1/1, der Timer läuft mit 12MHz         
            ICR1H   =   0b01011101;   //  Write PPM | ICR-Top 24000 entspricht 2000mS
            ICR1L   =   0b11000000;   //  Write PPM | ICR-Top 24000 entspricht 2000mS 
    
            OCR1BH  =   0b00110011;   //  init ESC  | Regler-Leerlauf mit 13200 entspricht 1100mS
            OCR1BL  =   0b10010000;   //  init ESC  | Regler-Leerlauf mit 13200 entspricht 1100mS
            _delay_ms(2500);          //  init ESC  | Kurz warten bis der Regler initialisiert ist.    
            sei(); 
    
    while(1){
      if (TIFR1  &  (1<<TOV1)){       // Loop syncronisieren per OVF-Flag vom Regler Timer1, Frequenz: 500Hz(2mS)
          TIFR1  |= (1<<TOV1) ;       // Flag wird manuel gelöscht, da ohne ISR keine aut. Löschung.
              
    // RC-Wert wird testweise an den Ausgang umgeleitet, RC 0-3000 entspricht PPM 0-24000, darum / 8 (<<3) geteilt:
    // Das ungenutzte 16Bit Register OCR1A wird für die RC-Signale zweckentfremdet, 
    // da es auch in in L+H 8Bit ansprechbar ist (OCR1AL OCR1AH). 
    
        OCR1B = OCR1A << 3;       
      }
    }}
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  7. #7
    User Avatar von derjuwi
    Registriert seit
    15.08.2005
    Ort
    Hamburg
    Beiträge
    457
    Daumen erhalten
    8
    Daumen vergeben
    1
    0 Nicht erlaubt!

    Standard

    Viel Besser. Zu gut fehlt nocht die Beachtung der "Warum" Regel. Warum machst du etwas, nicht was du machst soll kommentiert sein (wenngleich bei dem Registergeschiebe auch das WAS interessant und sinnvoll ist.

    Und man schreibt am Beginn eines Programmes einen Header mit Autor, Datum und Zweck der Software.

    GITHUB!

    Und ja, man rechnet 20% der Zeit fuers programmieren, 50% fuer die Fehlersuche und 30% fuer die Dokumentation.

    Gruesse Julian
    Like it!

  8. #8
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard

    Ich finde dieses Grau auf Grau sehr unleserlich, hatte vorhin mal einen Screenshot gemacht. Ich nutze ja nur einen Texteditor (Geany), makefile und die übliche toolchain (avr-gcc, avrdude, avra u.s.w.)

    In bunt sieht das dann doch wesentlich übersichtlicher aus:
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Bildschirmfoto zu 2018-11-07 09-46-50.png 
Hits:	12 
Größe:	199,9 KB 
ID:	2040976

    Aber erstmal das PPM Passthrough komplettieren,.... Watchdog u.s,w, kommen noch,

    Gerade ringe ich noch innerlich mit mir, als Alternative den internen On-Chip Tempschätzer für die ext-Tempsensorverweigerer zu nutzen. Den müsste man vor dem einlernen erstmal "warmlaufen" lassen, und viel mehr als die Jahreszeit wird der nicht einschätzen, aber besser als nichts. Auf der anderen Seite, eine Verlockung den externen einzusparen ?
    LM35DZ ausreichend ? (Habe den derzeit auf der Rumpfnase direkt in der Sonne statt an den Zellen, ist nicht gut, aber ausreichend, meine ich).
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  9. #9
    User
    Registriert seit
    15.04.2011
    Ort
    München
    Beiträge
    31
    Daumen erhalten
    2
    Daumen vergeben
    0
    0 Nicht erlaubt!

    Standard

    Hallo Holger,

    wenn ich das auf einen atmega328 spielen möchte, dann muss ich nur F_CPU anpassen oder?

    ich hab das nicht testen können, aber gibts denn auch Failsave?
    Was passiert wenn PWM-IN abgezogen wird oder einem Wackler hat?

    Was spräche Hardwäre-mäßig gegen einen Ardunio Pro Mini?
    kostet auch nicht viel und hätte mehrer Pins und mehr Möglichkeiten.

    Ps: würde mich auch über ein Github-Projekt freuen.

    gruß Maccl
    Like it!

  10. #10
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard

    Hi Maccl

    Dafür soll der Watchdog noch mit rein. Das ist eigentlich auch nur ein einfacher Timer. Der wird dann bei jedem RC-Puls zurückgesetzt, falls nicht, läuft der in einer voreingestellten Zeit über, und kann was ausführen (z.B. den Prozessor zurücksetzen, oder eine ISR ausführen, in der man den Motor abstellt).

    Der Code rennt so leider nicht auf einem Arduino, dafür ist der zu Hardware-Nah.
    Für das kleine Attiny-Board sprach, das
    Mir ist es an sich egal, welches Board man nimmt, mir geht es darum, etwas zu basteln, was nachher einfach nachzubasteln ist (für mich selber fräse ich mir meine Platinen). Für das kleine Attiny-Board sprach, das es relativ klein, und dazu unglaublich billig ist (1,5€ inkl Porto).
    https://www.ebay.de/itm/Mico-USB-Tin...zD0:rk:13:pf:0
    Optional kann man noch das vordere Drittel mit der USB-Buchse wegsägen, dann wiegt es unter 1g.
    Leider muss man da aber auch an den Bootloader drann, was aber supereinfach ist, indem man einfach zwei per Stiftleiste übereinandersteckt, und das Eine mit dem anderem bespielt. danach gehen alle Updates über das Servokabel.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	photo_2018-11-08_14-10-28.jpg 
Hits:	11 
Größe:	44,5 KB 
ID:	2041431





    Bei den Arduinoboards ist der Vorteil, das sie ja quasi gebrauchsfertig sind, für die Nachbastler sollte es dann aber was mit USB sein ? (ansonsten wäre wieder das Thema Bootloader) 8MHz (3,3V) wäre Telemetriefreundlicher.

    USB + 3,3V gibt es glaube nur die kleinen Boards mit dem 32u4 ? (Leonardo, Pololu A-Star...)

    Die 32u4 sind ja mit reichlich Timern ausgestattet, mit der USB-Stabilität hatte ich bisher wenig Glück.


    Mir ist es an sich egal, welches Board, nur müsst man sich auf eines einigen, und dann aber dabei bleiben.

    Im Bild,
    Arduino-Nano 5V 16MHz, Atmega328p (2x8 + 1x16Bit Timer / 1xUart)
    Mini 3,3V/ 8 Mhz, Atmega328p (2x8 + 1x16Bit Timer / 1xUart)
    Leonardo 8MHz 3,3V, Atmega32u4 (2x8 + 1x10 + 2x16Bit Timer / 2xUart)
    USBTiny 12MHz 3,3-5V (1x12 Bit Counter + 1x16 Bit Timer)
    attiny85 auf DIp-Adapterplatine. (1x12 Bit Counter + 1x8 Bit Timer)


    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	photo_2018-11-08_13-50-15.jpg 
Hits:	10 
Größe:	79,9 KB 
ID:	2041427

    GITHUB, sind da nicht Dieselben Nasen wie bei diesem Microcontroller-Forum unterwegs ? (Umgangsformen....)
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  11. #11
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard

    Andere Alternative wäre ein FlightController, da gibt es viele, nahezu alle haben einen STM32 Prozessor drauf (Alles wieder von vorn) , aber dafür auch gleich die Sensorik, Spannung sowieso, meist ein kleines SBEC, BEschleunigungs und Lage-Sensoren, und einige auch Stromsensoren.
    Denke aber das es für viele komplizierter wird als mit dem AVR Boards

    Aktuell:
    PicoBLX, nicht das kleinste mit 2,7g, dafür bekommt man ihn unter 10€
    https://www.ebay.de/itm/Newest-PIKO-...-/152601931356


    oder Racewhoop, 1,7g, dafür um die 30€
    https://www.amainhobbies.com/furious...0178-s/p618039
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  12. #12
    User Avatar von Holger Lambertus
    Registriert seit
    11.04.2002
    Ort
    31547 Rehburg
    Beiträge
    1.616
    Blog-Einträge
    3
    Daumen erhalten
    116
    Daumen vergeben
    79
    0 Nicht erlaubt!

    Standard

    Hab mal ein bissl mit dem 32u4 gespielt, zickt etwas rumm, musste nur ca 20x mal den Bootloader draufladen, jedesmal wenns ein nicht-Arduino-Code war, war der weg (Da muss erstmal Jugend-forscht bei)

    fix mal nen PPM-Passthrougt gebaut, Kommentarlos, das funzt sonst recht gut, purer Luxus
    Code:
    void setup() {
    EICRA   = 0b00001011; //1=falling 0=rising
    EIMSK   = 0b00000011;
    TCCR3A  = 0b00000000;
    TCCR3B  = 0b00000010;
    DDRB   |= 0b11111111;
    TCCR1A  = 0b10000010;
    TCCR1B  = 0b00011010;
    ICR1=2000;
    }
    void loop() {}
    ISR(INT0_vect){TCNT3=0;}      //rising
    ISR(INT1_vect){OCR1A=TCNT3;} //falling
    Gruß Holger
    dessen Signatur vom Signatur-Moderationator aufgrund Überlänge gelöscht wurde.
    Like it!

  13. #13
    User
    Registriert seit
    15.04.2011
    Ort
    München
    Beiträge
    31
    Daumen erhalten
    2
    Daumen vergeben
    0
    0 Nicht erlaubt!

    Standard

    Hi Holger

    Zitat Zitat von Holger Lambertus Beitrag anzeigen
    Der Code rennt so leider nicht auf einem Arduino, dafür ist der zu Hardware-Nah.
    sorry verstehe ich nicht.
    warum?

    Zitat Zitat von Holger Lambertus Beitrag anzeigen
    Für das kleine Attiny-Board sprach, das Mir ist es an sich egal, welches Board man nimmt, mir geht es darum, etwas zu basteln, was nachher einfach nachzubasteln ist (für mich selber fräse ich mir meine Platinen). Für das kleine Attiny-Board sprach, das es relativ klein, und dazu unglaublich billig ist (1,5€ inkl Porto).
    https://www.ebay.de/itm/Mico-USB-Tin...zD0:rk:13:pf:0
    ich verstehe schon was du meist, aber ich glaub halt das man es anderen Leuten leichter machen kann in dem man auf eine fertige Platine zurückgreift.
    (Bei vielen Leuten muss man froh sein wenn sie Löten können.)

    USBTinyISP finde ich prinzipell ja nicht schlecht, aber wenn man halt noch ein paar andre Pins nutzen möchte zb für telemetrie oder Einzelzellen-Messung wirds halt knapp.
    gerade auch was den Speicher angeht.

    so einen ProMini (Clone) bekommt auch schon ab 2 euro
    https://www.ebay.de/itm/Pro-Mini-3-3...o/173317324167


    Zitat Zitat von Holger Lambertus Beitrag anzeigen
    Bei den Arduinoboards ist der Vorteil, das sie ja quasi gebrauchsfertig sind, für die Nachbastler sollte es dann aber was mit USB sein ? (ansonsten wäre wieder das Thema Bootloader) 8MHz (3,3V) wäre Telemetriefreundlicher.
    das schöne ist wenn jemand keinen FTDi-Adapter hat kann er nen arduino nano mit USB nehmen.
    die paar gramm mehr tun auch nicht weh. (man kann ja dann leichter bauen)

    Bootloader: reicht der arduino bootloader nicht?

    Warum ist 8MHz (3,3V) Telemetriefreundlicher?
    man braucht nur nen kleine Diode und könnte dann direkt auf die Serielle Schnittstelle


    Zitat Zitat von Holger Lambertus Beitrag anzeigen
    GITHUB, sind da nicht Dieselben Nasen wie bei diesem Microcontroller-Forum unterwegs ? (Umgangsformen....)
    GITHUB ist kein Forum sondern ein Onlinedienst in dem Software öffentllich in Projekten weiterentwickelt wird.
    genau das wollen wir doch oder?

    https://de.wikipedia.org/wiki/GitHub

    ich selbst nutze GIT auch Lokal um software für die Arbeit zu entwickeln.
    ohne das könnte ich heute gar nicht mehr arbeiten

    zum Commiten, Pushen, Pullen und Mergen nehme ich
    https://www.sourcetreeapp.com

    es ginge auch mit Kommandozeile... wenn dir das lieber ist

    schau dir zum Beispiel man an wie sich die Community von Betaflight entwickelt hat
    https://github.com/betaflight/betaflight/wiki

    alle Änderungen sind nachvollziehbar.
    Fehler/Fragen sind sauber gelistet.
    und die Wiki (egal ob für Hard oder Software ist dort auch sauber untegracht)

    und (führt jetzt evtl zu weit) mit travis-ci wird dann automatisch getesten und deployed

    gruß Maccl
    Like it!

  14. #14
    User
    Registriert seit
    15.04.2011
    Ort
    München
    Beiträge
    31
    Daumen erhalten
    2
    Daumen vergeben
    0
    0 Nicht erlaubt!

    Standard

    bin hier über einen kleinen Nuri gestolpert der einen etwas anderen MPP verwendet.
    ich hab irgendwo gelesen das er auf deiner software basiert.
    weist du worin der unterschied liegt ?

    https://www.rcgroups.com/forums/show...ing-Free-plans
    Like it!

  15. #15
    User
    Registriert seit
    15.04.2011
    Ort
    München
    Beiträge
    31
    Daumen erhalten
    2
    Daumen vergeben
    0
    1 Nicht erlaubt!

    Standard

    ... um jetzt noch ein ganz anderes Fass aufzumachen.

    der ideal-Fall wäre wenn das alles der Empfänger machen könnte (wie z.B. die Kreisel / Gyro Empfänger).
    ähnlich wie bei den Graupner-Empfängern bei denen es möglich ist die Spannung des Akkus am Sensor-Eingang zu messen.
    ... bräuchte man vermutlich nur ein paar Zeilen code um den MPP direkt in den Empfänger zu integrieren.

    die Frage ist nur Graupner die Firmware zur Verfügung stellen würde.
    Was ich bezweifle. aber fragen kostet sicher nix.

    aber dann schauen die Fassts, JEtis, etc in die Röhre.
    Like it!

Seite 1 von 5 12345 LetzteLetzte

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 02.04.2017, 11:19
  2. Antriebsvarianten für Solarflieger
    Von GC im Forum Elektroflug
    Antworten: 49
    Letzter Beitrag: 12.06.2016, 11:12
  3. Jeti DC/DS-16 TX 3.0 Software und 3.22 RX Software online
    Von PW im Forum Fernsteuerungstechnik
    Antworten: 8
    Letzter Beitrag: 20.02.2015, 11:53
  4. Unterschied der Hardware Naza V1 und V2
    Von reimundko im Forum Multicopter
    Antworten: 1
    Letzter Beitrag: 21.05.2013, 19:47

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •