<?xml version="1.0" ?><rss version="2.0"><channel><title>trol.co.nr - computer and electronics projects</title><description>trol.co.nr - computer and electronics projects</description><link>http://trol.freehostia.com/</link><item><guid>http://trol.freehostia.com/startv2.php?id=174</guid><title>Handige Gratis Software</title><description>Een artikeltje (zie bijlage) dat ik voor het clubblad van onze Tigem club (Technology Interest Group Erpe-Mere) heb geschreven met wat uitleg over de (volgens mijn bescheiden mening) beste gratis programma&quot;s..</description><link>http://trol.freehostia.com/startv2.php?id=174</link><pubDate>Fri, 08 Feb 2008 02:56:00 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=173</guid><title>PIC 18f4455 USB Bootloader</title><description>&lt;p&gt;Deze week heb ik de USB bootloader op het PIC Welek experimenteerbord gezet. Met een bootloader kan je de PIC programmeren zonder de programmer. Dit is handig voor mij omdat ik het bordje soms van mijn kot naar huis transporteer en nu dus de programmer en de usb2serieel kabel niet telkens moet meenemen. Het programmeren gaat denk ik ook sneller omdat het via de full speed USB gebeurt ipv via de seriele poort. Sinds verleden week heb ik ook door dat het WELEK bordje via de USB poort kan gevoed worden, waardoor ik ook mijn voeding niet meer moet meesleuren (nu dat scheelt in gewicht :p). &lt;/p&gt;&lt;p&gt;Uitleg over hoe je de bootloader gebruikt staat op &lt;a href=&quot;http://pic18fusb.online.fr/wiki/wikka.php?wakka=UsbBootload&quot; target=&quot;_blanc&quot;&gt;deze&lt;/a&gt; site (let wel dat hun S2 bij ons S3 is, dus de knop naar boven). Op het bordje moet je de drie usb jumpers aan (verbonden) zetten. Bij een eerste poging werd er helemaal niets door Windows gezegd na het drukken van de reset knop en S3, en alle leds gingen periodiek aan en uit terwijl er bij het starten helemaal geen leds zouden mogen branden. Na wat proberen en sakkeren heb ik de configuratievariabelen zoals op de Welek site in een headerbestandje toegevoegd aan het project:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new&quot;&gt;#pragma config PLLDIV = 5&lt;br&gt;#pragma config CPUDIV = OSC1_PLL2&lt;br&gt;#pragma config USBDIV = 2&lt;br&gt;#pragma config FOSC = HSPLL_HS&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Toen deze gezet waren gaf Windows al aan dat er een ongeldig USB device aangesloten was. Beter een ongeldig device, dan helemaal geen device! Na nog wat sakkeren heb ik gewoon alle pragma configuratievars die in het project van de  &lt;a href=&quot;http://www.elektor.nl/artikelen-als-pdf/2007/november/usb-data-acquisitiekaart.272363.lynkx&quot; target=&quot;_blanc&quot;&gt;usb aquisitiekaart van elektuur&lt;/a&gt; gekopieerd naar het eigen project. Vraag me niet welke variabele het hem nu juist heeft gedaan maar nadien werkte het wel, en kon ik de driver succesvol installeren!&lt;/p&gt;&lt;p&gt;Bij het starten van de programmeertool moet je nu in de keuzelijst je device selecteren. Als je geen device ziet moet je op het bord S3+reset duwen om de PIC in programmeermodus te zetten. Nu kan je lezen en programmeren. Hier kreeg ik nog een fout, namelijk &quot;error 997 Overlapping I/O operation&quot;. Toen ik in het configuratiescherm bij apparaatbeheer het vinkje uitschakelde dat het apparaat mag uitgeschakeld worden werkte het plots wel (hoewel ik niet 100% zeker ben dat het daaraan lag). &lt;/p&gt;&lt;img src=&quot;Files/art173_8-2-2008_441_Img2.jpg&quot; alt=&quot;niet toelaten dat apparaat uitgeschakeld wordt&quot;&gt;&lt;p&gt;Een goede eerste start om het bootloaden te proberen is het demo02 project dat bij de driver en bootloader wordt bijgeleverd. Open het met MPLAB en doe make all. Het is bestemd voor de 18F4550 maar werkte op het experimenteerbord ook (bij drukken op de knoppen gaat er een ledje aan en uit). In een volgende stap heb ik een eigen projectje gemaakt, daartoe heb ik het linkerbestand van de 18F4455 als volgt aangepast:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new&quot;&gt;CODEPAGE   NAME=boot       START=0x0            END=0x7FF          PROTECTED&lt;br&gt;CODEPAGE   NAME=vectors    START=0x800          END=0x0x829        PROTECTED&lt;br&gt;CODEPAGE   NAME=page       START=0x82A          END=0x67FF&lt;/font&gt;&lt;/p&gt;&lt;p&gt;dus een deel reserveren voor het bootgedeelte en de rest wat opschuiven. Dit is gedaan naar analogie met het linkerbestand dat bij het demo02 project zat. Bij het laden van een hex file van mijn project in het bootloaderprogramma krijg ik wel volgende foutmelding:&lt;/p&gt;&lt;img src=&quot;Files/art173_8-2-2008_936_Img3.jpg&quot; alt=&quot;foutmelding bij eigen project&quot;&gt;&lt;p&gt;Hierbij klik je best op Nee want bad things happen anders (waarbij herprogrammeren nodig was). De foutmelding komt er door bepaalde pragma variabelen in de code die conflicteren, bij verwijderen ervan uit de code kreeg ik de melding niet meer. Na het programmeren (na nee klikken ofwel na verwijderen van de pragmas) werkte het programmaatje wel zoals het moest :-)&lt;/p&gt;&lt;p&gt;Doordat de bootloader werkt kan ik de programmer en de onhandig lange usb naar serieel kabel nu ergens diep in mijn kast wegleggen en is mijn bureauke weer een beetje overzichtelijker :p&lt;/p&gt;&lt;table border=&quot;0&quot; cellspacing=&quot;10&quot; cellpadding=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;Files/art173_8-2-2008_234_voor.JPG&quot; alt=&quot;ontwikkelchaos, voor&quot; width=&quot;250&quot;&gt;&lt;br&gt;voor...&lt;br&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;Files/art173_8-2-2008_597_na.JPG&quot; alt=&quot;ontwikkelbordje, na.. o wat een netheid :)&quot; width=&quot;250&quot;&gt;&lt;br&gt;na..&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description><link>http://trol.freehostia.com/startv2.php?id=173</link><pubDate>Fri, 08 Feb 2008 02:01:00 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=170</guid><title>Motorsturing met PIC Experimenteerbord</title><description>In dit artikel heb ik het over mijn eerste experimenten met het experimenteerbord. Het plan was een robot-voertuig te maken. In dit artikel toon ik hoe je DC motoren kan aansturen met regelbare snelheid vanuit de PIC microcontroller. Als kickstart toon ik eerst hoe je een LED dimmer kan maken.  &lt;br&gt;&lt;br&gt;&lt;p&gt; &lt;b&gt;1. WELEK experimenteerbord en programmer. Led Dimmer projectje (PWM).  &lt;/b&gt;&lt;/p&gt;&lt;p&gt;Op een WELEK-avond vorig jaar heb ik dit &lt;a href=&quot;http://ieeesb.elis.ugent.be/node/48&quot; target=&quot;_blanc&quot;&gt;PIC-experimenteerbord&lt;/a&gt; gesoldeerd. Het experimenteerbord is gebaseerd op een PIC microcontroller uit de 18F reeks (PIC18F4550), en biedt heel wat mogelijkheden om de PIC processor wat beter te leren kennen. Op het bordje zitten onder andere een seriele poort (zodat communicatie met bijvoorbeeld een PC mogelijk blijft), een USB poort, een driver-chip (om lampjes of motors aan te sturen), enkele druktoetsen, wat LEDs en een LCD scherm. &lt;/p&gt;&lt;p&gt;Het programmeren van de PIC doe ik met behulp van &lt;a href=&quot;http://ieeesb.elis.ugent.be/node/41&quot; target=&quot;_blanc&quot;&gt;deze PIC programmer&lt;/a&gt;, die ook al tijdens een WELEK avond gebouwd is. Het schrijven en compileren van de code doe ik met behulp van de grats ontwikkelomgeving van Microchip: &lt;a href=&quot;http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en019469&amp;part=SW007002&quot; target=&quot;_blanc&quot;&gt;MPLAB&lt;/a&gt;, samen met de gratis versie van hun C18 compiler (voor 18F PICs). Meer info over &lt;a href=&quot;http://ieeesb.elis.ugent.be/node/217&quot; target=&quot;_blanc&quot;&gt;starten met programmeren voor het experimenteerbord&lt;/a&gt; vind je terug bij WELEK. &lt;/p&gt;&lt;p&gt;In dit eerste voorbeeld gaan we een LED dimmer maken die door de PWM van de PIC aangestuurd wordt. &lt;a href=&quot;http://nl.wikipedia.org/wiki/Pulsbreedtemodulatie&quot; target=&quot;_blanc&quot;&gt;PWM&lt;/a&gt; is een techniek die toelaat om met de digitale uitgang van de PIC (hoog of laag) een continu veranderende uitgang te maken. &lt;/p&gt;&lt;p&gt;De LEDs hangen we aan de uitgang van de driverchip met een weerstand naar massa. De LEDs hoeven eigenlijk niet aan de driverchip te hangen want de PIC kan zelf ook nog voldoende stroom leveren, maar zo wordt de overstap naar een motorsturing makkelijker dus doen we het toch. &lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;Het supereenvoudige circuit ziet er alsvolgt uit:&lt;/p&gt;&lt;img src=&quot;Files/art170_31-12-2007_838_Img1.jpg&quot; alt=&quot;Led Dimmer werking&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;Beide LEDs gaan via een weerstandje naar massa. De code van de LED dimmer kan je downloaden via de link onderaan de pagina. &lt;/p&gt;&lt;p&gt;In het bestand pwm.c staan vier functies:&lt;/p&gt;&lt;ul&gt;&lt;br&gt;&lt;br&gt;&lt;li&gt;PWM_init initialiseert 2 PWM kanalen&lt;/li&gt;&lt;br&gt;&lt;br&gt;&lt;li&gt;PWM_SetDutyCycle zet de duty cycle van het aangegeven PWM kanaal op dc. &lt;/li&gt;&lt;br&gt;&lt;br&gt;&lt;li&gt;PWM_IncreaseDutyCycle verhoogt de duty cycle van het aangegeven PWM kanaal&lt;/li&gt;&lt;br&gt;&lt;br&gt;&lt;li&gt;PWM_DecreaseDutyCycle verlaagt de duty cycle van het aangegeven PWM kanaal&lt;/li&gt;&lt;br&gt;&lt;br&gt;&lt;/ul&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt; void main (void) { &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Welek_Testboard_Init (); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PWM_init(); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CCPR1L=0; &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CCPR2L=PWM_MAX; &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (1) { &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(CCPR1L&amp;lt;(PWM_MAX-1)) { &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PWM_IncreaseDutyCycle(1); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PWM_DecreaseDutyCycle(2); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PWM_DecreaseDutyCycle(2); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Delay1KTCYx(100); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while(CCPR2L&amp;lt;(PWM_MAX-1)) { &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PWM_IncreaseDutyCycle(2); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PWM_DecreaseDutyCycle(1); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PWM_DecreaseDutyCycle(1); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Delay1KTCYx(100); &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &lt;/p&gt;&lt;p&gt;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &lt;/p&gt;&lt;p  &gt; } &lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;CCPR1L bevat een waarde tussen 0 en PWM_MAX (afhankelijk van de duty cycle). Er staat 2x DecreaseDutyCycle omdat dit simpelweg een mooier zicht was (de LEDs dimden te traag anders). &lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;2. aansturen van 2 DC motoren met het experimenteerbord&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Wat ik al wou maken nog voor ik het experimenteerbord had was een robot, of toch op zijn minst een rijdend voertuig, aangestuurd door een microcontroller. Hiervoor moest ik dus een manier zoeken om een motor aan te sturen via het experimenteerbord. Vanwege de lage kostprijs heb ik met DC motoren gewerkt, maar ik ben van plan om later eens wat experimenten te doen met servo-motoren. &lt;/p&gt;&lt;p&gt;In vorige paragraaf gebruikten we PWM om de helderheid van de LED aan te passen. Vermits de motor een zekere rotatietraagheid heeft zal men de motor niet zien aan of afslaan, maar zal deze bij een hoge duty cycle snel draaien en bij een lage duty cycle traag draaien. In de figuur hieronder staat het aansluitschema voor één motor, voor de tweede motor gebruikt men kanaal 3 en 4 van de driverchip. De motor is aangesloten tussen de twee uitgangen. Ingang1 is het PWM signaal (varieert tussen 0V en 5V), ingang2 bepaalt de richting waarin de motor zal draaien (5V of 0V). Als men 0V aanlegt aan in2 dan zal de motor sneller draaien bij een hogere duty cycle van in1. Als men 5V aanlegt aan in2 dan zal de motor sneller draaien bij een lagere duty cycle van in1 (maar de motor draait wel in de andere richting nu). Pas op, want het onderstaande schema is zonder &lt;a href=&quot;http://en.wikipedia.org/wiki/Flyback_diode&quot; target=&quot;_blanc&quot;&gt;vrijloopdioden&lt;/a&gt;, er kunnen dus nog spanningspieken optreden aan de uitgangen van de PIC!&lt;/p&gt;&lt;img src=&quot;Files/art170_31-12-2007_554_Img2.jpg&quot; alt=&quot;Aansluiting motor&quot;&gt;&lt;p&gt;Als motor maakte ik in eerste instantie gebruik van het &quot;varia transmissiepakket&quot; van Conrad (bestelnr 240788). De reden waarom ik dit gebruikte was omdat de tandwielen voor de vertraging al inbegrepen waren zodat ik me daar geen zorgen meer over hoefde te maken. Een vertraging is nodig omdat de DC motor zeer snel draait maar met weinig koppel, door een vertraging zet men &quot;snelheid naar koppel&quot; om. Onderstaande figuur toont deze motor in een wel zeer geïmproviseerd prototype :-)&lt;/p&gt;&lt;img src=&quot;Files/art170_31-12-2007_872_Img3.jpg&quot; alt=&quot;Rapid prototyping :-)&quot;&gt;&lt;p&gt;Uiteindelijk ben ik van deze &quot;vario&quot; motor afgestapt omdat hij moeilijk in te bouwen was in een Lego-frame, maar daarover later meer. &lt;/p&gt;&lt;p&gt;Omdat de PIC niet voldoende stroom kan leveren op een uitgang om zomaar rechstreeks een motor aan te sturen zijn we ditmaal verplicht om via een driver-schakeling te werken. We gebruiken de driverchip die reeds op het experimenteerbord zit, maar als alternatief zouden we ook een schakeling met een aantal transistoren kunnen maken. &lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;De code voor het aansturen van de motoren met de druktoetsen is bijna hetzelfde als deze voor het aansturen van de LEDs, dus daar ga ik niet dieper op in. De code is terug onderaan de pagina te downloaden.&lt;/p&gt;&lt;p&gt;Het schema voor de motorsturing is daarentegen wel wat complexer, omdat de motor spanningspieken veroorzaakt die het experimenteerbord zouden kunnen beschadigen moesten we onze voorzorgen niet nemen. &lt;/p&gt;&lt;p&gt;Belangrijk is dat men de jumper voor de driver-chip spanning op 12V zet, zo wordt de driverchip niet via de spanningsregelaar van het experimenteerbord gevoed, waardoor ook de stroom niet door deze spanningsregelaar moet gaan. De motor trekt immers een hoge stroom (kan tot enkele ampères gaan). &lt;/p&gt;&lt;p&gt;Daarnaast is het belangrijk een hoop vrijloopdiodes te voorzien die de spanningspieken kunnen neutraliseren. Het schema voor beide motoren met dioden ziet er dan alsvolgt uit:&lt;/p&gt;&lt;img src=&quot;Files/art170_31-12-2007_768_Img4.jpg&quot; width=&quot;400&quot; alt=&quot;Schema motorsturing&quot;&gt;&lt;p&gt;(de driver 1..4 links in het schema komen overeen met de connector op het experimenteerbord)&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. Bouwen van een voertuig: frame van Lego&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Om het frame van het voertuig te bouwen gebruik ik mijn oude Lego Technic doos. De vario motor is echter erg moeilijk in te bouwen zodat de eerste versie&quot;s er erg krakkemikkig uitzagen...&lt;/p&gt;&lt;img src=&quot;Files/art170_31-12-2007_586_Img5.jpg&quot; alt=&quot;Voertuig met vario motor&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;img src=&quot;Files/art170_31-12-2007_263_Img6.jpg&quot; alt=&quot;Niet zo stevig..&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;Het experimenteerbord stond hier nog vast op mijn bureau en stuurde via een paar meter telefoondraad het voertuig aan. &lt;/p&gt;&lt;p&gt;Omdat het inbouwen van de vario motor niet makkelijk ging heb ik nadien gewerkt met gewone losse DC motoren zonder tandwielen erbij. Een extra voordeel hiervan is dat ze nog goedkoper zijn (minder dan 3 euro per motor). Na wat zoeken over hoe deze best vast te klemmen kreeg ik iets zoals hieronder:&lt;/p&gt;&lt;img src=&quot;Files/art170_31-12-2007_417_Img7.jpg&quot; alt=&quot;Veel betere inbouw van goedkope DC motors&quot;&gt;&lt;p&gt;Het opgengeklapte deel kan men toeklappen en dan vastklikken met een dwarsbalkje (vertikaal, niet op foto). Ik werk met de tandwielen van Lego Technic zelf nu, maar deze passen niet goed op de motoras. Daarom zit er nog een rubberen bandje over de motoras, en daarover pas het tandwiel. Omdat de motor goed moest vastzitten én de tandwielen goed in elkaar moeten fitten, ben ik in een volgende versie overgestapt op rubberbanden (chique woord voor &quot;rekkers&quot;) voor de eerste overbrenging.&lt;/p&gt;&lt;p&gt;De motoren hebben redelijk wat stroom nodig om voldoende kracht aan het voertuig te kunnen leveren. De driverchip die met het experimenteerbord meekomt kan maar een stroom van ongeveer 600mA leveren, wat onvoldoende is. Daarom heb ik een iets zwaardere versie van deze chip gekocht die een constante stroom van 1A (piek 2A) per kanaal kan leveren. Deze chip is er in twee formaten (16 en 20 pins) en spijtig genoeg hadden ze bij Conrad enkel de 20 pins versie (anders kon ik de nieuwe chip in de socket van de oude steken, nu moet ik op breadboardje werken). &lt;/p&gt;&lt;p&gt;In onderstaande versie is de laatste versie van het voertuig te zien. De overbrenging gebeurt eerst met elastiekjes en wordt daarna met Lego tandwielen nog wat vertraagd. De driverchip zit op het breadboard onder het experimenteerbord en stuurt beide motoren aan. De bedoeling was een batterijpack op het voertuig te hangen zodat het volledig autonoom kon werken maar spijtig genoeg heb ik mijn batterijpack laten opsmeulen.. Voorlopig nog met een kabeltje naar de voeding dus :-)&lt;/p&gt;&lt;p&gt;Het mottige bordje dat voor de robot zweeft zijn de lichtsensoren, maar deze heb ik nog niet kunnen afwerken. &lt;/p&gt;&lt;img src=&quot;Files/art170_31-12-2007_251_Img8.jpg&quot; alt=&quot;Laatste versie..&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;4. To be continued..&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Het was mijn bedoeling om de robot een lijnvolger te maken door enkele LDRs (light dependant resistor) onderaan te hangen, maar zover ben ik nog niet gekomen. &lt;/p&gt;&lt;p&gt;Om een waarde in te lezen die afhangt van de belichting zetten we de LDR in een spanningsdeler (en wel zodanig dat de maximale spanning over de LDR kleiner dan 5V is zodat de PIC niet beschadigd wordt). Het inlezen van de spanning lukte al, maar bij het connecteren van het hele boeltje zijn er enkele draadjes losgekomen, waardoor enkele dingen kapot gegaan zijn bij het inschakelen :-( &lt;/p&gt;&lt;p&gt;Het schema en code van het inlezen van de spanning over de LDR (met behulp van de ADC op de PIC) zet ik nog niet online omdat ik het nog eens opnieuw wil testen. Dit zal dus voor in een volgende vakantie zijn! &lt;/p&gt;</description><link>http://trol.freehostia.com/startv2.php?id=170</link><pubDate>Wed, 02 Jan 2008 21:37:21 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=169</guid><title>30-12-2007</title><description>layout van startpagina wat gewijzigd. Fotos van het neerhalen van de posttoren aan het st pieters station online gezet. De development basement (aka Het Lab) wat gewijzigd.</description><link>http://trol.freehostia.com/startv2.php?id=169</link><pubDate>Sun, 30 Dec 2007 00:00:00 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=168</guid><title>poutrix site (php)</title><description>Deze vakantie heb ik een site gemaakt voor de Poutrix vereniging van de bouwkunde studenten. Hiermee kon ik mijn PHP een beetje oefenen :-) &lt;br&gt;&lt;br&gt;&lt;img src=&quot;Files/art168_30-12-2007_502_poutrixsite1.jpg&quot; alt=&quot;de startpagina&quot;&gt;&lt;br&gt;&lt;br&gt;De site heeft een activiteitenkalender, waar alle evenementen die Poutrix organiseert op komen. De Poutrix medewerkers kunnen de activiteiten natuurlijk zelf ingeven na het inloggen in het controlepaneel. &lt;br&gt;&lt;br&gt;&lt;img src=&quot;Files/art168_30-12-2007_223_poutrixsite2.jpg&quot; alt=&quot;de activiteitenkalender&quot;&gt;&lt;br&gt;&lt;br&gt;Het controlepaneel biedt nog enkele andere opties, zoals het toevoegen van links, het wijzigen van de status van leden (om ze ook medewerker te maken), activiteiten bewerken enzovoort. &lt;br&gt;&lt;br&gt;&lt;img src=&quot;Files/art168_30-12-2007_255_poutrixsite4.jpg&quot; alt=&quot;het controlepaneel voor de poutrix medewerkers&quot;&gt;&lt;br&gt;&lt;i&gt;controlepaneel voor de poutrix medewerkers&lt;/i&gt;&lt;br&gt;&lt;br&gt;Omdat ik geen zin had zelf een fotosysteem in elkaar te boksen (sinds de griekenland-site weet ik hoeveel werk het is) heb ik gebruik gemaakt van Google Picasa om daar de fotoalbums te plaatsen. Op de fotopagina worden dan automatisch uit de rss feed van Picasa de albums geladen met albumafbeelding, zoals hieronder getoond. Na het klikken op een album komt men dan terecht op Picasa. &lt;br&gt;&lt;br&gt;&lt;img src=&quot;Files/art168_30-12-2007_577_poutrixsite3.jpg&quot; alt=&quot;pagina met fotoalbums&quot;&gt;</description><link>http://trol.freehostia.com/startv2.php?id=168</link><pubDate>Tue, 30 Nov 1999 00:00:00 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=166</guid><title>subcat_uitleg</title><description>Hier vind je enkele van mijn elektronica-bezigheden.. </description><link>http://trol.freehostia.com/startv2.php?id=166</link><pubDate>Tue, 30 Nov 1999 00:00:00 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=165</guid><title>Change boot.ini using a network boot</title><description>&lt;p&gt;I changed my boot.ini file by accident yesterday and soon realised I had a big problem.. The booting process didn&quot;t find my Windows installation any longer. The normal reflex would be to grab a boot disk and fix the problem in DOS. I couldn&quot;t do this because my laptop does not have a floppy drive station. Well, no problem you say, just insert some Windows installation CD and boot from that CD. You guessed it, my CD-station on my laptop is broken for a few months now, so I didn&quot;t have a means to boot my laptop. Another option would be to boot from a usb device, but my BIOS doesn&quot;t support this. On the other hand, my BIOS DOES support a network boot (PXE). In this article I will briefly cover the steps I took to repair my laptop.&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;First of all, I&quot;ve set up the tftpd32 server as described in step 1 trough 12 of &lt;a href=&quot;http://home.allegiance.tv/~joem298/&quot; target=&quot;_blanc&quot;&gt;this article&lt;/a&gt;. I used another boot disk than the one in this article.&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;Then, I wanted to create a boot disk as described in &lt;a href=&quot;http://support.microsoft.com/kb/305595&quot; target=&quot;_blanc&quot;&gt;this&lt;/a&gt; Microsoft article. This boot disk will boot using the boot.ini file on the boot disk. So if this boot.ini file contains a correct reference to my installed Windows, my problems would all be gone! I used &lt;a href=&quot;http://chitchat.at.infoseek.co.jp/vmware/vfd.html#top&quot; target=&quot;_blanc&quot;&gt;Virtual Floppy Drive&lt;/a&gt; to emulate a floppy drive station. This provided me with a A: station. I followed the steps in the Microsoft article to create the boot disk (with my own boot.ini file) on A:. The Virtual Floppy program allows you to save the floppy contents to a .img file, this image file is used instead of the &quot;BFD full package&quot; boot disk in the previous article. So save it in the tftpboot folder and make a reference to it in the file named &quot;default&quot;&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;Files/art165_10-10-2007_731_VirtualFloppyDrive.JPG&quot; target=&quot;_blanc&quot;&gt;&lt;img src=&quot;Files/art165_10-10-2007_731_VirtualFloppyDrive.JPG&quot; alt=&quot;Virtual Floppy Drive&quot; width=&quot;490&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;i&gt;This image shows the virtual floppy drive (green), the contents of the virtual floppy (blue) and the img file that contains these files (yellow). You can click on this image to get a larger version. &lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;I changed the BIOS boot order so that PXE network boot was at the top of the list, pressed F12 at the right time and ... ow dzyeah! My Windows was back in business!&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;img src=&quot;Files/art165_10-10-2007_966_highFive.JPG&quot; width=&quot;490&quot; alt=&quot;laptop repaired!&quot;&gt;</description><link>http://trol.freehostia.com/startv2.php?id=165</link><pubDate>Sun, 30 Dec 2007 00:00:00 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=164</guid><title>4Nec2 Tutorial</title><description>Enkele maanden geleden heb ik dit artikel geschreven voor in het clubblad van de &lt;a href=&quot;www.tigem.be&quot;&gt;radioamateurs&lt;/a&gt;. Het beschrijft in detail hoe men een antenne volledig met het gratis programma 4nec2 kan ontwerpen en doorrekenen. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Het artikel is te vinden in het pdf bestand (link onderaan pagina), enkele broncodebestanden zijn ook bijgevoegd in het zip bestand. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;img src=&quot;Files/art164_3-10-2007_689_biquad.JPG&quot; alt=&quot;Biquad antenne in 4nec2&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Veel plezier ermee!</description><link>http://trol.freehostia.com/startv2.php?id=164</link><pubDate>Sat, 29 Dec 2007 00:00:00 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=163</guid><title>switch from ASP to PHP</title><description>&lt;p&gt;We&quot;re going to switch from asp (with MS Access databases) to php (with a mySQL database) as quick as possible in this tutorial. We assume that you want to convert an existing asp site to php. You can find a great PHP tutorial on &lt;a href=&quot;http://www.w3schools.com/php/default.asp&quot; target=&quot;_blank&quot;&gt;http://www.w3schools.com/php/default.asp.&lt;/a&gt; It&quot;s all I read so far about PHP, so that should make you feel comfortable with me as your tutor :p. This file ain&quot;t a full blown PHP tutorial, it just focusses on the important differences between ASP and PHP that might get you stuck for a while. &lt;/p&gt;&lt;p&gt;A very sweet PHP host (free) is &lt;a href=&quot;freehostia.com&quot; target=&quot;_blank&quot;&gt;freehostia.com&lt;/a&gt;, so head your browser over there if you haven&quot;t found one already. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. Converting the MS Access database to a mySQL database&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Open your database in MS Access, right-click on a table and select &quot;export&quot;. In the &quot;save as&quot; combobox you select the option with *.csv files. Click through the next steps with the default options: your table gets exported in a plain text file. &lt;/p&gt;&lt;p&gt;Login on your php server, and launch phpMyAdmin. In your empty database, you create a table (enter the apropriate number of fields, this is the number of columns of your Access table).  Now you have to create all the fields. Give them the same name as the column headers in your Access table (just because it&quot;s easyer) and select the apropriate type.When all the fields are created select &quot;import&quot;. Navigate to the text file that contains your exported table andselect the file. Check the option &quot;&lt;span class=&quot;style1&quot;&gt;CSV ~ &lt;/span&gt;&quot; and hit the button. Your records are imported! &lt;/p&gt;&lt;p&gt;Repeat these steps for all the tables in your database. &lt;/p&gt;&lt;p&gt;Hints (aka mistakes I made :p): &lt;/p&gt;&lt;ul&gt;  &lt;li&gt;TINYINT cannot contain ints larger than 128! So don&quot;t use it as an index or something like that, or your import will only add the first 128 records to your table!&lt;/li&gt;&lt;br&gt;&lt;br&gt;  &lt;li&gt;If you had an auto-increasing field in your Access table, you select &quot;auto-increment&quot; in the &quot;extra&quot; combobox while entering the fields of your table. The field has to be unique for this to work (click on the key button of the field). &lt;/li&gt;&lt;br&gt;&lt;br&gt;&lt;/ul&gt;&lt;p&gt;Right on! We converted our database so that we can connect to it from within PHP! But let&quot;s learn some quick bits of PHP first..&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;&lt;strong&gt;2. Switching from ASP to PHP&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;What I&quot;m going to do here is type some typical often-used ASP code and give you the PHP equivalent of it. &lt;/p&gt;&lt;table width=&quot;90%&quot; border=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ASP Code &lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;PHP Equivalent &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;%&lt;br /&gt;      response.write(&quot;that chicken gave me a bad coupon&quot;)&lt;br /&gt;      %&gt; &lt;/p&gt;    &lt;/td&gt;   &lt;td&gt;&lt;p&gt;&lt;?php&lt;br /&gt;      echo &quot;that chicken gave me a bad coupon&quot;;&lt;br /&gt;      ?&gt;&lt;/p&gt;      &lt;/td&gt;  &lt;/tr&gt;&lt;/table&gt;&lt;p&gt;So PHP is entered between &lt;?php and ?&gt;. You use &quot;echo&quot; to write stuff to the output. Don&quot;t forget the semicolon at the end!&lt;/p&gt;&lt;table width=&quot;90%&quot; border=&quot;0&quot;&gt;&lt;tr&gt;    &lt;td&gt;&lt;strong&gt;ASP Code &lt;/strong&gt;&lt;/td&gt;    &lt;td&gt;&lt;strong&gt;PHP Equivalent &lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;    &lt;td&gt;&lt;p&gt;&lt;%&lt;br /&gt;item=&quot;coupon&quot;;&lt;br /&gt;      response.write(&quot;that chicken gave me a bad &quot; &amp; item )&lt;br /&gt;      %&gt; &lt;/p&gt;      &lt;/td&gt;    &lt;td&gt;&lt;p&gt;&lt;?php&lt;br /&gt;$item=&quot;coupon&quot;;&lt;br /&gt;      echo &quot;that chicken gave me a bad &quot; . $item;&lt;br /&gt;      ?&gt;&lt;/p&gt;      &lt;/td&gt;  &lt;/tr&gt;&lt;/table&gt;&lt;p&gt;Variable names always start with a dollar sign. Instead of the ampersand you use a dot. I know, it&quot;s weird.&lt;/p&gt;&lt;table width=&quot;90%&quot; border=&quot;0&quot;&gt;  &lt;tr&gt;    &lt;td&gt;&lt;strong&gt;ASP Code &lt;/strong&gt;&lt;/td&gt;    &lt;td&gt;&lt;strong&gt;PHP Equivalent &lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;&lt;p&gt;&lt;%&lt;br /&gt;    &quot;asp is cool!&lt;br /&gt;artist=&quot;kyuss&quot;&lt;br /&gt;if artist=&quot;kyuss&quot; then&lt;blockquote&gt;response.write(&quot;AAAA Yeah!&quot;)        &lt;/blockquote&gt;else&lt;blockquote&gt;response.write(&quot;OOOO No!&quot;)         &lt;/blockquote&gt;end if   &lt;br /&gt;%&gt; &lt;/td&gt;    &lt;td&gt;&lt;p&gt;&lt;?php&lt;br /&gt;//php is cooler! &lt;br /&gt;$artist=&quot;kyuss&quot;;&lt;br /&gt;if ($artist==&quot;kyuss&quot;) {&lt;blockquote&gt;          echo &quot;AAAA Yeah!&quot;;&lt;/blockquote&gt;} else {&lt;blockquote&gt;echo &quot;OOOO No!&quot;;&lt;/blockquote&gt;}&lt;br /&gt;?&gt; &lt;/td&gt;  &lt;/tr&gt;&lt;/table&gt;&lt;p&gt;The if-construction follows the C variant with { and } instead of else and end if. Don&quot;t forget the parentheses around the condition. And an easy-to-make-mistake: you compare with == instead of with =. If you typed &lt;/p&gt;&lt;p&gt;if ($artist=&quot;kyuss&quot;) { //don&quot;t try this at home, kids.. &lt;/p&gt;&lt;p&gt;PHP would assign &quot;kyuss&quot; to $artist, convert that to a boolean and check if that is true!&lt;/p&gt;&lt;p&gt;The while and switch construction also follow a C- like syntax. Check it all out at &lt;a href=&quot;http://www.w3schools.com/php/default.asp&quot; target=&quot;_blank&quot;&gt;http://www.w3schools.com/php/default.asp&lt;/a&gt;! &lt;/p&gt;&lt;p&gt;Now let&quot;s see how we read form and url elements:&lt;/p&gt;&lt;table width=&quot;90%&quot; border=&quot;0&quot;&gt;  &lt;tr&gt;    &lt;td&gt;&lt;strong&gt;ASP Code &lt;/strong&gt;&lt;/td&gt;    &lt;td&gt;&lt;strong&gt;PHP Equivalent &lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;    &lt;td&gt;&lt;p&gt;var1 = request.querystring(&quot;name&quot;)&lt;/p&gt;      &lt;p&gt;var2 = request.form(&quot;age&quot;)&lt;/p&gt;&lt;/td&gt;    &lt;td&gt;&lt;p&gt;$var1 = $_GET(&quot;name&quot;);&lt;/p&gt;      &lt;p&gt;$var2=$_POST(&quot;age&quot;); &lt;/p&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/table&gt;&lt;p&gt;Pretty much the same thing..&lt;/p&gt;&lt;p&gt;Your SQL commands should stay the same I guess, one thing that changes a bit is:&lt;/p&gt;&lt;table width=&quot;90%&quot; border=&quot;0&quot;&gt;  &lt;tr&gt;    &lt;td&gt;&lt;strong&gt;Access SQL  Code &lt;/strong&gt;&lt;/td&gt;    &lt;td&gt;&lt;strong&gt;mySQL  Equivalent &lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;&lt;p&gt;SELECT top 3 * FROM tblfiles &lt;/p&gt;    &lt;/td&gt;    &lt;td&gt;&lt;p&gt;SELECT * FROM tblfiles LIMIT 3 &lt;/p&gt;    &lt;/td&gt;  &lt;/tr&gt;&lt;/table&gt;&lt;p&gt;Right, we can live with that. Oh, another thing: mySQL is case sensitive, so pay attention when SELECT-ing strings with comparisons..&lt;/p&gt;&lt;p&gt;That&quot;s it for this quickstart in php, good luck!&lt;/p&gt;</description><link>http://trol.freehostia.com/startv2.php?id=163</link><pubDate>Tue, 30 Nov 1999 00:00:00 GMT</pubDate></item><item><guid>http://trol.freehostia.com/startv2.php?id=162</guid><title>26-9-2007</title><description>De bbq foto&quot;s staan online :)</description><link>http://trol.freehostia.com/startv2.php?id=162</link><pubDate>Tue, 30 Nov 1999 00:00:00 GMT</pubDate></item></channel></rss>
