Zelfbouw robots en elektronica

zelfbouw robotAls kind had ik elektronica als hobby, ik haalde alles wat ik kon krijgen uit elkaar en verzamelde de onderdelen. Na het bouwen van de eerste buizenversterker en een paar aardige opdonders van schokken ontdekte ik de digitale techniek. Ik bouwde mijn eigen meetapparatuur, voeding en mengpaneel en ik soldeerde wat af in mijn hoekje van de schuur. Later heb ik nog MTS elektro gedaan voor ik de muziek inging en daarna de ICT. Mijn eerste ICT baan was als embedded programmeur, ik schreef kassa software en software voor machinesturingen. Alles in PLZ en Z80 assembler waarbij we stappenmotoren, kleppen en zelfs naalden van printerkoppen aanstuurden. Het leukste project was een enorme verfkeuken robot waarvoor ik op een 8 bits Z80 een 32bit rekenmodule schreef. Mijn tweede baan was weer embedded programmeur maar nu naast assembler ook in de taal 'c'. Ook hielp ik mee met het ontwikkelen van de hardware en ook hier was het aansturen van relais, lcd displays, analog frontend chips en signaal analyse. We waren koploper in het ontwikkelen van datacommunicatie modems en de laatste jaren voor dit bedrijf zelfs GSM hardware en protocol stacks. Rond 2000 had ik mijn laatste embedded klus in het weer operationeel maken van een skipas systeem, inclusief op afstand uitleesbare passen en toegangspoortjes. Weer assembler en pascal in dit geval en ook weer uitlezen van poortjes, RF signalen analyseren, relais aansturen e.d. Ik vond dit een hele leuke tak van werk waarbij ik mijn kennis van elektronica kon combineren met mijn kennis van programmeren. Op deze pagina wil ik een soort naslagwerk maken en leuke tips en ideeën delen. De stap naar het zelf maken van een robot heb ik in die tijd al eens ingezet maar in die tijd waren onderdelen zoals stappenmotoren en de aansturing daarvan nog redelijk onbetaalbaar. Het idee voor een zelfbouw robot was er wel maar de middelen nog niet. Tegenwoordig is er een enorm aanbod van goedkope CPU borden, IO kaartjes en zelfs servo's en stappenmotoren zijn zeer betaalbaar geworden dus het ontwikkelen van een zelfbouw robot is nu zeer betaalbaar. Er zijn momenteel zelf complete kleine bouwpakketjes van kleine zelfstandige robotjes en robotica is ineens een hobby geworden. Ook ik ben me weer bezig gaan houden met robotica en op deze pagina probeer ik mijn kennis en ervaringen te delen. Vriendelijke groet, Hein Pragt.

Mijn eigen robot projecten

Ik heb zelf enkel kleine en wat grotere robot ontwikkeld maar ook een aantal opensource robots gebouwd (met vaak wat aanpassingen en verbeteringen) en soms werd het helaas een compleet fiasco. Zo heb ik een paar jaar geleden vele uren gestoken in een humanoide robot, alle onderdelen ontworpen en met de 3D printer gemaakt, uitindelijk alles in elkaar gezet om er achter te komen dat de balans totaal verkeerd was en de servo's niet sterk genoeg waren om het totale gewicht van de robot (inclusief accupack) stabiel overeind te houden. Uiteindelijk heb ik de robot weer uit elkaar gehaald en de onderdelen weer in de bewaardozen gestopt, maar desondanks heb ik veel geleerd van de fouten die ik gemaakt heb dit project. En dat is tevens de positieve boodschap, als een robot project niet lukt, dan is het in ieder geval leerzaam geweest. Hier staat een overzicht van een aantal robot projecten die wel gelukt zijn.

Zelf een beetlebot bouwen

Zelfbouw robot Caty

Zelfbouw lijvolger Lijntje

Zelfbouw robot Zowi

Sensoren voor robots

sensoren zelfbouw robotEen robot heeft sensoren nodig vergelijkbaar met de zintuigen van een mens om te kunnen reageren op zijn omgeving. De sensoren zorgen voor input aan de computer module van de robot zodat deze bijvoorbeeld een object kan ontwijken. Vergelijkbaar met de mens die meerdere zintuigen heeft, kan ook een robot meerdere soorten en aantallen sensoren hebben om goed te kunnen reageren op zijn omgeving. Aangezien sommige zintuigen zoals onze ogen wel erg complex zijn en de verwerking van de signalen van een camera ook veel rekenkracht vergt zullen we vaak uitwijken naar eenvoudigere sensoren waarbij we soms beter kunnen kijken naar eenvoudige organismen. Sensoren zijn momenteel vrij goedkoop en redelijk verkrijgbaar, vaak al compleet met interface gemonteerd op een klein board.

Ultrasoon sensor HC-SR04

Ultrasoon sensor HC-SR04 Een robot moet zijn omgeving kunnen waarnemen om er op te kunnen reageren. Een eenvoudige methode is afstand meting door middel van ultrasone geluidsgolven, deze techniek is zeer goedkoop geworden door toepassingen in de auto (parkeerhulp) en in digitale afstandsmeters. De SR-04 is een populaire ultrasone zender / ontvanger met interface chip die maar een paar euro kost, ik heb ze zelfs al voor 1 euro 5 gekocht. De module heeft maar vier aansluitingen en is zeer eenvoudig te programmeren, het enige wat er voor nodig is dat is een nauwkeurige timer in microseconden. De module zend ultrasone geluidsgolven uit van 40 Khz wat ver boven het menselijke gehoor ligt. De werking van ultrasone afstandsmeting berust op het uitsturen van een ultrasoon geluidssignaal en het opvangen van het gereflecteerde (echo) signaal. De tijd tussen versturen en ontvangen is afhankelijk van de afgelegde weg van het geluidssignaal en aangezien geluid een redelijk nauwkeurige snelheid heeft, kunnen we hieruit de afstand berekenen. De afstand is dus gelijk is aan de snelheid van het geluidssignaal vermenigvuldigt met echo tijd / 2 (heen en terugweg). De snelheid van het geluid in lucht bedraagt gemiddeld 340 meter per seconden en deze tijd moeten we delen door twee want tussen zenden en ontvangen legt het geluid twee maal dezelfde afstand af, van zender naar object en weerkaatst van object naar ontvanger. Uiteraard er van uitgaande dat zender en ontvanger zich op eenzelfde plaats bevinden. 1 sec is dus 780 meter (340 x 2), 100 Ms is dus 34 meter, 10 Ms is dus 3,4 meter, 1 Ms is dus 30 cm. U ziet dat voor kleinere afstanden een nauwkeurige timer met een hoge resolutie nodig is.

