Servo Feedback hacka (gratis) (7 / 8 steg)

Steg 7: Microcontroller Test



På första provning, feedback från inre servo potentiometern fungerar jäkligt bra utan alltför mycket programvara tweaking. Utjämnande filtret som jag byggde i programvara tar 20 avläsningar, ignorerar den högsta och lägsta 6 värden och sedan i genomsnitt de återstående 8. Jag fokuserade på att få mätvärden medan servo var fortfarande för att testa upplösning och utjämning funktionalitet. Det bör finnas tillräckligt kod här för dig att få dig i trubbel:). Anteckningar nedan, koden följer efter i linje.

Anteckningar-kod: ServoWithFeedback_V1

Detta är det första försöket (Ja, inte först. Jag skulle inte lägga den oredan;) och syftet är att ta en en läsning av servo feedback position, lagra alla 180 poäng i en array och sedan jämföra matrisen till nya avläsningar som servo flyttar till dem. Testning för att jämna funktionalitet och sensor drift.

Anteckningar-kod: ServoWithFeedback_V2

Här jag förenkla inledande rad förvärv. Jag tar en hög och låg läser antingen extrem spänna, och oss map() för att korrelera det med gradersvinklar. Detta fungerar mycket bra. Jag har satt upp en sopa som jämför aktuella sensormätningar från feedback tråd att det förväntade värdet som returneras av map(). Förskjutningen är minimal (-1 till 1) på stigande loop. På de fallande loop är förskjutningen mer lik -4 till -6. Detta är ganska konsekvent och kan bearbetas runt i programvara. Jag fick möjlighet att tillämpa vissa lätt tryck på servo horn mot och motsatta riktningen av reser, och fick några fina värden som styrker min tillämpad kraft.
Varsågod, ha kul.

