De bouw van Planck

Uit RobotMC.be
Versie door BlueHaze (overleg | bijdragen) op 29 dec 2017 om 22:35
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Ga naar: navigatie, zoeken
Planck4.jpg

Inleiding

Planck is de naam van een nieuwe 'differential drive' robot in opbouw. Op deze pagina komt het verslag van de bouw van deze robot. Van de stappen en de afwegingen. Ter lering en ter vermaak.

De motoren

De eerste stap is de keuze van de motoren. Twee dezelfde in dit geval, omdat Planck een 'differential drive' robot wordt. Ofwel, een robot met links en rechts een motor en op de motor-as een wiel. Als beide wielen even snel draaien rijdt de robot vooruit. En als de ene motor vooruit draait en de andere achteruit, draait de robot om z'n as. Eenvoudig van constructie en wendbaar. Maar goed, de motoren. Aan welke voorwaarden moeten deze voldoen?

Snelheid

Laten we een maximale snelheid van 1 meter per seconde eens als startpunt nemen. In de praktijk is de snelheid van een motor goed regelbaar tussen 20% en 80% van de maximale snelheid, dus in dit geval tussen 20 cm/s en 80 cm/s. Dat geeft een behoorlijk snelle robot, voor top-tijden op de roborama baan. Misschien moeten we een robot nemen die wat rustiger rijdt, zodat deze nauwkeuriger te sturen is. Nog steeds prima bruikbaar voor roborama, maar ook op een kleiner parcours. 50 cm/seconde lijkt een goed compromis tussen snelheid en nauwkeurigheid.

De snelheid van de robot wordt mede bepaald door de omtrek van het wiel. Standaard wielen hebben vaak een diameter van zo'n 7 cm. Vermenigvuldigd met Pi geeft dit een omtrek van 22 cm. Voor 50 cm per seconde moet de het wiel dus 2,3 slag per seconde draaien, ofwel 140 omwentelingen per minuut. Op zoek dus met een motor met ingebouwde vertraging!

Voedingsspanning

Je hebt gelijkstoommotoren vanaf enkele Volts tot 48V (en meer). Wat is handig?

  • Motoren met een lage spanning zijn minder goed regelbaar dan motoren met een hoge spanning. Verwacht - zeker van goedkope motoren - niet teveel indien de spanning lager is dan 6V.
  • Motoren met een hogere voedingsspanning kun je prima met een lagere spanning aansturen. Het toerental zal evenredig afnemen en ook het koppel zal wat lager zijn. Als we een 24V motor met een nominaal toerental van 280 omwentelingen per minuut op 12V aansturen, komt deze aardig in de buurt van bovengenoemde 140 omwentelingen per minuut.
  • Je batterijen bepalen vaak wat een handige voedingsspanning is. Als je bijvoorbeeld een 4 cell LiPo accu neemt, heb je een voeding tussen 13 en 16V en ligt de keuze voor een 12V motor voor de hand.
  • Let op dat een veelgebruikte componenten, zoals de 7805, bestand zijn tegen de batterijspanning. Tot 24V is over het algemeen geen probleem. Daarboven even de datasheet nakijken!

Vermogen

Hoe 'zwaar' moeten de motoren zijn? Dit is een lastige vraag om te beantwoorden, zeker als we uit gaan van een parcours zonder hellingen. Vergelijk het maar met aanschaf van een auto. Iedere moderne auto rijdt probleemloos 130, maar de verschillen in de tijd die het kost om dit vanuit stilstand te bereiken zijn groot. Is 20 seconden acceptabel of moet het onder de 7 seconden zijn? Met robots is het net zo.

De ervaring leert dat een robot van een paar kg en een maximale snelheid van 50 cm per seconde prima bestuurd kan worden met een motor van een paar Watt.

Encoders

Vaak willen we weten waar onze robot (ongeveer) is. Dit kunnen we bijhouden met Odometrie en hiervoor hebben we encoders nodig.

