Servo Feedback Hack (gratis) (7 / 8 stap)

Stap 7: Microcontroller Test


Op de eerste testen, feedback van de interne servo potentiometer werkt behoorlijk verdomd goed zonder teveel software tweaken. De smoothing filter dat ik software ingebouwde neemt 20 lezingen, teruggooi van de hoogste en laagste waarden van de 6 en vervolgens het gemiddelde van de resterende 8. Ik gericht op het krijgen van lezingen, terwijl de servo nog steeds was om te testen van de resolutie en het vloeiend maken van functionaliteit. Er moet genoeg code hier voor u om uzelf in de problemen:). Onderstaande opmerkingen, code volgt na in-lijn.

Notities-code: ServoWithFeedback_V1

Dit is de eerste poging (Nou, niet de eerste. Ik zou niet post die puinhoop;) en zij beoogt te nemen een één op één lezing van servo feedback positie, slaan alle 180 punten in een array en vervolgens vergelijken de array nieuwe lezingen naarmate de servo aan hen. Testen voor het vloeiend maken van functionaliteit en sensor drift.

Notities-code: ServoWithFeedback_V2

Hier ben ik het vereenvoudigen van de verwerving van het eerste bereik. Ik neem een hoge en lage lezen op beide uiteinde van het bereik, en ons map() om te correleren met graden. Dit werkt erg goed. Mij zijn troep opwaarts een sweep die vergelijkt de huidige sensor lezingen van de feedback-draad aan de verwachte waarde geretourneerd door map(). De offset is minimale (-1 op 1) op de stijgende lijn. Op de dalende lijn is de offset meer als -4 tot -6. Dit is redelijk consistent en kan worden gewerkt rond in software. Ik was in staat om sommige lichte druk uitoefenen op de Hoorn van de servo naar en het verzetten van de reisrichting, en kreeg enkele mooie waarden waaruit blijkt dat mijn toegepaste kracht.
Hier gaat u, veel plezier.

/ * > servo met Feedback_V1 <
Het testen van code voor servo met gehackte feedback van interne pot.
Servo kabel aangesloten op digital 2
Positie Feedback kabel aangesloten op analoge 0
Een spanning divider voortbouwen ARef pin met twee 10K weerstanden.
De resulterende analoge verwijzing zal worden ~2.2V (Zie http://arduino.cc/en/Reference/AnalogReference)
Dit zal het verhogen van de resolutie van de potentiometer lezen.
Gebruik de volgende opdrachten op de Toggle tussen het lezen van de servo-feedback
en het lezen van elke andere analoge pin die moet zien 5V als referentie
analogReference(EXTERNAL); analoge 1023 ingesteld voltage dat op de ARef pin
analogReference(DEFAULT);  Hiermee stelt u analoge 1023 op 5V of 3.3V afhankelijk van voeding
*/
#include //import servo bibliotheek

Servo Servo1;                declair de servo!
int lezen [20];
int Feedback [181];
int servoPin1 = 2;
int test;               General-Purpose int
int offset = 0;
int lawaai = 50;
int de gemiddelde;
int resultaat;

Boolean gedaan;

VOID Setup {}
Serial.begin(9600);                     uitgang voor seriële initialiseren
analogReference(EXTERNAL);
pinMode (servoPin1, OUTPUT);
Servo1.attach(servoPin1,570,2400);      servo controle op digitale pin 2 inschakelen
setRange();                             Ga test het bereik en de waarden instellen
}

void loop {}

Servo1.write(0);
delay(2000);
for (int i = 0; ik < = 180; ik += 10) {}
Servo1.write(i);
vertraging (50);
testen = getFeedback();
offset = test - Feedback [i];
Serial.Print(i);
Serial.Print ("=");
Serial.Print(test);
Serial.Print("");
Serial.Print(offset);
Serial.Print("");
Serial.println(feedback[i]);
}
Serial.println("");
}

ongeldig setRange() {}

Servo1.write(0);                  Stuur servo naar 0 graden positie
delay(2000);                      servo genoeg tijd geeft om er te komen
for (int i = 0; ik < = 180; i ++) {}
Servo1.write(i);                volgende graad pulse verzenden servo
delay(50);                      laten dingen regelen naar beneden
Feedback [i] = getFeedback();    Lees de servo-feedback
Serial.Print(i);
Serial.Print ("=");
Serial.println(feedback[i]);
}
}

int getFeedback() {}

for (int j = 0; j < 20; j ++) {}
lezen van [j] = analogRead(0);    ruwe gegevens ophalen uit servo potentiometer
delay(3);
} / / Sorteer de laag naar hoog in array van lezingen
= false;                    duidelijke vlag sorteren
terwijl (gedaan! = true) {/ / eenvoudige swap worden de getallen van de laagste tot hoogste gesorteerd
= true;
for (int j = 0; j < 20; j ++) {}
Als ([j] lezen > lezen [j + 1]) {/ / hier nummers sorteren
testen = lezen [j + 1];
lezen van [j + 1] = lezen van [j];
lezen van [j] = test;
= false;
}
}
}
for (int j = 0; j < 20; j ++) {//un-comment deze for-lus om te zien de raw besteld gegevens
Serial.Print(i);
Serial.Print("");
Serial.println(Reading[j]);
//  }
betekenen = 0;
voor (int k = 6; k < 14; k ++) {//discard de hoogste 6 en 6 laagste lezingen
bedoel += lezen [k];
}
resultaat = gemiddelde/8;                  gemiddelde nuttige lezingen
(resultaat);
}
EINDE VAN SERVO_WITH_FEEDBACK_V1

