Bouwverslag: zelfbouw flight controler op basis van Arduino Uno

Joop word dat ding niet te zwaar ? lijkt mij toch al wat gewicht wat je er allemaal opgebouwd heb 8O

wel knap werk kerel , petje af
ik hou het liever bij vliegen of ja crashen :mrgreen:
 
@andre: deze gps is inderdaad een prima stuk techniek. Ik heb er al eerder mee gespeeld in een ander project:

ifAeLRRu8dQ[/media] fpv flight with DJI F550 hexa and 25mW transmitter - YouTube

Ik ben er toe ook achter gekomen dat de standaard 57600bps van de gps te snel was voor de Arduino. Op 38400bps werkte het inderdaad prima. Maar als je de gps een week in de kast had liggen moest je de snelheid weer opnieuw instellen. Ik kreeg het toen met het versturen van de string niet voor elkaar om de snelheid te verlagen. Dit ook omdat je dan de snelheid aan moet passen van de Arduino. Met de pc is het toe wel gelukt.

Waar ik uit eindelijk op uitgekomen ben is de AltSoftSerial library. In tegenstelling tot de standaard SoftwareSerial kan deze wel omgaan met de standaard snelheid van de gps. Deze ga ik dus weer gebruiken.

@Nick: het spul is inderdaad wat zwaarder dan een DJI Naza ;-) Maar als ik het allemaal een beetje op de rit heb ga ik mijn eigen print maken waar alleen de noodzakelijke dingen op komen. Dat scheelt een enorme hoeveelheid aan gewicht. Tevens wil ik dan een hexa of okto gaan bouwen. Maar dat is pas voor later. En zoals je in de video's kan zien komt ie nu nog heel aardig van zijn plek 8-)
 
Laatst bewerkt door een moderator:
Hmmm..... En weer een probleem om op te lossen :sniper:

Kruisgevoeligheid in de gyro :confused::confused: Bij bepaalde bewegingen geven de gyro's een verkeerde waarde waardoor de hoek bij differentiatie (optelling) volledig wegloopt. Bij alleen roll, pitch of yaw werkt het prima en komt de hoek voor en na de beweging precies op 0 graden uit.

Gezien de gegevens in de datasheet, waarin staat dat deze gyro een zeer lage kruisgevoeligheid heeft, verwacht ik dat dit in de gyro zal zitten. Of misschien is de gyro defect?? Helaas kunnen we hierdoor even niet verder :(
 
De gyro is in prima staat...... en ik weet inmiddels ook wie Leonhard Euler is :oops: Nu alleen even kijken hoe ik dit in mijn programma kan implementeren.
 
Het is alweer even geleden sinds mijn laatste post. Maar ik heb niet stil gezeten en ben weer flink wat stappen verder. Wat is er gebeurd? Het probleem met de gyro is opgelost en bleek een interpretatiefout te zijn. De gyro meet de verdraaiing rondom de x-, y- en z-as. In mijn berekeningen had ik de z-as niet meegenomen.

De gyro meetwaarde van de x- en y-as staan in de onderstaande afbeelding weergegeven als Axz en Ayz.

full



Met behulp van wat rekenwerk resulteert dit in de zwaartkrachtvector R. Ofwel, wat is boven en onder. Alles prima en leuk.

De problemen ontstaan als de multicopter om de z-as draait. In mijn berekening bleef de zwaartekrachtvector vrolijk staan en leverde dat een behoorlijke fout op. Ik heb inmiddels de z-as ook meegenomen in mijn berekening en alles werkt nu prima.

Programmeren en testen is leuk. Maar iedere keer het programma opnieuw uploaden om een setting te wijzigen ging mij wat ver en koste veel tijd en ergernis. De oplossing was een “field control panel”. Met dit paneel kan ik actuele data bekijken en kan ik alle instellingen aanpassen die ik zelf definieer in mijn programma. De eeprom van de Arduino zorgt ervoor dat alle instellingen bewaard blijven.

full


Een ander punt van aandacht was de uitbreidingsmogelijkheid naar een hexa of okto setup met gimbal. Dit betekend dat er 8 esc’s en 2 servo’s aangestuurd moeten worden. En dat is waarschijnlijk te veel voor de Arduino. Ik heb besloten om een I2C naar PWM converter te bouwen op basis van een Arduino mini pro.

full


In combinatie met een nieuw shield kwam ik tot de conclusie dat ik op moet schalen naar een DJI F450. En als alles samen is gebouwd ziet dat er ongeveer zo uit:

full


Ik heb vandaag de eerste testvluchten gemaakt en het resultaat is prima! Nu moet ik alleen de gps nog toevoegen en kan ik beginnen met het aanpassen van de software. De volgende uitdaging ;-)
 
