Kontrollera placeringen av ett ställdon med en Analog Sensor (2 / 3 steg)

Steg 2: programmering



Tanken med programmet är att ta en läsning av potentiometern (eller andra analog sensor), ta en läsning av manöverdon position och jämföra dem. Om de är olika, utöka/dra tillbaka manöverdonet för att matcha dem. Vi kommer att använda funktionen map(), för att förenkla jämförelsen.

Funktionen map() tar ett värdeintervall, och omvandlar dem till olika områden.

Till exempel: Säga ger din sensor insatsen av 0-1023. Men din manöverdonet ger feedback från 400-600. Du vill använda funktionen map() på potentiometer feedback, för att släppa intervallet från 0-1023 till 400-600. Detta gör det möjligt att ha en enklare jämförelse till sensorn. Det andra alternativet är att öka utbudet av manöverdonet, från 400-600 upp till 0-1023. Funktionen skulle se ut: karta (variabel, 400,600,0,1023);

Om du tappar en signal, förlorar du precision. Om sensorn ger värden från 0-1000, och du släppa den till 400-600, ändrar du från en 1000 punkt utbud till ett 200 poäng. Som kommer att förvärra precision med en faktor 5. Sensorn kommer att behöva ändra 5 gånger, från 200, 201, 202, 203, 204, 205 innan det ändras från 440 till 441. Om du har ett exakt program, detta kan orsaka problem, men i de flesta fall bör det vara OK.

Här är koden med kommentarer förklara varje del, koden är också fäst:

/ * Exempelkod att styra placeringen av ett ställdon med potentiometer respons med hjälp av en MegaMoto.

Huvudloop för detta program kontrollerar potentiometern och flyttar manöverdonet därmed.

Skrivet av progressiva automatiseringar

Denna exempelkod är offentlig.
*/

CONST int feedback = A0; potentiometer från manöverdonet
CONST int pot = A1; potten från spjäll

CONST int aktiverar = 8.
CONST int PWMA = 11;
CONST int PWMB = 3;

int actMax = 760;
int actMin = 250; //positions av ställdon

int potMin = 0;
int potMax = 1023;

int precision = 2; //how nära att få det slutliga värdet
int checkingInterval = 50, //how ofta ståndpunkt är markerade (millisekunder)

int rawcurrentPosition = 0;
int aktuellaposition = 0;
int rawdestination = 0;
int destination = 0;
int skillnaden = 0; //values för att veta läge

void setup()
{
pinMode (feedback, INPUT); //feedback från manöverdonet
pinMode (potten, indata); //feedback från potentiometer
pinMode (aktiverar, OUTPUT);
pinMode (PWMA, OUTPUT);
pinMode (PWMB, OUTPUT); //three stift för MegaMoto
digitalWrite(enable,HIGH);
Serial.BEGIN(9600);
}

void loop()
{
destination = getDestination();
aktuellaposition = analogRead (feedback); //check där du är
Serial.Print ("Position");
Serial.println(analogRead(feedback));
skillnaden = destination - aktuellaposition; //find ut hur långt du är från destinationen
om (aktuellaposition > destination) pullActuatorUntilStop(destination); / / välja vilken åtgärd som ska vidtas
annars om (aktuellaposition < destination) pushActuatorUntilStop(destination);
annars om (skillnaden < precision & & skillnaden >-precision) stopActuator();
} //end ogiltig loop

int getDestination()
{
rawdestination = analogRead (kruka); //read potentiometern att få destinationen
destination = karta (rawdestination, potMin, potMax, actMin, actMax); //convert potentiometer feedback att matcha manöverdonet
Return(destination);
} //end getDestination

void pushActuatorUntilStop(int destination)
{
destination = getDestination();
int temp = analogRead(feedback);
skillnaden = destination - temp, //check skillnad att se om Fortsätt att flytta, eller stoppa

medan (skillnaden > precision || skillnaden <-precision)
{
destination = getDestination();
Temp = analogRead(feedback); fortsätta kolla skillnaden
skillnaden = destination - temp;
pushActuator();
} //end medan

Delay(25);
stopActuator();
} //end pushActuatorUntilStop