/ * > servo met Feedback_V2 <
Het testen van code voor servo met gehackte feedback van interne pot.
Servo kabel aangesloten op digital 2
Positie Feedback kabel aangesloten op analoge 0
Een spanning divider voortbouwen ARef pin met twee 10K weerstanden.
De resulterende analoge verwijzing zal worden ~2.2V (Zie http://arduino.cc/en/Reference/AnalogReference)
Dit zal het verhogen van de resolutie van de potentiometer lezen.
Gebruik de volgende opdrachten op de Toggle tussen het lezen van de servo-feedback
en het lezen van elke andere analoge pin die moet zien 5V als referentie
analogReference(EXTERNAL); analoge 1023 ingesteld voltage dat op de ARef pin
analogReference(DEFAULT);  Hiermee stelt u analoge 1023 op 5V of 3.3V afhankelijk van voeding
*/
#include //import servo bibliotheek

Servo Servo1;                declair de servo!

int feedBack;           gebruikt om servo feedback waarde te houden
int mappedPulse;        gebruikt om de waarde toegewezen tussen servo bereik en graad bereik te houden
int lowEnd;             Servo feedback op 0 graden
int highEnd;            Servo feedback op 180 graden
int lezen [20];
int servoPin1 = 2;
int test1;               General-Purpose int
int test2;
int offset = 0;
int lawaai = 50;

Boole rangeTest = false;

VOID Setup {}

Serial.begin(9600);   uitgang voor seriële initialiseren
analogReference(EXTERNAL);
pinMode (servoPin1, OUTPUT);
Servo1.attach(servoPin1,570,2400);       servo controle op digitale pin 2 inschakelen
setRange();                            Ga test het bereik en de waarden instellen
}

void loop {}
Servo1.write(0);
delay(2000);                       wachten om er te komen
voor (int i = 0; ik < 181; i ++) {/ / doorlopen van graden omhoog
Servo1.write(i);
delay(50);
feedBack = getFeedback();        subroutine glad gegevens
mappedPulse = map(i,0,180,lowEnd,highEnd);  kaart graden setRange() lezingen
offset = mappedPulse - feedBack;            resolutie van toegewezen V werkelijke feedback
printData();
}
voor (int i = 180; ik > 0; ik--) {/ / graden naar beneden doorlopen
Servo1.write(i);
delay(50);
feedBack = getFeedback();
mappedPulse = map(i,0,180,lowEnd,highEnd);
offset = mappedPulse - feedBack;
printData();
}
}

ongeldig printData() {}
Serial.Print(i);
Serial.Print ("=");
Serial.Print(feedBack);
Serial.Print("");
Serial.Print(offset);
Serial.Print("");
Serial.println(mappedPulse);
}

ongeldig setRange() {}
Servo1.write(0);
delay(2000);              wachten voor servo om er te komen
lowEnd = getFeedback();
Servo1.write(180);
delay(2000);              wachten voor servo om er te komen
highEnd = getFeedback();
rangeTest = true;
Serial.Print ("0 =");
Serial.Print(lowEnd);
Serial.Print("");
Serial.Print ("180 =");
Serial.println(highEnd);

}


int getFeedback() {}
int de gemiddelde;
int resultaat;
int test;
Boolean gedaan;

for (int j = 0; j < 20; j ++) {}
lezen van [j] = analogRead(0);    ruwe gegevens ophalen uit servo potentiometer
delay(3);
} / / Sorteer de laag naar hoog in array van lezingen
= false;              duidelijke vlag sorteren
terwijl (gedaan! = true) {/ / eenvoudige swap sorteren, worden de getallen van de laagste tot hoogste gesorteerd
= true;
for (int j = 0; j < 20; j ++) {}
Als ([j] lezen > lezen [j + 1]) {/ / hier nummers sorteren
testen = lezen [j + 1];
lezen van [j + 1] = lezen van [j];
lezen van [j] = test;
= false;
}
}
}
betekenen = 0;
voor (int k = 6; k < 14; k ++) {//discard de hoogste 6 en 6 laagste lezingen
bedoel += lezen [k];
}
resultaat = gemiddelde/8;                  gemiddelde nuttige lezingen
Return(result);
}
EINDE SERVO_WITH_FEEDBACK_V2

Gerelateerde Artikelen

Kubus Servo (G15) hack voor High Speed

Kubus Servo (G15) hack voor High Speed

Dit Instructable zal u begeleiden om te wijzigen van de kubus om te krijgen een hogere snelheid uit normale kubus servo Servo.Stap 1: Word klaar vereiste hulpmiddelenWat u zult moeten:1. een philips schroevendraaier.2. epoxy lijm voor plastic.3. cutt
Eenvoudige DJI Phantom Gimbal Hack gratis