Laatst bewerkt door een moderator:
Ik had wel verwacht dat je flink aan het sleutelen zou zijn. Mooi dat je het gyro probleem hebt gevonden.

Bij de Aeroquad ondersteunen ze ook een hex en optocopter, alleen niet voor de Uno. Zal wel te veel code kosten of te veel rekenwerk.

Ik vroeg me af waar je die I2C naar PWM converter voor gebruikt. Is dat een soort seriele interface naar meer poorten?

P.S. Ik heb vanavond mijn Aeroquad eens goed de grond in geboord. Ik had net ontdekt dat vliegen zonder accelerometer veel leuker is omdat er ook loopings gemaakt kunnen worden en heel bizar bochtenwerk. Alleen na een snoeiharde duikvlucht had de lipo niet genoeg vermogen meer om dat op te vangen. Resultaat: 1 volledig afgeschreven motor, 2 motoren met een kromme as, 3 gebroken props en een kompleet ontwricht frame. Oh ja, alles zat ook onder de koeiestront. Heb ik ook wat te doen komend weekend :rolleyes:
 
Oeps, dat is niet zo mooi om te horen Andre. Zonde van de crash. Er zit maar 1 ding op: opnieuw schoonmaken, opbouwen en weer vliegen ;-)

De I2C naar PWM converter stuur ik vanuit de Arduino aan met de gewenste pulslengte van de esc's. De converter genereert vervolgens zelfstandig de pulsen. Hierdoor krijg ik in het programma van de Arduino meer ruimte en tijd om andere zaken op te pakken. Zoals het verwerken van de gps signalen.
 
Oeps, dat is niet zo mooi om te horen Andre. Zonde van de crash. Er zit maar 1 ding op: opnieuw schoonmaken, opbouwen en weer vliegen ;-)

De I2C naar PWM converter stuur ik vanuit de Arduino aan met de gewenste pulslengte van de esc's. De converter genereert vervolgens zelfstandig de pulsen. Hierdoor krijg ik in het programma van de Arduino meer ruimte en tijd om andere zaken op te pakken. Zoals het verwerken van de gps signalen.

Tsja, "shit" happens. Een reserve motor en props had ik al liggen en als mijn bestelde motor asjes morgen binnen zijn dan vliegt m'n quad zondag weer. Maar dan zal ik beter de lipo status in de gaten houden.

Goh, da's goed bedacht zeg, die I2C naar PWM. Dan kun je de taken een beetje verdelen. Je bent vast al aan het nadenken over wat je nog meer door de 2e processor kunt laten uitvoeren.
Dat ik in het begin inhaakte op je bouwproces had ik zoiets van: waar begin je aan? Maar je weet duidelijk precies waar je mee bezig bent. Respect!
 
Maar dan zal ik beter de lipo status in de gaten houden.
:thumbsup:

Heeft de Aeroquad geen melding voor lage lipo spanning (led/buzzer)?

Bedankt voor het compliment en ik heb inderdaad een doel. Ik richt mij nu echt op een film platform. Geen stunt of snelheid, maar echt veilig en betrouwbaar filmen zonder overbodige fratsen. En dan kom ik toch uit op een okto. Dan kan er zonder problemen 1 motor uitvallen :cool: En misschien wel redundantie......

De I2C naar PWM kan straks de motorberekeningen doen. En er komt nog een processor bij ;)...... GPS to I2C. En die gaat straks de berekeningen doen voor de gps-positie. Zo hou ik in de master voldoende tijd over om zaken goed te stroomlijnen. Maar dat is voorlopig toekomstmuziek :cool: Net als een eigen printplaat :rolling:
 