Ultrasoon sensor HC-SR04
De HC-SR04 heeft een trigger signaal van 10us (microseconden) nodig (op TTL niveau) op de trigger pin als startsignaal waarna er een burst van 8 pulsen van 40KHz zal worden uitgestuurd. Daarna begint de module te luisteren naar de ontvangen echo van deze pulstrein en de echo uitgang blijft hoog tot de echo is ontvangen. Aangezien niet elke module weer na een timeout omlaag gaat is het veiliger om ook in de software hier een timeout op te zetten met als resultaat een oneindige afstand.

 /*   
  Eenvoudige code voor ultrasone afstandsmeting met HC-SR04 module  voor de Raspberry Pi
  © Hein Pragt 2015
 */  

   // Set up gpi pointer for direct register access
   setup_io();

   INP_GPIO(ECHO); // must use INP_GPIO before we can use OUT_GPIO
   OUT_GPIO(TRIG);

   printf("Waiting For Sensor To Settle\n");
   GPIO_CLR = (1 << TRIG);
   usleep(20 * 1000);
   GPIO_SET = (1 << TRIG);
   usleep(10 * 1000);
   GPIO_CLR  = (1 << TRIG);

   gettimeofday(&gettime_now, NULL);
   save_time = 0;
   while(GPIO_READ(ECHO) == 0 && save_time++ < 10000); 
     gettimeofday(&gettime_now, NULL);
   start_time = gettime_now.tv_nsec;             //Get nS value
   save_time = 0;
   while(GPIO_READ(ECHO) != 0 && save_time++ < 2000000);
   gettimeofday(&gettime_now, NULL);
   end_time = gettime_now.tv_nsec;             //Get nS value
   time_diff  = end_time - start_time;
   distance = (time_diff * 17150) / 1000000;
   printf("Distance (C:%d S:%d E:%d) = %d cm\n", save_time,start_time,  end_time,distance);

Ultrasoon sensor HC-SR04 Dit werkt in mijn project prima, wel is het oppassen dat bij gebruik van meerdere sensoren u voldoende tijd neemt tussen twee metingen zodat de sensor niet de echo van een andere (vorige) meting opvangt. Hier ben ik ooit eens ingestonken, waardoor ik zeer vreemde afstandmetingen kreeg. Ook is de spreiding van het signaal niet recht maar waaiervormig waardoor de echo op langere afstand niet van recht achter de module kan komen, hier moet u ook rekening mee houden. Hoe dichterbij hoe minder het waaier effect is en hoe meer u kunt aannemen dat het echo object ook recht achter de sensor staat.

5 volt naar 3v3 omzetten Aangezien deze module op 5 Volt werkt is ook het uitgansignaal van de echo pin 5 Volt. Dit kunnen we niet zomaar aansluiten op een 3v3 ingang van bijvoorbeeld een Raspberry Pi omdat we deze dan opblazen. Hiervoor hebben we dus een 5 naar 3v3 omzetter nodig en wie een beetje electro kennis heeft, weet dit met twee weerstanden gemaakt kan worden. De volgende schakeling geeft aan hoe dit werkt, voor de weerstanden kan ook 3k3 en 4k7 gebruikt worden, het gaat om de verhouding tussen beide weerstanden. Het knooppunt van beide weerstanden kunt u rechtstreeks op de GPIO ingang van de Raspberry Pi aansluiten.

Cyn70 infraroodsensor

cyn70 infrarood sensor wiel encoder Om de draaisnelheid en de afstand die wielen afleggen te kunnen meten heeft u een vorm van terugkoppeling nodig. Hiervoor zijn zeer dure motoren met ingebouwde encoders te koop maar deze zijn voor de hobbyist niet echt betaalbaar te noemen. Een goede goedkope oplossing is een infrarood zender/ontvanger om een zwart en wit patroon op een schijf naast of op het wiel te lezen. Bij een overgang van wit naar zwart zal het signaal naar hoog gaan en bij de overgang van zwart naar wit naar laag. Eigenlijk zijn het een hogere spanning en een lagere spanning, maar deze vallen bij de meeste processoren net binnen de 0 en 1 marge. Bij de meeste processoren kunnen ze dus rechtstreeks op de pennen van de processor aangesloten worden. Na wat onderzoek kwam ik uit op de CYN70 die tussen de 80 eurocent en de 2 euro per stuk kost. Samen met twee weerstanden heeft u voor weinig geld een complete betrouwbare sensor. Het geheel is een klein blokje met vier aansluitpennen waarin een infrarood led en een fototransistor zitten. Wanneer de reflectie van het licht van de infrarood diode op de fototransitoir valt, zal deze gaan geleiden en zo de spanning naar de ground trekken. Hier staat de datasheet van de cyn70! Voor het strepenpatroon heb ik het hier meegeleverd voorbeeld geprint en daarna met het lamineerapparaat van een plastic coating voorzien. Na het aftekenen en precies uitknippen kon ik het aan de binnenkant van het wiel plakken. De sensor moet wel redelijk dicht op het wiel gemonteerd worden, de datasheet geeft een paar millimeter aan, ik heb zelf de ervaring dat een half centimeter ook nog prima werkt. Maar hoe dichterbij hoe nauwkeuriger de meting is, zeker bij hogere snelheden van het wiel.