void pullActuatorUntilStop(int destination)
{
destination = getDestination();
int temp = analogRead(feedback); Kolla skillnaden att se om Fortsätt att flytta, eller stoppa
skillnaden = destination - temp;

medan (skillnaden > precision || skillnaden <-precision)
{
destination = getDestination();
Temp = analogRead(feedback); fortsätta kolla skillnaden
skillnaden = destination - temp;
pullActuator();
} //end medan

Delay(25);
stopActuator();
} //end pullActuatorUntilStop

void stopActuator()
{
analogWrite(PWMA,0);
analogWrite(PWMB,0);
} //end stopActuator

void pushActuator()
{
analogWrite(PWMB,255);
analogWrite(PWMA,0);
} //end pushActuator

void pullActuator()
{
analogWrite(PWMB,0);
analogWrite(PWMA,255);
} //end pullActuator

Se Steg
Relaterade Ämnen

Hur man gör ett Arduino Instrument (med en Ultrasonic Sensor)

Detta instrument är gjord med en HC-SR04 Ultrasonic sensor, en Force känsliga Resistor och en Piezo Summer. Du trycker på kraft sensorn att börja spela musik, och vifta med handen framför ultraljud sensorn på olika avstånd att spela olika toner. Denn...

Övervaka belastning Feedback-ett ställdon

I detta Instructable kommer vi att lära hur man kan övervaka mängden nuvarande att ett ställdon med, så att du kan berätta hur mycket kraft det tillämpar. Detta är en mer avancerad projekt, som kräver djupgående kodning och kalibrera.Den programmerin...

Spåra en ljuskälla med ett ställdon

.. .eller kanske det borde heta "Med en gammal solcell från en helt korroderade trädgård ljus som en ljussensor". :)I detta instructable, jag ska bygga på min tidigare och visar hur du kan göra ett manöverdon hitta största ljuskällan. Verkligen...

Kontrollera alla ljus eller elektrisk apparat med du Tablet PC eller smartphone (wifi)

