Poor Mans Vario

Hierbij het gevraagde filmpje met de BMP180 sensor. Ik heb geprobeerd ongeveer dezelfde bewegingen te maken als in het filmpje in de beginpost. Als je ze na elkaar afspeelt, kun je horen dat de BMP180 meer gedempt reageert.

 
Laatst bewerkt door een moderator:
2,4GHz modules getest

Om eens te testen met dit 2,4GHz setje heb ik ook nog ergens op het to-do lijstje staan.

10808413986_1b555b76d1_c.jpg
Gisteren heb ik de eerder genoemde 2,4GHz modules getest. Ik was in staat om data te verzenden, maar ik haalde vanuit mijn huis nog niet eens de 15 meter tot mijn garage. Leuk voor een draadloos weerstation of zo iets, maar voor de Vario niet interessant.
 
Op het werk hadden we een UNO en een BMP085 (in een rare form factor) liggen. Daarnet dus al eens geprobeerd de code werkend te krijgen.

12618882523_a71faaefd4.jpg


als output wanneer de sensor op mijn bureau stil ligt krijg ik dit (met een paar println's uitgezet, en andere verduidelijkt)
Code:
Setting up BMP085
Reading Calibration Data
AC1: 8866
AC2: -1228
AC3: -14417
AC4: 33639
AC5: 24614
AC6: 23378
B1: 5498
B2: 66
MB: -32768
MC: -11075
MD: 2432
 p0 = 100974.00
temp: 223 pressure: 100978 altitude:  0
0temp: 224 pressure: 100978 altitude:  0
0temp: 224 pressure: 100977 altitude:  0
0temp: 224 pressure: 100981 altitude:  0
0temp: 224 pressure: 100982 altitude:  0

Ik denk dat dit er goed uit ziet?

Ik zie er zeker niet tegen op om een beetje met elektronica te spelen, ik heb de andere componenten dus al besteld :)
 
Bouwen maar. Dat ziet er prima uit. 22,4 Celsius en 1009.80 millibar druk.
Stop de Vario code er maar eens in en kijk dan naar het ledje op de Arduino als je hem op en neer beweegt (de trap op en af lopen). Ik heb ervoor gezorgd dat de led op de Arduino meeknippert met het geluidssignaal.

Als alternatief sluit je een oortelefoontje aan tussen "gnd" en "D2" op de Arduino Uno. Als je stil bent hoor je al een beetje vario geluid.
 
Zou je de opstelling niet nog veel kleiner/lichter kunnen maken met zo'n ATtiny chip? (zie dit bericht nog even door in de discussie hierboven

mijzelf zei:
Waar ik op langere termijn nog wel wat in zie voor de Poor Mans Vario is de ATTiny85. Ik ben aardig wat avonden bezig geweest om te pogen de software voor de ATTiny85 gecompileerd te krijgen, maar ik struikelde op de beperking in veldlengtes voor de druksensor berekeningen. Daar worden volgens de datasheet van de druksensoren eerst hele grote getallen met elkaar vermenigvuldigd en dan pas gedeeld. Iemand met meer rekenkundig inzicht dan ik, zou die formules wellicht kunnen omwerken, zodat ze met kortere veldlengten kunnen volstaan.
 
Laatst bewerkt door een moderator:
Rekenkundig inzicht?

ik struikelde op de beperking in veldlengtes voor de druksensor berekeningen. Daar worden volgens de datasheet van de druksensoren eerst hele grote getallen met elkaar vermenigvuldigd en dan pas gedeeld. Iemand met meer rekenkundig inzicht dan ik, zou die formules wellicht kunnen omwerken, zodat ze met kortere veldlengten kunnen volstaan.
Kun je posten wat precies het probleem is? Ik heb de illusie (zelfoverschatting heet dat ;)) dat ik misschien kan helpen.
 
Leon, zie hieronder in de code de twee delen waarover ik ben gestruikeld. Steek er niet te veel tijd in en als je dat al doet neem dan de MS5611 code onder handen.

Voor de BMP180 in combinatie met de ATTiny85 heb ik inmiddels een ander stel libraries bij elkaar gesprokkeld en een bug uit de compiler moeten fixen. Daar ga ik nog een poging voor wagen, zodra ik weer een ATTiny85 in bezit heb. Ik had er een, maar die zit nu morse code te genereren op Bosreus zijn boot. :p

Btw, Ik sluit niet uit dat de compiler bug, zonder dat ik het wist, ook een rol heeft gespeeld, waarom ik de ATTiny had opgegeven.

Code:
[FONT=Arial][SIZE=3]
[/SIZE][/FONT]
// Ik had problemen om het datatype "float" door de compiler te krijgen.
// Ik heb toen "float" vervangen door "long", maar toen werkte de sound 
// routine niet meer.


float toneFreq, toneFreqLowpass, pressure, lowpassFast, lowpassSlow;
float p0; // this will be used to store the airfield elevation pressure

  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);
    ledOn();  // the Arduino led will blink if the Vario plays a tone, so you can test without having audio connected
  }
  else
  {
    noTone(2);
    ledOff();
  }