Na het aansluiten op bijvoorbeeld een Arduino kreeg ik nette pulsjes binnen, het signaal was helaas niet geschikt om een interrupt ingang aan te sturen, ik denk dat de flanken en de niveaus hiervoor niet goed genoeg zijn. Wanneer u dit wilt kunt u beter een kant en klaar board kopen waar ook een zogenaamde comperator of Schmitt trigger schakeling zit om het signaal mooi op te poetsen. Het signaal kan op een analoge ingang worden aangesloten maar ook digitaal werkt prima omdat de niveaus wel mooi in de nul en één gebieden vallen. Voor het uitlezen van de twee sensoren (elk wiel één) heb ik zelf op de Arduino een timer interrupt routine gemaakt de telkens de niveaus van de inputs vergelijkt met de vorige waarde en bij verschil een teller (voor deze sensor) ophoogt. Hiermee kan de afgelegde afstand per wiel gemeten worden en kunnen we de motoren gelijk laten lopen door ze sneller of langzamer te laten draaien.

wiel encoder schijf Dit is een wiel encoder schijf om af te drukken, sla de afbeelding op (dan is deze groter) en druk hem daarna af. Voor het beste resultaat is het handig om daarna de afdruk te lamineren of met doorzichtig plakplastic te bewerken.

Rotary encoder

rotary encoder motor Bij duurdere robots worden vaak motoren voor de aandrijving gebruik die voorzien zijn van een zogenaamde rotary encoder. Deze rotary encoder is aangesloten op de as van de motor of de as van het wiel en zal bij het draaien pulsen afgeven waarmee de mate van rotatie (vermenigvuldigd met de omtrek van het wiel) en dus de afstand die het wiel afgelegd heeft te berekenen is. Hiermee kunt u dus de afstand die de robot moet afleggen bepalen maar ook kunt u hiermee zorgen dat beide wielen gelijklopen en dezelfde afstand afleggen waardoor de robot recht vooruit kan rijden. Een groot probleem met dc motoren is dat ze vaak niet exact gelijk lopen bij dezelfde spanning. De oplossing is een terugkoppeling door middel van rotary encoders. Deze encoders kunnen op verschillende techniek gebaseerd zijn. De eerste methode werkt op basis van een schijfje met daarin kleine sleufjes die draait tussen een infrarood zender en ontvanger. Telkens wanneer een sleufje de lichtsluis passeert zal er een pulsje afgegeven worden en door deze pulsen te tellen kan de afgelegde afstand berekend worden. Deze modules zijn een paar euro per stuk en zijn al kant-en-klaar gemonteerd op een klein board te koop. Ze hebben 5 volt spanningslijnen en een trigger uitgang voor de microprocessor. Het probleem hierbij is het schijfje met sleuven dat meestal niet meegeleverd zal worden, er zijn echter complete setjes inclusief schijfje te koop. Deze constructie geeft echter alleen maar aan dat de as in beweging is, maar geeft geen richting aan. Een beter alternatief is een rotary encoder gebruiken die momenteel als vervanging van de potmeter gebruikt wordt.

rotary encoder pulsen Deze digitale potmeters hebben een zachte klik en ze zijn continue door te draaien. Ook deze encoders kosten een paar euro en hebben twee uitgangen en een ground pin. Via deze twee uitgangen kunt u een digitaal patroon lezen wat aangeeft of de knop links of rechtsom gedraaid wordt. Deze encoder geeft 48 stappen per volledige rotatie aan, met een omtrek van het wiel van 20 cm is dit dus 20 / 48 = 0,4 cm verplaatsing per click. Dit is voldoende om bij te sturen en afgelegde afstand te bepalen. De encoder gebruikt pin A en B als uitgangen, de A- en B-uitgangen gaan naar de GPIO ingangen op de Raspberry Pi waarbij de interne pull-up weerstanden aan moeten staan zodat deze hoog zijn wanneer de contacten zijn open en laag bij gesloten contacten. De ingangen genereren reeks pulsen zoals in het diagram weergegeven is. Omdat de uitgangen vier gecombineerde toestanden hebben staat deze encoder bekend als kwadratuur encoder. De volgorde van de pulsen bepalen de richting van de roatatie.

Voorbeeld code

int encoderPin1 = 2;
int encoderPin2 = 3;

volatile int lastEncoded = 0;
volatile long encoderValue = 0;

long lastencoderValue = 0;
int lastMSB = 0;
int lastLSB = 0;

void setup() {
  Serial.begin (9600);
  pinMode(encoderPin1, INPUT); 
  pinMode(encoderPin2, INPUT);
  digitalWrite(encoderPin1, HIGH); //turn pullup resistor on
  digitalWrite(encoderPin2, HIGH); //turn pullup resistor on
  //call updateEncoder() when any high/low changed seen
  //on interrupt 0 (pin 2), or interrupt 1 (pin 3) 
  attachInterrupt(0, updateEncoder, CHANGE); 
  attachInterrupt(1, updateEncoder, CHANGE);
}

void loop(){ 
  //Do stuff here
  Serial.println(encoderValue);
  delay(1000); // Some delay
}


void updateEncoder(){
  int MSB = digitalRead(encoderPin1); 
  int LSB = digitalRead(encoderPin2);
  
	//converting the 2 pin value to single number
  int encoded = (MSB << 1) |LSB; 
	//adding it to the previous encoded value
  int sum  = (lastEncoded << 2) | encoded; 
  if (sum == 0b1101 || sum == 0b0100 
	    || sum == 0b0010 || sum == 0b1011) encoderValue ++;
  if (sum == 0b1110 || sum == 0b0111 
	    || sum == 0b0001 || sum == 0b1000) encoderValue --;

  lastEncoded = encoded;
}

Hier staat een datasheet van een rotary encoder met afmetingen en beschrijving van de uitgansignalen.

Drukschakelaar

