Posts

Posts uit november, 2018 tonen

11. lijn volgen met plan B

Afbeelding
Een eerste succes! Plan B volgt een lijn op een deftige manier. Een filmpje ter verduidelijking: kan ook bekeken worden via de link . Hierbij heb ik gebruik gemaakt van een simpele P regelaar. Hierbij gebruik ik enkel de Kp waarde zoals hieronder verduidelijkt: het gewogen gemiddelde vergelijken met het nulpunt en vermenigvuldigen met de Kp waarde zorgen dat de output niet groter is dan 255 of kleiner dan -255 snelheid van de motoren gelijkstellen aan de opgeslagen snelheid met de output opgeteld of afgetrokken de int zorgt ervoor dat het geen kommagetallen zijn zorgen dat de pwm waardes niet boven 255 of onder -255 liggen zorgen dat de motor naar de juiste kant draait als de pwm waarde negatief of positief is zorgen voor een absolute waarde voor de snelheid (pwm kan niet negatief zijn) Deze code zal later uitgebreid worden met een Ki en een Kd waarde. zodat we gebruik maken van een PID regelaar. <<Vorige            Volgend

10. Sensoren uitlezen en gebruiken voor het gewogen gemiddelde

Afbeelding
Voor het uitlezen van de sensoren en het te kunnen gebruiken hebben we het gewogen gemiddelde genomen. dit doen we door alle sensoren te vergelijken met een voor ingestelde waarde van zwart en wit. Deze waardes worden dan in procent uitgedrukt. Dit zijn de genormaliseerde waardes van elke sensor. Deze ga je vermenigvuldigen met de afstand die de sensor verwijderd is van het nulpunt met het nulpunt in het midden van de 6 sensoren (als je totale lengte, van sensor 1 tot sensor 6, 400 is dan is bijvoorbeeld sensor 1 -200 maal de genormaliseerde waarde en sensor 6 200 maal de genormaliseerde waarde). Hierna tel je alle waardes op en deel je ze door alle genormaliseerde waardes (die je ook optelt met elkaar) hierdoor krijg je een gemiddelde waarde. Deze waarde zal later gebruikt worden voor de PID regelaar. Hieronder een aantal voorbeelden van de code: declareren van de sensoren (de volgorde kan voor iedereen anders zijn als de juiste sensor er maar aanhangt) deze staan bij E

9. Real time systeem

Afbeelding
Voor een accurate lezing moeten we gebruik maken van een real time systeem. Dit doen we door continu de tijd te lezen die voorbij is en als die gelijk is aan de ingestelde waarde dan gaat men het programma doorlopen. natuurlijk als de tijd die nodig is groter is dan de ingestelde waarde moet deze veranderen. Dit zit ook in de volgende code: Instellen van een cycletime (zit bij parameters, zie post 8) Instellen van een aantal nodige variabelen  gelijk stellen aan de tijd nu berekenen waar we zitten en wanneer de cycletime bereikt is de code uitvoeren (Pogram) Kijken of de gekozen cycletime niet te hoog of te laag ligt <<Vorige            Volgende>>

8. Opslaan in EEPROM geheugen

Afbeelding
Ook voor het opslaan in het EEPROM geheugen gebruiken we een  bibliotheek . Deze zal het gemakkelijker maken voor het opslaan van de gegevens. Men kan deze bibliotheek gebruiken voor het opslaan van waardes die niet mogen verloren gaan bij het aan en uitzetten van de controller. We zijn begonnen met een parameter lijst aan te maken van alle waardes die wij willen opslaan. Deze wordt dan ook in zijn geheel weg geschreven (alle parameters apart kan niet). Als de controller opgestart wordt lezen we alle opgeslagen waardes uit en gebruiken die. Hieronder vind je een aantal voorbeelden van de code: Bijvoegen van de bibliotheek (Serial command staat er ook bij) Parameters die worden opgeslaan Lezen van de parameters (vergeet deze niet in de void setup te zetten) Hoe je een parameter moet gebruiken Opslaan naar EEPROM geheugen <<Vorige            Volgende>>

7. Motoren laten draaien