Eenvoudige DJI Phantom Gimbal Hack gratis

Stap 1: Hey Guys,Dit is mijn eerste instructable tot nu toe, en ik dacht dat ik zou doen op iets dat had mij echt in de war. Toen ik eerst kocht het een gimbal van ebay voor mijn dji phantom hebben de gimbal niet een merk of instructies. Toen ik voor
Maak je eigen goedkope servo

Maak je eigen goedkope servo

ik had een probleem met sommige servo's die ik voor mijn arduino gekocht maar ik weet niet waarom, ze maakten sommige vreemde geluiden en werden tekening te veel stroom. Dus besloten heb ik om mijn eigen servo's!. Eerste van alle zijn belangrijk om t
Castle Clash hack IOS Android en iPhone 2014 Online bijgewerkt

Castle Clash hack IOS Android en iPhone 2014 Online bijgewerkt

Hoe gratis hack Castle Clash hack IOS Android en iPhone 2014 Online bijgewerktStap 1: Castle clash hack gratis download voor mobiele apparatenCastle clash hack gratis download voor mobiele apparaten. Castle clash hack gratis downloaden Castle clash h
Omkeerbare No-solderen wijziging van Parallax standaard Servo naar continue rotatie

Omkeerbare No-solderen wijziging van Parallax standaard Servo naar continue rotatie

ik nodig om een aantal Parallax standaard servo's aan continue rotatie voor een kids' robot workshop-project te wijzigen.  Ik kwam met een methode die vereist geen solderen en laat de servo terug om de positie van de operatie indien gewenst te worden
Twee wielen Robot ontwerpen & simuleren

Twee wielen Robot ontwerpen & simuleren

Als je hebt gelezen mijn andere Instructables weet je dat ik heb een liefde voor LED en verlichting. Een ander gebied dat ook gelijktijdig intrigeert en frustreert me is robotica.Twee wielen robots zijn erg populair, omdat ze je veel over Robotica, e
Interactieve Child's mobiele

Interactieve Child's mobiele

wat kun je met fluorescerende acryl als de inspiratie?  We kozen een glow-in-the-dark-baby mobiel, met een begeleidende speelgoed maakt.  Dit project werd afgerond als onderdeel van de Computing en ambachtelijke klasse bij Olin College of Engineering
Vibrerende afstandssensor

Vibrerende afstandssensor

Stel je wakker naast een lichte slaper en je hebt om naar de badkamer maar je bent in een worp zwarte hotelkamer. Zelfs een zaklamp zal wakker hem of haar maar je niet kan houden voor de komende drie uur wanneer het alarm afgaat. Wat als u kon het na
Multi-Functional Star Wars Astromech Droid

Multi-Functional Star Wars Astromech Droid

E4-B4Astromech droid voor het huis.Video links voor mobiele apparaten die de videominiaturen bovenstaande animatie wordt niet afgespeeld:Het maken van E4-B4 Astromech Droid VideoE4-B4: Showcase Video, deel 1E4-B4: Rocket Man VideoE4-B4: Zin in een dr
3D afgedrukt humanoidrobot voor onder 1000.00 USD

3D afgedrukt humanoidrobot voor onder 1000.00 USD

dit idee werd geboren uit mijn eerste 3D gedrukte humanoïde robot project. Mijn 3D gedrukte DARwIn-OP kloon. Ik leerde veel bij het doen van dit project en ik ben nog steeds bezig met het verbeteren van deze robot. Mijn project hadden niettemin een g
DIY Password Managers met behulp van Kurety

DIY Password Managers met behulp van Kurety

Online veiligheid wordt elk jaar steeds belangrijker. Het schijnt als wij groeien exponentieel in technologie doen degenen die willen leven verergeren voor bedrijven en consumenten. Ik vond het mijn plicht om een stap uit de buurt van de crafty DIY e
Hoe start een raket naar de ruimte: binnen BURPG deel 3

Hoe start een raket naar de ruimte: binnen BURPG deel 3

Dit weekend zag de inaugurele testen van de Mk. IIB test platform. Dit is een statische testsysteem ontworpen om ons om te testen de stuwkracht-vectoring systeem dat zal worden gebruikt op de Mk. V-raket, die gaat de ene ruimte. Tijdens het testen, h
Candy Crush geheime gids uw vrienden met hoge Scores Don't Want You To Know About

Candy Crush geheime gids uw vrienden met hoge Scores Don't Want You To Know About

Klik hier nu http://www.youtube.com/watch?v=E2cLTfcgQ2c en krijgen de nummer 1 Candy Crush geheim gids te verslaan alle uw Facebook vrienden topscores 100 procent juridische en volledig Hack gratis techniekenAls u als me bent, hebt u waarschijnlijk g
PROTEI_007

PROTEI_007

Protei_007 is het zevende prototype voor een project genaamd Protei, die een open source is, scharnierend, gesegmenteerd, robotachtige, onbemande, zeilboot, oorspronkelijk gebouwd om te varen tegen de wind, een lang olie-absorberende boom, om te help