Introduction: Lijn Volger

Dit is een project van het laatste jaar van elektromechanica. Het project is een lijnvolger maken. Een lijnvolger is een robot dat een zwarte lijn volgt met behulp van sensoren. We kregen ook specificaties waaraan minpunten gekoppeld zijn indien we deze niet naleven.

De instructable bestaat uit 3 grote delen, namelijk:

  1. Hardware
  2. Software
  3. Configuratie

Step 1: Bestellen Hardware

De componenten vindt je terug in de BOM (Build Of Materials). Wij zijn gestart met Plan A, maar hebben deze niet afgewerkt en hebben Plan B gemaakt. Deze stap is enkel de componenten, de reden waarom we deze kochten wordt uitgelegd in de volgende stappen.

Step 2: Plan A

Bij plan A hebben we een eigen PCB ontworpen die de functies van een Arduino, H-Brug, volt regelaar en button in een bord heeft. Dit plan hebben we niet afgewerkt omdat dit een moeilijk proces is en zeer tijdrovend en zeer veel verschillende componenten nodig heeft. Voor dit proces moet je zelf een PCB tekenen en etsen, zelf je componenten solderen en zelf arduino besturingssysteem erop zetten.

Wil je zien hoe de de ontwerpen eruit zien? Wij hebben met eagle gewerkt:

Step 3: Plan B: Opbouwen

Als alle componenten zijn toegekomen dan kan je beginnen met je project te bouwen.

Laten we eerst het karretje zelf bouwen. Deze is gebasseerd op een Romeinse strijdwagen, dus als eerste onderdeel de bodemplaat (deze moet groot genoeg zijn voor de arduino, batterijen,...) uit een houten multiplex plankje. Zo bevindt het gewicht zich zo laag mogelijk. In een gat in midden van de plaat gaan we een wieltje plaatsen om een snelle en stabiele wagen te bekomen die alle richtingen kan uitdraaien.

Voor layout kozen we voor printer en papier, 2 paarden en een koets 'mantel'.

Volgende stap is de elektronica:

Aan de hand van je blokdiagram en alle datasheets van alle componenten.

  1. Soldeer draden aan je motoren
  2. Verbind de motoren aan je H-Brug
  3. Verbind de Lipo batterijen in serie aan elkaar (de plus van de ene aan de min van de andere) zo bekom je plus minus 7V, want de motoren hebben 6V nodig.
  4. Verbind de 2 vrije draden van de batterijen aan de volt regelaar en aan de H-brug in parallel
  5. Verbind de vrije uitgang van de volt regelaar en de ground met de arduino en lichtsenor array
  6. Verbind 6 sensoruitgangen met de analoge ingangen van de arduino
  7. Verbind de ESP zijn TX met de RX van de arduino en de RX van de ESP met de TX.
  8. Voed de ESP met de 5V en GND van de arduino.
  9. Verbind de button met een interruptingang van de arduino

Nu heb je je opstelling gemaakt. Het is tijd om al je componenten op een karretje te plaatsen. De motoren en lichtsensor array vastgelijmt met een lijmpistool en alle componenten op het karretje plaatsen. Als voorwiel een bol om makkelijk te kunnen draaien. Verstevig waar mogelijk want anders is dit project te breekbaar.

En voila!

Tips:

Het is belangrijk om op deze zaken te letten:

  • Afstand tussen de wielen en sensoren goed te kiezen, bij onze lijnvolger is dit ongeveer 7cm. Te dicht bij de wielen zal de regeling te laat gebeuren, te ver zal hij niet volledig over de lijn rijden. Als het karretje niet goed rijd overweeg je best ook om de array te verplaatsen.
  • Minstens 6 sensoren met een bepaalde afstand tussen elkaar (bij ons is de afstand 1,5cm).

Step 4: Programmeertijd