Drukschakelaar met Pull-up of Pull-down weerstand Een heel eenvoudige “sensor” voor een robot is een heel gewone drukschakelaar. De schakelaar kan zijn uitgevoerd met maak-, verbreek- of wisselcontact wat aangeduid word NO (normally open) of NC (normally closed). Wanneer we een schakelaar aansluiten op een Arduino ingang gebruiken we meestal een Pull-up of een Pull-down weerstand. Ik gebruik zelf meestal Pull-up weerstand waarbij de ingang in rust dus 1 is en bij het maken van het contact naar 0 zal gaan. Bij een Pull-down is de rust dus 0 en bij het maken van het contact dus 1. We gebruiken de weerstand om te zorgen dat de ingang een goed stabiel gedefineeerde stand heeft wanneer het contact niet gesloten is. Wanneer we de weerstand niet zouden gebruiken zou de ingang bij een niet gesloten contact “zwevend” zijn en dit kan dus verkeerde uitlees resultaten geven. Deze schakeling zal dus altijd een keiharde 0 of 1 geven op een ingang van de Arduino.

Reed-contact / schakelaar

Reed-contact / schakelaar Een reed-contact of magneetschakelaar bestaat uit twee schakelcontacten in een glazen buisje die gesloten kunnen worden door een magnetisch veld dat bijvoorbeeld afkomstig is van een permanente magneet. Het glazen buisje is gevuld met een edelgas zodat de elektrische stroom de schakelcontacten niet zal aantasten, ze hebben dus een behoorlijk lange levensduur. De meeste reed-contacten kunnen een maximale schakelfrequentie tot wel 300 Hz aan maar meestal zal dit niet van toepassing zijn. De schakelaar kan zijn uitgevoerd met maak-, verbreek- of wisselcontact wat aangeduid word NO (normally open) of NC (normally closed). Omdat de contacten in een glazen buisje zitten kunnen ze niet oxideren of vuil worden en kunnen ze daardoor gebruikt worden in stoffige of brandgevaarlijke omgevingen. Deze contacten worden veel gebruikt in bij modeltreinen waarbij ze tussen de rails gemonteerd worden en er een magneetje onder een locomotief of wagon geplaatst is. Maar ook zijn de sensoren van fietscomputers vaak reed-contacten met magneetjes in de spaken. Ook in alarmsystemen komen ze veel voor om bijvoorbeeld deuren en ramen te bewaken. In robots kunnen deze contacten ook gebruikt worden voor het detecteren van een magneet of sterk magnetisch veld. Een praktijk toepassing is een robot poes die onder de snuit een reed-contact heeft. In een speelgoed visje hebben we een magneet gezet en nu zal de robot poes herkennen dat er een visje onder zijn snuit gehouden wordt en eet en smakgeluiden gaan maken. Het aansluiten van een reed-contact werkt precies hetzelfde als een “normale” drukschakelaar.

Hevelschakelaars

hevel schakelaar Een goedkope basissensor is de hevelschakelaar, dit is een mechanische schakelaar met een uitstekende metalen lip die de schakelaar bediend. Deze schakelaars worden vaak ingezet om te zien of deuren of deksels van elektrische apparaten gesloten of open zijn. Ook worden ze gebruikt als eindstop detectie, maar ook in robots kunnen deze schakelaars zeer efficiënt zijn. In de meeste gevallen (wanneer de ingang van de processor al een pullup heeft) kan de schakelaar zo aangesloten worden op een input pin van de processor en aan de andere kan aan de ground. Wanneer de schakelaar open is zal de ingang dan logisch 1 zijn en wanneer de schakelaar gesloten is zal de ingang naar ground getrokken worden waardoor de ingang een logische 0 zal lezen. Wanneer de ingang geen pullup heeft kunnen we zelf de pin die naar de input gaat door middel van bijvoorbeeld een 10k weerstand aan de plus hangen. De hevel kan ook kunstmatig verlengd worden zodat er een voelspriet ontstaat waarmee de robot een wand of ander object kan detecteren. Dit gebruiken we bijvoorbeeld in de puur mechanische “beetlebot”. (BeetleBot) Hevelschakelaars zijn in veel maten te koop en de meeste hevelschakelaars zijn omschakelaars met een maak en verbreek contact in één behuizing. U kunt dus eenvoudig kiezen of de schakelaar in rust een logisch 1 of een logisch 0 af moet geven.

3v3 naar 5V convertor I2C

5 volt naar 3v3 omzet module Een van de problemen waar u tegenaan kunt lopen bij het aanschaffen van standaard modules in combinatie met de Raspberry Pi, is dat veel van deze modules voor de Arduino gemaakt zijn en dus alleen op 5 Volt werken. Nu is het mogelijk een 5 Volt I2C module aan te sluiten op een 3v3 I2C input / output wanneer er maar een aantal pullup weerstanden in de lijnen zitten. Dit komt omdat I2C de lijn naar 0 trekt. Maar ik heb gemerkt dat dit niet zo goed werkt wanneer er meerdere I2C modules op dezelfde lijnen aangesloten zijn. Het is daarom toch verstandiger om de I2C lijn in twee delen te verdelen, één deel van 3V3 modules, een 3V3 naar 5V convertor en daarna de 5 V modules. Deze 3V3 naar 5V convertor module kost vaak nog geen twee euro en daarvoor kunt u hem zelf niet maken. Rechts ziet u hoe u deze convertor in de I2C lijn kunt opnemen. Zeker in een Robot waar door motoren e.d. de voedingsspanning niet altijd stabiel is kunt u beter niet gokken op voedingsspanning problemen.

16 pins I/O via MCP23017 IC

I2C 16 pin I/O MCP23017 Wanneer u iets van een robot aan wilt sturen via een Raspberry Pi of Arduino komt u toch al snel I/O pinnen te kort. Er bestaat een eenvoudige wijze om via de I2C interface 16 programmeerbare I/O pinnen toe te voegen aan het Arduino of Raspberry Pi board door middel van een MCP23017 expander IC. Met dit IC krijgt u een 16 poorts In Out boardje erbij voor een paar euro. Het IC heeft amper externe componenten nodig en de 2 keer 8 output lijnen liggen netjes op een rij aan beide kanten van het IC. Deze schakeling is zeer snel op een klein stukje experimenteerboard op te bouwen. U kunt aan de ene kant de I2C pinnen en de voedinspanning pinnen plaatsen en aan weerszijde van het IC de headers voor de I/O lijnen. Het geheel werkt wel op 5 volt maar de I2C lijnen zijn zonder aanpassing aan de I2C lijnen van de Raspberry Pi aan te sluiten omdat I2C de lijnen naar 0 trekt. Wilt u toch zeker zijn kunt u de I2C lijnen met 10K pullups aan de 3v3 hangen, of een 3v3 naar 5 Volt boardje ertussen zetten. De datasheet van de MCP23017 kunt u hier vinden, in twee registers zet u de pinnen in In of Out mode en via twee andere registers leest u de inputs uit en via twee andere registers zet u de status van de output pinnen. Het is zeer eenvoudige aan te sturen en zeer universeel bruikbaar. Dit IC is tegenwoordig ook als standaard module voor een paar euro te koop, toch heb ik meestal wel een paar losse ic's op voorraad.

