vrijdag 17 augustus 2012

Programmeren met Arduino


De Arduino microcontroller programmeer je met een gemakkelijk te leren commandotaal. De basisstructuur is gebaseerd op de programmeertaal C++.

Basisstructuur
De basisstructuur van de Arduino programmeertaal bestaat uit minimaal twee gedeeltes, ook wel functies genoemd:
  1. void setup(): dit gedeelte verzorgt de voorbereiding. Het wordt één keer aangeroepen, direct na het opstarten van het programma. Hierin worden variabelen gedeclareerd en bepaald welke pinnen ingang of uitgang worden.
  2. void loop(): dit gedeelte verzorgt de uitvoering. Het volgt na de setup functie en wordt vaak oneindig herhaalt. Het leest de inputs en laat afhankelijk daarvan bepalen wat de outputs moeten doen.
Beide functies zijn nodig om een programma te kunnen laten werken.

{} (accolade): een open accolade{ geeft het begin van een stuk code aan en een sluit accolade } het einde. Het aantal open en sluit accolades moet gelijk zijn. Als er één accolade te weinig is, kan het programma stoppen met werken

; (puntkomma): elke regel code moet eindigen met een puntkomma. Bij het ontbreken van een puntkomma zal een foutmelding verschijnen. Deze foutmelding geeft vaak een andere plek aan dan waar de puntkomma vergeten is. Dat wordt dus lastig zoeken.

// (regel commentaar): zet zoveel mogelijk commentaar bij je code met uitleg over het programma of over de code die daar staat. Dit doe je door een regel te beginnen met //. Commentaar wordt niet gelezen door het programma. Het wordt nooit mee geprogrammeerd in een microcontroller en neemt hierdoor geen geheugenruimte in beslag. Het wordt wel bewaard in het Arduino programma.

/*...*/ (blok commentaar): voor langere regels commentaar over meerdere regels, kun je gebruik maken van blok commentaar. Hiervoor zet je het commentaar tussen /* en */. Ook dit wordt allemaal niet gelezen door het programma.

Als een programma niet werkt, zoals het zou moeten werken, dan is het vaak handig om een gedeelte van het prgramma uit te schakelen door middel van regel of blok commentaar. Je kunt dan stapsgewijs onderzoeken waar de fout zit.

variabelen: met behulp van een variabele kun je een waarde bewaren voor later gebruik in het programma. De waarde van een variabele kan ook regelmatig veranderen. Er zijn ook constantes. Dat zijn variabelen die constant het zelfde blijven en dus nooit van waarde veranderen. Het beste kun je de variabelen een logische naam geven, zodat het een stuk makkelijker te lezen is.

Voordat een variabele gebruikt kan worden, moet deze eerst éénmalig gedeclareerd worden.
Er zijn verschillende types variabelen: int (integer), long (long), boolean (boolean), float (float) en char (character).