/ * > servo med Feedback_V1 <
Testa kod för servo med hackade feedback från inre potten.
Servo kontroll kabel ansluten till digital 2
Ståndpunkten Feedback kabel ansluten till analoga 0
Bygga en spänningsavdelare på ARef stift med två 10K motstånd.
Den resulterande analog referensen kommer att vara ~2.2V (se http://arduino.cc/en/Reference/AnalogReference)
Detta kommer att öka upplösningen på potentiometern läsning.
Använd följande kommandon till toggel mellan att läsa servo feedback
och läsa andra analoga stift som behöver se 5V som referens
analogReference(EXTERNAL); anger analoga 1023 till spänning på ARef stift
analogReference(DEFAULT); anger analoga 1023 till 5V eller 3.3V beroende på strömförsörjning
*/
#include //import servo bibliotek

Servo Servo1; declair servo!
int läsa [20].
int Feedback [181].
int servoPin1 = 2;
int-test. generella int
int offset = 0;
int buller = 50;
int menar;
int resultatet;

Boolean gjort;

void setup() {
Serial.BEGIN(9600); initiera serial output
analogReference(EXTERNAL);
pinMode (servoPin1, produktionen);
Servo1.attach(servoPin1,570,2400); slå på servo kontroll på digital pin 2
setRange(); gå testa och ange värden
}

void loop() {

Servo1.write(0);
Delay(2000);
för (int jag = 0; jag < = 180, jag += 10) {
Servo1.write(i);
fördröjning (50);
testa = 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("");
}

void setRange() {

Servo1.write(0); Skicka servo till 0 graders position
Delay(2000); ge servo tillräckligt med tid för att komma dit
för (int jag = 0; jag < = 180, i ++) {
Servo1.write(i); Skicka nästa grad puls till servo
Delay(50); låta saker bosätta
Feedback [i] = getFeedback(); Läs den servo feedbacken
Serial.Print(i);
Serial.Print ("=");
Serial.println(feedback[i]);
}
}

int getFeedback() {

för (int j = 0; j < 20; j ++) {
läsa [j] = analogRead(0); få rådata från servo potentiometer
Delay(3);
} / / sortera arrayen avläsningar låg till hög i
= false; Rensa sortering flagga
medan (gjort! = sant) {/ / enkel swap sorterar siffror från lägsta till högsta
= sant;
för (int j = 0; j < 20; j ++) {
om (läst [j] > läsa [j + 1]) {/ / sortering nummer här
testa = läsning [j + 1];
läsa [j + 1] = läsning [j];
läsa [j] = test;
= false;
}
}
}
för (int j = 0; j < 20; j ++) {//un-comment denna för-slinga för att se den råa beställde data
Serial.Print(i);
Serial.Print("");
Serial.println(Reading[j]);
// }
menar = 0;
för (int k = 6; k < 14; k ++) {//discard 6 högsta och lägsta 6 avläsningar
menar += läsning [k];
}
resultat = medelvärdet/8. genomsnittliga användbara mätvärden
returnera (resultat);
}
SLUTET AV SERVO_WITH_FEEDBACK_V1

/ * > servo med Feedback_V2 <
Testa kod för servo med hackade feedback från inre potten.
Servo kontroll kabel ansluten till digital 2
Ståndpunkten Feedback kabel ansluten till analoga 0
Bygga en spänningsavdelare på ARef stift med två 10K motstånd.
Den resulterande analog referensen kommer att vara ~2.2V (se http://arduino.cc/en/Reference/AnalogReference)
Detta kommer att öka upplösningen på potentiometern läsning.
Använd följande kommandon till toggel mellan att läsa servo feedback
och läsa andra analoga stift som behöver se 5V som referens
analogReference(EXTERNAL); anger analoga 1023 till spänning på ARef stift
analogReference(DEFAULT); anger analoga 1023 till 5V eller 3.3V beroende på strömförsörjning
*/
#include //import servo bibliotek

Servo Servo1; declair servo!

int feedBack; används för att hålla servo feedback värde
int mappedPulse; används för att hålla värdet mappas mellan servo och grad
int lowEnd; servo feedback vid 0 grader
int highEnd; servo feedback på 180 grader
int läsa [20].
int servoPin1 = 2;
int test1; generella int
int test2;
int offset = 0;
int buller = 50;

booleska rangeTest = false;

void setup() {

Serial.BEGIN(9600); initiera serial output
analogReference(EXTERNAL);
pinMode (servoPin1, produktionen);
Servo1.attach(servoPin1,570,2400); slå på servo kontroll på digital pin 2
setRange(); gå testa och ange värden
}

void loop() {
Servo1.write(0);
Delay(2000); vänta att få det
för (int jag = 0; jag < 181; i ++) {/ / loop genom grader går upp
Servo1.write(i);
Delay(50);
feedBack = getFeedback(); subrutin slätar data
mappedPulse = map(i,0,180,lowEnd,highEnd); karta grader till setRange() läsningar
offset = mappedPulse - feedBack; resolution av mappade V faktiska feedback
printData();
}
för (int jag = 180, jag > 0; i--) {/ / loop genom grader går ner
Servo1.write(i);
Delay(50);
feedBack = getFeedback();
mappedPulse = map(i,0,180,lowEnd,highEnd);
offset = mappedPulse - feedBack;
printData();
}
}

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

void setRange() {
Servo1.write(0);
Delay(2000); vänta på servo att komma dit
lowEnd = getFeedback();
Servo1.write(180);
Delay(2000); vänta på servo att komma dit
highEnd = getFeedback();
rangeTest = sant;
Serial.Print ("0 =");
Serial.Print(lowEnd);
Serial.Print("");
Serial.Print ("180 =");
Serial.println(highEnd);

}

int getFeedback() {
int menar;
int resultatet;
int-test.
Boolean gjort;

för (int j = 0; j < 20; j ++) {
läsa [j] = analogRead(0); få rådata från servo potentiometer
Delay(3);
} / / sortera arrayen avläsningar låg till hög i
= false; Rensa sortering flagga
medan (gjort! = sant) {/ / enkel swap sortera, sorterar siffror från lägsta till högsta
= sant;
för (int j = 0; j < 20; j ++) {
om (läst [j] > läsa [j + 1]) {/ / sortering nummer här
testa = läsning [j + 1];
läsa [j + 1] = läsning [j];
läsa [j] = test;
= false;
}
}
}
menar = 0;
för (int k = 6; k < 14; k ++) {//discard 6 högsta och lägsta 6 avläsningar
menar += läsning [k];
}
resultat = medelvärdet/8. genomsnittliga användbara mätvärden
Return(Result);
}
SLUTET SERVO_WITH_FEEDBACK_V2

Se Steg
Relaterade Ämnen

Gör din egen billiga servo

jag hade problem med några servon som jag köpte för min arduino men jag vet inte varför, de gjorde några konstiga ljud och drar för mycket ström. Så jag bestämde mig att göra min egen servon!. Först av alla dess viktigt att veta exakt hur en servo fu...

Castle Clash hacka IOS Android och iPhone 2014 Online uppdaterad

Hur man gratis hacka slottet Clash hacka IOS Android och iPhone 2014 Online uppdateradSteg 1: Castle konflikt hacka gratis nedladdning för mobila enheterCastle konflikt hacka gratis nedladdning för mobila enheter. Castle konflikt hacka gratis nedladd...

Vändbar nr-lödning modifiering av Parallax Standard Servo till kontinuerlig Rotation

jag behövde för att ändra ett antal Parallax standard servon till kontinuerlig rotation för en robot workshop projekt. Jag kom upp med en metod som inte kräver någon lödning och tillåter servo ändras tillbaka för att placera drift om så önskas. Följa...

Två hjul Robot Design & simulera

Om du har läst min andra Instructables vet du jag har en kärlek för LED och belysning. Ett annat område som också samtidigt intriger och frustrerar mig är robotics.Två hjul robotar är mycket populära som de kan lära dig mycket om robotik, elektronik...

Dual Axis transistoriserad Solar Tracker

Denna design använder 16 transistorer, 8 per board, för pan och tilt axlar.Ramen är tillverkad av 25 mm² aluminiumrör med 90° Connect-It hörnet bitar och M6 gängade rostfritt stål stång används för att rotera båda yxor.Denna konstruktion var avsedd a...

Vibrerande avstånd Sensor

Föreställ dig att vakna bredvid en ljus sovvagn och du har att få till badrummet men du är i en pitch black hotellrum. Även en ficklampa kommer vakna honom eller henne men du kan inte hålla det för de närmaste tre timmarna när larmet går bort. Tänk o...

Multi-Functional Star Wars Astromech Droid

E4-B4Astromechdroid för hemmet.Videolänkar för mobila enheter som inte kommer att spela video bilderna ovan:Tillverkningen av E4-B4 Astromech Droid VideoE4-B4: Showcase Video, en del 1E4-B4: Rocket Man VideoE4-B4: Sugen på en Drink?E4-B4: Dome viftar...

Arduino kaffebryggare

Jag gjorde detta projekt eftersom det var irriterande att starta maskinen, än komma tillbaka 1 minut senare när kaffemaskinen är varmt nog att slå på switchen. Aktivera switchen för 10 sekunder, sedan stänga av det tillbaka så maskinen blir varm igen...

Kurety kryptering säkerhet

Online-säkerhet blir allt viktigare varje år. Det verkar som vi växer exponentiellt i teknik så gör de som vill göra livet värre för företag och konsumenter. Jag kände att det var min plikt att steg bort från den listig DIY och efter något som kan gy...

Candy krossa Secret Guide dina vänner med höga poäng vill inte att du veta om

Klicka här nu http://www.youtube.com/watch?v=E2cLTfcgQ2c och få The nummer 1 godis krossa Secret Guide till slå alla dina Facebook vänner höga poäng 100 procent laglig och helt hacka gratis teknikerOm du är som mig, har du förmodligen sett andra guid...

Hacka din servo v2.00 lägga 10-bitars inkrementellt / absolut encoder feedback till din hobby servo.

Ändrad kontinuerlig rotation servon används i stor utsträckning av roboticists på grund av deras liten formfaktor, slutna motor-växellåda, enkel montering och hög tillgänglighet. Vissa användare hålla den ursprungliga drivelektronik och elementet pot...

Hacka din servo V1.00 - förvandla din servo till en kraftfull linjärt ställdon

Förutsatt att du har verktygen och servo kan du byggt detta för under ett par dollar. Manöverdonet fördjupa med en hastighet av ca 50mm/min. Det är ganska långsamt men mycket kraftfull. Titta på min video i slutet av inlägget där små manöverdonet lyf...

Hur till hacka RC bil mottagare Via 2,4 GHz NRF24L01 Arduino del 2 Rx + Servo + ESC

Detta är fortsatt anvisningen av "hur till hacka RC bil sändaren via 2,4 GHz nRF24L01 Arduino part1 Tx"Prerequisite anvisningen har infört hur till hacka RC bil sändaren med hjälp av nRF24L01 modul för Arduino Nano.I denna session kommer vi att...

Life Hack: Hur man får en gratis Redbox film

Alla älskar gratis saker. Här är ett enkelt liv hacka till få en gratis film på Redbox.Steg 1: Den enda åtgärdDet finns bara ett enkelt steg till att få en gratis film på Redbox.När den frågar för en promo kod, skriv i: dvdonme* Valfritt steg - på Wa...

Hacka en servo

Servon är små rutor som har en DC-motor inuti och en växellåda, den har också en potentiometer som spårar sin position och gör dem perfekta för att gå till specifika vinklar. Men det finns en nackdel, det kan inte flytta förbi 360 grader så det är vä...

Få "Gratis" Pay-per view-kanaler! Den ultimata fjärrkontroll hacka

här är en Instructable som jag har med framgång gjort många gånger. Men först ett par varning anteckningar du kan vilja till överväga innan du försöker det själv. Först, detta kan endast göras med TV-apparater som har pay per view-kanaler direkt geno...

Hur till hacka en servo för kontinuerlig rotation - TowerPro MG995

varför skulle du vill ha eller behöver ändra din perfekt bra servo? Det visar sig att servomotorer är bra lite redskap motorer som kan ansluta direkt till en mikrokontroller utan behov av en motor drivkrets. Problemet är att servomotorer är gjorda at...

Hacka en TowerPro Micro Servo för att snurra 360 / kontinuerlig Rotation

Hej stötarna! Sedan har jag fått min servon, har jag haft två som jag avsätta för dataintrång. Så, kommer till min favorit hemsida för hjälp, jag var grymt besviken när jag inte kunde inte hitta någon instructables på hur till mod en micro servo. Eft...

HiTec Servo hacka

detta är en snabb och enkel genomgång om hur du ändrar ett HiTec Servo och göra det en vanlig dc motor med redskap.För att se hur du kan kontrollera besök din motors med Arduino detta instructable:www.guilhermemartins.netSteg 1: 1. Säg hej till din s...