Technische Universiteit Eindhoven

De volgende site is een geweldige bron van informatie over robots, Tech United Eindhoven behoren tot de wereldtop op het gebied van het robotvoetbal. Maar ook worden hier andere robots ontwikkeld en op deze site kunt u veel informatie vinden over deze robots en de techniek achter deze robots. De TURTLE is de naam van de voetbalrobot en het staat voor Tech United RoboCup Team Limited Edition. Deze robots zijn wereldkampioen in de Middle Size League, een league waarbij teams van 5 robots van maximaal 52x52x80 cm groot  autonoom een potje voetbal spelen. De afgelopen 7 jaar hebben ze de finale van het WK bereikt en deze in 2012 en 2014 zelfs gewonnen! Daarnaast zijn ze ook al meerdere malen Europees kampioen geworden. De AMIGO is de zorgrobot van Tech United en AMIGO staat voor Autonomous Mate for IntelliGent Operations. Hij is anderhalve meter hoog en heeft twee armen en beweegt zich voort op een platform met wieltjes. Met zijn armen kan hij veel menselijke taken uitvoeren, zoals iets uit de keuken halen. Om zich goed te oriënteren in de huiselijke omgeving kijkt Amigo met de kinect van de Xbox, hiermee kan hij 3D zien. Robots als Amigo moeten ouderen in staat stellen om langer zelfstandig te blijven wonen. De TUlip is de humanoid robot van Tech United, deze robot doet mee aan de RoboCup Soccer League, net als de TURTLEs. TUlip is een humanoid robot en kan dus op twee benen kan lopen. Als metr al een site die ik u zeker aan kan raden, kijk op: http://www.techunited.nl/nl/home

Oorsprong van de robot

De oorsprong van de moderne robots liggen al redelijk ver terug in de tijd, het eerst werd van een robot gesproken rond 1933 door de Tsjechische schrijver Karel Capek. Hij gebruikte het in een titel voor zijn toneelstuk R.U.R. (Rossum’s Universele Robots). Het woord robot was afgeleid van het Tsjechische woord robota wat staat voor “werk / verplichte arbeid”. Het ontstaan van de robot is niet duidelijk aan te wijzen, al vanaf de 4de eeuw voor Christus werden er al machines uitgevonden maar deze waren meestal voor amusement bedoeld. In het begin werden deze toestellen aangedreven door stromend water, stoom of springveren, na de uitvinding van de elektriciteit werd dit meestal als energiebron gebruikt. Na de uitvinden van de elektriciteit werden robots al snel gebruikt als efficiënte en krachtige hulp van de mens. De mogelijkheden en taken van robots bleven toenemen eb tegenwoordig worden ze ook vaak ingezet voor precisiewerk, gevaarlijk werk en werken in mensonvriendelijke omstandigheden. Bekende voorbeelden zijn de lasrobot in de industrie, robots voor het onschadelijk maken van bommen en spuitrobots die met gevaarlijke stoffen werken. Deze robots zijn nu onmisbaar voor veel industrieën bijvoorbeeld de productie van auto’s. Maar ook in ziekenhuizen en huishoudens komen robots steeds vaker voor. In ziekenhuizen worden tegenwoordig robots gebruikt als chirurgisch gereedschap en in huishoudens voeren robots taken uit als grasmaaien en stofzuigen. Ook worden er al robots ontwikkeld om zorgtaken voor zieken, gehandicapten en kinderen over te kunnen nemen en in alle sectoren van onze samenleving zal de rol van robots en hun taken alleen maar toenemen.

Elektromotoren voor robots

elektromotoren zelfbouw robot Wanneer we zelf robots willen ontwerpen en maken hebben we elektromotoren nodig om de robot ook echt te laten bewegen. Er zijn vele tientallen soorten van elektrische motoren maar voor de robotica hobbyist is de keuze eigenlijk beperkt tot de volgende drie: gelijkstroommotoren (DC motoren), stappenmotoren of servo's. Op deze pagina ga ik in op de verschillen en de wijze van toepassing en aansturing. Niet elk type motor is geschikt voor alle toepassingen, de meeste servo's kunnen bijvoorbeeld maar 180 graden draaien waardoor ze niet geschikt zijn om wielen aan te drijven. Servo's zijn wel zeer geschikt om relatief goedkope gewrichten te maken met zeer weinig stroomverbruik. Het is een goed idee om eerste het type motor voor elke taak binnen uw robot te bepalen voor u de bijbehorende hardware gaat ontwerpen. Ook moet u goed nadelen over het vermogen (en meestal dus de grootte) van de motor geschikt is voor de taak die u in gedachten heeft. Dit heeft vaak ook weer zijn weerslag op het stroomverbruik en aangezien de meeste robots op oplaadbare batterijen of accu's werken is het stroomverbruik zeer belangrijk voor de tijd dat de robot kan werken zonder weer eerst opgeladen te moeten worden.

Gelijkstroommotoren DC motoren

