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
    En hierbij nog een constructievideo van de 6-DOF print:



    Ik heb het bijgehouden..... de afgelopen 12 dagen is dit draadje gemiddeld 60 keer per dag bekeken :thumbsup: Mooi compliment en laat gerust eens een reactie achter ;)
     
    Laatst bewerkt door een moderator: 13 nov 2015
  2. topix

    topix

    Lid geworden:
    9 sep 2013
    Berichten:
    2.012
    Locatie:
    zuid-oost Drenthe
    Mooi filmpje:thumbsup:
     
  3. Micropuller

    Micropuller Forum veteraan

    Lid geworden:
    1 jul 2004
    Berichten:
    6.400
    Als je enthousiast bent, klink je als David Jones van EEVblog :D
    Prachtig project verder. Ik zou willen dat ik zoveel programmeerskills had!
     
  4. Nak

    Nak

    Lid geworden:
    16 jun 2013
    Berichten:
    227
    Locatie:
    Schagen
    Respect voor je mooie werk !
    Een reflowoven is redelijk simpel zelf te bouwen van een kleine tosti oven
    bij de blokker (o.i.d.) vandaan. Alleen een separate temeratuurmeter erin hangen
    om het netjes in de gaten te houden.
     
  5. Tasz

    Tasz

    Lid geworden:
    10 okt 2011
    Berichten:
    3.548
    Locatie:
    Kudelstaart
    Heel mooi filmpje. Het enthousiasme is goed terug te horen haha
     
  6. DKHDKH

    DKHDKH

    Lid geworden:
    15 mei 2014
    Berichten:
    46
    Ook ik ben erg onder de indruk. Zelf ben ik een snelheidsregelaar voor een boot aan het bouwen met Arduino. Wie weet ooit eens voor een multicopter.
     
  7. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Allemaal bedankt voor de leuke reacties :thumbsup: Het is echt een heel gave ervaring als alles werkt zoals je het bedacht had. En daar kan ik best wel een beetje enthousiast van worden ;-)

    Volgende uitdaging is de Arduino Uno ombouwen naar een 20MHz versie en dan de boel weer passend maken met de software. Het Arduino platform ondersteunt geen Arduino Uno op 20MHz. En dat is weer een mooie uitdaging :thumbsup:
     
  8. Nak

    Nak

    Lid geworden:
    16 jun 2013
    Berichten:
    227
    Locatie:
    Schagen
    Waarom stap je niet over op een Arduino Due, veeeel sneller (84 MHz)
    en plenty interrupts voor de ontvanger.
     
  9. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Omdat ik in de toekomst mijn eigen print wil maken. Dan is een Atmega328 net even iets praktischer en prijstechnisch aantrekkelijk. Ik heb nu bijna alles rond wat ik er in wil hebben. De 20MHz is eigenlijk meer een uitdaging en een optimalisatie dan strikt noodzakelijk.
     
  10. evharten

    evharten

    Lid geworden:
    5 aug 2011
    Berichten:
    97
    Locatie:
    Capelle a/d Ijssel
    Is simpel te doen ;)
    Arduino UNO @ 20MHz - Arduino Forum

    Staat nieuwe bootloader + board definitie voor de Arduino Software.
     
  11. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Dat is nou net het minst grote probleem ;) Het is de Arduino software die specifiek is geschreven voor 8 en 16MHz.

    Bij 16MHz tikt de 8 bit Timer0 om de 4us (16.000.000 / 64). Bij 20MHz tikt Timer0 om de 3.2us. Door het decimale getal gaat er informatie verloren omdat de Arduino software uitgaat van gehele getallen.

    De milliseconden timer tikt respectievelijk eens in de 1024us en 819.2us. (4 x 256 en 3.2 x 256). Om de 24us te corrigeren bij 16MHz verhogen ze iedere 125/3ms (41,67ms) de milliseconden timer met 1.

    Om de 819.2 te corrigeren is veel meer nodig. En daar gaat het mis in de Arduino software. In de huidige structuur waarbij ze vasthouden aan "backwards compatible" werkt de tijd op 20MHz niet goed.
     
  12. evharten

    evharten

    Lid geworden:
    5 aug 2011
    Berichten:
    97
    Locatie:
    Capelle a/d Ijssel
    Timer0 is toch de timer die de delay aanstuurt, die schijnt namelijk goed te functioneren.

    1. delayMicroseconds - wiring.c - works at 20MHz
    2. Softwareserial - implemented in library and work at 20MHz

    Maar hij weet niet of de millis(), micros() and delay() werken zonder modificatie, das iets wat je nog wel zou moeten uitzoeken.
    Opzich zou de modificatie niet zo heel erg groot moeten zijn, waardes aanpassen in de .c files van Arduino en je zit goed.

    Als het goed is hoef je ook niets aan te passen want met AVR-GCC worden alle waardes netjes goed gezet als je de f_cpu defined in de builds.
    dus de build.f_cpu=20000000L moet wel in de board define zitten, anders past de compiler dat niet goed aan.

    Heb aardig wat geprogrammeerd met AVR-GCC voordat ik arduino's gebruiktte, gebruikte eerst kaal AVR's ;)
     
  13. evharten

    evharten

    Lid geworden:
    5 aug 2011
    Berichten:
    97
    Locatie:
    Capelle a/d Ijssel
    Code:
    #if F_CPU >= 20000000L
            // for the 20 MHz clock on rare Arduino boards
    
            // for a one-microsecond delay, simply wait 2 cycle and return. The overhead
            // of the function call yields a delay of exactly a one microsecond.
            __asm__ __volatile__ (
                    "nop" "\n\t"
                    "nop"); //just waiting 2 cycle
            if (--us == 0)
                    return;
    
            // the following loop takes a 1/5 of a microsecond (4 cycles)
            // per iteration, so execute it five times for each microsecond of
            // delay requested.
            us = (us<<2) + us; // x5 us
    
            // account for the time taken in the preceeding commands.
            us -= 2;
    
    stukje uit de wiring.c van Arduino , zo te zien houden ze al rekening met 20Mhz ;)
    zoals je ziet wel belangrijk die F_CPU te definen ;)
     
  14. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    De functie delayMicroseconds() is gebaseerd op loze processorlussen. Dit is eenvoudig op te lossen door het toevoegen van extra lussen. Er hoeft immers niets te gebeuren. Maar dit is helaas niet voldoende om de overige problemen zoals ik die hiervoor beschreef op te lossen.

    Je hebt immers niets aan delayMicroseconds() als je getallen wilt integreren als je programma gewoon doorloopt :cool:

    Deze "fix" (lapmiddel) is al heel lang bekend (https://code.google.com/p/arduino/issues/detail?id=306 2010). Echter is dit door de ontwikkelaars van Arduino heel lang uitgesteld. Pas in 2012 is dit geïmplementeerd.
     
  15. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Zo, even weer de stofdoek over dit draadje halen. Ik heb er door drukte de afgelopen tijd veel te weinig aan kunnen doen. Maar toch even een korte update.

    Zoals ik al eerder schreef is het de bedoeling dat ik ook zelf een frame ga maken. Op de motoren en esc's na dus 100% eigen bouw.

    In deze post: [post246] is te zien dat er al een paar onderdelen klaar zijn. Echter ben ik tot de conclusie gekomen dat het handwerk op de frees niet echt snel en nauwkeurig gaan. Tijdens het draaien kan je namelijk snel een telfout maken.

    Om het gebruik van de frees wat aangenamer en minder foutloos te maken heb ik deze omgebouwd naar CNC. Tevens kan ik de frees ook handmatig gebruiken met een digitale uitlezing. Complexe figuren programmeer ik in de Arduino zodat ik wat eenvoudiger seriewerk kan verrichten :cool:

    Hierbij nog een kort filmpje van de ombouw:
     
    Laatst bewerkt door een moderator: 25 nov 2015
  16. michel pet

    michel pet

    Lid geworden:
    8 dec 2004
    Berichten:
    3.845
    Locatie:
    bovenkarspel
    erg leuk filmpje zeg.
     
  17. DKHDKH

    DKHDKH

    Lid geworden:
    15 mei 2014
    Berichten:
    46
    Joop, Ik zat toevallig vorige week te denken hoe het met je project staat. Je manier van werken staat me erg aan. Ook in dit filmpje top werk. Leuk dat je ons laat meekijken. Bedankt weer!
     
  18. luxel

    luxel

    Lid geworden:
    15 dec 2014
    Berichten:
    1
    Hey,

    Ik ben nu een paar maandjes bezig met een HBO ÍCT opleiding en mag nu ook voor het eerst werken met een arduino. Wat jij allemaal al bereikt hebt is zeer leuk om te lezen en ook erg inspirerend om hetzelfde te gaan doen. Mijn dank daarvoor.

    Helaas zie ik al bijna een maand geen reacties meer in dit draadje dus ik wou vragen of je ondanks de drukke feestdagen van december misschien nog een kleine update kan toevoegen :D

    MvG.
     
  19. JoopB

    JoopB

    Lid geworden:
    10 jan 2013
    Berichten:
    2.181
    Locatie:
    Zwolle
    Hallo Luxel,

    Dit project is nog steeds in leven ;-) Helaas nemen sommige zaken gewoon veel tijd in beslag (werk, gezin, enz). En ik ben op dit moment voor een mede modelbouwer een brandstofinjectie module aan het bouwen op basis van een Arduino. En daar gaat ook behoorlijk wat tijd in zitten.

    Voor dit project ben ik op dit moment voornamelijk bezig om een eenvoudig, licht en functioneel oktocopter frame te ontwikkelen. En daar neem ik rustig de tijd voor zodat ik dit frame volledig in eigen beheer kan doorontwikkelen en optimaliseren.

    Als ik dit frame gereed heb wil ik alles van het quad frame over gaan zetten naar het okto frame. Dan wil ik ook een Arduino Uno op 20MHz gaan toepassen voor extra snelheid. Dit alles waarschijnlijk in de vorm van een eigen print. Inmiddels heb ik een goed beeld hoe ik de hardware in elkaar wil steken.

    Er is dus nog voldoende te doen :yes:

    Groeten,

    Joop
     
  20. DKHDKH

    DKHDKH

    Lid geworden:
    15 mei 2014
    Berichten:
    46
    Joop ik ken het te veel interesses en dus ook tijd te kort. Zodra je weer wat hebt lezen we het weer graag. Misschien ooit een demo-dag?
     

Deel Deze Pagina