Pages

Sabtu, 06 Februari 2016

Wood and fiberglass hull like yellow boat


Based on yellow boat plans different deck 390 Grams as shown 
Also Ply fiberglass epoxy catamaran build log

Yellow boat 3 http://kiwitricopter.blogspot.co.nz/2012/12/yellow-boat-3-power-test-scratch-built.html

Fit out http://kiwitricopter.blogspot.co.nz/2013/12/mad-man-yellow-boat-2-x-turnigy-heli.html

Sea run a Purau http://kiwitricopter.blogspot.co.nz/2014/01/yellow-boat-4-fpv-camera-view-purau-new.html

Another run at Motunau http://kiwitricopter.blogspot.co.nz/2014/01/yellow-boat-4-motunau.html

Evo 2 http://kiwitricopter.blogspot.co.nz/2014/01/yellow-boat-4-revised-powertrain.html

Glass and epoxy inside balsa ply, will epoxy the outside too. Its very strong with builders fiberglass tape and epoxy 




The motors will be mounted further forward on a cooled plate 



















Spray rails are bamboo barbecue skewers and wood filler  















Will be powered with 2 of the following



P2632 Brushless Outrunner 3800kv







The Arduino code will be the same as I ran in the Catamaran I may add differential thrust with steering angle as its a twin


#include  

int ch1 = 4;
int ch2 = 5;


unsigned long ch1v;
unsigned long ch2v;



unsigned long RightLeft = 0;
unsigned long UpDown = 0;
long Trim = 0;
long Throttle = 0;
long Cooling = 0;
long PumpSpeed = 0;



Servo Servo1;
Servo Servo2;
Servo Servo3;
Servo Servo4;

#define MAX_CHAN 8
int AnIn[MAX_CHAN] = {0, };

unsigned long PPMtout = 20000;

char buf[300] = {0, };

long mS = 0;


 void setup() {
   
  
  Serial.begin(115200);

  
  pinMode(ch1, INPUT);
  pinMode(ch2, INPUT);

  
  Servo1.attach(8);
  Servo2.attach(9);
  Servo3.attach(10);
  Servo4.attach(11);
  
}

void loop() {
  

  AnIn[0] = analogRead(A0);
  AnIn[1] = analogRead(A1);
  AnIn[2] = analogRead(A2);
  AnIn[3] = analogRead(A3);
  AnIn[4] = analogRead(A4);
  AnIn[5] = analogRead(A5);
  AnIn[6] = analogRead(A6);
  AnIn[7] = analogRead(A7);
  
  /* RAZU-2 Six turn
  This device has a gain of 55mV per amp giving a 36 Amp working range, 
  and a resolution of 11.3777 mA per bit with the maximum output at 5 volts 
  which is 1024 bits in the Arduino. By the way I should point out that 
  these devices on a 5 volt rail will sit around 2.5 volts with no current 
  flowing, so at a 2 Volt delta the out put should be around 4.5 V
   */
   
  mS = micros();
  
  //Get PPM from each RX channel  
  noInterrupts();
    
    
    
    
    
  ch1v = pulseIn(ch1, HIGH, PPMtout);//Throttle
  
  if(ch1v > 0)
  {
    ch2v = pulseIn(ch2, HIGH, PPMtout);//Imax

  } 
  else//Fail safe
  {
    ch1v = 1000;
    ch2v = 1000;    
  }
    
  interrupts();
  

  //ALLOW INTERRUPTS BEFORE UPDATE SERVOS
  delayMicroseconds(2000);

  
  
  //Calculate motor amps
  long Motor_mA = ((long)(AnIn[1] - 512) * 11.0f);
  
  
  
  int Tmax = (int)ch2v;
  
  //Set max throttle
  Throttle = (long)map((int)ch1v, 1000, 2000, 1400, Tmax); 
    
    
  //Calc amps
  long Amps = (long)map((int)Motor_mA, 0, 36000, 0, 36); 
    
    
    
  //Calculate cooling temp RTC on AnIn[0]
  int cerr = ((int)600 - (int)AnIn[0]); 
    
  //Integrate temparature
  Cooling += cerr;
   
  if(Cooling < 1000) Cooling = 1000;
  else if(Cooling > 2000) Cooling = 2000;
    
  //Use the temperature integrator plus the motor current 
  //36 Amps gives us 360 bits
  PumpSpeed = (long)Cooling + (Amps * 10);
  
  
  
  

  
  
  
  //Update the outputs
   
  Servo1.writeMicroseconds((int)Throttle);
     
  Servo2.writeMicroseconds((int)PumpSpeed);


  
  
  
  long Cyc_mS = (micros() - mS);
  

  //ALLOW SERVOS TO UPDATE BEFORE INTERRUPTS OFF
  delayMicroseconds(18000 - Cyc_mS); 
  
  Cyc_mS = (micros() - mS);
  
  sprintf(buf, "ch1v_Tmax:%d,ch2v_Imax:%d,Throttle:%d,AnIn[0]:%d,AnIn[1]:%d,CoolingError:%d,Cooling:%d,Imax:%d,MotorAmps:%d,Cyc_mS:%d", (int)ch1v, (int)ch2v, (int)Throttle, AnIn[0], AnIn[1], cerr, (int)Cooling, (int)Tmax, (int)Amps, (int)Cyc_mS );
    
  Serial.println(buf);
  
  
  /*
  char incomingByte = 0;
  
   // send data only when you receive data:
  while (Serial3.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial3.read();
    
    Serial.print((char)incomingByte);
    
    delayMicroseconds(1000);
    
    if(incomingByte == 13) break;
  }
  
  Serial.println( );
  */
    
}

Related Posts by Categories

0 komentar:

Posting Komentar