gelijkstroom motoren DC motoren Een gelijkstroommotor is een motor waarin elektrische gelijkstroom omgezet wordt in mechanische energie en de beweging ontstaat door de lorentzkracht die een stroomvoerende geleider ondervindt in een magnetisch veld. De werking van elektromotoren berust op een wisselend magnetisch veld. Bij een gelijkstroommotor wordt daarom mechanisch in de motor (of elektronisch bij de zogenaamde borstelloze elektromotor) de richting van het magnetisch veld omgedraaid. Een van de belangrijkste eigenschappen van de gelijkstroommotor is dat de draaisnelheid op een eenvoudige manier geregeld kan worden en daarom is deze motor zeer geschikt voor regelbare elektrische aandrijvingen. De gelijkstroommotor bestaat hoofdzakelijk uit twee delen, het stilstaande buitenste deel noemen we stator, het draaiende binnenste deel noemen we de rotor. De buitenste stator is een cilinder met aan de binnenzijde een even aantal magneetpolen, bij kleine motoren worden hiervoor permanente magneten gebruikt, bij grotere motoren elektromagneten. De rotor (ook wel anker genoemd) is een ijzeren cilinder met sleuven waarin de ankerwikkelingen liggen en de uiteinden van deze wikkelingen zijn verbonden met de lamellen van de commutator. Via (kool) borstels worden deze stroom voorzien. Wanneer er een gelijkstroom loopt door de ankerwikkeling, zal er een magneetveld opgewekt worden waardoor de rotor wordt weggedrukt van de vaste linker magneet en aangetrokken door de vaste rechter magneet. De rotor zal beginnen te draaien en wanneer deze horizontaal is aangekomen zal de beweging stoppen, maar omdat de polen ondertussen omgedraaid zijn zal de rotor weer verder gaan draaien. Dit proces herhaalt zich telkens waardoor de motor permanent zal draaien.

gelijkstroom motoren h brug Een DC motor kunnen we aansturen met een zogenaamde H-Brug, waarmee we de motorsnelheid en de draairichting kunnen aansturen. Een H-brug kan worden opgebouwd met vier power MOSFETS, met deze Hbrug en een controller kan de energietoevoer (en dus de draaisnelheid) maar ook de draairichting van een DC-motor worden bepaald. Worden de MOSFETS a en d bekrachtigd dan draait de motor de ene kant op, worden de MOSFETS b en c bekrachtigd dan keert de draairichting om. Tegenwoordig is een complete H-brug met power MOSFETS als één enkel component te koop, en zijn er voor de meeste microcontrollers wel uitbreidingsbordjes te koop met daarop één of meerdere H-Bruggen voor het aansturen van DC motoren.

Met een standaard H-Brug kunnen we dus een motor links en rechtsom laten draaien en remmen, maar we kunnen er geen snelheid mee regelen. Hiervoor gebruikt men PWM (pulsbreedtemodulatie) nl.wikipedia.org/wiki/Pulsbreedtemodulatie om zo de snelheid van onze gelijkstroommotor te regelen met een iets aangepaste standaard H-Brug. Door middel van de PWM regelaar geven steeds de volle spanning aan de motoren, maar dan in de vorm van snel opeenvolgende pulsen. Bij smalle pulsen en grote tussenliggende pauzes is de snelheid laag en bij brede pulsen hoger. De breedte van de pulsen heeft een ondergrens, doordat de motor een minimum vermogen nodig heeft om in beweging te komen omdat er eerst een zekere wrijving weerstand overwonnen moet worden voordat de motor zal gaan draaien. Vanaf dit punt is de relatie tussen de breedte van de pulsen en de snelheid meestal vrij lineair. Het kiezen van de frequentie is ook een punt, wanneer deze in het hoorbare gebied zal vallen zult u de snelheidregeling echt horen, bij een te hoge frequentie werkt het niet meer omdat elektronica en veel motoren dit niet aankunnen en te een te lagen frequentie zal meer kracht opleveren maar weer voor een schokkerig effect zorgen. Het Laika board wat ik momenteel gebruik heeft een PWM frequentie van 16 kHz.

gelijkstroom motor vertraging Aangezien de meeste elektromotoren een vrij hoog toerental hebben van meestal duizenden omwentelingen per minuut, zijn ze niet geschikt om rechtstreeks een wiel aan te drijven. Hiervoor is een reductor of vertragingsmechanisme nodig tussen de motor en het wiel. Deze worden in het Engels ook wel gear boxes genoemd en deze zijn los te koop. Ook kunt u zelf met enkele tandwielen een overbrenging maken die het hoge toerental (met weinig kracht) omzet in een laag toerental (met meer kracht). Het probleem is vaak het vinden van setjes gelijke tandwielen voor elk wiel. Er bestaan ook elektromotoren met ingebouwde (aangebouwde) vertragingsbak en deze kunt u vinden door te zoeken op gear motor of geared motor. Veel van deze motoren hebben een geïntegreerde motorreductor die in dezelfde behuizing zit als de motor. De geared motoren met metalen assen en tandwielen zijn zeer sterk maar vaak ook duurder dan de geared motoren met kunststof tandwielen. Het nadeel van kunststof tandwielen is dat deze bij zware belasting sneller afbreken of overslaan. Voor een kleine robot zijn deze kunststof geared motoren echter zeer geschikt en het toerental op de aandrijfas ligt vaak ronde 100 toeren per minuut. Duurdere geared motoren zijn vaak in verschillende werkspanning en met verschillende toerentallen op de aandrijfassen te koop. Het toerental in combinatie met de omtrek van het wiel zal de snelheid van de robot bepalen, bij kleinere wielen is mijn ervaring dat 160 a 180 toeren per minuut een goede waarde is bij een wiel van ca. 6 cm diameter. Een lagere waarde van 85 toeren per minuut kan ook wanneer u een groter wiel gebruikt (diameter 16 cm), of een langzaam rijdende robot wilt. Een goede kwaliteit motoren zorgt er voor dat de robot stabiel en vooral goed recht kan rijden, dit is zeker de investering waard. Nog mooier zijn de geared motoren met ingebouwde encoder maar deze zijn duur en zeer slecht verkrijgbaar. Soms zijn ze in een dumpwinkel nog wel betaalbaar, maar dan is het wel zaak dat u exact dezelfde motoren koopt wanneer meerdere motoren wilt gebruiken.

Servo motoren