Het maken van een uitgebreid programma
Je begint altijd met het opdelen een subsystemen (bij hele uitgebreide programma's zelfs naar sub-subsystemen). Vervolgens ga je eerst per subsysteem de hardware in elkaar zetten en dan de programmering. Let erop dat je er zoveel mogelijk commentaar bijzet zodat je goed overzicht houdt van wat elk stukje code doet. Als alle subsystemen werken, neem je één subsysteem en die breidt je uit met een van de andere subsystemen. Als deze werkt voeg je nog een subsysteem toe enzovoorts tot dat je programma werkt.

TIP: er staat al heel veel op internet. Ga eerst zoeken voordat je zelf begint. Als jouw code nog niet bestaat kun je online ook altijd vragen om tips om hem te maken.

Programma werkt niet wat nu ( fouten zijn heel normaal bij Arduino):
  1. Controleer of het groene lampje brand op het board.
  2. Controleer of de hardware klopt. Een fout hierin is meestal snel te zien. Vraag zo nodig iemand anders om te controleren.
  3. Controleer heel je programma. Let vooral op de puntkomma aan het einde van een regel code. Ook hier weer laat iemand anders nakijken als je het zelf niet ziet.
  4. Je kan je probleem ook online zetten. Er zijn altijd genoeg mensen die je willen helpen en tips zijn altijd meegenomen.
  5. Ga terug naar het testen van subsystemen en volg opnieuw de stappen hierboven.
  6. Als dit allemaal niet werkt, bouw de code weer op maar begin met een ander subsysteem. Het kan zijn dat er dus een fout zit bij het combineren van de codes.
  7. Als laatste poging kan je altijd helemaal overnieuw beginnen. Heel raar maar soms voer je precies hetzelfde in en dan doet die het wel.

Hieronder een simpel voorbeeld van een dimmer van een LED:

 void setup()
{
    // initialize the serial communication
    Serial.begin(9600);
    // initialize the ledPin as an output
    pinMode(ledPin, OUTPUT);
}

void loop()
{
    byte brightness;

    // check if data has been sent from the computer
    if (Serial.available())
    {
        // read the most recent byte (which will be from 0 to 255)
        brightness = Serial.read();
        // set the brightness of the LED
       analogWrite(ledPin, brightness);
    }
}

Commentaren van leraar

Enkele van de commentaren van de leraar (W. Haak) die zijn meegenomen:
  1. Soms eerder iets tekenen dan in computer uitwerken om tijd te besparen.
  2. Altijd goed nakijken wat je hebt neergezet.
  3. Altijd letten op esthetiek, want een product kan nog goed zijn maar als het er niet uit ziet koopt niemand het.
  4. Probeer steeds meer te leren en je leercurve te verbeteren.
  5. Opmerking bij mijn energie-stroom schema dat ik niet kon sturen of versnellen.

VLS hovercraft

Hieronder staat de VLS die ik heb gemaakt zodat ik weet hoe zwaar de stuurflappen minimaal moeten zijn wil de hovercraft in evenwicht zijn.

De stuurflappen moeten minstens 0.4 kg wegen. Omdat het beter is om de hovercraft onder schuine hoek te besturen zal ik ze minstens 50% zwaarder maken, dus 0.6 kg.

donderdag 16 augustus 2012

Gekozen motoren

De motoren waarvoor ik heb gekozen zijn 2  borstelloze motoren, omdat deze vaak worden toegepast in modelbouw en er een grotere variatie mogelijk is voor dit project.

Thrustmotor:
Bij 11.1 V verbruikt die 3A en 5450 rpm

Liftmotor:
Bij 11.1 V verbruikt die 7A en 9690 rpm

De servomotor, gebruikt voor het sturen, moet minimaal 160 graden kunnen draaien: 80 graden naar links en 80 graden naar rechts. Bij 90 graden sluit je de luchtweg namelijk af.

Netiquette


Alle bestanden moesten voldoen aan onderstaande naamgeving:
“ED&I blok 4; “+ <naam document> + <Naam student> + <jjjj-mm-dd>

Hieronder een foto van wat bestanden die daar aan voldoen:


VLS opdrachten

De volgende opdrachten waren huiswerk opdrachten van meneer Mouw.



woensdag 15 augustus 2012

Berekening minimale kracht 'Lift'

http://www.discoverhover.org/infoinstructors/guide4.htm

F = P · A

A = Area = Length · Width
Area = (0.6 m)(0.6 m)
Area = 0.36 m2

P = 335 N / m2

F = 335 * 0.36 = 120.6 N

Dus de motor en ventilator moeten minstens 120.6 newton aan kracht creëren.

Prototype + Reflectie


Wat er allemaal beter aan mijn model kon:
  1. Bedrading beter weg werken
  2. Sterkere thrustmotor
  3. Grotere rok
  4. Zelf ontworpen RC receiver
  5. Netter afgewerkt (in het echte model worden de platen door machine uitgesneden)
  6. Klemming van thrustmotor moet aerodynamischer
  7. Andere materialen gebruiken, geen MDPE en PP