Nu het karretje gebouwd is moeten we het laten rijden en draaien. Dit gebeurd met een PID regelaar geprogrammeerd in de arduino, die op zich de H-Brug aanstuurd. Het bijsturen gebreurd door de snelheid van de 2 motoren bij te regelen. Vb.: Links draaien gebeurd door de rechter motor sneller te doen draaien en de linker motor trager of zelfs stoppen.

Het arduino programma Cyclus bestaat uit:

  1. 4 library's : PID_V1.h, EEPROM.h, SerialCommand.h en EEPROMAnything.h. PID voor het regelen en bijsturen
  2. void setup. Waar alle commando's, pinnen en sommige variabelen gedeclareerd worden.
  3. void loop. Waar de seriele poort wordt uitgelezen, de sensoren worden uitgelezen en verwerkt, er PID geregeld wordt en snelheid van de motoren geregeld wordt.
  4. void onUnkownCommand. als een verkeerd commando verkregen wordt van de seriele poort.
  5. void onSet. parameters setten.
  6. void onStart. Karretje laten rijden.
  7. void onStop. Karretje laten stoppen.
  8. void onDebug. Informatie doorsturen naar de seriele poort.
  9. void onCalibrate. Sensoren calibreren.
  10. void onReset. Alle opgeslagen waardes resetten.
  11. void onInterrupt. Karretje starten/stoppen bij indrukken van de knop.

Voor meer gedetailleerde uitleg van het Cyclus programma, zie het bestand cyclus2.0.ino. Daat staat alles uitgelegd in commentaar.

Step 5: Communicatie Via ESP8266

Voor de communicatie gebruiken we een ESP8266, zo moeten we voor het aanpassen van parameters niet iedere keer de kabel in te pluggen. De ESP gedraagt zich als een server en stuur een HTML code door naar de browser van het geconnecteerde apparaat. Om zelf een nieuwe HTML code te maken verwijs ik jou door naar w3schools.com. Deze site kan je basic HTML leren.

De ESP wordt ook geprogrammeerd via arduino IDE, maar om dit te kunnen moet je eerst je bord toevoegen. Dit doe je door:

  1. Ga naar Preferences
  2. Bij "Additional Boards Manager URLs:" type je:

    http://arduino.esp8266.com/stable/package_esp8266c...

  3. Klik "ok"
  4. Ga naar "Broads Manager" bij "Tools"
  5. Zoek naar ESP8266 door dit in de zoekbalk te typen.
  6. Installeer de laatste versie en voila, nu kan je je ESP programmeren in arduino IDE.

Het programma Wemos bestaat uit:

  1. ESP8266WiFi.h. Dit is de bibliotheek voor de ESP een server te maken + een paar commando's.
  2. void setup. Setup van netwerk en seriele poorten.
  3. void loop. Communicatie tussen browser en ESP. Waardes en knoppen doorsturen. Bevat HTML code.
  4. int waardesZoeken. Functie voor plaatsbepaling in http van gezochte waarde.
  5. int waardeTeruggeven. Functie volledige waarde uit de string halen adv positie.

Voor meer gedetailleerde uitleg van het Wemos programma, zie het bestand wemos_V3.ino. Daat staat alles uitgelegd in commentaar.

Step 6: Configureren

Als alles tot nu toe goed en juist verlopen is, zal je lijnvolger kunnen rijden :)

De configuratie is alleen nog nodig. de ESP maakt dit proces een stuk makkelijker. De configuratie heeft ook een paar stappen, de stappen worden beïnvloed door wielgrootte, afstand tussen wielen, afstand tussen wielen en sensoren, snelheid, PID waarden, cyclustijd,...

Door deze factoren moet je deze parameters veranderen en proefondervindelijk bepalen als de parameters goed zijn. Hoe beter de parameters, hoe sneller de lijnvolger het parcour kan afleggen:

  • Snelheid
  • Pk
  • Pi
  • Pd
  • Cyclustijd

Ons karretje rijd het beste met een Kp van 5, een Ki van 1 en een Kd van 0.

Step 7: Varia

Voor meer informatie of documentatie bezoek onze site: Race Wagen Blog

Hier heb je datasheets, Blogberichten,... over ons project.