Kontrollera alla ljus eller elektrisk apparat med du Tablet PC eller smartphone (wifi) med hjälp av arduino, blynk och en wemos / ESP8266 styrelsenI den här guiden kommer vi att göra något jag kallar en wifi kontrollerad ac switch. (Men den fungerar...

Styra en stor linjära ställdon med Arduino

Denna Arduino linjära ställdon handledning visar hur man gör grundläggande manuell kontroll av en stor linjära ställdon med hjälp av en Arduino och två knappar. I den första uppsättningen av koden, den första knappen utökar manöverdonet och den andra...

Styra en liten linjära ställdon med Arduino

Denna Arduino linjära ställdon handledning visar hur man styr en Firgelli små linjära ställdon med en Arduino kompatibel styrelse och olika indata sensorer, inklusive en Slider och Rotation knopp för direkta kontroll, Joystick för inkrementell rörels...

Hur fungerar marktäckning effekt ogräs planteringstäthet jämfört med ett läge med ingen kompost?

Någon gång under året, alla någon gång doftar kompost som hade fastställts någon gång under dagen, men tror man varför folk lägga marktäckning ner ändå. Är det för färg, lägga textur, eller bara för att det ser bra ut. Bra kompost används av alla des...

Att göra ett enkelt program med hjälp av Win32 API

ofta det enklaste sättet att lära sig använda ett programmeringsgränssnitt är att kodifiera ett enkelt exempel. I det här fallet kommer vi att lära av Win32 API av programmering en enkel heltal miniräknare med hjälp av Visual Studio 2010. Eftersom va...

Hur att bygga din egen kemilaboratorium från Scratch och ett enkelt Experiment med det att göra!

Tror du inte att ha ditt eget kemiskt laboratorium är en riktigt cool sak? Är det inte?Som vi alla ser i filmer, ser vi alla dessa forskare och superhjältar i deras källare som arbetar hårt i någon form av lab, gör några riktigt coola typen av grejer...

Kan inte skriva svenska korrekt, på ett japanskt tangentbord, med engelska Windows!

Så vill du skriva engelska, på ett japanskt tangentbord, med engelska Windows.Varför vill du göra det?... Lätt!Om du bor eller arbetar i Japan, har du lite lätt val än att köpa ett japanskt tangentbord.Man skulle kunna tro det skulle vara lätt att ba...

Synthesizer: Ett tangentbord UI med ljudutgång

Vi byggde ett tangentbord UI med fem syntes lägen alla i Javascript, för att visa kraften i med ljudutgång hårdvara stiften av Kinoma skapa. Om du vill köra i Kinoma skapa simulatorn kan du hämta det open source-projektet nu.Använda ljud hårdvara PIN...

Hur man öppnar ett lås med en Cola kan

https://www.youtube.com/watch?v=wKtmvstcaR0&feature=youtu.beSteg 1: för att öppna ett lås med en Cola kan du behöver! Steg 2: Om du lämnade din nyckel från hänglås och tänka över hur man låsa upp den, sitta och dricka Coca-Cola inte genom bort kan bi...

Öppna ett lås med en skiftnyckel - Life Hack

Öppna ett lås med en skiftnyckel? Ja! Det är möjligt. Tyckte du din hänglås är säkert? Jag tror inte det. Du har förlorat dina nycklar och behöver en lösning. Prova detta!Titta på här: Öppnar ett lås med en skiftnyckelMen var försiktig! Skada inte di...

Hur man använder ett USB-tangentbord med Acer Iconia A500 tabletten

Jag gjorde en snabb video som visar hur du använder ett USB-tangentbord med Tablet Acer Iconia A500.Om du har några frågor vänligen Låt mig veta.Nu att Acer har sänt ut uppdateringen till Honeycomb 3.1 kan du också koppla ihop och använda ett bluetoo...

Kontrollera en Kwikset Smartcode låsa med en Intel Edison

I detta Instructable ska vi visa dig hur man styr ett Kwikset ZigBee lås med Intel Edison.Obs: Det ursprungliga arbetet för detta Instructable gjordes under Intel IoT Roadshow Hackaton på 3/14/15.För vår installation använt vi detta lås från Kwikset...

Hur man gör ett hjärta med lysdioder

Hej där,Detta mitt första försök att lägga till något till platsen, det kanske inte är bra, men nästa då det blir bättre :)Min fru frågade mig en gång att göra något för henne med hjälp av lysdioder kommer jag antar att jag gjort rätt för henne :)pro...

Hur man gör ett bälte med silvertejp

jag kommer att lära dig hur man gör ett bälte med silvertejpSteg 1: Steg ett:Du behöver.två av er favorit duct tape färger eller ensinge hole punch (eller genomföring press)saxmåttbandBältesspänne (från gamla bälte som DOS inte passar dig längre)skär...

Isolera ett hönshus med ull eller alpacka Fiber

Vintern är i full gång, du isolera hönshuset? Det finns fortfarande tid!Ursprungligen postat på FiberArtsy.comHur man isolera ett hönshus med ull eller alpacka FiberFolk frågar alltid mig vad de kan göra med ull eller alpacka fiber sekunder eller tre...

Hur man gör ett LUFTGEVÄR med en plastflaska

https://www.youtube.com/watch?v=X0d4iUqxp1c&feature=youtu.beSteg 1: För att göra ett LUFTGEVÄR med en plastflaska du behöver! En enkel pneumatisk pistol kunde göras med egna händer med Coca-Cola plastflaska 0,5 eller någon annan läsk flaska.Steg 2: S...