💾
Informatica programma regulier
  • Het vak
  • Kernprogramma
    • Periode 1
    • Periode 2
    • Periode 3
  • Kern Programma
    • Het Internet
      • 1: What is the Internet?
      • 2: Wires, Cables & Wifi
      • 3: IP Addresses & DNS
      • 4: Packets, Routing & Reliability
      • 5: HTTP & HTML
      • 6: Encryption & Public Keys
      • 7: Cybersecurity & Crime
      • 8: How Search Works
    • Informatie
      • Presentaties
      • Les 1: Introductie in Binaire Getallen
      • Les 2: Hexadecimale Getallen
      • Les 3: Logische Operaties
      • Les 4: Digitalisering van tekst
      • Les 5: Digitalisering van beeld
      • Les 6: Digitalisering van geluid
    • HTML-CSS
      • HTML-CSS-0
        • Les 1: HTML, de basis
        • Les 2: HTML, meer over body, plaatjes en links
        • Les 3: HTML, lijsten
        • Les 4: HTML, tabellen
        • Les 5: CSS, background-color, color
        • Les 6: HTML, iframes, Youtube of maps invoegen
      • HTML-CSS-1
        • Les 1: CSS koppelen aan je HTML-pagina
        • Les 2: Fonts, lettergrootte en stijl
        • Les 3: Kleuren en achtergrondplaatje
        • Les 4: Boxmodel en borders
        • Les 5: Margin, padding en development tools
        • Les 6: Elementen selecteren: classes en id's
        • Les 7: Pseudo-classes, (hyper)links en span-element
        • Les 8: Tabellen opmaken
        • Les 9: Lijsten opmaken (menu in je pagina)
      • HTML-CSS-2
        • Les 1: Structuur van je Pagina
        • Les 2: position in CSS
        • Les 3: Inline vs Block elementen
      • Eindopdracht [PET1]
        • Publiceren op Github pages
        • Beoordeling
      • Links
    • Python
      • start
      • Python-0
        • Untitled
        • Les 1: Je eerste tekening
        • Les 2: Herhalen
        • Les 2b: Loop in Loops
        • Les 3: Functies maken
        • Les 4: Parameters
        • Les 5: Loops & Range()
      • Python-1
        • Les 1: Print & variabelen
        • Les 2: Input en datatypes
        • Les 3: Vergelijkingen
        • Les 4: Booleaanse expressies
        • Les 5: For/While loops
        • Les 6: Functies
        • Les 7: While (+teller)
      • Eindopdrachten [PET2]
        • Python Kunst
          • Les 1: Functies in Functies
          • Les 2: Meerdere turtle's
          • De eindopdracht
        • Galgje
        • Wordmind
        • Het langste woord
    • Automaten
    • Algoritme
      • Presentaties
      • Les 1: Wat is een algoritme?
      • Les 2: Sorteren
      • Les 3: Sorteer Algoritmes
      • Les 4 & 5: Toren van Hanoi
    • Databases
      • Planner V5
      • Untitled
      • 1: Inleiding
        • Wat is een database?
        • Wat is SQL?
        • Onze database
      • 2: Selectie, voorwaarden en sorteren
        • Selectie en Sorteren
          • Distinct
          • Order By
        • De WHERE Clausule
          • Operator AND en OR
          • Between
          • IN
          • Not
          • Like
          • Is Null
          • Limit
        • Opdrachten
        • Antwoorden
      • 3: Functies
        • Vragen
        • Antwoorden
      • 4: Grouperen
        • Vragen
        • Antwoorden
      • 5: Joins
        • Vragen
        • Antwoorden
      • 6: Subqueries
        • Vragen
        • Antwoorden
      • 7: Tabellen Muteren
        • Create
        • Drop
        • Opdracht
        • Antwoord
      • 8: Gegevens toevoegen
        • Insert
        • Update
        • Delete
        • Opdrachten
        • Antwoorden
      • 9: Sleutel en Verwijzingen
        • Het strokendiagram
        • Foreign Key
      • Eindopdracht [PET3]
    • Presentatie
      • Presenatieschema
      • Beoordelingsmatrix
  • Keuzemodules
    • Computernetwerken
    • Web development
    • Kunstmatige Intelligentie
    • Embedded Systems
      • Planner
      • Les 1: Wat is een Arduino
      • Les 2: Blink
      • Les 3: Schakelaars
      • Les 4: Seriële monitor
      • Les 5: Analoge Sensoren
      • Les 6: Servo - beweging
      • Les 7: LCD display
      • Eindopdracht
    • Betoog
      • Voorbeelden
      • Stappenplan
      • Bouwplan
      • Bronvermelding
      • Beoordeling matrix
    • Internet of things
      • Planner
      • Eindopdracht
      • Beoordelingsmatrix
    • De meesterproef
      • Voorbeelden
      • Beoordelingschema
  • PTA
    • Havo
      • Cohort 2020
    • Vwo
      • Cohort 2020
    • Vrijstellingen - concept
    • Eindtermen
      • Domein A: Vaardigheden
      • Domein B: Grondslagen
      • Domein C: Informatie
      • Domein D: Programmeren
      • Domein E: Architectuur
      • Domein F: Interactie
      • Domein G: Algoritmiek, berekenbaarheid en logica
      • Domein H: Databases
      • Domein I: Cognitive computing
      • Domein J: Programmeerparadigma’s
      • Domein K: Computerarchitectuur
      • Domein L: Netwerken
      • Domein M: Physical computing
      • Domein N: Security
      • Domein O: Usability
      • Domein P: User experience
      • Domein Q: Maatschappelijke en individuele invloed van informatica
      • Domein R: Computational science
