Inhoudsopgave:

Gyro-sensor bestuurd platform voor doolhofpuzzel - Ajarnpa
Gyro-sensor bestuurd platform voor doolhofpuzzel - Ajarnpa

Video: Gyro-sensor bestuurd platform voor doolhofpuzzel - Ajarnpa

Video: Gyro-sensor bestuurd platform voor doolhofpuzzel - Ajarnpa
Video: Self-Stabilizing Platform using Accelerometer and Gyroscope 2024, Juli-
Anonim
Door gyrosensor bestuurd platform voor doolhofpuzzel
Door gyrosensor bestuurd platform voor doolhofpuzzel

Deze instructable is gemaakt om te voldoen aan de projectvereiste van de Make-cursus aan de University of South Florida (www.makecourse.com)"

Dit eenvoudige project is geïnspireerd op een zelfbalancerend platform dat feedback ontvangt van de versnellingsmetersensor. Bekijk het als je dat nog niet hebt gedaan.

Het project maakt gebruik van de Arduino UNO - Gebruiksvriendelijke microcontroller die je kunt krijgen van online winkelwebsites! In deze instructable laat ik zien hoe je je eigen programmeerbare kantelplatform kunt maken - van het ontwerpproces tot het sourcen van onderdelen, 3D-printbestanden, assemblage en programmeren. Hou vol en laten we verder gaan!

Stap 1: Vereiste componenten en 3D-geprinte onderdelen

Vereiste componenten en 3D-geprinte onderdelen
Vereiste componenten en 3D-geprinte onderdelen
Vereiste componenten en 3D-geprinte onderdelen
Vereiste componenten en 3D-geprinte onderdelen
Vereiste componenten en 3D-geprinte onderdelen
Vereiste componenten en 3D-geprinte onderdelen

De lijst van de gebruikte componenten voor het project:

1. Arduino UNO-microcontroller.

2. Breadboard met jumperdraden.

3. Een doos.

4. Circulair platform

5. Doolhof.

6. Links - 3 nee's

7. Een basis voor het monteren van drie servo's.

8. Gyro-/versnellingsmetersensor. (MPU6050)

9,1 vierkante mm draden (500 cm) - 4 nrs

10. 3mm dia stalen kogels.

De meeste onderdelen die voor het project zijn gebruikt, zijn 3D-geprint en ik heb de stl. bestanden klaar om af te drukken.

Monteer alle onderdelen zoals aangegeven in de afbeeldingen. Het doolhof is warmgelijmd op het ronde platform om eruit te zien zoals op de foto. De drie servo's moeten heet worden gelijmd op de 3D-geprinte basis die op het deksel van de doos is gemonteerd. De doos bevat de Arduino UNO en Breadboard, gemonteerd zoals weergegeven in de afbeelding. De setup van het breadboard wordt in de volgende stap besproken.

Na montage moet het uiteindelijke prototype eruitzien zoals op de laatste foto.

Stap 2: Breadboard instellen

Breadboard instellen
Breadboard instellen
Breadboard instellen
Breadboard instellen
Breadboard instellen
Breadboard instellen

Na montage worden de Arduino, Accelerometer sensor, servo's aangesloten zoals hieronder beschreven.

De positieve en negatieve rails op het breadboard zijn respectievelijk verbonden met 5V en GND van Arduino. De sensor is verbonden met de Arduino met behulp van de draden van een halve meter die aan de sensor moeten worden gesoldeerd, zodat de VCC- en GND-pinnen van de sensor respectievelijk worden aangesloten op +ve en -ve rails op het breadboard. De SCL en SDA pinnen van de sensor worden aangesloten op de A5 en A4 analoge pinnen van Arduino. De PWM-pinnen van de drie servo's zijn respectievelijk verbonden met 2, 3, 4 pinnen van de Arduino en de +ve- en -ve-pinnen van alle servo's zijn verbonden met de +ve- en -ve-rails van het breadboard. hiermee zijn onze verbindingen klaar.

Stap 3: Code voor het project

u kunt de MPU6050- en Servo-bibliotheken van internet downloaden en voor het project gebruiken. Compileer en upload de volgende code naar de Arduino en het project is klaar. Kantel de sensor en je ziet het doolhof in dezelfde richting kantelen! Het kost wat tijd om de puzzel op te lossen, want het is een beetje uitdagend, maar het is leuk om mee te spelen.

#erbij betrekken

#erbij betrekken

#erbij betrekken

Servo Servo1;

Servo-Servo2;

Servo-Servo3;

MPU6050-sensor;

int servoPos1=90;

int servoPos2=90;

int servoPos3=90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

ongeldige instelling ()

{

Servo1.bevestigen (2);

Servo2.bevestigen (3);

Servo3.bevestigen (4);

Draad.begin ();

Serieel.begin (9600);

}

lege lus ()

{

sensor.getMotion6 (&ax, &ay, &az, &gx, &gy, &gz);

bijl = kaart (bijl, -17000, 17000, 0, 180);

ay = kaart (ay, -17000, 17000, 0, 180);

Serial.print ("ax=");

Serieafdruk (bijl);

Serieafdruk ("ay=");

Serial.println (ay);

if (bijl < 80 && ay < 80){

Servo1.write(servoPos1++);

Servo2.write(servoPos2--);

Servo3.write(servoPos3--); }

als (bijl 120){

Servo1.write(servoPos1--);

Servo2.write(servoPos2++);

Servo3.write(servoPos3--); }

if (ax > 120 && ay > 0){

Servo1.write(servoPos1--);

Servo2.write(servoPos2--);

Servo3.write(servoPos3++); }

if (ax == 90 && ay == 90){

Servo1.write(0);

Servo2.write(0);

Servo3.write(0);

}

}

Aanbevolen: