zaterdag 15 juli 2017

Een penauto maken met een arduino uno

We vertrekken van deze instructables website waar we concrete instructies,  stl-bestanden om te 3D-printen én een arduino programma voor de "Pro Trinket 3V" vinden.
We zullen wel enkele aanpassingen moeten maken omdat we iets andere hardware hebben (arduino uno) en daarna kunnen we aan de slag om "tekeningen te programmeren".


  • Stap 1: onderdelen 3D-printen  (facultatief)

3D-printen duurt uren en uren. Wij hebben daarom een aantal exemplaren klaargelegd zodat je deze stap ook kan overslaan.

Wie ze toch zelf wil 3d-printen kan de 3D-bestanden (=STL-bestanden) van de instractables website downloaden en ze printen op onze Vertex 3D printer. Voor het chasis gebruikten wij een ander STL-bestand, aangepast voor de arduino uno.

Een 3D-printer print geen STL-bestanden maar gcode speciefiek voor de 3D printer die wij gebruiken. De software Cura kan het STL-bestand  omzetten in een gcode-bestand.  Hier wordt uitgelegd waar je Cura kan downloaden en hoe je cura ( versie 15.04.4)  configureert voor onze Vertex printer.

In Cura doe je dan : 'File>load model file' en je kiest een STL-bestand. Er zijn heel wat zaken die kunnen mislopen bij een 3d-print. Het object moet bijvoorbeeld zo gepositioneerd zijn dat er nooit 'in de lucht' wordt geprint. Bekijk dit even met een begeleider voor je verder gaat.

Kijk bij 'Machine' of de juiste 3D-printer (Vertex PLA) is aangeduid en klik dan op 'File > save gcode'.

Dit g-code bestand copieer je dan naar het sd-kaartje van de 3D-printer.

Start de Vertex 3D printer en kies met het draaiwieltje/drukknop:
  1. Init. SD-Card
  2. Control printer > auto home
  3. Print from sd > selecteer je gcode bestand
  • Stap 2: de penauto in elkaar steken 
Eventueel doe je eerst stap 3 tot 5 en test je eerst of alle hardware werkt voor je het autootje in elkaar steekt.
Bouw de auto met de schroeven en de 3D geprintte stukken. Kijk indien nodig even naar deze instructables website maar wij gebruiken wel in plaats van 2x 2AA-batterijen één powerbank (voor de arduino) en 1 lippo (voor de steppermotoren)

Doe dit werkje rustig en gebruik niet te veel kracht: PLA plastiek is helemaal niet zo sterk en kan gemakkelijk breken.
De kwaliteit van de tekening die de penauto maakt is ook sterk afhankelijk van hoe nauwkeurig de auto in elkaar is geschroefd. Staan de wielen 100 % parallel? Rolt de knikker vloeiend? Sleept er geen kabeltje over de grond? ...

  • Stap 3: de hardware aansluiten op de arduino

Op het kleine breadbordje maken we twee rijen: eentje voor GND en eentje voor power.

We verbinden het GND-rijtje op het breadboard met:
  • GND van arduino
  • - van steppermotor 1
  • - van steppermotor 2
  • bruine kabeltje van servo motor
  • zwart kabeltje van lippo
We verbinden het power-rijtje op het breadboard met:
  • + van steppermotor 1
  • + van steppermotor 2
  • rode kabeltje van servo motor
  • rode kabeltje van lippo
Het  gele kabletje van de servomotor verbinden we met pin 11 op de arduino.

De steppermotors hebben aan de ene kant een rijtje met 5 gekleurde kabletjes: rood en dan  oranje-geel-roze en blauw. Aan de andere kant kan je IN1,IN2,IN3 en IN4
verbinden met de arduino. Doe dit met resp. arduino pinnen 3,4,5 en 6 (voor de rechtermotor) en 7,8, 9 en 10 voor de linkermotor.

Tenslotte verbinden op het laatst de powerbank met de arduino uno.
  • Stap 4: een arduino uno programmeren
We gebruiken een arduino uno (hardware). Je moet ook de gratis software (arduino IDE) downloaden  van de officiële website en installeren.