Servo motoren Een servo is een kleine motor, met een ingebouwd elektronisch regelcircuit, die een uitgaande as heeft die in een bepaalde hoekpositie kan worden gepositioneerd door het versturen van pulsen met een bepaald interval naar de servo. Zolang deze pulstrein aanwezig zijn op de ingang van de servo zal deze de hoekpositie van de as te handhaven. Wanneer de pulsinterval veranderd zal de hoekpositie van de as mee veranderen. Servo's worden in de praktijk veel gebruikt in radiografisch bestuurbare vliegtuigen en radiografisch bestuurbare auto's en natuurlijk in robots. Servo's zijn heel handig in de robotica, ze zijn klein, hebben ingebouwde controle circuits en zijn heel krachtig voor hun grootte. De stroom die de servo trekt is ook afhankelijk van de belasting, een licht beladen servo zal dus niet veel energie verbruiken.

Er bestaan twee typen servo's: analoog en digitaal. Een digitale servo is nauwkeuriger en sneller dan een analoge servo. Analoge servo's zijn vrij eenvoudig (en goedkoop) en kunnen met eenvoudige circuits aangestuurd worden. Door de verhouding tussen puls en pauze langer of korter te maken wordt de stand van de arm geregeld. Een digitale servo bevat een microprocessor, de positie waar een digitale servo naar toe moet, ligt zeer nauwkeurig vast. De digitale servo weet precies in welke stand hij staat, zodat de processor de snelste manier uit kan rekenen, om de hefboom naar een andere stand te laten gaan. Een analoge servo heeft dus een veel grotere afwijking dan een digitale servo. Aangezien we voor een robot vaak meerdere servo's nodig hebben gebruiken we meestal de goedkopere analoge servo's.

Servo pulsem Op de aandrijf polen van de servo staat een vaste spanning en op de stuurdraad staat een gepulste gelijkspanning. De duur (of breedte) van de puls wordt met deze techniek gewijzigd, vandaar de naam PWM, Puls Width Modulation. Bij de servo gebeurt het aansturen met pulsen, die een herhalingstijd hebben van 20 milliseconden, dit komt overeen met een frequentie van 50 Herz. Dit wil zeggen dat de stuurpuls vijftig keer per seconde optreedt. De verhouding tussen aan en uit van de puls noemt men de duty-cycle en de grootte van de duty-cycle zorgt ervoor dat de servo uitwijkt naar links of naar rechts. In de neutrale stand van de servo is de duty-cycle 7,5% (pulsduur van 1,5 milliseconde) en om de servo volledig naar links te laten uitwijken moet de duty-cycle 5% of 1,0 milliseconde zijn en voor volledig naar naar rechts 10% of 2,0 milliseconde. Op het moment dat er geen stuurpuls meer is, blijft de servo in de laatst bereikte stand staan, maar kan dan geen kracht meer leveren. We kunnen zelf via onze microcontroller dit PWM signaal opwekken, maar er zijn ook zeer goedkope IC's die complete PWM controllers bevatten en meestal meerdere servo's tegelijk kunnen aansturen.

Stappenmotor

Stappenmotor Stappenmotoren zijn een speciaal soort elektromotoren waarmee zeer nauwkeurige verplaatsingen eenvoudig te realiseren is. De as van een stappenmotoren kan namelijk door middel van meerdere elektrische aansluitdraden die aan meerdere spoelen in de buiten cilinder zitten en een stator die meerdere kleine polen heeft heel nauwkeurig gedraaid worden. We zien stappenmotoren dan ook gebruikt worden in printers en tegenwoordig ook in de 3D printer. Stappenmotoren kunnen meestal geen groot koppel leveren.

Stappenmotor De rotor van de stappenmotor bestaat uit permanent magnetisch materiaal en de stator is opgebouwd uit twee onder elkaar op de as aangebrachte permanente magneten. De grootte van de staphoek wordt bepaald door het aantal pool paren op de rotor en het aantal polen op de stator. De pooltanden van één statorpool vormen te samen één voorkeursstand van de rotor. Het aantal stappen per omwenteling wordt bepaald door het product van het aantal polen van de rotor en het aantal statorfasen. Omdat de rotor een permanente magneet is, is deze motor zeer compact te bouwen. Er bestaan verschillende soorten stappenmotoren die we kunnen indelen volgens de constructiewijze van de statorwikkelingen. Er zijn drie manieren van wikkelen, namelijk unipolair, bipolair en bifiliair. Bij een unipolaire motor zijn er twee wikkelingen per magnetisch circuit, waarvan één geleider gemeenschappelijk naar buiten wordt gebracht. Bij bipolaire motoren is er per magnetisch circuit slechts één wikkeling voorzien. Bifiliaire wikkelingen maken de stappenmotor universeel op het gebied van statorwikkelingen. Omdat voor ieder magnetisch circuit twee draden parallel zijn gewikkeld, kan men later, bij het ontwerpen van de toepassing, kiezen of men de motor als bipolaire motor of unipolaire motor gaat gebruiken.

Stappenmotor aansturing
De stappenmotor wordt via een drivertrap verbonden met de microcontroller, een goed en goedkoop voorbeeld hiervan is de ULN2003 die als enkel IC te koop is. De stappenmotor is nu via vier digitale uitgangen van de microcontroller aan te sturen door spanning te zetten op bepaalde uitgangen en andere niet kan de stappenmotor telkens één stap verdraaid worden. Een driver boardje met daarop een ULN2003 en wat aansluitpennen kost minder dan twee euro wanneer u even goed zoekt op Internet.

 

Boeken over robots