De Aeroquad heeft wel een lipo led waarschuwing. Dat werkt ook heel nauwkeurig, alleen is de led niet altijd in beeld. Ik zet er ook bij elke vlucht een lipo-pieper bij. Die had voor mijn crash ook al z'n eerste piep gegeven. Het afremmen na de duikvlucht was net te veel voor de lipo. Het zal me niet verbazen als zo'n rem manouvre minstens 60A trekt. Dat heb ik onderschat en zal geen extreme fratsen meer uithalen als de lipo op z'n eindje loopt. Misschien programmeer ik wel een beperking in of laat de quad over gaan op stabiliteitsmode als de lipo op z'n eindje loopt. M'n quad is ook best zwaar, 1kg.

Maar goed, vandaag idd m'n spulletjes binnen gekregen en alles is weer gefixed. Als morgen het weer het toe laat ga ik nog een vluchtje wagen.

Als je waar kunt maken wat je nog van plan bent, dan zou je die gasten van Aeroquad nog wat kunnen leren. Taken uitsmeren over meerdere processoren via een lichtgewicht protocol, daar hebben ze vast niet aan gedacht. Misschien moet je eens een blog opzetten...
 
Misschien programmeer ik wel een beperking in of laat de quad over gaan op stabiliteitsmode als de lipo op z'n eindje loopt.
Wat is het toch een mooie ervaring als je dit zelf kan programmeren ;)

Ik heb inmiddels de gps een plekje gegeven op de F450 quad:

full


Vandaag met de wind nog wat testvluchten gedaan en dat verliep allemaal prima (zonder gps). Ook heb ik inmiddels de berekeningen van de motor signalen omgezet naar de I2C to PWM module. Werkt prima en geeft weer extra tijd in de master processor :thumbsup:

Ik ben nog steeds erg tevreden met het resultaat :cool:

Als je waar kunt maken wat je nog van plan bent...
Ik ga proberen mijn ideeën om te zetten in werkelijkheid en realiseer mij heel goed dat sommige zaken enorm complex zijn. Ik verbaas mij er over dat ik al zo ver gekomen ben :rolling: I ain't the sharpest tool in the shed ;)

Langzaam kan ik na gaan denken over het model van een okto. Misschien heeft iemand een idee wat mooi, interessant en aerodynamisch een goede keuze zou kunnen zijn.
 
Laatst bewerkt door een moderator:
Was dit niet iets ? 16 kanalen PWM via i2c ;)
Op zich een mooi bord. maar helaas veel groter dan wat ik nu heb. Grootste nadeel is dat ik er dan geen controle over heb. En zoals ik in mijn verhaal schreef voert mijn I2C/PWM converter ook berekeningen uit. Dat scheelt enorm veel dataverkeer tussen de master en de I2C/PWM convertor. Vandaar de keuze om hem zelf te maken.

Ze hebben ook een mooie GPS Breakout, met een 10hz output en kleiner dan je huidige GPS, en ook minder gewicht.
Inderdaad is er in gps-land keuze genoeg en zo'n kleine gps ziet er wel mooi uit.

Met mijn huidige gps heb ik goede ervaringen en helaas heb ik ervaren dat niet alle gps specificaties altijd waargemaakt worden. Hierdoor ben ik wat voorzichtiger om zonder noodzaak over te stappen op een andere gps. Ik heb liever 5Hz en nauwkeurig dan 10Hz met ruis.
 
Op zich een mooi bord. maar helaas veel groter dan wat ik nu heb. Grootste nadeel is dat ik er dan geen controle over heb. En zoals ik in mijn verhaal schreef voert mijn I2C/PWM converter ook berekeningen uit. Dat scheelt enorm veel dataverkeer tussen de master en de I2C/PWM convertor. Vandaar de keuze om hem zelf te maken.

Logisch!

Inderdaad is er in gps-land keuze genoeg en zo'n kleine gps ziet er wel mooi uit.

