Solarflieger

Und jeh drei dann, weil für RGB ? :D *duckundwech*


Danke für den Link, bei Digikey hatte ich schon gesehen, das er da jetzt lieferbar ist, nur an der Überwindung da zu bestellen fehlte es noch ;)
 
Da komme ich evtl drauf zurück :)

Schreib grad den AT85 auf C um. Werde das nie verstehen, da muss man erst Chinesisch lernen (C) um dann in Chinesisch zu schreiben (C) um es am Ende durch den GCC wieder in die Muttersprache (asm) zurückzuwandeln. :D

für
in r16, USISR
cbr r16, 0b11110000
(die Daten sind in den hinteren 4Bit, vorne wehen irgendwelche Fähnchen)

hatte ich damals den "the-Bit-Shift-Dance" gemacht <<4 >>4 :D weiaweiaweia auauahaaaa
 
Hab das Attiny85 Zeug mal zusammen gekramt, und auch kurz angetestet:

Man kann den Code auf dem DIP oder SMD Chip verwenden, mit dem beiliegen Bootloader jederzeit über das Servokabel die Firmware flashen.
Alternativ kann man auch so ein USB-Attiny85 Board benutzen (die gibt es ja schon für 1,5€), habe ich mich aber nicht weiter mit beschäftigt.
Es ist ein simpler Fixed-Voltage Code, die Spannung wird über den Senderknüppel vorgegeben.
Ausgabe erfolgt mit 9Bit 500Hz, wer höher Auflösen möchte: http://www.technoblogy.com/show?1NGL
Spannungsteiler für 12Zellen; 10K zur Masse, 82K zum Solarpanel.
Die Software ist ungeflogen, und hat keinen "Dauertest" hinter sich. Feedback erwünscht.
Das TXT im Anhang Auf ZIP umbenennen, es enthällt auch das komplette Bootloaderpaket mitśammt der EXE für den Upload.





t85.jpg

Der Code im einzelnen:
Code:
/*            __  __                  
            -|o \/  |- VCC    Fixed Voltage MPPC for Attiny85.              
            -|ATTINY|- RC     To use the AVRootloader:
    U-Solar -|  85  |- ESC    FUSES L:E2 H:DF E:FE
        GND -|______|-        Sign:MPP, 19200baud */

#define  F_CPU 8000000UL
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h> 
volatile uint8_t PWM  = 0;
volatile uint8_t RC_H = 0;
volatile uint8_t RC_L = 0;
volatile uint8_t count;
uint16_t RC   =0;
uint16_t Umpp =0;

int main(void){
  ADMUX   = 0b10000010; // Read ADC2, Aref 1,1V,    
  ADCSRA  = 0b11000110; // Read ADC Prescale /64  
  PORTB  |= 0b00000100; // Read RC PB2
  TCCR0A  = 0b00000000; // Read RC     
  TCCR0B  = 0b00000010; // Read RC Prescale 1/8    
  USICR   = 0b00000100; // Read RC Use USI for 12Bit  
  MCUCR   = 0b00000001; // Read RC INT0 Change
  GIMSK   = 0b01000000; // Read RC INT0
  DDRB   |= 0b00000010; // Write PWM on PB1
  TCCR1   = 0b01100110; // Write PWM Prescale 1/32 on OC1A
  TIMSK   = 0b00000100; // Write PWM Timer1 OVF Enable
  sei();
  PWM   = 0b00010000;   // init ESC
  _delay_ms(2500);      // init ESC

while(1){

  if(count==1){ count=2; Umpp=0;    // PPM OUT sync Timer1 @ 0uS   
                
  for (int i=1; i <= 5; i++){       // Read-ADC runden 5x
    ADCSRA |= (1<<ADSC);            // Read-ADC read Start
    while(ADCSRA &(1<<ADSC));       // Read-ADC wait (104uS)
    Umpp = Umpp + ADC;              // Read-ADC addieren
  } Umpp = Umpp / 3;                // Read-ADC /3 statt /5                  
              
  if (RC > Umpp)  {if (PWM > 16 ) {PWM--;}}   // MPPC Voltage to Low
  else            {if (PWM < 230) {PWM++;}}   // MPPC Voltage to High 
  
// now we have 1000uS Time to do anything (calc new RC, MPPC, etc...)
  cli();
  uint8_t RC_H2 = RC_H <<4;
  RC = (RC_H2 <<4) + RC_L;
  sei();  
}}}         

