RobotLib Hardware

Uit RobotMC.be
Ga naar: navigatie, zoeken

Zie deze pagina voor een overzicht van alle RobotLib documentatie op deze wiki.

Inleiding

Robotlib is een set herbruikbare routines voor de besturing van een differential drive robot. De HAL laag maakt het mogelijk om de routines op verschillende processoren te gebruiken. En door configuratie of aanpassing van de HAL laag kan het gebruik van pinnen en peripherals worden gewijzigd. Uitermate flexibel, dus. Maar hoe begin je nu? "zoals je wilt", "hangt ervan af" of "kies maar" zijn dan geen nuttige antwoorden.

Vandaar dat op deze pagina concreet wordt beschreven hoe je de hardware van een robot voor RobotLib maakt, op basis van een STM32F Discovery board.

Een ander voorbeeld van een robot voor RobotLib op basis van een STM32VL board is PlankTrick. De beschrijving van PlankTrick bevat, naast de hardware, ook de ervaringen van Patrick met de integratie en het gebruik van RobotLib en is zeer aan te raden voor alle RobotLib gebruikers, ook als je een andere controller gebruikt.

Componenten

Rlib hw 10.jpg

De belangrijkste componenten van onze robot hardware zijn:

  • STM32F4 discovery board
  • 2 x portescap motoren
  • L298 H-bridge module
  • 16x2 LCD display met LCD/i2c convertor module
  • 5V / 3V3 i2c level shifter
  • Switching step-down regulator

Opbouw

De controller is opgebouwd op twee experimenteer printen van eurocard formaat (10x16cm), die boven elkaar gemonteerd worden. De bovenste print bevat de STM32F4, de i2c bus en het display. De motorcontroller, switching regulator en batterij-aansluiting zitten op de onderste print. Het zwaardere werk dus. De beide printen zijn met elkaar verbonden via een 20-polige bandkabel.

Bovenste print

Onderstaand schema geeft alle componenten op het bovenste bord weer, behalve het STM32F4 Discovery board. De aansluitingen van signalen op het Discovery board worden weergegeven d.m.v. een pijl met daarbij de pin naam.

Rlib hw 01.jpg

Op het schema zijn, van links naar rechts en van boven naar beneden, de volgende onderdelen weergegeven:

  • Bluetooth module; een losse module zonder backplane. De Bluetooth module wordt gevoed door de 3V voeding van de STM32F4.
  • De i2c bus. Links twee connectoren op 3V niveau (vooralsnog ongebruikt), gevolgd door de i2c level schifter. Rechts 4 connectoren op de 5V i2c bus, waarvan twee voorzien van een 5e pin met 8V.
  • De remote control (RC) ontvanger, met filter voor de voedingsspanning en pull-up van de uitgang.
  • Een 7805 voltage regulator (met ontkoppel-condensatoren), die 5V maakt voor voeding van de STM32F4, I2C bus etc.
  • De piezo buzzer (passief), met een jumper in serie om de piepjes uit te zetten bij het testen.

En tot slot onderaan

  • De aansluitingen voor 3 Sharp afstandsensoren. Deze hebben een eigen 7805 voltage regulator, zodat de voeding geen storing heeft van de rest van de electronica. De twee weerstanden (220 Ohm en 1k) aan de uitgang van iedere Sharp sensor zijn spanningsdelers. Deze voorkomen dat de ingangsspanning van de STM32F4 te hoog wordt.

Aansluiten van het LCD (niet weergegeven in het schema) is recht-toe recht-aan. De LCD/i2c convertor wordt achterop het LCD display gesoldeerd en de convertor wordt met 4 draden (0, SCL, SDA en 5V) aangesloten op een 4-polige connector van de 5V i2c bus. Wellicht nog even de potentiometer op de convertor wat verstellen en je bent klaar.

Onderste print

Het onderste bord handelt de hogere spanning en grotere stromen af. Naast de pijlen met aanduiding van de STM32F pin zijn hier ook ronde circels met nummers weergegeven. Dit zijn de pin-nummers van de 20-aderinge bandkabel-connector die ik gebruikt heb om deze signalen op de bovenste print aan te sluiten.

