- Katılım
- 17 Eyl 2013
- Mesajlar
- 9,152
- Tepkime puanı
- 23,846
- Yaş
- 62
- Konum
- İstanbul
- Web sitesi
- www.sumeryamaner.com
- İlgi Alanı
- Uçak
Giderek daha az sıklıkta nitro model kullanıyor olsam da bazen gerekiyor. Örneğin birkaç haftadır Hezarfen'deki aşırı rüzgar nedeniyle eski göz ağrılarımdan 046'lık P51'i devreye soktum. Üzerinde OS 55 AX motor var. Uçak çok eski. Gövde daracık.
Oturup onboard kızdırıcı takmak için uğraşmak lazım. Hiç işime gelmedi. Ama harici buji kızdırıcılarının en büyük sorunu pilleri. NiCd ya da NiMh olan bu piller çok kısa zamanda ömürlerini dolduruyorlar. Ayrıca benim almış olduklarım (ki 2008 ve 2009 yıllarına ait) kesin olarak yeni nesil NiMh değil eski, hızla şarj yitiren NiMh içeriyor. Bu durumda şöyle oluyor:
Öğleden sonra işi gücü ayarlayıp sahaya kaçıyorsun. Vaktin kısıtlı. Ama motor çalışmıyor. Çünkü kızdırıcının pili bitik. Biraz şarj ediyorsun. Bir sorti için motor çalışıyor. İkinci sortiye yine yok. Sinir bozucu!!!
Dediğim gibi ideal çözüm onboard kızdırıcı ama her uçak için uygun olmayabiliyor. O zaman harici kızdırıcının yumuşak karnı olan pile bir çözüm üretelim diye düşündüm.
Herhangi bir 2S LiPo ya da LiFe kullanabiliyoruz. Ben T konnektörlü yapmayı uygun buldum şimdilik. Ama belki daha sonra plaket ile pili tek bir plastik kutuya koyup dışarıya bir şarj bağlantısı alabilirim. Bekleme süresince sistem uyku moduna geçtiği için akım tüketimi mikroamper düzeyinde kalıyor. Kaldı ki oldu da pil bitti, onbeş dakikada yeterince şarj etmek mümkün.
Prototip bu:
Butona basınca 15 saniye boyunca buji enerjilendiriliyor. Pil gerilimi sürekli izlenip pile verilen enerjinin sabit kalmasına çalışılıyor. Onbeş saniye sonra akım kesiliyor. Uyku moduna geçiliyor. Yazılıma ekleyeceğim tek şey, arada butona basıldığında onbeş saniyeyi baştan başlatması özelliği olacak.
Kod:
Oturup onboard kızdırıcı takmak için uğraşmak lazım. Hiç işime gelmedi. Ama harici buji kızdırıcılarının en büyük sorunu pilleri. NiCd ya da NiMh olan bu piller çok kısa zamanda ömürlerini dolduruyorlar. Ayrıca benim almış olduklarım (ki 2008 ve 2009 yıllarına ait) kesin olarak yeni nesil NiMh değil eski, hızla şarj yitiren NiMh içeriyor. Bu durumda şöyle oluyor:
Öğleden sonra işi gücü ayarlayıp sahaya kaçıyorsun. Vaktin kısıtlı. Ama motor çalışmıyor. Çünkü kızdırıcının pili bitik. Biraz şarj ediyorsun. Bir sorti için motor çalışıyor. İkinci sortiye yine yok. Sinir bozucu!!!
Dediğim gibi ideal çözüm onboard kızdırıcı ama her uçak için uygun olmayabiliyor. O zaman harici kızdırıcının yumuşak karnı olan pile bir çözüm üretelim diye düşündüm.
Herhangi bir 2S LiPo ya da LiFe kullanabiliyoruz. Ben T konnektörlü yapmayı uygun buldum şimdilik. Ama belki daha sonra plaket ile pili tek bir plastik kutuya koyup dışarıya bir şarj bağlantısı alabilirim. Bekleme süresince sistem uyku moduna geçtiği için akım tüketimi mikroamper düzeyinde kalıyor. Kaldı ki oldu da pil bitti, onbeş dakikada yeterince şarj etmek mümkün.
Prototip bu:
You must be registered for see images attach
Butona basınca 15 saniye boyunca buji enerjilendiriliyor. Pil gerilimi sürekli izlenip pile verilen enerjinin sabit kalmasına çalışılıyor. Onbeş saniye sonra akım kesiliyor. Uyku moduna geçiliyor. Yazılıma ekleyeceğim tek şey, arada butona basıldığında onbeş saniyeyi baştan başlatması özelliği olacak.
You must be registered for see images attach
Kod:
Kod:
// Harici buji kızdırıcı
// 2S LiXX için
// İşlemci Attiny85
// Buton girişi PB3 (Attiny85 pin 2)
// PWM çıkışı PB0 (Attiny85 pin 5)
// LED çıkışı PB1 (Attiny85 pin 6)
// Voltage sense ADC2 (Attiny85 pin 3)
#include <avr/sleep.h>
#define BUTTON 3
#define LED 2
#define SENSE 2
#define PWMOUT 0
#define PWMMAX 60
#define PWMMIN 35
int voltlimit;
int maxvolt;
int minvolt;
int voltage;
int outpwm;
unsigned long timer;
byte flag;
ISR(PCINT0_vect)
{
}
void setup()
{
pinMode(LED, OUTPUT);
pinMode(PWMOUT, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
digitalWrite(LED, HIGH);
delay(1000);
minvolt = 600;
maxvolt = 960;
}
void loop()
{
digitalWrite(PWMOUT, LOW);
digitalWrite(LED, LOW);
sleep();
checkvolt();
timer = millis();
while(!flag)
{
pwmon();
if ((millis() - timer) > 15000)
{
digitalWrite(PWMOUT, LOW);
flag = 1;
blinkfast();
}
}
}
void checkvolt()
{
flag = 0;
voltage = analogRead(SENSE);
if (voltage < minvolt)
{
blinkled();
flag = 1;
}
}
void blinkled()
{
for (int n = 0; n < 15; n++)
{
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
delay(300);
}
}
void blinkfast()
{
for (int n = 0; n < 15; n++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
}
void pwmon()
{
voltage = analogRead(SENSE);
if (voltage < minvolt) voltage = minvolt;
if (voltage > maxvolt) voltage = maxvolt;
outpwm = map(voltage, minvolt, maxvolt, PWMMAX, PWMMIN);
analogWrite(PWMOUT, outpwm / 4);
digitalWrite(LED, HIGH);
}
void sleep()
{
GIMSK |= _BV(PCIE); // Enable Pin Change Interrupts
PCMSK |= _BV(PCINT3); // Use PB3 as interrupt pin
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // replaces above statement
sleep_enable(); // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
sei(); // Enable interrupts
sleep_cpu(); // sleep
cli(); // Disable interrupts
PCMSK &= ~_BV(PCINT3); // Turn off PB3 as interrupt pin
sleep_disable(); // Clear SE bit
sei(); // Enable interrupts
}
Moderatör tarafında düzenlendi: