Inzicht in de mobiliteit van de toekomst met robotauto's
Welkom bij een nieuwe blogserie over robotauto's. In het eerste deel maken we als het ware kennis met de basis, als hulpmiddel bij de besluitvorming over welk chassis, welke microcontroller en welk type afstandsbediening het meest geschikt zijn.
Twee of vier wielen - de voor- en nadelen van het bouwen van RC auto's voor Arduino tegen elkaar afwegen
Laten we beginnen met het chassis en kijken naar de voor- en nadelen van de goedkope kits met twee of vier aangedreven wielen. Ze hebben allemaal elektromotoren gemeen, dus deze alleen zijn geen selectiecriterium. De robotauto's met twee wielen zijn in eerste instantie goedkoper omdat ze niet de kosten hebben van nog eens twee elektromotoren en wielen. In plaats daarvan hebben ze één of twee steunwielen, die de RC auto's een grote wendbaarheid geven. Dus als je wilt "draaien op de plaat", dan is dit de manier om te gaan. In deze prijsklasse van gelijkstroommotoren kun je echter niet verwachten dat ze vloeiend lopen met een hoge precisie. Daarom is het rechtuit lopen niet zo goed als bij de versie met vier wielen. Vooral bij het opstarten vertonen de motoren een grotere richtingsstabiliteit, maar bochten nemen is alleen mogelijk met aanzienlijk grotere radii. Een ander voordeel van het chassis met vier wielen is meer ruimte voor accu's, microcontroller, eventueel DC/DC converter en sensoren.
De keuze van microcontroller voor het bouwen van een RC auto
De volgende vraag heeft betrekking op de microcontroller en hoe deze wordt geprogrammeerd. Een microcomputer van het type Raspberry Pi heeft bijvoorbeeld de grootste rekenkracht op het kleine chassis. Vooral wat betreft afstandsbediening bieden de types met ingebouwde WiFi en Bluetooth voordelen en je kunt zelfs beelden van een Raspberry Pi camera doorsturen. Programmeren doe je in de veelgebruikte programmeertaal Python, maar het opstarten van het op Linux gebaseerde besturingssysteem Raspberry Pi OS duurt ongeveer een minuut. Een ander nadeel van de Raspis (kort voor Raspberry Pi) is de noodzaak van een goede 5V voeding. Hiervoor is een goede DC/DC converter nodig.
In verband met het onderwerp Bluetooth afstandsbediening wordt in een latere aflevering een voorbeeld getoond met de Raspberry Pi en de Android APP BlueDot van Martin O'Hanlon (medewerker van de Raspberry Pi Foundation).
Het opstarten van het systeem gaat veel sneller met een microcontroller gebaseerd op de ATmega 328, bijvoorbeeld de Funduino Uno of Funduino Nano. Ongeveer een seconde na het inschakelen kun je beginnen met de besturingsingangen, je hoeft niet op te starten vanaf een microSD-kaart, het programma dat eenmaal is geüpload wordt niet vergeten. De ingangsspanning kan tussen 5 en 9 volt liggen. Programmeren doe je in de Arduino IDE, een ontwikkelomgeving die lijkt op C/C++ (voor meer uitleg zie https://funduino.de/hardware-software). Daarom zullen we eerst kijken naar voorbeelden met de Funduino Uno R3, waarvoor perfecte motorcontrollers beschikbaar zijn als zogenaamde shields. Deze worden eenvoudig op de Uno geplugd en zogenaamde bibliotheken helpen ons bij het programmeren.
Excursus: Wat is een motorcontroller/motordriver?
Vanwege de zeer beperkte stroom aan de uitgangen van de microcontrollers hebben grotere verbruikers - en dit omvat alle soorten elektromotoren en relais - een externe voeding nodig en een elektronisch circuit dat het stuursignaal van de microcontroller omzet. De eisen voor deze geïntegreerde schakeling zijn echter nog hoger: aan de ene kant moet deze een variabele snelheid van de motor mogelijk maken en aan de andere kant willen we ook de draairichting van de motor kunnen veranderen door de polariteit om te keren.
Met IC L293D als voorbeeld zullen we nu uitleggen hoe het werkt. In principe is dit DIP-component met zestien "pootjes"/aansluitingen voldoende als motorcontroller voor twee elektromotoren.
Het IC krijgt spanning via de aansluitingen VCC1 en Ground. We kunnen deze spanning aftappen op de microcontroller. De voeding voor de motoren gaat via VCC2 en Ground. Hier sluiten we de batterij(en) op aan (bijvoorbeeld 6 of 9 volt). Bij grotere motoren moet het IC gekoeld worden, bij de kleine gele uit de kit niet.
We sluiten de ene motor aan op 1Y en 2Y, de corresponderende stuurlijnen naar de MCU (Micro Controller Unit) zijn 1A, 2A en 1,2EN.
Het omkeren van de polariteit van de motoren om de rijrichting te veranderen gebeurt in principe met een zogenaamde H-schakeling. We realiseren dit met onze microcontroller door twee uitgangspennen (deze gaan naar 1A en 1B) op HIGH of LOW te zetten.
De snelheidsverandering wordt gedaan zoals in voorbeeld nr. 04 - pulserende LED met pulsbreedtemodulatie (PWM), d.w.z. het zeer snel in- en uitschakelen van de spanning. Daarom hebben we voor aansluiting 1,2EN ("Enable") een PWM-geschikte uitgang op de MCU nodig (dit zijn de pinnen met de tilde ~).
Voor de tweede motor worden de aansluitingen 3A, 4A en 3,4EN aangesloten op pinnen van de MCU.
De afbeelding rechts (Logic Diagram) legt uit hoe het IC werkt. We zien de vier versterkers die de ingangssignalen 1A tot 4A respectievelijk met de accuspanning aan de uitgangen 1Y tot 4Y geven. Dit gebeurt echter alleen als de PWM ingangen 1,2EN en 3,4EN ook HOOG worden geschakeld.
Twee van deze IC's L293D zijn geïnstalleerd op het Motor Shield V1, zodat hier maximaal vier motoren kunnen worden aangesloten.
Om niet te veel pinnen te gebruiken, zit er een zogenaamd schuifregister (SN74HC595) in het midden van het Motor Shield V1. Uitleggen hoe het werkt zou buiten het bestek van dit artikel vallen. Gelukkig hebben onze collega's van Adafruit in New York het meeste programmeerwerk voor ons gedaan en een bibliotheek meegeleverd om de motoren eenvoudig aan te sturen.
Afbeelding Motor Shield V1 met modificatie:
Gesoldeerde socket connectoren (vrouwelijke connectoren) voor het aansluiten van extra apparatuur
Het Motor Shield V2 kan ook maximaal vier motoren aansturen en gebruikt een vergelijkbaar IC, maar dan voor het aansluiten van de stuurlijnen de zogenaamde I2C bus met de aansluitingen SDA (=Serial Data) op de analoge ingang A4 en SCL (=Serial Clock) op A5. Adafruit heeft hiervoor ook een geschikte programmabibliotheek ontwikkeld en beschikbaar gesteld.
Afbeelding Motor Shield V2 met modificatie:
Gesoldeerde busconnectoren (vrouwelijke connectoren) voor het aansluiten van extra apparatuur
Op beide Motor Shields zijn extra vrouwelijke connectoren gesoldeerd om later Bluetooth of 433 MHz zenders/ontvangers of sensoren aan te sluiten. Meer hierover in een van de volgende blogposts.
Voeding en besturing voor een RC auto voor Arduino microcontrollers
Als we willen dat onze robotauto zelfstandig rijdt, moeten we hem loskoppelen van de USB-poort van de PC. Dit betekent dat de stroomvoorziening ook wegvalt. Vanaf nu worden het commandocentrum (MCU) en de elektromotoren gevoed door batterijen of oplaadbare accu's. De motoren zijn verreweg de grootste verbruikers. De batterijhouder die bij de meeste kits wordt geleverd is voor vier Mignon (AA) batterijen, dus 6 volt voor de MCU en de motoren. Als je oplaadbare batterijen wilt gebruiken, moet je of zes Mignon (AA) batterijen of twee 18650 lithium-ion batterijen gebruiken vanwege het lagere voltage.
Als besturing zullen we in de volgende afleveringen eerst kennismaken met afstandsbedieningen met infrarood afstandsbediening, Bluetooth transceivers met smartphone APP of een tweede microcontroller ook met de BT transceiver HC-05 en met radiografische afstandsbedieningen met 433Mhz en 2,4 GHz. De blogserie wordt afgesloten met aspecten van autonoom rijden, voornamelijk obstakeldetectie. Tot snel.