Rlib hw 02.jpg

  • Links boven is de L298 module weergegeven. Deze H-brug wordt gebruikt voor de aansturing van de twee motoren.
  • De aansluitingen van de motoren zijn rechts boven weergegeven. De motoren, Portescap type 22n28 210e D16, heeft een ingebouwde encoder. Deze encoders worden gevoed met 5V, die de L298 module maakt voor eigen gebruik.
  • De uitgangen van de encoders gaan naar spanningsdelers, die rechts onder de connectoren zijn getekend. De waarde van de weerstanden R1 en R2 zijn afhankelijk van het type encoder en voor encoders met een standaard 5V uitgang zijn resp. 2k7 en 4k7 goede waarden. Voor de gebruikte Portescap motoren zijn deze waarden niet geschikt en is gekozen voor 0 Ohm (R1 weglaten dus) en 15k.
  • Rechtsonder de switching step-down module die de batterijspanning efficient, dus met beperkte warmteontwikkeling, omzet naar 8V. Waarom 8V? Omdat 8V net genoeg is voor een 7805 om stabiel 5V te maken, met minimale warmteontwikkeling. Maar waarom niet meteen 5V maken? Omdat je met losse 5V regulators stabielere, schonere voedingen krijgt. En een bijkomend voordeel is dat je niets opblaast als de instelling van de step-down regulator iets te hoog wordt.
  • Links onder de aansluiting van de voeding (bijvoorbeeld 4-cell lipo) en de aan/uit schakelaar (wordt nog aangepast).

En tot slot links in het midden, twee weerstanden (4k7 en 1k), als spanningsdeler op de voedingsspaning. De uitgang van deze spanningsdeler is aangesloten op een analoge ingang van de STM32F4, zodat deze de batterijspanning kan meten en ons kan waarschuwen als de batterij leeg raakt.

STM32F4 Discovery

In de twee schema's is aangegeven welke signalen op het STM32F4 discovery board aangesloten worden. Mijn ervaring is dat het onoverzichtelijk is om de controller zelf in het schema op te nemen.

Wel is het erg handig om op een 'IO lijst' bij te houden welke pin van je controller waarvoor gebruikt wordt. Hieronder de IO lijst van de STM32F4. De overzicht is gerangschikt volgens de connector en de gekleurde velden geven de naam van de pin op de microcontroller. Naast de pin is kort aangegeven wat de functie is; meer details vindt je in het schema.

Rlib hw 03.jpg

Het resultaat

Heronder het resultaat van enkele uren knutselen. Links de onderste print, met bovenaan de H-brug, de twee connectoren voor de motoren en daartussen de weerstanden R1 en R2 (2k7 en 15k werkt ook). Daarvoor de step-down regulator, die 8V maakt. Links voor de bandkabelconnector voor verbinding met de bovenste print en daarachter de voorlopige voedingsspannig aansluiting. Een paneeltje met de voltmeter en schakelaar is nog in de maak.

Rlib hw 12.jpg

Rechts de bovenste print, met bovenaan de 5V regulator en aansluitingen voor drie sharp afstandsensoren. Onder het STM32F4 discovery board is de i2c bus duidelijk zichtbaar met Links 3 aansluitingen op het 3V deel, de level shifter in het midden en rechts 4 aansluitingen op de 5V bus. Hierop is het het LCD aangesloten via de i2c convertor.

Helemaal rechts de algemene 5V voeding, de Bluetooth module, rode jumper voor de buzzer en de IR ontvanger voor de afstandbediening. En natuurlijk de montagepunten voor het lcd, de bandkabelconnector en de buzzer.

Rlib hw 11.jpg

Op bovenstaande foto is het controllerboard met de motoren gemonteerd op een frame van makerbeams. Deze montage was eenvoudig, omdat vanaf het begin ruimte gereserveerd is voor deze beams en de montage-gaten.

De twee printen zijn met 4 metalen afstandshouders boven elkaar geplaatst en vooraan (links) is de bandkabel zichtbaar die de beide printen verbindt.