Een optie is om encoders op het wiel of de wiel-as te monteren. Deze encoders hebben vaak een resolutie (stapgrootte) tussen 5 mm en 2 cm en je kunt ze in combinatie met iedere motor gebruiken.

Alternatief zijn (duurdere) motoren met ingebouwde encoders. Als de encoder 'onderdeel' is van de motor, wordt deze niet op de uitgaande as gemonteerd, maar op de motor-as. Met andere woorden, je meet de omwentelingen voor de vertraging. Dit geeft een hogere resolutie, vaak (veel) beter dan 1 mm.

Voor nauwkeurige odometrie is een resolutie tussen 1mm en 0.1 mm ideaal. Een lagere resolutie gaat ten koste van de nauwkeurigheid. En een hogere resolutie heeft weinig zin omdat wielslip de nauwkeurigheid beperkt. Maar... een hogere nauwkeurigheid kan geen kwaad, zolang je processor in staat is de pulsen te tellen.

Kwaliteit

Het verschil in kwaliteit tussen motoren is groot. Aan de onderkant van de markt vindt je de motoren van enkele euro's, vaak voorzien van plastic vertragingkastjes. Prima geschikt om op volle snelheid te draaien. Maar... als je de spanning vanaf 0 Volt langzaam opvoert, duurt het wel even voordat ze daadwerkelijk gaan draaien. En dus zijn ze niet zo geschikt om de snelheid over een groter bereik te regelen.

Een klasse daarboven zijn de 'gearhead' motors zoals deze. Vaak goed regelbaar tussen de genoemde 20% en 80% van het toerental. Als optie soms leverbaar met encoder motoras nog steeds betaalbaar.

In de ere-divisie vind je motoren van Faulhaber, Portescap, Pittman en Maxon. Een uitgebreid gamma aan motoren die soms al bij 1V draaien, soepel lopen en snel reageren. Maar naast de prestaties zijn ook de prijzen indrukwekkend, vanaf 100 euro tot een veelvoud hiervan.

De keuze

De motoren voor Planck zijn Portescap motoren, type 22n28 210e F16 286 en met een vertraging van 55.7:1. Motoren uit de ere-divisie, die op dit moment 2e hands hier worden aangeboden voor 13 euro. Deze dump motoren zijn naar verluid gebruikt in dialyse apparatuur en hebben door slijtage wat speling op de uitgaande as van de vertraging. Niet meer geschikt voor medisch gebruik, maar goed genoeg voor onze robot.

De motor-serie wordt aangegeven met 22n28 * 286. De code 210e geeft (in ieder geval voor deze serie) aan dat het een 12V motortje betreft. F16 geeft aan dat de motor een geintegreerde magnetische encoder heeft met de volgende aansluitingen:

(1) M+
(2) Vcc (voeding encoder, 3.5-15V)
(3) encoder uitgang A
(4) encoder uitgang B
(5) Gnd (voeding encoder)
(6) M-

Dit zijn de eerste 6 pinnen van de 10-pin connector.

De specs van de motor + vertraging zijn:

  • Type: 22n28 210e F16 286
  • Nominale spanning: 12V
  • Vermogen: 3.7W
  • Maximale continue stroom: 0,38A
  • Vertraging: 55.7:1
  • Nominaal toerental: 5880 / 55.7 = 106 omw/min
  • Encoder met 16 lijnen/omwenteling en 4 fases/lijn
  • Gearbox efficiency 0,65
  • Max continues torque 7.3 mNm

Een variant op bovenstaande motor is de Portescap 22n28 210e D16 53, ook voorzien van een 55.7:1 vertraging. Over deze motor (en de D16 encoder) heb ik geen documentatie kunnen vinden. Het lijkt dezelfde motor met dezelfde vertraging. Wat echter opvalt is dat de motor een extra (7e) aansluiting heeft. Het blijkt dat hierop voeding aangesloten moet worden om de encoder te laten werken. Samengevat:

