Bouwverslag: zelfbouw flight controler op basis van Arduino Uno

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:
Als je enthousiast bent, klink je als David Jones van EEVblog :D
Prachtig project verder. Ik zou willen dat ik zoveel programmeerskills had!
 
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.
 
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.
 
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:
 
Waarom stap je niet over op een Arduino Due, veeeel sneller (84 MHz)
en plenty interrupts voor de ontvanger.
 
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.
 
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:

Is simpel te doen ;)
Arduino UNO @ 20MHz - Arduino Forum

Staat nieuwe bootloader + board definitie voor de Arduino Software.
 
Staat nieuwe bootloader + board definitie voor de Arduino Software.
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.
 
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 ;)
 
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 ;)
 
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.
 
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:
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!
 
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.
 
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
 
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?
 
Back
Top