Als je nog nooit met een arduino gewerkt hebt, ga je eerst hier wat leren ledjes programmeren met een arduino uno.

Om de pen op en neer te bewegen gebruiken we een servomotor. Hier leer je een servo-motor aansluiten op en programmeren met de arduino uno.

Om de wielen aan te drijven gebruiken we 2 kleine "geared  28BYJ-48 stepper motors". Er bestaan vele soorten motoren, op deze website kan je er wat over lezen.  Voor 3D-printers, CNC-machines en tekenrobots gebruiken we stappenmotoren of steppermotors die heel precies werken. Voor deze motoren is ook steeds een extra batterij nodig en een ander stukje hardware: de motordriver, in dit geval de ULN2003 driver.

  • Stap 5: het programma aanpassen en uitvoeren

Download dit arduino-programma met de arduino IDE software en bekijk het:


// betekent dat wat erachter komt commentaar is en dus niet gebruikt wordt

De servo motor is aangesloten op de arduino pin 11.
Straks moet je eventueel 170 en 80 aanpassen zodat de pen bij pendown() ook echt op het papier zit en bij pendown() niet.

#include <Servo.h>
// setup servo
int servoPin = 11;//8
int PEN_DOWN = 170; // angle of servo when pen is down
int PEN_UP = 80;   // angle of servo when pen is up
Servo penServo;

De linker- en rechter-steppermotor zijn aangesloten op volgende arduino-pinnen:
int L_stepper_pins[] = {7, 9, 10, 8};
int R_stepper_pins[] = {3, 5, 6, 4};

De steppermotors zijn erg goedkoop en spijtig genoeg niet altijd op dezelfde manier in elkaar gestoken. De steppermotor roteert omdat de pinnen in een bepaalde volgorde aan en uit gezet worden.
Indien de motoren niet draaien of maar in één richting draaien dan heb je wellicht een steppermotor die 'verkeerd' in elkaar is gestoken. probeer dan eens:
 // Stepper sequence org->pink->blue->yel
int L_stepper_pins[] = {7, 9, 8, 10};
int R_stepper_pins[] = {3, 5, 4, 6};

De setup-functie doet een aantal initialisaties.

De loop-finctie is waar de actie gebeurt. Hier wordt 4 maal eenzelfde vierkant gereden en dus ook getekend. De while(1) laat je eeuwig wachten zodat de loop of eeuwige lus maar 1 keer doorgaat.
Wat die functies forward() en left()  eigenlijk doen zie je meer naar beneden vanaf //helper functies. Het zijn de arduino-pinnen van de servo- en steppermotoren die in een bepaalde volgorde aan en uit gezet worden. Ook wordt hier berekend hoeveel de wielen moeten draaien om de auto x aantal graden te laten draaien. Dit is afhankelijk van de grootte van het wiel (wheel-dia) en van de afstand tussen de 2 wielen (wheel base).

Mogelijk liggen de 4 getekende vierkanten niet mooi over elkaar. Daarvoor dient dit callibratie-programma nu net.
Bovenaan het programma, net onder de servo-motors zie je:

//int wheel_dia=66.25; //      # mm (increase = spiral out)
int wheel_dia=62.25;
//int wheel_base=112; //,    # mm (increase = spiral in)
int wheel_base=113; //,    # mm (increase = spiral in)
//int steps_rev=128; //,     # 512 for 64x gearbox, 128 for 16x gearbox
int steps_rev=512; //,     # 512 for 64x gearbox, 128 for 16x gearbox
//int delay_time=6; //            # time between steps in ms
int delay_time=4; //            # time between steps in ms

Je kan de waatde van wheel_dia en wheel_base aanpassen of ook delay-time als je denkt dat het probleem is dat de auto te snel rijdt.
Op deze instructables-website kan je onder 'step 12 Testing and callibration' nalezen hoe je dit kan aanpakken.

  • stap 6: andere tekeningen maken

We hebben nu 4 maal een vierkant getekend voor de callibratie. Als we iets anders willen tekenen zullen we zelf functies moeten schrijven en aanroepen. Hier vind je enkele voorbeelden: enkele figuren en het woord 'robot'.


Geen opmerkingen:

Een reactie posten