Afbeelding
Voor de motoren te laten draaien moesten we kijken voor ze apart aan te sturen aangezien diezelfde motoren gebruikt worden voor het draaien. Eerst begonnen we met het schrijven van een klein programma dat later kan geïmplementeerd worden met een PID regelaar. Nu wordt het juist gebruikt voor het besturen via commando's. Hier moesten we dan ook zorgen dat het meerdere snelheden aan kon. We hebben dan de snelheden van de motoren apart ingesteld en in de void loop een functie gezet die enkel die snelheden weg schrijft hierbij zijn de motoren bij PWM 0 stil en wanneer PWM gelijk is aan 255 zitten de motoren op volle snelheid. We maken gebruik van seriële communicatie (zie 5.). Het volledige programma zal worden toegevoegd aan het einde. Enkele voorbeelden van de code: Pin instellingen van de motoren Pinmode op output zetten Het enigste die in de void loop moet staan Hier splitsen we de motoren in twee (links en rechts) ook wordt de richting gekozen In

6. Serial commands via bluetooth en visual basic

Afbeelding
Bij het arduino programma moet er niet veel veranderen enkel Serial moet Serial1 worden. Dit aangezien wij werken via een Leonardo als je een andere arduino gebruikt moet je opzoeken waarop de bluetooth module aangesloten is. Voor het visual basic programma (op het einde van de blog zal hij worden toegevoegd) zijn er een aantal dingen waar we op moesten letten. Het verliep eerst vlot maar naar het einde toe stootten we op een probleem. De arduino las niets uit. Na lang zoeken bleek dat een na de gezonden commando geen enter stond (vbCrLf in vb). Wanneer deze was ingevoegd werkte alles naar behoren. Hieronder enkele voorbeelden van het visual basic programma: Design knoppen voor connectie bluetooth Configuratie van de poort Openen van de poort sluiten van de poort Design van de seriële monitor Zenden van de commando's <<Vorige            Volgende>>

5. Serial commands via USB

Afbeelding
We gaan proberen te communiceren met de arduino via de seriële monitor. Ook maken we gebruik een bibliotheek die ervoor zal zorgen dat er niet al te veel tijd zal verloren gaan. Het enigste dat in de void loop moet staan is dan sCmd.readSerial(); voor de rest zie de voorbeelden hier onder. Download de bibliotheken en kopieer ze naar de map van je arduino programma (.ino bestand) Arduino bibliotheken Deze heeft ervoor gezorgd dat we met simpele commando's de linefollower kunnen besturen. wanneer we het programma testen werkte het via de seriële monitor. (voor bluetooth zie post 5.) Enkele voorbeelden van ons programma: Bij voegen bibliotheken en instel waardes van de serial Starten van de serial en toevoegen van commando's Als een commando gestuurd wordt loopt het programma de juiste void door <<Vorige            Volgende>>

4. Afgewerkte PCB

Afbeelding
Na lang prutsen aan de pcb staat alles op zijn plaats. Voorkant:                                                                                 Achterkant: Met onderdelen Voorkant 3D:                                                                 Achterkant 3D: Als je zeker bent dat de PCB af is dan kan je hem bestellen. Dit kan bijvoorbeeld bij  eurocircuits, wurth-electron ic, seeed studi o fusion, JLCB. Ik heb nu gekozen voor seeed studio (keuze hangt af van de prijzen op dat moment). Updates van de printplaat zullen later komen. <<Vorige            Volgende>>

3. Intro voor DipTrace

Via onderstaande link krijg je toegang tot de PDF versie van 'Intro voor DipTrace'. 'Intro voor DipTrace' <<Vorige            Volgende>>

2. Elektrische schema's

De elektrische schema's worden uitgewerkt via het programma diptrace (voor een beetje info zie de post 'intro voor diptrace'). Diptrace is een programma waar de elektrische schema's kunnen omgezet worden in een pcb. Voor de schema's in pdf vorm klik op deze link: Elektriche schema's Bij het maken van deze schema's heb ik gebruik gemaakt van de  'arduino leonardo schematic'  (voor pdf klik op de link) en met de datasheets van de gekozen onderdelen. <<Vorige            Volgende>>