boek boek bestellen Voertuigen die zich schijnbaar zelfstandig voortbewegen, als door een onzichtbare hand gestuurd, oefenen op veel toeschouwers een grote aantrekkingskracht uit. Deze aantrekkingskracht wordt vaak gevolgd door de wens om zelf ook zo'n voertuig te bouwen, dus een eigen robot te construeren. De zelfbouw van dergelijke robotvoertuigen is echter geen sinecure. Wanneer men niet over de nodige kennis op dit gebied beschikt, zijn mislukkingen gegarandeerd. En het onvermijdelijke gevolg? Frustraties, vaak na onnodig grote investeringen, die in veel gevallen het voortijdige einde van een nieuwe hobby betekenen. Dit boek reikt de roboticus in spé de nodige basiskennis aan van mechanische constructies en elektronische systemen. Bovendien worden eenvoudige, gemakkelijk na te bouwen en goed functionerende systemen beschreven die de fantasie van de lezer zullen prikkelen en een bron van inspiratie zijn voor de eigen creativiteit. In dit boek worden niet alleen bouwbeschrijvingen van complete systemen gegeven, maar wordt ook een groot aantal modulaire componenten beschreven ten behoeve van aandrijving, voortbeweging, voeding en sensoren. De beschreven modules kunnen naar believen in eigen modellen worden ingebouwd waarbij aan de combinatiemogelijkheden geen grenzen zijn gesteld. Zelfbouw van robots is niet zo eenvoudig en ook niet zo goedkoop. Op een populaire manier geeft de schrijver een aantal hoofdelementen die voor de zelfbouwer belangrijk zijn: werkruimte, energie, voortbeweging en sensoren. In de opvattingen van de schrijver die zichzelf als een amateur presenteert, is kennis van mechanica, elektronica en informatica onontbeerlijk. Die punten krijgen dan ook aandacht. Aan het slot worden vier modellen, waaronder de lichtzoeker en de tafelrobot, beknopt behandeld en van kritische kanttekeningen voorzien. De tekst is duidelijk afgestemd op de creatieve zelfbouwer met doorzettingsvermogen. Er worden studieboeken en leveranciers van materialen aanbevolen en er zijn internetadressen.

boek boek bestellen Mobiele robots voor zelfbouw door Gunther May. Robots kunnen zich zelfstandig voortbewegen en lijken soms zelfs eigen beslissingen te nemen. Dit grensvlak tussen technologie en 'echte' intelligentie is bijzonder fascinerend. Het is dan ook niet verwonderlijk dat veel mensen een eigen robot willen - voor het uitvoeren van praktische taken, of alleen maar om mee te experimenteren en te spelen. De ontwikkeling en constructie van een eigen robot is een lange en vaak moeizame weg. U moet zich echter niet laten afschrikken door aanvankelijke mislukkingen, want het geeft veel voldoening om te zien hoe een zelfontworpen robot voor het eerst in actie komt! Dit boek biedt een praktijkgerichte inleiding in de robotbouw. Eerst wordt beschreven hoe een robot wordt gepland en in mechanisch opzicht kan worden gerealiseerd. Daarna wordt de aandacht in het bijzonder gericht op de ontwikkeling van elektronische stuurschakelingen. Hier worden verschillende mogelijkheden beschreven, vari nd van eenvoudige analoge schakelingen tot oplossingen met microcontrollers en CPLD's. De schrijver bespreekt ook op een begrijpelijke manier allerlei sensoren en actuatoren, alsmede communicatiemogelijkheden en technieken om gegevens op te slaan. Hierbij speelt ook de programmering van de robots een belangrijke rol. Het boek bevat gedetailleerde bouwbeschrijvingen voor vier verschillende robots. U kunt deze naar keuze gewoon nabouwen, of ze vervolmaken met uitbreidingen die aan uw eigen creativiteit ontspringen. De schrijver houdt zich in zijn vrije tijd al meer dan tien jaar bezig met het bouwen van robots, en werd daarvoor onder andere bij de 'Jugend forscht'-wedstrijd onderscheiden. Hij studeerde informatica/systeemtechniek en is wetenschappelijk medewerker aan het Institut f r Nachrichtentechnik van de Technische Universiteit Braunschweig.

boek boek bestellen Formula Flowcode Robot is een combinatie van analoge en digitale elektronica. De robot zit boordevol sensoren en actuatoren, en is grafisch programmeerbaar met Flowcode-software. Hierdoor vormt het een leuk en motiverend platform om kennis te maken met moderne elektronica en technologie. Via de robot en deze handleiding kun je op uitdagende manier kennis maken met basiselektronica. Onderwerpen die aan bod komen zijn analoog en digitaal, logische poorten, diode, LCD, microcontrollers, frequentie, sensoren, actuatoren, infrarood, meet- en regeltechniek, servomotoren, gelijkrichting, programmeren en nog veel meer. Met deze wegwijzer kan de gebruiker een eenvoudig robotje leren bouwen en programmeren: een klein wagentje, ter grootte van naar schatting zeven cd doosjes op elkaar, op drie wieltje waarvan een bestuurbaar. Dit wagentje bestaat uit een printplaat met programmeerbare microcontroller elektronica en wat motortjes en ook wat voelers, sensors die, tijdens het rijden, de rijweg in de gaten houden. De uitleg is eenvoudig, maar uiteindelijk komt er natuurlijk nogal het een en ander bij kijken. De gebruikte microcontroller kan nog veel meer en daar wordt ook de nodige aandacht aan geschonken. Daar is echter vaak ook weer elektronica voor nodig die gekocht moet worden. In het boek wordt naar een website verwezen waarop een robotje aangeboden wordt voor een all-in prijs van 125 euro. In hoeverre het complete pakket wordt geleverd, is de vraag. Het boek verwijst naar een aantal software-downloads die gratis geprobeerd kunnen worden. Geen volledige gids, maar een goede wegwijzer naar alle spullen en kennis die je nodig hebt om een micro-controller zelf aan de praat te krijgen.



Last update: 18-06-2019
SintSint

Disclaimer: Hoewel de heer Pragt de informatie beschikbaar op deze site met grote zorg samenstelt, sluit hij alle aansprakelijkheid uit. Op de artikelen van de heer Pragt rust auteursrecht, overname van tekst en afbeeldingen is uitsluitend toegestaan na voorafgaande schriftelijke toestemming. Heinpragt.com is ingeschreven bij de KvK onder nummer: 73839426 en is gevestigd in Veenendaal.  Lees hier de privacyverklaring van deze site. Voor informatie over adverteren op deze site kunt u contact opnemen met: (mail@heinpragt.com).