Sie sind auf Seite 1von 5

Solar Bear

Solar Bear is an easy to build pure solar flying wing that requires about 10 hours and about $70 worth
of materials to build with the majority of the time spent soldering up the maximum power point tracker
(mppt) and the solar cells.

BOM

Airframe

8 x half C50 Sunpower cells from ebay


2 x 3/32”x3”x36” sheets medium density balsa
1 x 5 x 4 x 1000mm carbon fiber tube for leading edge spar
1 x 190 x 100 x 0.5mm carbon plate for fins
2 x control horn
1 x 1.5 x 500mm carbon fiber rod for push rods
0.30” music wire for push rods
1.5mil laminating film
carbon fiber roving to join the leading edge spar
Kevlar thread for binding push rod ends
29g magnet wire for solar cell wiring
24g magnet wire for solar cell wiring

Control

1 x DYS xsd7a esc


2 x 3.7g servos from ebay or any comparable low voltage servo
1 x Lemon rx Feather light rx or equivalent low voltage rx
1 x Attiny85 mcu
1 x 300kohm 1% resistor for voltage divider
1 x 47kohm 1% resistor for voltage divder
1 x 10kohm resistor pull up resistor
1 x Microchip MCP102-195I/TO power on reset IC (optional)
1 x Dip 8 socket

Power

Cobra 2203/34 or equivalent.


GWS 6030 DD
General construction

The wing has an 18 degree sweep (5.2”)

Rib spacing is 1.4” between the center two ribs and then 4” for each additional rib. The end rib is
doubled up.

The nacelle is put on after the covering is applied and then glued directly on top of the center ribs.

The tips have about 3 to 5 degrees washout.

Elevons are hinged with laminating film.

Solar Cells
The solar cells are soldered in series with a piece of 29guage magnet wire going to each pad on the
cells. Start on one end and then go to the other running the wire from positive to negative to
positive..etc. Then take 24gauge magnet wire from each end and run it to the center. Be sure to solder a
piece of 29ga on the end cells from one pad to the other on the same polarity of the same cell to let the
current flow easier. Each cell should have 2 wires connecting it to the next except the end cells that
have the heavier wire coming to the center.

Attiny85
First you can wire up the DIP 8 socket according to the diagram at the beginning of the mppt code.
The optional power on reset IC has 3 pins and can be purchased from Microchip directly. If you do not
use this IC you will have to put a switch on the main power to keep the Attiny85 from locking up. If
using the switch you will need to connect the reset pin of the Attiny85 to ground thru a 10kohm resistor

The power on reset IC has 3 pins 1 is connected to the reset pin on the Attiny85 thru a 10kohm resistor.
Pin 2 is connect to Vcc and pin 3 is connected to ground.

I use the “Tiny AVR programmer” from Sparkfun https://www.sparkfun.com/products/11801


And the Arduino IDE running the “attiny” bootloader by David Mellis
MPPT Code

/*MPPT v6.3 for F5E RC Solar Airplane


pin2 solar voltage coming off a divider. 1.1v max. 300k and pin2 across 47k to ground
pin3 rc input comeing from rx
pin4 rc output going to esc
December 2017
Sergey Vekli and Ted Luginbuhl

__ __
Reset -|o \/ |- VCC
3 Rx -| |- 2 Solarvoltage
4 ESC -| |- 1
GND -|______|- 0
*/
//#include <avr/wdt.h> // Watch Dog Timer
#define Vmpp 0.55 // good setting: 0.84 for 12 cell and .55 for 8 cell. If too low motor will be faster at
less than full throttle.
#define VmppLOW 0.63 // low throttle mpp voltage. 0.97 seems to be good for 12 cell and .63 for 8
cell.Set so that motor cuts off when parallel with suns rays.
#define STEPdown 2 //default 2 If too high throttle will oscilate, if too low esc will reset
#define STEPup 1
#define iterations 15 //default 15. This is how many times the algo averages the array voltage.
#define transition 150 // point at wich transition takes place from Vmpp to VmppLOW between 110
and 230. Default 150.If too high it will kick in too soon and mimick Vmpp set too low.
#define LOW false
#define HIGH true
int x = 0;
int Vcell = 0;
int VMPP = 0.00;
int VMPPlow = 0.00;
boolean cur_level = LOW;
void setup()
{

// wdt_enable(WDTO_500MS); //Enable Watch Dog Timer.


// set pins mode
pinMode(4, OUTPUT); //going to esc
pinMode(3, INPUT); //coming from rx
//convert Vmpp to adc levels
VMPP = Vmpp * 925;
VMPPlow = VmppLOW * 925;
//set freq and interrupts registers
GIMSK = B00100000;
PCMSK = B00001000;
TCCR0A = B00000010;
TCCR0B = B00000010;
TIMSK = B00010000;
OCR0A = 110;
analogReference(INTERNAL1V1);
}
//main control timer
ISR(TIMER0_COMPA_vect)
{
if (cur_level == HIGH)
{
digitalWrite(4, LOW);
cur_level = LOW;
}
TCNT0 = 0;
}

//interrupt for rx repeater mode


ISR(PCINT0_vect)
{
if (digitalRead(3) > cur_level)
{
digitalWrite(4, HIGH);
cur_level = HIGH;
TCNT0 = 0;
}
else
{
if (cur_level == HIGH)
{
digitalWrite(4, LOW);
cur_level = LOW;
}
}

//main measurement-set cycle


void loop()
{

//wdt_reset(); //Pat the dog


if (OCR0A <= transition) // throttle level at wich higher Vmpp kicks in else statement.
{
x = VMPPlow;
}
else
{
x = VMPP;
}
Vcell=0;
for (int XX = 0; XX < iterations; XX++) //iterations for average array voltage.
{
delay(1);
Vcell = Vcell + analogRead(A1);
}

Vcell = Vcell / iterations;

//Vcell=analogRead(A1);

if (Vcell > x)
{

if (OCR0A <= 230 ) //230


{
OCR0A += STEPup;
}}

if (Vcell < x)
{
if (OCR0A >= 110) { //110
OCR0A -= STEPdown;
}}