Bouwverslag: zelfbouw flight controler op basis van Arduino Uno

Discussie in 'Multicopters bouwverslagen' gestart door JoopB, 31 jan 2014.

  1. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    @Andre: Welke druksensor gebruik je? Goedkopere sensoren produceren nogal wat ruis wat de regeling behoorlijk kan verstoren. Dit zou een oorzaak van onstabiel gedrag kunnen zijn.

    De sensor die ik gebruik geeft echt een enorme strakke en reproduceerbare waarde op 20cm nauwkeurig. Nadeel is dat een goede meting 20 ms duurt :-( Hoe ik het in ga vullen weet ik nog niet. Eerst maar eens wat bruikbare data verzamelen ;-)
     
  2. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Ik gebruik een BMP180. De opvolger van de BMP085. Makkelijk via i2c te koppelen en zit mijn MPU06050 sensor niet in de weg.
     
  3. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    De BMP180 ken ik niet. De BMP085 heb ik in het verleden mee gewerkt maar die had echt teveel ruis om stabiele resultaten mee te produceren. Ik ga er van uit dat de BMP180 beter presteert waardoor je toch redelijke resultaten moet krijgen.

    Ik weet niet of je bij de BMP180 de gevoeligheid in kan stellen. Anders zou je daar eens naar kunnen kijken. Vaak kan je dit via registers instellen.
     
  4. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Ik heb even op de site van Bosch, fabrikant, zitten kijken. Deze is wel verbeterd maar geeft een nauwkeurigheid van +- 1 meter. Een stuk slechter dus dan jou sensor. Er is een instelling voor low power of high resulotion met betere ruisonderdrukking. Ik zal eens uitzoeken welke instelling aeroquad gebruikt.
     
  5. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Vandaag een nieuwe ophanging van de versnellingssensor gemaakt. Met de oude kreeg ik af en toe door resonantie een kleine afwijking. In de nieuwe situatie heeft de sensor minder ruimte om te resoneren en de eerste testen gaven een erg goed resultaat. Morgen eens rustig verder testen.

    [​IMG]
     
    Laatst bewerkt door een moderator: 17 nov 2015
  6. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Een ophanging van elastiek? Ik weet het hiet hoor Joop. Het zal wel trillingen dempen maar bij wat hardere klappen ook na stuiteren? Of is het leer?

    Nou ja, als je het niet test weet je het nooit. Ben benieuwd naar je bevindingen. Misschien is het wel het ei van columbus.
     
  7. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Het is gewoon een Hema elastiek ;-) Maar ik moet wel toegeven dat het geen blijvende oplossing is. Elastiek wordt na verloop van tijd hard en dan ben je genoodzaakt om het te vervangen. Waar ik naar op zoek ben is een goede basis, daarna ga ik kijken naar een blijvende en betrouwbare oplossing. Zelf zit ik te denken aan silicone dempers:

    [​IMG]

    Maar gezien de prijs blijf ik even bij mijn elastiek :cool:

    De demping van elastiek is wel enorm goed zoals je in de grafieken boven aan deze pagina kan zien. Bij een harde landing kan de sensor gaan stuiteren. Maar daar maak ik mij geen zorgen om omdat de software dit detecteert en de sensor dan niet meer gebruikt. Bij turbulentie en grof vliegwerk blijft de sensor netjes op zijn plek en levert dan goede informatie.
     
  8. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Stap 3: Automatische hoogteregeling op basis van een luchtdruksensor
    Na de problemen met het implementeren van de versnellingssensor is het weer tijd voor iets leuks. De automatische hoogteregeling op basis van een luchtdruksensor.

    De luchtdruk op het aardoppervlak is anders dan de luchtdruk hoog in de atmosfeer. In de onderste laag (0 t/m 200 meter) kan grofweg gesteld worden dat de luchtdruk 1mbar per 8 meter afneemt. Op basis van luchtdruk is het dus mogelijk om redelijk nauwkeurig de hoogte te bepalen. Echter is het wel van belang dat er een sensor toegepast wordt die nauwkeurig genoeg is om kleine variaties in luchtdruk consequent te registreren.


    [​IMG]


    De sensor die ik gebruik is een MS5607. Deze sensor is in staat om per 20cm een betrouwbare en stabiele meetwaarde te produceren. Een nadeel is wel dat voor deze nauwkeurigheid verhoudingsgewijs vrij veel tijd nodig is, namelijk 20ms. Dit resulteert in een verversingsfrequentie van 50Hz. Het is mogelijk om sneller te meten maar dat komt de nauwkeurigheid niet te goede. Omdat ik er altijd naar streef om de bron te optimaliseren heb ik gekozen voor de hoogste nauwkeurigheid.

    In de onderstaande grafiek is de hoogte van de quad weergegeven ten opzichte van de tijd in seconden. De totale grafiek bestaat uit 13000 meetwaarde! Direct is te zien dat er bijna geen ruis in het signaal aanwezig is.

    [​IMG]


    De gemeten waarde is de actuele waarde van de pid regelaar. Bij het overschakelen naar hoogteregeling wordt een variabele gelijk gemaakt aan de actuele meetwaarde en dient als gewenste hoogte. De uitgang van de regelaar stelt het gassignaal bij om de hoogte te behouden.

    De hoogte van de quad kan aangepast worden door de gewenste hoogte te verhogen of te verlagen. Door gebruik te maken van het us signaal van de gasstick kan bijvoorbeeld worden gesteld.

    Gewenste hoogte = gewenste hoogte + (gasstick – 1500) / 500

    Zo wordt bij iedere programmalus de variabele positief of negatie beïnvloed. Zelf vind ik het wel prettig om wat “vrije ruimte” rondom midstick te hebben. Hierdoor zakt de quad niet als de stick niet precies in het midden staat. In mijn programma is daarom een kleine ruimte rondom midstick geprogrammeerd.

    Hopelijk zit het weer binnenkort een beetje mee om de eerste testen te doen.
     
    Laatst bewerkt door een moderator: 17 nov 2015
  9. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Ik heb laatst een filmpje op youtube zitten kijken van een gast zelf van die dempertjes maakte van siliconen. Dat zag er vrij simpel uit. Paar M3 boutjes en ringetjes, een vormpje en een tube siliconen.

    Ik ben wel geinteresseerd in hoe jij die trillingen hebt gemeten. Dat zijn handige grafieken. Mijn quad is helemaal van aluminium en buigt of tordeert voor mijn gevoel helemaal niet. Mijn electronica ligt op een laagje 6mm Depron voor wat demping. Wat ik me af vraag is of er toch trillingen optreden en of dat meetbaar is.
     
  10. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Ik produceer de grafieken met Excel. Ik pak de betreffende variabele en print deze via de seriële verbinding Serial.println(variabele) Dan kopieer ik de meetwaardes in Excel en maak er een grafiek van. Hooguit een minuut werk en je heb direct zichtbaar wat er gebeurd.
     
  11. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Oke, dat doe je met Excel.
    Het makkelijkst om de vibraties te meten zal wel met de gyro/accelerometer zijn. Daar kom ik wel uit.
    Bedankt voor de tip.
     
  12. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Trillingen meet je alleen met de versnellingssensor omdat de gyro nauwelijks gevoelig is voor trillingen. Ben benieuwd naar je bevindingen.

    Testen met de hoogteregelaar ligt even stil door de wind. Buiten waait het te hard en binnen veranderd de luchtdruk behoorlijk door de wind. Ik moet dus even geduld hebben.

    Heb ik mooi wat tijd om te kijken of ik nog wat meer snelheid in mijn programma kan maken.
     
  13. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Nou, ik heb er een grafiekje uitgeperst. Eerst data opgespaard met een klein zelfgemaakt Delphi programma'tje. Daarna "stationair" laten draaien, dan net niet genoeg gas gegeven om op te laten stijgen, en weer terug naar stationair. En als laatste de motoren weer uit.

    Dit is mijn grafiek van de ruwe sensor data. Reeks 1, 2 en 3 staan voor X, Y en Z:

    [​IMG]

    Toch wel een hele boel rommel zit er tussen aangezien de quad niet van z'n plek is geweest. Ik ga nog eens meten maar dan met gefilterd signaal.
     
  14. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Gezien 8000 het getal is van de "normale" versnelling vindt ik het signaal best goed. Wat is de gevoeligheid van de sensor? Bijvoorbeeld 2G, 4G of 16G? Maakt ook nogal verschil namelijk.

    Ben benieuwd naar je waardes met een filter.
     
  15. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Dit staat in het deel van de sensor init:
    MPU6000_WriteReg(MPUREG_ACCEL_CONFIG,0x08); // Accel scale +-4g (4096LSB/g)

    4G dus.

    Ik heb tot nu toe nog geen goeie plek in de code gevonden om gefilterde data af te tappen voor mijn log programma...
     
  16. miccim

    miccim

    Lid geworden:
    25 jul 2004
    Berichten:
    492
    Locatie:
    127.0.0.1
    @JoopB:
    Complimenten voor dit draadje! Erg interessant hoe je het programma opbouwt.
    Goed dat je dit wilt delen met ons! Lees het met erg veel plezier :-D
     
  17. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Toch gevonden. De code die de sensors afhandeld zit het "Process100HzTask()" deel.

    Geeft deze grafiek bij dezelfde handelingen. Op het laatst de quad nog even opgetild, volledig op z'n kant en naar voren gedaan:

    [​IMG]

    Ik weet niet wat jij er van vindt, maar ik ben niet ontevreden.
     
  18. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Bedankt voor je compliment Miccim!

    Ziet er inderdaad goed uit Andre. Is dit de gefilterde versnellingssensor of is het een combinatie van gyro en versnelling?

    Zit de refresh van deze sensor maar op 100Hz? Zelf draai ik de gyro en versnellingssensor op 250Hz. Kan dus wat minder zie ik ;-)
     
  19. Andreotti

    Andreotti

    Lid geworden:
    20 jun 2012
    Berichten:
    370
    Locatie:
    Alphen aan den Rijn
    Het is echt alleen de accelero data. De gyro is hier nog gescheiden.

    Ja, 100Hz. Dacht wel dat je daar een opmerking over zou maken :) Niet te geloven he?
     
  20. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Kan je achterhalen wat voor filter methode ze gebruikt hebben om dit signaal te genereren? Ben erg benieuwd naar hun insteek hiervan.
     

Deel Deze Pagina