Met mijn huidige gps heb ik goede ervaringen en helaas heb ik ervaren dat niet alle gps specificaties altijd waargemaakt worden. Hierdoor ben ik wat voorzichtiger om zonder noodzaak over te stappen op een andere gps. Ik heb liever 5Hz en nauwkeurig dan 10Hz met ruis.

Ik gebruik deze GPS ontvanger zelf ook maar dan voor een nog iets meer Tijd gerelateerd doel ;)
Heb namelijk een Stratum1 tijdserver, en deze unit is enorm accuraat.


Ik ga zelf ook bezig nu, je hebt me aangestoken!
Heb inmiddels frame + motoren en ESC's bestelt, ik ga het op basis van een Arduino Due doen, ga zelf een shield maken met de sensors en GPS er op zodat het compact blijft, qwa snelheid zit ik iig goed met een Due gezien dit 32Bits is ook, en op 84 Mhz draait.
 
Ik ga zelf ook bezig nu, je hebt me aangestoken!
Heb inmiddels frame + motoren en ESC's bestelt, ik ga het op basis van een Arduino Due doen, ga zelf een shield maken met de sensors en GPS er op zodat het compact blijft, qwa snelheid zit ik iig goed met een Due gezien dit 32Bits is ook, en op 84 Mhz draait.
Dat is leuk om te horen :thumbsup: Ga je zelf je programma schrijven of gebruik je de Aeroquad software? In ieder geval succes met bouwen!

De Due is inderdaad een mooie en snelle processor. Maar zoals ik in post 44 al schreef wil ik het echt met de Uno / Mini pro doen. En tot op heden heb ik nog steeds tijd en ruimte om zaken toe te voegen.
 
Dat is leuk om te horen :thumbsup: Ga je zelf je programma schrijven of gebruik je de Aeroquad software? In ieder geval succes met bouwen!

De Due is inderdaad een mooie en snelle processor. Maar zoals ik in post 44 al schreef wil ik het echt met de Uno / Mini pro doen. En tot op heden heb ik nog steeds tijd en ruimte om zaken toe te voegen.

Ik wil inderdaad het helemaal zelf doen, op die manier kan ik alles zelf ook bepalen hoe en wat.
Mijn doel is om te zorgen dat ik hem echt als UAV kan gebruiken, dus evt via een Wifi verbinding of een ander soort verbinding coordinaten kan geven en dat hij zelf er naar toe vliegt.
Uiteraard wil ik ook hem nog normaal kunnen gebruiken, dus zal een mode switch op gaan komen :)
 
Ik ben benieuwd hoe het jou gaat bevallen!

Weet je al welke sensoren je gaat gebruiken en of je een bouwdraadje bij gaat houden?
 
Ik zou bijna jaloers worden. Ik zou ook graag de uitdaging aan gaan maar aangezien ik al meer dan 20 jaar 5 dagen per week professioneel code zit te kloppen kan ik me er 's avonds niet meer toe zetten.

Ik heb wel de afgelopen paar avonden gebruikt om de aeroquad software te voorzien van "horizon mode". Ik moet het nog buiten proberen, maar de testjes die ik binnen gedaan heb zijn veelbelovend.

Het gevoel dat je het zelf maakt en alles onder controle hebt blijft wel een ultieme kick. Dat gevoel ken ik maar al te goed.
 
Ik ben benieuwd hoe het jou gaat bevallen!

Weet je al welke sensoren je gaat gebruiken en of je een bouwdraadje bij gaat houden?

Bouwdraadje weet ik nog niet, maar waarschijnlijk wel.

Qwa sensoren gedeeltelijk:

Adafruit 10-DOF IMU Breakout - L3GD20 + LSM303 + BMP180 ID: 1604 - $49.95 : Adafruit Industries, Unique & fun DIY electronics and kits

Deze heeft iig alvast de druk, acceleratie, gyro, etc. allemaal via i2c.
Ik zit nog te twijfelen voor een IR Afstand of Ultasoon afstandsmeter onder de Quad voor het automatisch landen (afstanden minder dan 1meter hoog).
 
Back
Top