//  Onderstaande subroutine verdenk ik ervan om grote floating point 
//  berekeningen te doen (decimal shift over 15 en 16 posities?)
//  Als ik TEMP bijvoorbeeld van datatype "float" in "Long" verander, 
//  dan compileert het ook niet meer.


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] << 8);
  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) >> 8);
  P = (((D1 * SENS) >> 21) - OFF) >> 15;

  //  Serial.println(TEMP);
  //Serial.println(P);

  return P;
}


De sensor berekeningen worden uitgelegd op blz 7 van de datasheet van de sensor

 
Rara waar zit de bug ???

In de BMP180 & BMP085 versie van de code moet ergens een fout zitten, die ik maar niet kan vinden. Als ik de vario aanzet en ik verlaag heel plotseling de druk, door er aan te zuigen, dan reageert hij met de stijgtoon, maar bij het terugvallen (maximale daling) loopt het programma vast.

De MS5611 versie heeft er geen last van.

Ik zie wat over het hoofd, maar wat?

[Edit] gevonden.
Omdat de BMP085 wat trager is, had ik de bandbreedte voor de dempingsroutine wat vergroot, waardoor er een negatief getal bij toonfrequentie kan komen te staan en dat kan natuurlijk niet een frequentie van -50 Hz bestaat niet

De foute regels zijn:
toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.1;
toneFreq = constrain(toneFreqLowpass, -1000, 1000);

Vervang dit door:
toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.15;
toneFreq = constrain(toneFreqLowpass, -500, 500);
 
Laatst bewerkt:
Ik heb de MS5611 binnen. Het is deze variant:

drotek%20-%20MS5611-%20arduino%20-%20I2C.jpg


Ik zie dat ik het bordje moet instellen om I2C te praten en het adres ook kan kiezen. In de code zie ik dat ik het best op 0x77 instel.
Maar waarvoor dient het blokje onderaan naast de A2 A1?
 
Volgens mij activeer je daarmee de pullup weerstanden R1 en R2. Heb je niet nodig.

Zonder dat je het soldeereilandje gebruikt staat hij meen ik al op 0x77.
Even alleen met het soldeereilandje op I2C zetten en dan uitproberen. Krijg je geen vario signaal, dan in de code 0x77 veranderen in 0x76 en nogmaals proberen. Hoor je dan nog niks, dan de "soldeerschakelaar" gebruiken.

Let even op, dat die Drotek sensor geen spanningsregelaar op het bordje heeft zitten. Hierdoor moet hij met 3,3Volt gevoed worden. Dat kan prima als je de 3,3volt uitvoering van de Arduino Pro Mini gaat gebruiken. VCC geeft dan inderdaad 3,3Volt. Er is echter ook een 5Volt versie van de Arduino Pro Mini, die er identiek uitziet. Daar geeft de VCC 5Volt, waarmee je dus je sensor opblaast.
 
Laatst bewerkt:
Let even op, dat die Drotek sensor geen spanningsregelaar op het bordje heeft zitten. Hierdoor moet hij met 3,3Volt gevoed worden. Dat kan prima als je de 3,3volt uitvoering van de Arduino Pro Mini gaat gebruiken. VCC geeft dan inderdaad 3,3Volt. Er is echter ook een 5Volt versie van de Arduino Pro Mini, die er identiek uitziet. Daar geeft de VCC 5Volt, waarmee je dus je sensor opblaast.

te laat... :nooo:
ik ging uit van het schema op rcgroups, waarbij de MS5611 aan 5V van de RX hangt... Die zal dan waarschijnlijk wel een spanningsregelaar hebben.

Ik krijg er niets uit als ik hem nu aan 3.3V hang, dus hij zal sowieso wel kapot zijn zeker nu? Zo leer je bij zeker? :?
Er is ook nog een BMP180 onderweg, en ik lees dat die misschien wel beter is dan de MS5611 omdat die iets minder fel reageert? Ik de vario normaal in een radian pro gebruiken.
 
te laat... :nooo:
ik ging uit van het schema op rcgroups, waarbij de MS5611 aan 5V van de RX hangt... Die zal dan waarschijnlijk wel een spanningsregelaar hebben
Nu begrijp je waarom ik in mijn openingspost uitleg dat je er een met een spanningsregelaar moet kopen. Enfin...gebeurd is gebeurd, er zijn ergere dingen.

Ik ga binnenkort de openingspost bijwerken, samen met een moderator, en zal dan ook een eigen hardwareschema publiceren. Hierin kan ik dan waarschuwen voor de voltages.
 
Je had er inderdaad voor gewaarschuwd, mijn fout!

Wat is de beste optie om het grondstation te poweren? Kan dat met een batterypack met 4x AA?
 
Wat is de beste optie om het grondstation te poweren? Kan dat met een batterypack met 4x AA?
Maakt niet uit. 4 alkaline batterijen houden het denk ik een heel vliegseizoen uit. Ik gebruik een oud 4,8V NIMH ontvanger pack, wat ik niet meer in een vliegtuig vertrouw.
 
vario

full


De vario binnen kort ga ik hem testen .
De oude vertrouwde multiplex vario moet plaats maken voor de poor mans

de zend module is ook te zien . het zit allemaal nog niet op de juiste plek maar ruimte genoeg ineens.
 
Laatst bewerkt door een moderator:
Aha, nu zie ik het.

Ik zou de sensor afschermen met een donker stukje schuim. Het is zeer lichtgevoelig en de uitlezing wordt er rustiger van.
 
Back
Top