ISR (TIM1_OVF_vect){              
  if (count == 0) {OCR1A = 255; count=1;}   // PPM-OUT 0000-1000uS
  else            {OCR1A = PWM; count=0;}   // PPM-OUT 1000-2000uS
}
ISR(INT0_vect){                       
  if  (PINB &(1<<PB2)) {USISR=0;TCNT0=0;}   // Read-RC rising edge
  else          {RC_H=USISR; RC_L=TCNT0;}   // Read-RC falling edge
}
 

Anhänge

  • T85_MPPC.txt
    331,2 KB · Aufrufe: 79

derjuwi

User
... wird schon noch rechtzeitig kommen ;)
bin ja gespannt wie schwer und wie gut das Material ist

So, habe laminiert...
Eine C60 Abfallzelle wiegt laminiert mit ca. 3mm Rand 9g. Reines Laminatgewicht ca. 3.3g
Macht bei 125x125mm (ecken weg, gerundet) => 211g/quadratmeter
Wenn man die Zellen auf Balsa Aufzieht mit PUR Schaum und dann laminiert ist das denke ich ganz ok.

So im Sandwich ist die Zelle noch recht empfindlich gewesen, grade an den kanten.

Da ich nun 100m Folie habe ^^
Melde er sich wenn er ein wenig abhaben will.

Gruesse Julian
 

Anhänge

  • IMG_20181103_141308.jpg
    IMG_20181103_141308.jpg
    257,3 KB · Aufrufe: 60

derjuwi

User
[...]
Code:
  for (int i=1; i <= 5; i++){       // Read-ADC runden 5x
    ADCSRA |= (1<<ADSC);            // Read-ADC read Start
    while(ADCSRA &(1<<ADSC));       // Read-ADC wait (104uS)
    Umpp = Umpp + ADC;              // Read-ADC addieren
  } Umpp = Umpp / 3;                // Read-ADC /3 statt /5
[...]

Es gibt eine wichtige Regel beim kommentieren von Programmcode.
Kommentiere Warum, nicht WAS du tust.

Warum du nur durch 3 teilst obwohl du fuenfmal aufsummiert hast waere interessant hier, das du es tust geht aus dem Code hervor.

Das ist wichtig Holger, schreib das nochmal um und versuche die Kommentare wie in der Regel da oben zu gestalten. Dann versteht man was du tust.

Und Github - mein Angebot steht, einen Account must du dir aber selber anlegen.

Gruesse Julian
 
Zuletzt bearbeitet:
Hast Recht :D Ist immer der Unterschied wenn man Kommentare für sich selber schreibt.

Statt das RC-Level (1100-1900uS) auf den ADC-Level (0-1023) anzupassen, passe ich den ADC-Level auf RC-Level an, um es nachher gegenüberstellen zu können.

(ADC) 1023 x 5 = 5113 | 5113 / 3 = 1704 (RC-Pulslänge) maximal (so geht der Motor noch sicher aus)

(ADC) 660 x 5 = 3300 | 3300 / 3 = 1100 (RC-Pulslänge) minimal (so reicht der messbare Spannungsbereich bis 0,7V herunter AREF 1,1V)
 

derjuwi

User
Nein, auch man selbst weis nach ein paar Monaten nichtmehr was einem im Kopf rumgegangen ist als man das programmiert hat.

Welche Lizenz hat dein Code? Magst du dir mal einen Github account zulegen?

Gruesse Julian
 
Lizenz ? Software ist Freiwild ;):)
Was mir im Kopf umgeht, weiß ich meist schon drei Stunden später oft nicht mehr :eek: :D
Github muss ich mal guggen, meist ist immer alles eh schon veraltert, wenn es fertig ist (dieser Code ist auch über ein Jahr alt :()

Aktuell bastel ich am Bootloader, mit einem kleinem Trick bekommen ich die Attinys, auch den USBtiny-ISP an die BLHeliSuite gehangen, kann dort mit den Schiebereglern Parameter einstellen, die dann auf das eeprom gespeichert werden. Flash über die Suite klappt aber nicht, weil Sie keine Regler mit Atitiny kennt (der Attiny gibt sich als Blueseries aus), flashen dann über AVRootloader. Alles per Servokabel und Hott-Adapter ;) Nach ewig Vielen Tests scheint es sehr stabil zu laufen. Die Parameter am Bildschirm heissen natürlich anders, da hilft dann nur TippEx und Edding ;) :D

Vorschlag, Elektronik, Software, Hardware in einem Extra Thread, da die allermeisten es weniger interessiert, was da auf so einer Platine drauf ist, sondern nur wie man sie anschliest.

Ich habe mal hier einen aufgemacht, evtl mag ein Mod die Beiträge hier rüberschieben, wäre sehr nett
smile.gif

http://www.rc-network.de/forum/showthread.php/708905-Software-und-Hardware-für-Solaflieger
 

derjuwi

User
Ja, das hier ist etwas unuebersichtlich. Aber magst du nicht vorher fragen bevor du beschliesst was am besten ist und dafuer sorgst das Beitraege verschoben werden?
Vielleicht gibt es ja eine bessere Loesung. Mir gefaellt das herausreissen von Beitraegen aus dem Kontext nicht.

Gruesse Julian
 

maccl

User
@Julian: danke für deinen Folientest.
ist doch gar nicht so schlecht.

ich bin noch hin- und hergerissen ob ich die Zellen oben auf den Fläche kleben soll oder teilen und zwischen die Rippen.
eine Zelle hab ich mal versucht sauber zu Teilen und musste feststellen das es nicht so einfach war. kreissäge, Cutter, .... gab immer ausgfranste Kanten und Brüche.
dann hab ich mal eine Zelle mit 80µm Folie laminiert und dann konnte man sie sauber mit der Schere schneiden.

Wie macht Ihr das? oder nehmt ihr nur ganze Zellen?

Dann ist mir aufgefallen das die Sunpower-Zellen auch Leistung bringen wenn sie von unten angestrahlt bzw umgedreht werden.
Habt ihr da Erfahrungswerte?


@Holger:
Github wäre wirklich eine gute Sache.
Da könnte man gut zusammenarbeiten und weiterentwickeln.
Ebenso kann man dort kommentieren und diskutieren und die Hardware erklären.
Parameter Verstellen ist eine gute Idee. was hälst du davon diese über Telemetrie zu vertellen (zb Textmode bei Hott)
Für alle andern Piloten kannst du bei github fertig kompilierte hex-files zur Verfügung stellen.
Das wäre für Einsteiger, die nicht wissen wie man Kompiliert, eine gute Sache.


gruß Maccl
 
Also zerschnitten hab ich noch keine,

und von der Strahlung von unten bzw. in Rückenlage erhoffe ich mir nicht viel.

Villeicht krieg ich heute abend endlich mal eine Flächenhälfte fertig laminiert.
Zellen sind schon festgebappt, muss nur an einigen Punkten etwas harz an der Hinterkante unterspritzen, da sie etwas hochstehen ...
 
Moin

Das liegt auch ein bissl auch am Untergrund, ob der Boden das Licht etwas reflektiert. Zur Mittagszeit auf "Steppengras" kann ich auf dem Rücken noch problemlos mit über 1m/S steigen, wenn es ein düsterer Boden ist, oder die Sonne wieder etwas weiter unten, geht es dann irgendwann nicht mehr.

Aufpassen muss man bei geringen Flughöhen, wenn es in 10m noch super auf dem Rücken klappt, kann es sein das es in 1m nicht mehr reicht, dann ist man froh, das ein weiches Kornfeld am Platzende ist (war :rolleyes:).

Auf Schnee und tiefer Sonne könnte es vielleicht sogar besser sein im Rücken zu fliegen, hat glaube ich noch keiner ausprobiert :D
 

maccl

User
Super das Rückenflug funktioniert. ;)
Aber wenn ich Euch richtig verstehe hängt das mit der der Bodenreflektion zusammen.
Mir ging is eher im direkte Einstrahlung auf die Zellenunterseite.
Da müsste dann quasi ein durchsichtiger Rippelflügel noch effektiver sein.
 
Ansicht hell / dunkel umschalten
Oben Unten