Powered by GitBook
On this page

Was this helpful?

Export as PDF
  1. Keuzemodules
  2. Embedded Systems

Les 6: Servo - beweging

PreviousLes 5: Analoge SensorenNextLes 7: LCD display

Last updated 5 years ago

Was this helpful?

Een servo-motor, of kortweg servo, gebruik je voor besturing. Dit in tegenstelling tot motoren die je gebruikt voor aandrijving. Enkele voorbeelden:

  • besturing van een robot,

  • speelgoedauto,

  • modelvliegtuig, enz.

De servo is dan verbonden aan het stuur of aan een roer. Meestal kan een servo draaien over een beperkte hoek, bijvoorbeeld 180 graden. Voor besturing is dat voldoende.

Vanuit de Arduino kunnen we de servo aansturen, zodat deze in een bepaalde stand komt. In deze opstelling voeren we de gewenste stand van de servo in met een potmeter.

Voor het aansturen van de servo maken we gebruik van de Servo-library. Het uiteindelijke programma is daardoor erg eenvoudig.

Ook het opbouwen van de hardware is eenvoudig:

  • we hebben nodig: een servo-motor, een potmeter, en een breadboard met draadjes;

  • de aansluitdraden van de servo zijn voorzien van een connector; daarop passen breadboard-draadjes voor aansluiting op het breadboard of op de Arduino.

  • de servo heeft 3 aansluitingen: (i) GND (bruin of zwart), (ii) voeding - bijv. 5V (rood); (iii) data (oranje, geel, of wit).

    • sluit GND en 5V aan op de voedingslijnen op het breadboard.

    • sluit de data-verbinding aan op D9 van de Arduino

  • sluit de potmeter aan: uiteinden aan 0V en 5V, loper aan A0 van de Arduino

Als sketch gebruik je: Bestand->Voorbeelden->Servo->Knob

/* 
 Controlling a servo position using a potentiometer (variable resistor) 
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott> 
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023) 
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180) 
  myservo.write(val);                  // sets the servo position according to the scaled value 
  delay(15);                           // waits for the servo to get there 
}

Uitleg bij dit programma:

  • #include Servo.h: we gebruiken de Servo library; Servo.h bevat het interface daarvoor

    • zie: https://www.arduino.cc/en/Reference/Servo

  • de potmeter is aangesloten op A0

  • de map-functie kun je gebruiken om een waarde in een ander bereik te schalen. Dit gebruik je vaak om een analoge invoerwaarde om te zetten in het bereik dat je nodig hebt voor uitvoer.

    • zie: https://www.arduino.cc/en/Reference/Map

    • in dit geval willen we voor de servo een bereik van 180 graden.

  • delay: de servo is een mechanische constructie: deze is veel trager dan een computer, zelfs een eenvoudige computer als een Arduino.

Zie ook:

  • https://www.arduino.cc/en/Tutorial/Knob

    • hier vind je ook een schema en een figuur met draden.

  • https://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors

    • hier vind je ook meer informatie over de werking en de aansturing van servo's.

  • https://www.arduino.cc/en/Reference/Servo

Als de servo zich "misdraagt" kan dat liggen aan de grote stroom die de servo gebruikt als deze begint te bewegen. Hierdoor kan de spanning inzakken, waardoor de elektronica niet meer goed werkt. Dit kun je oplossen door een grote condensator (470 uF of meer) over de voedingslijnen op het breadboard te plaatsen, dicht bij de aansluiting van de servo.

  • Meestal gebruik je hiervoor een elektrolytische condensator. Deze moet je wel op de juiste manier aansluiten (anders loop je het risico dat deze ontploft...): de plus en/of min-aansluiting zijn duidelijk aangegeven.

  • zie: https://en.wikipedia.org/wiki/Electrolytic_capacitor

Variaties

  1. Stuur de waarde van de hoek die je naar de servo stuurt, ook naar de host (seriële output)

  2. (Voor gevorderden): stuur de waarde voor de hoek vanuit de host naar de Arduino (seriële input)

Vragen

  1. Geef een aantal (andere) voorbeelden van toepassingen van een servo;

  2. Heb je een (of meer) servo's nodig voor je droomproject?