(1) M+
(2) Vcc (voeding encoder?)
(3) encoder uitgang A
(4) encoder uitgang B
(5) Gnd (voeding encoder)
(6) M-
(7) Vcc2 (pull-up encoder?)

(getest met 5V op Vcc en Vcc2).

Het frame

Naast passende motoren, hebben we ook een passend frame nodig. Aloys maakt mooie frames:

  • Rond, zodat de robot niet vast komt te zitten
  • Uitsparingen voor wielen tot 10 cm diameter, bijvoorbeeld deze , voorzien van 4mm wheel hubs.
  • De diameter van 24 cm geeft voldoende plaats voor electronica en sensoren.
  • Twee plateau's, voldoende ver uit elkaar, zodat er sharp sensoren tussen passen
  • Montageplaats voor een zwenkwiel of ball caster (kogelwieltje)
  • Vele montagegaten, onder meer voor sensoren en een Arduino Uno of Mega

De plateau's worden gemaakt van snijplanken. Goed verkrijgbaar, goed te bewerken en goedkoop. Naast de plateau's heeft Aloys ook steuntjes ontworpen om de Portescap motoren op het frame te monteren.

Microcontroller

De achterkant van het bovenste dek is een mooie plaats om de microcontroller te plaatsen die de robot gaat besturen. Maar waar moeten we op letten en welke microcontroller moeten we kiezen?

8 bit ?

Bekende voorbeelden van 8 bit microcontrollers zijn de PIC16/PIC18 serie van Microchip en de ATMega serie van Atmel. Deze laatste is bijvoorbeeld de basis voor de bekende Arduino Uno en Mega. Zowel de PICs als de ATMeta serie heeft controllers die zeer geschikt zijn om een robot te besturen.

32 bit ?

32 bits is vast 4x zo goed dan 8 bits, toch? Het aanbod van 32 bit controller is groot. Fabrikanten zoals NXP, Atmel en STM leveren controllers met een ARM core voor prijzen die lager liggen dan de bovengenoemde 8 bit controllers. Waarom zou je dan voor een 8 bit controller kiezen?

  • 32 bit processoren zijn sneller en hebben vaak ook een hogere kloksnelheid - maar kun je die snelheid benutten?
  • 32 bit processoren hebben (meestal) 3V3 voeding. Hierdoor is het extra opletten als je 5V sensoren gebruikt.
  • 32 bit processoren hebben meer mogelijkheden en zijn daarom vaak ook wat lastiger te configureren.
  • 32 bit processoren worden vooral door professionals gebruikt, en minder door hobbyisten. Hierdoor zijn er minder voorbeelden op het internet en is ondersteuning lastiger te vinden.

Kortom: je krijgt een hoop meer met een 32-bit processor, maar het zal wel wat harder werken zijn.

Raspberry Pi of BeagleBoard Black ?

De hiervoor genoemde 8 of 32 bits controllers worden vaak 'bare metal' gebruikt. Dit houdt in dat jouw programma het enige is wat op deze controller draait. Je moet dus alles zelf doen. Tegenwoordig zijn er echter ook goedkope Linux computers beschikbaar. En met Linux krijg je gratis netwerk toegang, een filesysteem, multi-tasking, device drivers enzovoort enzovoort. Een goede keuze?

Dat hangt ervan af. Van de moeite die het jou kost om zo'n Linux systeem up-en-running te krijgen op de manier die je nodig hebt. En van het voordeel wat je hebt van die extra functionaliteit die Linux je biedt. Een paar voorbeelden:

  • Als je een systeem hebt waarin je veel configuratie files en logbestanden hebt, biedt Linux voordeel.
  • Een wifi adapter maakt het eenvoudig om de robot tijdens het testen draadloos te volgen.
  • De combinatie van een low-level sturing in C en een high-level planner in Python is geen probleem.
  • Allerlei hardware, bijvoorbeeld een webcam, is plug & play
  • Voor Linux is een groot aantal modules beschikbaar, zoals het Robot Operating System en OpenCV (Open source Computer Vision)

Welke taal ?

Er zijn vele talen beschikbaar voor het programmeren van microcontrollers. Vaak is de taal die je al kent het beste. Immers, overstappen naar een ander taal vraagt een forse investering in tijd (en soms in hulpmiddelen). Discussies over programmertalen krijgen hierdoor vaak een religieus karakter. Desalniettemin toch een korte opsomming van een aantal opties met korte karakterisering (voor de toepassing op hobby robots).

  • Basic - Eenvoudig te gebruikten voor eenvoudig tot gemiddeld complexe programma's. Vaak processor-gebonden dialect.
  • JAL - Pascal-achtige taal, speciaal voor PICs. Bruikbaar voor eenvoudig tot gemiddeld complexe programma's
  • Assembler - Prima keuze als je van programmeren in assembler houdt, of als je het maximale uit je hardware wilt halen. Voor ons doel is het beter om een andere taal (en zo nodig een wat krachtigere processor) te kiezen.
  • C (zonder ++) - Op zich prima bruikbaar, maar let op: het ontbreken van de ++ kan een indicatie zijn dat het geen volledige implementatie is van de taal, of een dialect.
  • C++ - Krachtige taal, geschikt voor complexe programma's (ook als je de ++ functionaliteit niet gebuikt) en beschikbaar voor bijna ieder platform. Leercurve wat langer door vele opties.

De keuze

Planck is bedoeld als 'de tweede stap' in robotics. Een goede basis met kwalitatief goede motoren en hoge resolutie encoders. En voor een budget die het toegankelijk maakt voor een breed publiek. Daarom kiezen we voor een controller die toegankelijk is voor een breed publiek. De Arduino Mega. Waarom?

  • De Arduino Mega heeft, net als nagenoeg alle andere moderne microcontrollers, voldoende rekenkracht.
  • De Arduino Mega heeft ruim voldoende IO pinnen, in tegenstelling tot de wat krap bemeten Arduino Uno
  • De Arduino Mega heeft zoveel flash en ram geheugen dat je dit waarschijnlijk niet vol krijgt.
  • De Arduino Mega werkt, in tegenstelling tot o.a. de Arduino Due, op 5V waardoor sensoren eenvoudig aangesloten kunnen worden.
  • De Arduino Mega heeft een eenvoudige IDE, veel ingebouwde functies en er is veel informatie over te vinden op het internet.

Het enige minpuntje is de taal: het is een 'laagje op C++' in combinatie met een eenvoudige IDE en vele ingebouwde functies. En daarmee is het eigenlijk een dialect, geschikt voor eenvoudige tot gemiddeld complexe programma's.

Maar... dit nadeel kan niet in de schaduw staan van al de voordelen!

Shields

De aansluitingen van de Arduino zijn uitgevoerd op een aantal female headers. Hierop passen opsteek-printjes, zogenaamde shields. Er zijn shields voor allerlei toepassingen, zoals communicatie (Bluetooth, WiFi, Ethernet), sturing (led's, motoren), displays. Kortom, als je even zoekt vindt je vast een shield voor je toepassing.

Een paar shields die in aanmerking komen voor Planck zijn:

MotorShield

Motorshield dfrobot.jpg

De meeste motorshields zijn gebaseerd op de L298 H-brug en ontworpen voor gebruik voor de kleinere Arduino Uno. Op zich is dat geen probleem, omdat deze 'standaard' shields ook op de Mega boards passen. Meer informatie over Arduino motorshields vindt je op Arduino#Motorshields.

Het gebruik van een motorshield heeft als voordeel dat je zonder soldeerwerk de motor kunt aansluiten en vervolgens aansturen. Daar staat tegenover dat deze shields niet ontworpen zijn voor 'harde' aansturing van de motor. Dat betekent dat je alsnog je shield moet aanpassen om de maximale controle over je motoren - en dus je robot - te krijgen.


SensorShield

SensorShield.jpg

Het sensorshield bevat een groot aantal 3-pin connectoren. Ieder van deze connectoren heeft de volgende aansluitingen:

  • (G) - Ground
  • (V) - Vcc / Voedingsspanning
  • (S) - Signal, het signaal van een specifieke pin

Deze opzet is handig voor het aansluiten van sensoren of actuators. Een sensor heeft eigenlijk altijd massa nodig, en vaak ook voedingsspanning. En... vaak heeft een sensor slechts 1 uitgang. Soms heeft een sensor echter meer uitgangen (zoals bij een kwadratuur encoder) en dat geldt ook voor sommige actuators.

Sommige sensoren worden geleverd met een 3-polige aansluiten. Let op dat je de connector goed aansluit (niet omdraaien) en controleer of het signaal op de 3e pin zit. Varianten met de aansluitingen Ground/ Signaal / Vcc komen ook voor!


ProtoShield

PrototypeShield.jpg

Er zijn diverse varianten van het 'prototype shield'. Sommige hebben aansluitingen voor allerlei randapparatuur, zoals een extra regulator en verschillende LCD displays. Andere (zoals op de afbeelding rechts) zijn grotendeels 'experimenteerprint' met gaatjes op e-raster waar je zelf dingen kunt aansluiten. Aan de randen van de print vindt je de male headers waarmee het shield op de Arduino Mega wordt geprikt. En female headers, zodat er op dit shield weer een volgend shield gemonteerd kan worden. Dit shield vraagt enig soldeerwerk, maar geeft vervolgens meeste vrijheid omdat je naar eigen inzicht connectoren (en andere componenten) kunt plaatsen en aansluiten op pinnen van de Arduino.

Overigens... wellicht denk je 'Waarom pak je geen stukje experimenteerprint?' Een goede gedachte! Helaas gaat dat niet omdat de headers van de arduino - ten opzichte van elkaar - niet op e-raster (100 mil) zitten. Waarom? Geen idee, maar er zijn inmiddels zoveel Arduino's en shields in omloop dat dit niet meer zal veranderen...


De keuze

Omdat we toch moeten solderen en er geen plannen zijn om de motorstroom te meten, kiezen we voor een goedkope L298 module voor motorsturing. Hierdoor hebben we geen motorshield nodig.

De keuze tussen een prototype shield en sensorshield is niet zo eenvoudig. Het powerboard (zie verder) wordt met 8 signalen en 3 voedingslijnen verbonden met de processor en hiervoor is het prototype shield ideaal. Maar waarschijnlijk gebruiken we de rest van de IO voor losse sensoren en daarvoor is een sensor shield toch wel erg handig.

Uiteindelijk gaf het belang van een goede, betrouwbare verbinding met het powerboard de doorslag en is gekozen voor het prototype shield. De signalen voor het powerboard worden uitgevoerd op een 16 (2x8) pin bandkabelconnector. Dit garandeert een goede verbinding en voorkomt dat pinnen (waaronder de hogere voedingsspanning!) verkeerd worden aangesloten. Het resultaat:

Planck Protoshield.jpg

De bandkabelconnector is duidelijk zichtbaar. Rechts daarvan is een 4-pin header gemonteerd voor een Bluetooth adapter (waarover later meer). Links is het piezo luidsprekertje zichtbaar. Deze kan worden gebruikt om aandacht te trekken met piepjes, een melodie of met morse code.

Een Arduino Mega heeft veel meer aansluitingen dan een 'standaard' Arduino, zoals de Uno. Maar de aansluitingen van de Mega zijn zo geplaatst dat er ook een shield van een 'standaard' Arduino op past. En doordat de bandkabelconnector ver genoeg naar rechts is geplaatst, kunnen we 'klein' sensorshield op het Mega Prototypeshield prikken:

Planck 2Shields.jpg

Het 4x4 toetsenbordje is op één van de analoge ingangen van het sensorshield aangesloten. Hoe dat werkt lees je hier. Buiten de seriële poort (pinnen 0 en 1) zijn alle pinnen van het sensorshield beschikbaar. De piezo buzzer en de bandkabelconnector zijn namelijk op de 'extra' Mega pinnen aangesloten.

Power board

PlanckPowerBoard.jpg
Planck3.jpg

Op de onderste dek van het frame de komt het 'Power board'. Dit board heeft connectoren voor:

  • een 3 pin connector voor de accu
  • een 3 pin connector voor een externe voeding (niet tegelijk met accu aansluiten!)
  • twee 10 pin (2x5) connectoren voor de beide motoren
  • een 16 pin (2x8) connector voor verbinding met het microcontroller board

Daarnaast worden twee module op het powerboard gemonteerd:

  • een switching step-down regulator
  • een L298 H-brug module

Het powerboard legt verbindingen tussen deze connectoren, de aan/uit schakelaar en de twee modules. Op het schema rechts zien we links onder de aansluitingen voor de batterij en de externe voeding. Aan de onderkant van het onderste dek van Planck zit een vier-voudige AA batterijhouder, bedoeld voor oplaadbare LiIon accu's. Deze accu's leveren een spanning tussen 3.2V en 4.2V per stuk. De uitgangsspanning van de batterijhouder varieert dus tussen 12.6V en 16.6V.

De batterijhouder is met een connectort aangesloten op het power-board. Via de aan/uit schakelaar, die ook op het board is gemonteerd, is de spanning aangesloten op de switching step-down module. Deze module brengt de voedingsspanning - zonder al teveel warmteontwikkeling - terug naar een lagere spanning. De spanning van deze modules is instelbaar en is afgesteld op 7,5V, de optimale spanning voor voeding van de Arduino Mega.

Step Down Regulator

De gebruikte step down regulator is gebaseerd op de LM2596 en de module is voorzien van een 10-slagen potentiometer waarmee de spanning nauwkeurig ingesteld kan worden. Alternatief is een module gebaseerd op de MPS2307. Het voordeel van deze module is dat deze veel kleiner is.

StepDown1.jpg

Nadeel van deze kleine module is de standaard potentiometer, die het lastig maakt om de spanning nauwkeurig in te stellen en een groter risico geeft dat de spanning wordt ontregelt tijdens gebruik. Dit kan worden opgelost door de potentiometer te vervangen door een vaste weerstand. De potentiometer maakt deel uit van een spanningsdeler met een vaste weerstand. Deze vaste weerstand is bij de modules mijn modules 8k2 (822). De waarde van de weerstand voor de gewenste uitgangsspanning kun je uitrekenen met:

R = 8.2 / 0,925 * (Vout - 0.925)

De kans is klein dat weerstanden met precies deze waarde verkrijgbaar zijn. Pak een waarde die daar boven of onder ligt en controleer wat de uitgangsspanning wordt met:

Vout = 0.925 * (R + 8.2) / 8.2

Als de afwijking te groot is, kun je twee weerstanden parallel (of in serie) plaatsen. Hier vind je een handige calculator om zo dicht mogelijk bij de gewenste waarde te komen met weerstanden uit de standaard reeksen. De hieronder getoonde schakeling met een 47k weerstand geeft ongeveerd 6V uitgangsspanning. Een weerstand van 62k (een standaard waarde uit de E24 reeks) geeft 8V uitgangsspanning en is daardoor prima geschikt voor de voeding van de ATMega.

StepDown2.jpg StepDown3.jpg

Tips bij het vervangen van de instelpotmeter:

  • Desoldeer de instelpotmeter door de twee vaste punten tegelijk te verwarmen met de soldeerbout en duw de potmeter omhoog met (bijvoorbeeld) een pincet. Hierdoor voorkom je dat de twee aansluitingen beschadigd raken. De derde aansluiting van de potmeter breekt wellicht wel af, maar die is niet meer nodig. Het losse deel van het printbaantje kun je met een mesje verwijderen.
  • Buig de pinnen van de weerstand in de gewenste vorm, knip ze op maat, vertin de aansluitingen.
  • Soldeer de weerstand voorzichtig vast op 1 punt.
  • Let op dat de weerstand geen kortsluiting kan maken. De linkse rode pijl op de rechtse foto geeft aan waar de weerstand op de print rust. De aansluiting van de weerstand bij de rechtse pijl ligt op ruime afstand van de daaronder gelegen SMD condensator en weerstand.
  • Zit de weerstand nog neit helemaal goed? Dan het gesoldeerde pootje verwarmen met de soldeerbout en met een pincet de weerstand op de juiste plaats leggen. Zorg ervoor dat je geen kracht zet op het printbaantje.
  • Als de weerstand goed is gepositioneerd, het tweede pootje goed vastmaken en daarna het eerste pootje nogmaals (netjes) solderen.

Tot slot: op de LM2596 zie je twee grote condensatoren die de in- en uitgangsspanning ontkoppelen. De MPS2307 kan met condensatoren toe met veel kleinere condensatoren. Echter... het is de vraag of de gebruikte condensatoren op de module voldoende zijn. De datasheet geeft aan dat een 10uF condensator aan de ingang vereist is, en een 22uF condensator aan de uitgang. Een toepassing met een lange (60 cm) voedingskabel werkte bij mij niet stabiel, totdat ik een een 47uF condensator over de ingang had gesoldeerd...

MotorController

De motorcontroller (L298 module, links boven op het schema) wordt direct uit de batterijen gevoed, waardoor:

  • de spanning hoog is, wat een hogere maximale snelheid geeft.
  • 'storing' (belastingsvariaties) van de motoren minder invloed hebben op de gestabiliseerde 7.5V spanning.
  • de motorspanning lager wordt naar mate de batterijen verder ontladen worden. Hierdoor varieert het toerental van de motoren. Omdat we via de encoders het toerental kunnen meten, kunnen we hiervoor corrigeren.

Het hart van de motorcontroller is de L298 H-brug. Naast deze H-brug bevat de module ook een 5V spanningsstabilisator en acht beveilingsdiodes.

De L298 is een transistor H-brug die maximaal 2A per motor kan leveren en is - omdat we de motor hard aan willen sturen - geschikt voor motoren tot 2A stall current. Een transistor H-brug heeft - in tegenstelling tot een FET H-brug - een spanningsval. Bij de L298 is deze spanningsval tussen 1,8V en 3,2V (bij 1A). Dit heeft een behoorlijke impact op motoren van 6V, maar voor onze 12V motoren is dit niet zo'n probleem. Meer informatie over de harde aansturing van motoren en het verschil tussen een transitor en FET H-brug vindt je op de volgende pagina's:

De beide enable ingangen van de motorcontroller worden met de meegeleverde jumpertjes vast 'hoog' gemaakt (met 5V verbonden). Vanzelfsprekend worden de uitgangssignalen van de motorcontroller aangesloten op de beide motoren (connectoren rechts boven). Naast de aansluiting van de motortjes zelf, zitten ook de aansluitingen voor de encoders op deze connectoren. De vereiste 5V voedingspanning voor de encoders tappen we af van de 5V regulator van de motorcontroller.

Tot slot 'verzamelen' we de volgende signalen voor de microcontroller op de 16-pin connector, midden rechts op het schema:

  • De A en B signalen de kwadratuur encoder van de linkse motor
  • De A en B signalen de kwadratuur encoder van de rechtse motor
  • De inputs 1, 2, 3 en 4 van de motorcontroller
  • De gestabiliseerde 7.5V (voor voeding van de microcontroller).
  • Massa
  • Verlaagde batterijspanning (via 4k7/2k2, waarmee de microcontroller de batterijspanning kan bepalen.)

Het Power Board is het knooppunt voor de 'hogere' spanning en grotere stromen. Dit board verbinden we met een 16-polige bandkabelconnector met de microcontroller.