Dries Hulens
Grassdresser
VRIJ TECHNISCH INSTITUUT LEUVEN
6 EE
Schooljaar 2006-2007 2006
DEKENSTRAAT 3, 3000 LEUVEN TEL. 016/31 97 70 FAX 016/20 51 20
Grassdres Grassdresser
Coördinator: Jürgen Van der Velde
Dries Hulens Hoekstraat 5 3040 HULDENBERG
1
Dries Hulens
Grassdresser
6 EE
Voorwoord Dit eindwerk kadert in de geïntegreerde proef met betrekking tot het maken van een autonome grasmaairobot. Ik wens de heren Jürgen Van der Velde en Wim Salien, leerkrachten elektronica, te bedanken voor hun hulp en inlichtingen doorheen het jaar. Ook wil ik de heer Hugo Dekoning, leerkracht Nederlands, bedanken voor de lessen die hij besteed heeft aan het opstellen van dit rapport. Mijn dank gaat ook uit naar mijn ouders die mij financieel gesteund hebben bij het maken van mijn eindwerk en steeds in mij bleven geloven. Mijn speciale dank gaat uit naar de heer Alex Moeys, bedrijfsmanager, voor het materiaal dat hij ter beschikking stelde om mijn eindwerk te kunnen maken. Ik wens ook de juffrouwen Leen en Catérine Boulanger, studentes CUL, te bedanken voor hun hulp aan het opstellen van dit rapport.
2
Dries Hulens
Grassdresser
6 EE
INHOUDSOPGAVE Voorwoord Inleiding…………………………………………………………………………………………………….5 Sensoren……………………………………………………………………………………………………6 Infrarood ontvangers………………………………………………..……….…………………7 Regensensoren…………………………………………………………………..………………..9 Microswitches…………………………………………………………………….……………..10 Ultrasoon detector…………………………………………………………….………….…..11 Afbakening…………………………………………………………………………..…………………12 Infrarood zender……………………………………………………………..………………..13 Infraroodled TSAL 6200…………………………………………………..…………………15 Focussen IF-straal……………………….…………………………………….……………….16 Batterij……………………………………………………………………………………….………….17 Batterij Makita…………..………………………………………………………………………18 Batterijcontrole…………………………………………………………………………………18 Baterijlader……………………………………………………………………………………….19 Zonnepaneel………………………………………………………………………………………….20 Het zonnepaneel……………………………………………………………………………….21 Automatisch richten zonnepaneel…………………………………………………….21 Laadstation…………………………………………………………………………………………….22 Het laadstation………………………………………………………………………………….23 Infraroodzender laadstation……………………………………………………………..25 Aandrijving ……………………………………………………………………………………………26 3
Dries Hulens
Grassdresser
6 EE
Servomotoren…………………………………………………………………………………..27 Modificatie servo………………………………………………………………………………27 De servo intern………………………………………………………………………………….29 H-Brug……………………………………………………………………………………………….30 Het mes……………………………………………………………………………………………..31 Basic Stamp…………………………………………………………………………………………….32 De Basic Stamp…………………………………………………………………………………..33 Programmeerbordje…………………………………………………………………………..33 Opbouw Basic Stamp………………………………………………………………………….35 Instructielijst Basic Stamp…………………………………………………………………..36 Blokschema robot………………….……………………………………………………………….39 Blokschema laadstation…….……………………………………………………………………41 Besluit………………………………………………………………………………………………..43 Biografie, foto’s, filmpjes en datasheets op CD achteraan in het boekje
4
Dries Hulens
Grassdresser
6 EE
Inleiding Voor de GIP mochten we zelf kiezen wat we maakten, ik heb gekozen om een autonome grasmaaier te maken, de Grassdresser (GD) Hierbij kwam het volgende kijken: • • • • • • •
Basic stamp kennen en kunnen programmeren Robot voorwerpen laten ontwijken Robot het einde van een grasperk laten detecteren Robot regen laten detecteren Robot moet zijn herlaadplaats vinden bij lage accu spanning Robot moet opladen op zonne-energie Zonnepaneel moet automatisch naar de zon draaien
5
Dries Hulens
Grassdresser
6 EE
Sensoren
6
Dries Hulens
Grassdresser
6 EE
Infrarood Ontvangers Om het einde van een grasperk te detecteren maak ik gebruik van Infrarood ontvangers, omdat het grasperk wordt afgebakend door infrarood stralen, waarover ik later meer uitleg geef. De IF ontvanger die ik gebruik is een TSOP1738. Deze ontvangt een lichtfrequentie van 38kHz.
De TSOP17** is een geminimaliseerde ontvanger gebruikt voor infrarood gestuurde systemen. De epoxy behuizing is ontworpen als IR filter, deze is deze ongevoelig aan elektromagnetische storingen. Het gedemoduleerde outputsignaal kan direct door een microprocessor worden gedecodeerd. Het belangrijkste voordeel is dat de TSOP17** werkt met korte uitgangscode en hoge data rates.
Eigenschappen • • • • • • •
Photo detector en voorversterker in één behuizing, Inwendige filter voor PCM frequentie, Behuizing bestand tegen elektromagnetische storingen, TTL en CMOS compatitabel, Output actief laag, Laag verbruik, Hoge immuniteit tegen daglicht,
TSOP17** Intern Op het blokschema op de volgende pagina kan je zien dat het ingangssignaal eerst door een AGC (automatic gain control) wordt gestuurd. Deze AGC zorgt ervoor, indien nodig, het ingangssignaal versterkt wordt, zoals bijvoorbeeld wanneer de IF-zender verder verwijderd is van de ontvanger dan wanneer beide dichter bij elkaar gelokaliseerd zijn. Daarna gaat het signaal naar een Band pass filter, deze filtert het 38kHz signaal (in mijn geval) van ander ongewenst IF-licht. Vervolgens gaat het signaal naar een demodulator die het signaal omzet naar een digitale spanning of toestand die door de µC kan worden verwerkt.
7
Dries Hulens
Grassdresser
6 EE
Op de volgende figuur is te zien hoe de output van de TSOP17** wijzigt wanneer hij IF-licht ontvangt.
8
Dries Hulens
Grassdresser
6 EE
Schema TSOP17** Bij het aansluiten van de TSOP17** mag je niet vergeten een 100 Ohm weerstand in serie te plaatsen met de voeding, om op deze manier de stroom door de TSOP te beperken. De condensator van 4,7µF wordt gebruikt om storing aan de voeding te voorkomen. De laatste externe component is een 10K weerstand , deze wordt gebruikt als pull-up pull weerstand om m problemen aan de ingang van de microcontroller te voorkomen. (Een ingang van een µC mag nooit “zwevend” zijn.)
Regensensoren Omdat het moeilijk is om gras te maaien wanneer het vochtig is, is staan er regensensoren op de grassdresser gemonteerd. Wanneer de µC een signaal ontvangt van de regensensoren zal deze het zelfde programma laten draaien als wanneer de batterij leeg is. Hierdoor gaat de GD naar zijn herlaadplaats waar hij ook kan schuilen. schuile De sensor zelf is een printplaat waarbij 2 banen dicht bij elkaar lopen. Wanneer er een druppel water op de baantjes valt zullen deze kortsluiting maken waardoor err een stroom naar de gate van een SCR vloeit, waardoor deze op zijn beurt in geleiding gaat en een 5 volt signaal aan zijn uitgang geeft. Op de grassdresser grassdresser staan 2 van deze printplaten verbonden met een AND-gate gate alvorens ze naar naa de µC gaan.
Printplaat Regensensor
9
Dries Hulens
Grassdresser
6 EE
Ik heb gekozen om een SCR te gebruiken omdat deze maar een hele kleine stroom nodig heeft om in geleiding te gaan. Het nadeel van een SCR echter is de doofmethode. Ik heb gebruik gemaakt van de doofmethode waarbij je de voedingsspanning van de SCR onderbreekt. Dit werd uitgevoerd door de SCR te voeden uit de µC. Zo kan ik de voedingsspanning uitschakelen wanneer de SCR in geleiding is gegaan, en terug inschakelen wanneer de druppel op de sensor is opgedroogd.
Microswitches Om de grassdresser obstakels zoals bomen en stenen te laten detecteren staan er 2 microswitches op de grassdresser gemonteerd. Deze zijn rechtstreeks met de µC verbonden, ook hier wordt gebruik gemaakt van pull-down weerstanden om de ingang van de µC niet zwevend te laten. Gewoonlijk wordt een weerstand van 1K gebruikt als pull-up of pull-down weerstand.
10
Dries Hulens
Grassdresser
6 EE
Ultrasoon detector Later wil ik gebruik maken van ultrasoon detectoren, omdat nu de robot nu eerst tegen het obstakel moet rijden vooraleer hij deze detecteert. Dit is bij ultrasoon detectoren niet het geval, deze detecteren een voorwerp dat op een bepaalde afstand staat van de sensor. Hierdoor moet de robot niet eerst tegen het voorwerp rijden maar kan hij het al eerder ontwijken. De ultrasoondetector die ik wil gebruiken is van Parallax omdat deze heel eenvoudig uit te lezen is met eender welke controller. Deze sensor kan nauwkeurig afstanden meten van 2cm tot 3 meter. Het grote voordeel van deze sensor is dat hij maar 1 I/O pin vereist. De sensor werkt door ultrasoon geluid te produceren en dit terug op te vangen na weerkaatsing. De tijd tussen verzenden en ontvangen van het geluid word omgezet naar een digitaal signaal dat op de uitgang van de sensor komt te staan.
Op de volgende figuur zijn de in- en uitgangssignalen waar te nemen die men aan de sensor moet aanbieden of aflezen. Door de µC het aantal pulsen, dat hij binnenkrijgt tijdens de Tholdoff periode, te laten tellen kan je door middel van een berekening in de µC exact weten hoe ver een voorwerp verwijderd is van de sensor. Het vet gedrukte is de zendpuls en het grijze is de ontvangen puls.
11
Dries Hulens
Grassdresser
6 EE
Afbakening
12
Dries Hulens
Grassdresser
6 EE
Infrarood Zender De afbakening van het grasperk gebeurd door middel van infraroodstralen. Op elke hoek van het grasperk staat een paaltje met 2 infraroodleds onder een hoek van 90°. Het infraroodlicht wordt gestuurd met een frequentie van 38KHz omdat je zo een veel grotere stroom door de IF-leds kan sturen, waardoor deze ook veel verder gaan stralen. Deze frequentie wek ik op met een 555, een timer waarvan je de frequentie en pulslengte kan regelen door middel van de weerstanden en condensators aan te passen. De weerstands- en condensatorwaarden heb ik berekend met het programme 555PROTIMER. Dit is een programma dat gratis te downloaden is (www.circuitsonline.net). Je geeft je frequentie en dutycycle in, en het programma berekend de componenten rond de 555.
De 555 stuurt zijn uitgangssignaal via een weerstand naar een transistor, een BC547B die de infraroodled zal schakelen. In de voorbeeld schakeling op de datasheet van de infrarodled werd geen weerstand gebruikt, maar uit veiligheidsoverwegingen heb ik toch een weerstand van 120 Ohm geplaatst. De weerstand tussen 555 en Transistor is 1K, dit lijkt klein maar er wordt een grote stroom geschakeld aan de collector van de transistor.
1K
120R BC547B
13
Dries Hulens
Grassdresser
6 EE
Wanneer de robot aan het einde van zijn grasperk is zal hij een IF-straal detecteren waarna hij over een hoek van 179° gaat draaien. Hierdoor rijdt hij heel het grasperk af zonder 2 keer over het zelfde gedeelte te rijden. Een simulatie hiervan is op de bijgevoegde cd te zien. Zoals elke schakeling begint ook deze op een breadbordje. Hieronder een foto van de zender en ontvanger op breadboard.
14
Dries Hulens
Grassdresser
6 EE
Infraroodled TSAL 6200 De infraroodleds die ik gebruik zijn van het type TSAL6200. Dit is een heel efficiënte infrarood LED ingebouwd in een klare plastic behuizing.
Eigenschappen • • • • • •
Extra hoge straalkracht en intensiteit, Hoge betrouwbaarheid, Lage voorwaartse spanning, Bruikbaar voor hoge stroompulsen, Wavelegth p=920nm, Werkt goed samen met silicium fotodetectors,
Deze leds kunnen volgens de datasheet bij 10KHz een stroom van 1,5A aan, bij bij deze stroom zal het infraroodlicht een gebied van 30meter bereiken. Als je dan op elke hoek van het grasperk een paaltje zet betekent dit dat je met 4 paaltjes een gebied van 60x60 meter kan afbakenen. Als je een groter gebied, zoals een voetbalveld, wilt afbakenen dan kan je in het midden nog een paaltje bijzetten waar dan 2 IF-leds opstaan onder een hoek van 180°.
15
Dries Hulens
Grassdresser
6 EE
Wat ook belangrijk is bij mijn toepassing is de stroom - temperatuursverhouding. Omdat de paaltjes met infraroodleds buiten staan gaan deze invloed van de warmte ondervinden. Op onderstaande grafiek kan je zien hoe de voorwaartse stroom daalt wanneer het warmer wordt. In België zijn de warmste temperaturen gemiddeld 35°, hierbij zal de stroom minimaal dalen. Wanneer de stroom gaat dalen, zal ook de lengte van de infraroodstraal dalen dus zal je hierbij rekening moeten houden bij het plaatsen van de IF-paaltjes.
Focussen IF-straal De infraroodstraal moet gefocust worden omdat anders de infraroodstraal het hele grasveld belicht. Wanneer dit het geval zou zijn, zou de robot reeds voor dat hij aan het einde van zijn grasperk is terugdraaien. Daarom heb ik de IF-straal gefocust met lenzen die ik gerecupereerd heb uit CDROM drivers. De straal focussen doe je door de lenzen korter of verder van de led te houden. Het duurde even voor ik de juiste afstand had gevonden, maar eens je de afstand weet kan je hem bij elke led gebruiken. Later ga ik nog lenzen laten snijden door een opticien zodat deze allemaal gelijk zijn.
16
Dries Hulens
Grassdresser
6 EE
Batterij
17
Dries Hulens
Grassdresser
6 EE
Batterij Makita De meeste microcontrollers hebben een gestabiliseerde voedingsspanning van 5 volt nodig om juist te kunnen functioneren. Aan de basic stamp die ik gebruik kan je een spanning van 6 tot 12 volt aanleggen omdat deze zelf een spanningsstabilisator bezit. Omdat ik een veiligheidsmarge op mijn batterijspanning wou hebben heb ik gekozen voor een batterij van 7,2 volt. Deze veiligheidsmarge is nodig om de µC nog te laten functioneren wanneer de spanning van de batterij zou dalen als gevolg van grote stromen. Omdat de grassdresser langer dan 2 uur moet kunnen rondrijden, moet de batterij voldoende stroom kunnen leveren. De meest geschikte batterij hiervoor was een herlaadbare batterij van een vijsmachine omdat deze grote stromen kunnen leveren. De batterij die ik gebruik is een 7,2V - 7200mAh van Makita, dit wil zeggen dat de robot ongeveer 4 uur zal kunnen rijden vooraleer de batterij onder 6 volt zakt.
Batterijcontrole Wanneer de batterij bijna leeg is zal de robot automatisch naar zijn herlaadplaats rijden. Over deze herlaadplaats wordt in het hoofdstuk HERLAADPLAATS meer uitleg gegeven. Dit doet hij door tot aan het einde van het grasperk te rijden en dan te draaien in een hoek van 90° ipv 179°. Hierna zal hij terug vooruitrijden tot de volgende afbakening. Hierdoor zal hij uiteindelijk voorbij zijn herlaadplaats rijden en deze ook detecteren. Hoe de robot zij herlaadplaats detecteert wordt in het hoofdstuk DETECTIE LAADSTATION uitgelegd. Om te weten wanneer de batterij onder de 6 volt daalt heb ik een schakeling gemaakt waarbij de batterijspanning wordt vergeleken met een referentiespanning van 6 volt. Dit gebeurt door een comperator die 2 ingangsspanningen met elkaar vergelijkt. Als de spanning van de hoofdbatterij onder de spanning van de referentiebatterij daalt, zal de uitgangstoestand van de comperator veranderen van 1 naar 0. Dit signaal wordt dan naar de µC gestuurd die dan een programma laat draaien om het laadstation te vinden. Als referentiebatterij gebruik ik een 6V lithium batterij omwille van de heel lange levensduur. Op de figuur hieronder is de comperator te zien. De diode aan de ingang van de hoofdbatterij is om nog een veiligheidsmarge te nemen van 0,7V zo zal de robot al bij een spanning van 6,7 volt naar zijn laadstation rijden zodat hij de tijd nog heeft om zijn laadstation te vinden. ( Over een diode staat een spanning van 0,7V) De potmeter in de schakeling is nodig om de gevoeligheid van de comperator te regelen.
18
Dries Hulens
Grassdresser
6 EE
De comperator die ik gebruik is van het type TL082. Ik heb deze gekozen omwille van zijn laag verbruik van 3,6mA omdat bij het gebruik van een batterij het de bedoeling is dat de componenten zo weinig mogelijk verbruiken. Deze comperator gebruik ik ook bij het automatisch richten van het zonnepaneel.
Batterijlader Omdat de batterijen worden opgeladen op zonne-energie moet de lader hiervoor ook geschikt zijn. In elektuur NR 3456 heb ik een geschikte lader gevonden.
De spanning van de accu’s wordt continu gemeten. Als deze spanning te hoog wordt ( het teken dat de accu’s vol zijn), dan wordt een vermogensweerstand parallel aan het zonnepaneel geschakeld, waardoor de spanning van het paneel daalt en de accu’s niet meer verder worden geladen. De spanningsdetectie gebeurt door het gedeelte rond T2. Zenerdiode D2 zet de emitter van T2 op een offset van circa 1,4V. zodra de basis van T2 via spanningsdeler R3, P1 en R6 boven ongeveer 2V (1,4V plus de basis/emitter-overgang van T2) komt, gaat deze transistor in geleiding. Deze trekt de basis van T1 via R5 omlaag, waardoor T1 ook in geleiding gaat. De stroom uit het zonnepaneel wordt dan via vermogensweerstand R7 afgeleid. De spanning van het paneel zal daardoor inzakken, waardoor het laadproces wordt beëindigd. Dit printje is gemonteerd op het laadstation.
19
Dries Hulens
Grassdresser
6 EE
Zonnepaneel
20
Dries Hulens
Grassdresser
6 EE
Zonnepaneel Het zonnepaneel dat ik ter beschikking had, heb ik ook zelf gemaakt. Ik ben in groep-T 16 aparte cellen gaan kopen die ik daarna in serie heb gezet door middel van zilverpapier en geleidende lijm. Dit was nodig omdat je niet kan solderen op de cellen. Elke cel gaf een maximum spanning van 1 volt bij volle lichtopbrengst. Het totale zonpaneel gaf 16V bij een stroom van 200mA. Om de zon altijd volop op het zonnepaneel te laten schijnen, heb ik een schakeling gemaakt waardoor het zonnepaneel de zonnestand volgt. De schakeling die ik heb gemaakt heb ik eveneens in elektuur gevonden.
Automatisch richten zonnepaneel
In deze schakeling vergelijkt de comperator de ingangspanning met een referentiespanning die bekomen wordt door de weerstanden R11 en 12. Wanneer er op de leds meer of minder licht gaat schijnen, gaan deze meer of minder spanning over zich hebben staan. Dit verschil in spanning gaat de comperator detecteren en hij zal dan ook zijn uitgang navenant veranderen. Met de potmeters kan je de gevoeligheid van de leds regelen. De uitgang van de comperators is verbonden met de ingang van de µC. De µC zal navenant zijn ingang een servo sturen die het zonnepaneel dan zal laten draaien of kantelen. Het zonnepaneel staat op het laadstation gemonteerd omdat het te veel weegt om op de robot te staan. Deze schakeling heb ik op een gaatjesprint gemaakt maar nog niet gebruikt omdat de comperators een analoge uitgangsspanning hebben en deze is moeilijk te verwerken met een BS. Ook omdat een zonnepaneel onder een hoek van 30° in de zomer en 60° in de winter moet staan om zo zoveel mogelijk zonlicht op te vangen, en dit lukt niet met deze schakeling. Als ik nog tijd over heb zal ik deze schakeling proberen uit te breiden om aan bovenstaande voorwaarden te kunnen voldoen.
21
Dries Hulens
Grassdresser
6 EE
Laadstation
22
Dries Hulens
Grassdresser
6 EE
Het laadstation Op het laadstation staat het bewegend zonnepaneel gemonteerd, deze is verbonden met de batterijlader en de batterijlader is verbonden met een plaatje met 2 metalen strips. Op deze metalen strips kan de robot vastklikken, door middel van magneten, om zo op te laden. Op onderstaande foto is het principe te zien.
Op de metale strips zijn magneten bevestigd. Op de ene strip met de noordpool naar boven, op de andere strip met de noordpool naar beneden. Onderaan de robot zelf hagen ook magneetjes. Deze magneten zijn zo verbonden dat de noordpool de 7,2 volt is en de zuidpool de GND. De magneetjes op het bord zijn juist omgekeerd verbonden. De noordpool met de GND en de zuidpool met de 7,2V . Zo zullen de magneetjes van de robot nooit met de verkeerde strip koppelen. En zo is dus verkeerd opladen uitgesloten.
23
Dries Hulens
Grassdresser
6 EE
Foto laadstation.
24
Dries Hulens
Grassdresser
6 EE
Infraroodzender Laadstation Om de robot zijn laadstation te laten vinden wanneer zijn batterij bijna leeg is, staat er op het laadstation ook een infraroodled. Deze IF-led werkt op een frequentie van 32KHz om zo geen effect te hebben op de IF-leds van de afbakening, die op 38KHz werken. Het opwekken van de 32Khz gebeurt volgens hetzelfde principe als bij de leds voor de afbakening. Een 555 timer zal deze frequentie opwekken en sturen naar een transistor die de led zal schakelen.
Ook deze led wordt gefocust met een lens zodat de robot precies weet waar zijn laadstation staat. Om deze infraroodstraal te detecteren staat er nog een andere IF-ontvanger op de robot, een TSOP1732. Deze ontvangt alleen IF-stralen met een frequentie van 32KHz. Deze werkt helemaal hetzelfde als de TSOP1738 die ik gebruik om het einde van het grasperk te detecteren. De µC zal bij het ontvangen van een signaal van de TSOP1732 de servos zo sturen dat de robot in een recht lijn naar het laadstation rijdt.
25
Dries Hulens
Grassdresser
6 EE
Aandrijving
26
Dries Hulens
Grassdresser
6 EE
Servomotoren De aandrijving van de wielen gebeurt door servomotoren. Dit zijn motoren die door middel van een tandwielkast vertraagd draaien. Een servo stuur je aan met een pulserende spanning van 5 volt. In de servo zit een circuit die deze pulserende spanning omzet naar gelijkspanning voor de motor. Op onderstaand figuur kan je de pulserende spanning zien.
Met een puls van 1,25ms en 20ms pauze draait de servo counterclockwise.
Met een puls van 1,75ms en 20ms pauze draait de servo clockwise.
Met een puls van 1,5ms en 20ms pauze gaat de servo naar zijn middenpositie. MODIFICATIE SERVO Omdat een servo maar 180° kan draaien, omwille van een mechanische en een elektrische stop in de servo, moet deze gemodificeerd worden. Om te beginnen zit er een mechanische stop op het hoofdtandwiel, zoals op de foto hieronder te zien is. Deze kan je gemakkelijk verwijderen met een kniptang of een mesje. Let op: er moet zo veel mogelijk vet aan de tandwieltjes blijven.
Voor
Na
27
Dries Hulens
Grassdresser
6 EE
De 2de stop in de servo is een potmeter waarmee de servo zijn eigen positie controleert. Omdat de servo nu gaat blijven draaien is deze potmeter niet meer nodig. Wanneer je de potmeter verwijdert moet je een spanningsdeler van 2 gelijke weerstanden in de plaats solderen of een meerslagenpotentionmeter. Nu zal de servo denken dat hij in zijn middenpositie is en zal hij constant blijven draaien wanneer de juiste puls wordt gegeven. Op onderstaande foto is de potmeter te zien.
Potmeter
Voor
Meerslagen potmeter
Na
28
Dries Hulens
Grassdresser
6 EE
DE SERVO INTERN Het elektronisch gedeelte van een servo bevat 2 grote onderdelen. 1. Ten eerste hebben we het controle circuit. Dit circuit gaat de pulserende spanning, die aan de ingang wordt aangeboden, vergelijken met een pulserende spanning die wordt opgewekt door een pulsgenerator. Als het inkomende en het opgewekt signaal aan elkaar gelijk zijn zal de comperator het opgewekte signaal doorsturen naar de puls stretcher. De puls stretcher gaat dit signaal omzetten naar 2 aparte signalen, links en rechts.
29
Dries Hulens
Grassdresser
6 EE
H-BRUG 2. Het tweede grote onderdeel in de servo is de H-brug. Dit is een schakeling van 4 mosfets waarmee de motor wordt bestuurd. De 2 inkomende signalen (L en R) gaan telkens 2 onder elkaar liggende mosfets sturen waardoor de motor links en rechts gaat draaien. Men maakt gebruik van N-chanel en P-chanel mosfets. Wanneer men bv het linkse signaal gaat sturen gaat de linkse P-chanel mosfet geleiden en de N-chanel mosfet uit geleiding gaan waardoor er een elektrische verbinding ontstaat tussen de motor en de Vcc en tussen de motor en de GND. Men mag nooit links en rechts tegelijkertijd aansturen want dan ontstaat er kortsluiting. Het interne van een H-brug is op onderstaand schema te zien.
1
3
R
L
2
4
Mosfet 1 en 4 zijn in geleiding, motor draait clockwise. Mosfet 2 en 3 zij uit geleiding.
1
3
L
Mosfet in geleiding
R
2
4
Mosfet uit geleiding
Mosfet 2 en 3 zijn in geleiding, motor draait counterclockwise. Mosfet 1 en 4 zijn uit geleiding
30
Dries Hulens
Grassdresser
6 EE
Het mes Om het gras te maaien heb ik zelf een mesje gemaakt. Daarvoor heb ik een aluminium plaatje van 100 op 10mm gezaagd en in het midden een gat van 5mm geboord omdat dit juist rond de as van mijn motor past. Op de uiteinden van het plaatje heb ik vervolgens twee Gillette mesjes geplakt met twee-componenten lijm. Doordat de Gillette mesjes zo scherp zijn kan het mes bij een zeer laag toerental gras maaien. Dit is wel een prototype, dus dik en hoog gras zal hij niet kunnen maaien omdat de motor die ik gebruik te weinig kracht heeft. De motor heb ik gerecupereerd uit een CDROM driver.
De printplaat naast de motor staat een kleine schakelaar die in serie staat met de motor. Wanneer de motor er door één of andere reden zou afvallen, zal hij direct stoppen met draaien. Wanneer de robot zijn laadstation zoekt, mag de motor niet draaien, omwille van batterijbesparing, zal de motor door de µC gestuurd worden. Deze sturing bestaat uit onderstaande schakeling.
Via een I/O pin van de µC wordt de transistor via R gevoed. Wanneer er een logisch 1 word gestuurd gaat de transistor in geleiding en gaat de motor draaien. Berekenen van R: Imotor = 200mA Ic=200mA T=BC547B beta = 250 Ib=Ic/B
Ib=0,2/250=0,0008A
R=5V-0,7V/0,0008A = 5375Ohm
31
Dries Hulens
Grassdresser
6 EE
Basic Stamp
32
Dries Hulens
Grassdresser
6 EE
De Basic Stamp Omdat ik in het begin van het jaar zo vlug mogelijk wou beginnen met programmeren, heb ik gekozen om gebruik te maken van een Basic Stamp. Met deze controller is het gemakkelijk om de beginstappen van het programmeren te leren. Je kunt voor een BS een programmeerbord kopen maar dit kost rond de 50 euro, dus heb ik er zelf één gemaakt. In een boek over de BS stond een schema waaruit ik mijn programmeerbordje heb opgebouwd. Het schema en bordje zijn op onderstaande foto’s te zien.
Met pin 1 op de BS2 wordt data verzonden en met pin 2 wordt data ontvangen, Pin 4 is de ground en pin 3 is de tentoon pin, met deze pin wordt de BS gealarmeerd wanneer hij geprogrammeerd zal worden. De BS2 wordt dus gewoon met een OB9 connector verbonden met de seriële poort van de PC.
Programmeerbordje
33
Dries Hulens
Grassdresser
6 EE
Definitief programmeer en moederbord
Dit is het uiteindelijke moederbordje dat ik heb geëtst. Op de print is rechts de seriële aansluiting te zien. Ik heb ook gewerkt met “kroonsteetjes” om de draden aan te sluiten in plaats van inschuifbare contacten, zo kan ik later nog hardware bij aansluiten op de controller. De weerstanden die je kunt zien zijn pull-down weerstanden voor de Dip switches. De transistor dient om de motor aan te sturen. Als laatste staat er onderaan op de print ook een spanningsstabilisator om de BS2 te voeden met 5 volt. Op de figuur hieronder is de transparant te zien waarmee ik mijn moederbordje heb geëtst. Deze heb ik getekend met ExpressPCB.
34
Dries Hulens
Grassdresser
6 EE
Opbouw Basic Stamp Op onderstaande figuur zijn de componenten van een BS2 te zien. Zo bevat hij een spanningsregulator, de controller, kristal, rs232 communicatie, EEPROM en nog wat passieve componenten.
Zoals elke controller heeft ook de BS een instructielijst, weliswaar gemakkelijker en beperkter dan de meeste controllers. Deze lijst kan je vinden bij het onderdeel INSTRUCTIELIJST BASIC STAMP. Omdat een BS op de werkvloer nooit wordt gebruikt, verkies ik om ook nog met andere µC’s werken zoals PIC en Atmel. Deze controllers hebben een veel grotere instructieset dus je kunt er ook veel moeilijkere bewerkingen in programmeren. Zo kan je bijvoorbeeld met een BS niet meer dan 2 servos samen aansturen, dit is met een atmel of een PIC geen probleem. Later ga ik ook een 2de controller op mijn robot zetten die communiceert met de BS om zo meerdere sensoren kunnen aan te sluiten. Momenteel ben ik via internet wat aan het leren over I²C, dit is de communicatie tussen µC’s. Als dit gelukt is, ga ik nog een overgang maken van USB naar serieel omdat de nieuwere laptops geen seriële aansluiting meer hebben. Om deze overgang te maken zijn kant en klare IC op de markt die de software en USB drivers al bevatten.
35
Dries Hulens
Grassdresser
6 EE
Instructielijst Basic Stamp Basic StampII instruction set • BRANCH 2
BRANCH Offset, [Address1, Address2, ...AddressN]
• BUTTON
BUTTON Pin, DownState, Delay, Rate, Workspace, TargetState, Address
• COUNT
COUNT Pin, Duration, Variable
• DATA
{Symbol } DATA DataItem {, DataItem, ...}
• DEBUG
DEBUG OutputData {, OutputData }
• DEBUGIN 2.5
DEBUGIN InputData
• DO...LOOP 2.5
DO {WHILE | UNTIL Condition(s) } ... LOOP {UNTIL | WHILE Condition(s) }
• DTMFOUT
DTMFOUT Pin, {OnTime, OffTime, } [Tone {, Tone, ...}]
• END
END
• EXIT 2.5
EXIT
• FOR...NEXT
FOR Counter = StartValue TO EndValue {STEP StepValue} ... NEXT
• FREQOUT
FREQOUT Pin, Duration, Freq1 {, Freq2 }
• GOSUB
GOSUB Address
• GOTO
GOTO Address
• HIGH
HIGH Pin
• IF...THEN
IF Condition THEN Address
• IF...THEN...ELS E 2.5, † • INPUT
INPUT Pin
• LOOKDOWN 2
LOOKDOWN Target, {ComparisonOp } [Value0, Value1, ...ValueN], Variable
• LOOKUP 2
LOOKUP Index, [Value0, Value1, ...ValueN], Variable 36
Dries Hulens
Grassdresser
• LOW
LOW Pin
• NAP
NAP Duration
• ON...GOSUB 2.5
ON Offset GOSUB Address1, Address2, ...AddressN
• ON...GOTO 2.5
ON Offset GOTO Address1, Address2, ...AddressN
• OUTPUT
OUTPUT Pin
• PAUSE
PAUSE Duration
• PULSIN
PULSIN Pin, State, Variable
• PULSOUT
PULSOUT Pin, Duration
• PWM
PWM Pin, Duty, Duration
• RANDOM
RANDOM Variable
• RCTIME
RCTIME Pin, State, Variable
• READ
READ Location, {Word 2.5} Variable {, ...} 2.5
• RETURN
RETURN
• REVERSE
REVERSE Pin
6 EE
• SELECT...CASE 2.5, †
• SERIN 2
SERIN Rpin {\Fpin}, Baudmode, {Plabel,} {Timeout, Tlabel, } [InputData]
• SEROUT 2
SEROUT Tpin {\Fpin}, Baudmode, {Pace,} {Timeout, Tlabel,} [OutputData]
• SHIFTIN
SHIFTIN Dpin, Cpin, Mode, [Variable{\Bits} {, Variable{\Bits}...}]
• SHIFTOUT
SHIFTOUT Dpin, Cpin, Mode, [OutputData{\Bits} {, OutputData{\Bits}...}]
• SLEEP
SLEEP Duration
• STOP
STOP 37
Dries Hulens
Grassdresser
• TOGGLE
TOGGLE Pin
• WRITE
WRITE Location, {Word 2.5} Variable {, ...} 2.5
• XOUT
XOUT Mpin, Zpin, [House\Command {\Cycles} {, House\Command {\Cycles}...}]
6 EE
38
Dries Hulens
Grassdresser
6 EE
Blokschema robot
39
Dries Hulens
Grassdresser
6 EE
40
Dries Hulens
Grassdresser
6 EE
Blokschema laadstation
41
Dries Hulens
Grassdresser
6 EE
42
Dries Hulens
Grassdresser
6 EE
Besluit Ik vond het een leuke ervaring om de grassdresser te bouwen. Doordat ik zo zelfstandig mogelijk heb proberen te werken heb ik heel veel bijgeleerd. Niet alleen over het elektronische in componenten maar ook over de omstandigheden waarin deze werken. Ik vind het spijtig dat ik met de basic stamp heb gewerkt en niet met een moeilijkere controller. Volgend schooljaar ga ik verder studeren in het de Nayerinstituut in Mechelen en daar zal ik mijn robot nog verder uitbouwen.
43