Ev yapımı variometerim
Moderatör: Moderatör Ekibi
- [email protected]
- Mesajlar: 15
- Kayıt: 30.04.2014, 17:27
- Ad Soyad: Turan Bulat
- Şehir: Adana
- Aldığı Beğeni: 4 / 0
- Pilot Menüsü:
Ev yapımı variometerim
Herkese merhabalar ismim Emre,acaba konuyu doğru yere mi açtım diye tereddütdeyim birde yeni üye olamadım babamın üyeliği aslında bu
ardunio diye tabir ettiğimiz programlama kartı ile bir basınç sensörünü programlayarak kendimce bir variometre yapmaya çalıştım gayet küçük ve kararlı bir çalışma oldu programla kodlarını yabancı model uçak sitesinden edindim , projemde 1 adet basınç sensörü (13$) , arduino nano (8$), mini spekar (1tl),batarya nokia 1300mah (15tl) , gibi bir fiyata toplamda 50 tlyi geçmedi bir video çekmeye çalıştım fikir edinmek ve projemi sunmak amaçlı ,yakında yapımını bir videoya çekeceğim herkes evde çok kolay bir şekilde yapabilecek aslında, herkese kazasız uçuşlar...
https://www.youtube.com/watch?v=0idgGRzNFy0
ardunio diye tabir ettiğimiz programlama kartı ile bir basınç sensörünü programlayarak kendimce bir variometre yapmaya çalıştım gayet küçük ve kararlı bir çalışma oldu programla kodlarını yabancı model uçak sitesinden edindim , projemde 1 adet basınç sensörü (13$) , arduino nano (8$), mini spekar (1tl),batarya nokia 1300mah (15tl) , gibi bir fiyata toplamda 50 tlyi geçmedi bir video çekmeye çalıştım fikir edinmek ve projemi sunmak amaçlı ,yakında yapımını bir videoya çekeceğim herkes evde çok kolay bir şekilde yapabilecek aslında, herkese kazasız uçuşlar...
https://www.youtube.com/watch?v=0idgGRzNFy0
Son beğenen can280
- H_E_L_P_55
- Mesajlar: 482
- Kayıt: 27.06.2011, 08:15
- Ad Soyad: Koray Kos
- Şehir: Turhal
- :
- Aldığı Beğeni: 2 / 0
- Pilot Menüsü:
- kakalamtahu
- Mesajlar: 174
- Kayıt: 30.10.2012, 17:46
- Ad Soyad: Hasan Tahsin Çervatoğlu
- Şehir: İstanbul
- Aldığı Beğeni: 5 / 0
- Pilot Menüsü:
- azizsimsek
- Mesajlar: 39
- Kayıt: 07.08.2012, 16:04
- Ad Soyad: Aziz Şimşek
- Şehir: Kütahya
- :
- Aldığı Beğeni: 0 / 0
- Pilot Menüsü:
- htamerursavas
- Mesajlar: 198
- Kayıt: 26.10.2012, 23:32
- Ad Soyad: Hüseyin Tamer Ursavaş
- Şehir: İzmir
- Aldığı Beğeni: 91 / 9
- Pilot Menüsü:
- [email protected]
- Mesajlar: 15
- Kayıt: 30.04.2014, 17:27
- Ad Soyad: Turan Bulat
- Şehir: Adana
- Aldığı Beğeni: 4 / 0
- Pilot Menüsü:
teşekkür ederim, abilerim lise elektronik öğrncisiyim malzemeleri çinden alıyorum kullandığım sensör türkiyede yok birde nakliye 30-40 gün sürüyor biraz para biriktirdikten sonra lcd ekranlı ve uçuş kaydı tutan bir cihaz projem yolda ,çalışma mantığımız her bir irtifada havanın basıncı değişiyor bu değişim hızına gore programlayıcı çıkışını farklı frekanslarda sinyalleri yükselterek spekardan ses alıyoruz ana mantık bu aslında , kurulum diagramını resim olarak ekliyorum elemanlarda üzerinde yazılı en iyi şekilde yardımcı olmaya çalışırım, yalnız dedğim gibi programlama kartı (arduino nano türkiyede 35tl) ebayda yada çinden yaklaşık 8 dolara getirttim ben, ms5611 basınç sensörü türkiyede yok mecbur yurtdışından getirtiyoruz onuda 11-13$ civarı tutuyor bu şekilde cihaz oldukça küçük ve kararlı oldu hertürlü navigasyon cihazı ve minik kutulara sığar diye düşünüyorum zaten pile bağladımız an çalışır vaziyette sadece ben ayrıyetten ses ayarı ekledim pilin daha uzun süre gitmesi açısından herkese kazasız uçuşlar...
- mahomedia
- Mesajlar: 173
- Kayıt: 31.08.2004, 23:57
- Ad Soyad: M. Emin Öner
- Şehir: Ankara
- Aldığı Beğeni: 2 / 0
- Pilot Menüsü:
Merhaba Emre kardeşim. süper bi çalışma olmuş tebrik ederim
Ben de bir süredir multicopter ile ilgileniyorum. İki tane kontrol kartı öncereceğim. Bunların üzerinde barometrik sensörle birlikte bir çok sensör de var. Sadece yazılımı ona göre yazarak kullanmak mümkün görünüyor. İşçiliği biraz daha azaltır diye düşünüyorum.
Eğer multiwii tabanlı bir yazılım hazırlarsan çok daha geniş kullanım alanı olabilir ayrıca herkes kartı satınalıp yazılımı yükleyip kullanabilir
Multiwii SE
http://www.ebay.com/itm/MWC-Multiwii-SE ... 3a8221ded2
Multiwii AIOP
http://www.ebay.com/itm/CRIUS-MultiWii- ... 417fcc5290
Ben de bir süredir multicopter ile ilgileniyorum. İki tane kontrol kartı öncereceğim. Bunların üzerinde barometrik sensörle birlikte bir çok sensör de var. Sadece yazılımı ona göre yazarak kullanmak mümkün görünüyor. İşçiliği biraz daha azaltır diye düşünüyorum.
Eğer multiwii tabanlı bir yazılım hazırlarsan çok daha geniş kullanım alanı olabilir ayrıca herkes kartı satınalıp yazılımı yükleyip kullanabilir
Multiwii SE
http://www.ebay.com/itm/MWC-Multiwii-SE ... 3a8221ded2
Multiwii AIOP
http://www.ebay.com/itm/CRIUS-MultiWii- ... 417fcc5290
- [email protected]
- Mesajlar: 15
- Kayıt: 30.04.2014, 17:27
- Ad Soyad: Turan Bulat
- Şehir: Adana
- Aldığı Beğeni: 4 / 0
- Pilot Menüsü:
M. Emin hocam mantıklı yapılabilir biraz çalışma gerekiyor hatta lcd eklenerek çok iyi çalışmalar ortaya çıkabilir gibi görünüyor fazla bilgim yok ama multiwii hakkında ama abi boarddaki basınç sensörü BMP085 sensör abi bildiğim kadarıyla 25 cmye duyarlı bir sensör, bu kullandığım 9cm duyarlı,birazda hassas olduğu için ben bu şekilde tercih ettim abi ama linkdeki board basit ve yararlı olabilir teşekkür ederim herşey için ...
- [email protected]
- Mesajlar: 15
- Kayıt: 30.04.2014, 17:27
- Ad Soyad: Turan Bulat
- Şehir: Adana
- Aldığı Beğeni: 4 / 0
- Pilot Menüsü:
SHaDoW yazdı:Tebrikler Emre.. Güzel bir çalışma olmuş.. Sensör hassasiyeti de iyi görünüyor. Bu fiyata bu şekilde başarılı bir sonuç elde etmen çok iyi.
Bendeki B1 NAV ile aynı anda kullanarak termik uçuşunda karşılaştırmalı bir değerlendirme yapabiliriz.
Turan abiye selamlar..
ahmet tokalı hocam çok teşekkür ederim karşılaştırma güzel olur abi kritiğini yaparız tepede babamında selamı var hocam bol termikler ...
- sanlikihtir
- Mesajlar: 5
- Kayıt: 10.07.2010, 17:43
- Ad Soyad: Sanlı Kihtir
- Şehir: İstanbul
- Aldığı Beğeni: 0 / 0
- Pilot Menüsü:
Tebrikler Emre,guzel bir calisma olmus.
Yillardir sadece okudugum ypforum'a ilk mesajimi da sayende yazdim.
Bogazici Universitesi'nde Makine Muhendisligi okuyorum. Yaklasik 6 ay once senin yaptigina benzer bir calismayi ben de yaptim. Bosch BMP180 sensor kullandim. Manual'inde 15 cm hassaslik belirtselerde 1 metreye yaklasan bir hata payi bulunuyor.BMP180, BMP085 in yerini aldi ve BMP085'ler bildigim kadariyla uretimden kalkti.Senin kullandigin pressure sensorunu kiskanmadim degil. Ben o zaman en hassas sensor olarak ben BMP180 bulabilmistim.
Merak ettigim 1-2 sey var. Elde ettigin altitude degerlerinin ortalamasini aldin mi? yoksa anlik olarak kiyaslayip mi output verdin. Kodunu gormedigim icin (videodan tahminim) belli bir sure icinde ortalama aldigini dusunuyorum.(Lag'dan dolayi boyle dusundum) Ortalama alman ayni zaman da sensorun hata payini dusurecektir. Ama dezavantaji Lag yapmasi olacak.
Bir de sensorun hata payini goz onunde bulundurarak (atiyorum ortalama alarak 5 cm'ye dusurdun) 5 cm lik degisimler icin output vermemen, vario sabit dururken ses cikartmamasini saglayacaktir.
Bir de speakerdan ses bastirirken loop kullandigini dusunuyorum. beep-slient-beep-slient icin. Eger loop kullanmadiysan ses bastirmak icin ne kullandigini gercekten merak ettim.
Calisman gercekten cok hosuma gitti. [email protected] mail adresim. Senle fikir alisverisinde bulunmak isterim. Amerika'da oldugumdan dolayi simdilik mail kullanabilirim. Yazarsan sevinirim.
Calismalarinda ve Derslerinde basarilar dilerim.
Yillardir sadece okudugum ypforum'a ilk mesajimi da sayende yazdim.
Bogazici Universitesi'nde Makine Muhendisligi okuyorum. Yaklasik 6 ay once senin yaptigina benzer bir calismayi ben de yaptim. Bosch BMP180 sensor kullandim. Manual'inde 15 cm hassaslik belirtselerde 1 metreye yaklasan bir hata payi bulunuyor.BMP180, BMP085 in yerini aldi ve BMP085'ler bildigim kadariyla uretimden kalkti.Senin kullandigin pressure sensorunu kiskanmadim degil. Ben o zaman en hassas sensor olarak ben BMP180 bulabilmistim.
Merak ettigim 1-2 sey var. Elde ettigin altitude degerlerinin ortalamasini aldin mi? yoksa anlik olarak kiyaslayip mi output verdin. Kodunu gormedigim icin (videodan tahminim) belli bir sure icinde ortalama aldigini dusunuyorum.(Lag'dan dolayi boyle dusundum) Ortalama alman ayni zaman da sensorun hata payini dusurecektir. Ama dezavantaji Lag yapmasi olacak.
Bir de sensorun hata payini goz onunde bulundurarak (atiyorum ortalama alarak 5 cm'ye dusurdun) 5 cm lik degisimler icin output vermemen, vario sabit dururken ses cikartmamasini saglayacaktir.
Bir de speakerdan ses bastirirken loop kullandigini dusunuyorum. beep-slient-beep-slient icin. Eger loop kullanmadiysan ses bastirmak icin ne kullandigini gercekten merak ettim.
Calisman gercekten cok hosuma gitti. [email protected] mail adresim. Senle fikir alisverisinde bulunmak isterim. Amerika'da oldugumdan dolayi simdilik mail kullanabilirim. Yazarsan sevinirim.
Calismalarinda ve Derslerinde basarilar dilerim.
- [email protected]
- Mesajlar: 15
- Kayıt: 30.04.2014, 17:27
- Ad Soyad: Turan Bulat
- Şehir: Adana
- Aldığı Beğeni: 4 / 0
- Pilot Menüsü:
şanlı kihtir hocam, öncelikle teşekkür ederim açık kaynak kodlarını aşağıdaki kısımda abicim özel mesajdanda atıyorum şimdi inşallah açıklayıcı olur diyagramı kurmak isteyen arkadaşlarada yararlı olması dileğiyle, projenin asıl kaynağı soylediğim gibi bir model uçak sitesinden almıştım kodlarda ordan edinmiştim orda ardunio d2 port çıkışında am vericiyle model uçak kumandasına yonlendirme yapılıyordu gliderle termik dönüyorlardı şematik diagramı biraz düzenledim d2 çıkışı pwm tarzı bir çıkış frekans değişiyor , direk bc547 ye giriş yaptım base ucuna seri trimpot yerleştirdim ses ayarı için, bu şekilde editleme yaptım, baro sensör rüzgardan çok etkileniyor abi benim kullandığım sensör öyle sen bmp180 için kutulama yapmışmıydın abi hata payı ordan kaynaklanabilirmi acaba dikkat edersen videoda ben yeşil bir kapak takıyorum baro modülüne...
Açık kaynak kodlarım : kodları eklentiye ekleyemedim maruz görün
#include <Wire.h>
const byte led = 13;
unsigned int calibrationData[7];
unsigned long time = 0;
float toneFreq, toneFreqLowpass, pressure, lowpassFast, lowpassSlow ;
int ddsAcc;
void setup()
{
Wire.begin();
Serial.begin(115200);
setupSensor();
pressure = getPressure();
lowpassFast = lowpassSlow = pressure;
}
void loop()
{
pressure = getPressure();
lowpassFast = lowpassFast + (pressure - lowpassFast) * 0.1;
lowpassSlow = lowpassSlow + (pressure - lowpassSlow) * 0.05;
toneFreq = (lowpassSlow - lowpassFast) * 50;
toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.1;
toneFreq = constrain(toneFreqLowpass, -500, 500);
ddsAcc += toneFreq * 100 + 2000;
if (toneFreq < 0 || ddsAcc > 0)
{
tone(2, toneFreq + 510);
}
else
{
noTone(2);
}
ledOff();
while (millis() < time); //loop frequency timer
time += 20;
ledOn();
}
long getPressure()
{
long D1, D2, dT, P;
float TEMP;
int64_t OFF, SENS;
D1 = getData(0x48, 10);
D2 = getData(0x50, 1);
dT = D2 - ((long)calibrationData[5] << ;
TEMP = (2000 + (((int64_t)dT * (int64_t)calibrationData[6]) >> 23)) / (float)100;
OFF = ((unsigned long)calibrationData[2] << 16) + (((int64_t)calibrationData[4] * dT) >> 7);
SENS = ((unsigned long)calibrationData[1] << 15) + (((int64_t)calibrationData[3] * dT) >> ;
P = (((D1 * SENS) >> 21) - OFF) >> 15;
//Serial.println(TEMP);
//Serial.println(P);
return P;
}
long getData(byte command, byte del)
{
long result = 0;
twiSendCommand(0x77, command);
delay(del);
twiSendCommand(0x77, 0x00);
Wire.requestFrom(0x77, 3);
if(Wire.available()!=3) Serial.println("Error: raw data not available");
for (int i = 0; i <= 2; i++)
{
result = (result<<8) | Wire.read();
}
return result;
}
void setupSensor()
{
twiSendCommand(0x77, 0x1e);
delay(100);
for (byte i = 1; i <=6; i++)
{
unsigned int low, high;
twiSendCommand(0x77, 0xa0 + i * 2);
Wire.requestFrom(0x77, 2);
if(Wire.available()!=2) Serial.println("Error: calibration data not available");
high = Wire.read();
low = Wire.read();
calibrationData[i] = high<<8 | low;
Serial.print("calibration data #");
Serial.print(i);
Serial.print(" = ");
Serial.println( calibrationData[i] );
}
}
void twiSendCommand(byte address, byte command)
{
Wire.beginTransmission(address);
if (!Wire.write(command)) Serial.println("Error: write()");
if (Wire.endTransmission())
{
Serial.print("Error when sending command: ");
Serial.println(command, HEX);
}
}
void ledOn()
{
digitalWrite(led,1);
}
void ledOff()
{
digitalWrite(led,0);
}
Açık kaynak kodlarım : kodları eklentiye ekleyemedim maruz görün
#include <Wire.h>
const byte led = 13;
unsigned int calibrationData[7];
unsigned long time = 0;
float toneFreq, toneFreqLowpass, pressure, lowpassFast, lowpassSlow ;
int ddsAcc;
void setup()
{
Wire.begin();
Serial.begin(115200);
setupSensor();
pressure = getPressure();
lowpassFast = lowpassSlow = pressure;
}
void loop()
{
pressure = getPressure();
lowpassFast = lowpassFast + (pressure - lowpassFast) * 0.1;
lowpassSlow = lowpassSlow + (pressure - lowpassSlow) * 0.05;
toneFreq = (lowpassSlow - lowpassFast) * 50;
toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.1;
toneFreq = constrain(toneFreqLowpass, -500, 500);
ddsAcc += toneFreq * 100 + 2000;
if (toneFreq < 0 || ddsAcc > 0)
{
tone(2, toneFreq + 510);
}
else
{
noTone(2);
}
ledOff();
while (millis() < time); //loop frequency timer
time += 20;
ledOn();
}
long getPressure()
{
long D1, D2, dT, P;
float TEMP;
int64_t OFF, SENS;
D1 = getData(0x48, 10);
D2 = getData(0x50, 1);
dT = D2 - ((long)calibrationData[5] << ;
TEMP = (2000 + (((int64_t)dT * (int64_t)calibrationData[6]) >> 23)) / (float)100;
OFF = ((unsigned long)calibrationData[2] << 16) + (((int64_t)calibrationData[4] * dT) >> 7);
SENS = ((unsigned long)calibrationData[1] << 15) + (((int64_t)calibrationData[3] * dT) >> ;
P = (((D1 * SENS) >> 21) - OFF) >> 15;
//Serial.println(TEMP);
//Serial.println(P);
return P;
}
long getData(byte command, byte del)
{
long result = 0;
twiSendCommand(0x77, command);
delay(del);
twiSendCommand(0x77, 0x00);
Wire.requestFrom(0x77, 3);
if(Wire.available()!=3) Serial.println("Error: raw data not available");
for (int i = 0; i <= 2; i++)
{
result = (result<<8) | Wire.read();
}
return result;
}
void setupSensor()
{
twiSendCommand(0x77, 0x1e);
delay(100);
for (byte i = 1; i <=6; i++)
{
unsigned int low, high;
twiSendCommand(0x77, 0xa0 + i * 2);
Wire.requestFrom(0x77, 2);
if(Wire.available()!=2) Serial.println("Error: calibration data not available");
high = Wire.read();
low = Wire.read();
calibrationData[i] = high<<8 | low;
Serial.print("calibration data #");
Serial.print(i);
Serial.print(" = ");
Serial.println( calibrationData[i] );
}
}
void twiSendCommand(byte address, byte command)
{
Wire.beginTransmission(address);
if (!Wire.write(command)) Serial.println("Error: write()");
if (Wire.endTransmission())
{
Serial.print("Error when sending command: ");
Serial.println(command, HEX);
}
}
void ledOn()
{
digitalWrite(led,1);
}
void ledOff()
{
digitalWrite(led,0);
}
Son beğenen can280
- kakalamtahu
- Mesajlar: 174
- Kayıt: 30.10.2012, 17:46
- Ad Soyad: Hasan Tahsin Çervatoğlu
- Şehir: İstanbul
- Aldığı Beğeni: 5 / 0
- Pilot Menüsü:
- [email protected]
- Mesajlar: 15
- Kayıt: 30.04.2014, 17:27
- Ad Soyad: Turan Bulat
- Şehir: Adana
- Aldığı Beğeni: 4 / 0
- Pilot Menüsü:
- kakalamtahu
- Mesajlar: 174
- Kayıt: 30.10.2012, 17:46
- Ad Soyad: Hasan Tahsin Çervatoğlu
- Şehir: İstanbul
- Aldığı Beğeni: 5 / 0
- Pilot Menüsü: