Hall effekt sensorer 1: Placera kontroll (5 / 6 steg)

Steg 5: Homing



Även när vi försöker vårt bästa att räkna varje puls kan finnas tillfällen som kan vi missa några och långsamt förlora precision över tiden. För att minimera detta kan vi använda en målsökande rutin! Tanken är att skicka manöverdonet till en förutbestämd position (helt utdragen eller helt infällda läge) och ange räkningarna till ett känt värde. Oftast är det lättast att fullt ut dra tillbaka manöverdonet och räkningarna 0. I koden nedan återställs till maximalt räknar värde när fullt utsträckt och återställs till 0 när helt indragen.

Så du behöver ett sätt att berätta när motorn är på det gränser. Vi kommer här använda den nuvarande avkänning av MegaMoto för att titta på när strömmen sjunker till 0. När den gör det kan vi se att manöverdonet har hit gränslägesbrytaren och slutat röra sig. Vi har en liten räknare kör eftersom ibland nuvarande kan rapportera en falskt 0. Genom att se till att nuvarande är 0 under en längre tid vet vi att motorn verkligen är på en gräns och inte får felaktiga avläsningar.

Se bifogade uppförandekoden och kommentarer för mer information:

#define amp0 A5

#define PWMA0 6
#define PWMB0 5
#define enable0 13 //pins för första MegaMoto

#define switch0 7 //Up för att lägga till räknar
#define VÄXEL1 8 //Down knappen att subtrahera räknas

#define hall0 2 //interrupt stift för hall effekt sensorer

int aktiverar = 0; Aktivera pin för megaMoto
int lowampLimit = 0; //Low gräns att upptäcka när manöverdonet stannar
int ampere = 0; Nuvarande behandlingar
int timedelay [] = {750, 50}; första, regelbundna fördröjning för feedback

int hitLimits = 0;
int hitLimitsmax = 10; //value för att veta när indraget

int räkna [] = {0}. //Actuator
int maxCounts = 1150; //number räknas när fullt utsträckt

int sw [] = {1, 1}; växla upp, växla ner
int [prev] = {0, 0}, //previous switch staten

int currentPos = 0; //current position
int tröskel = 1;
int destination = 0;

bool framlänges = false;
bool bakåt = false; / / motor stater

bool extended = false;
bool indragen = false; //actuator positioner

bool firstRun = true; //first körning av motorn när knappen trycks

void setup() {
pinMode (amp0, ingång);
digitalWrite (amp0, låg); //set nuvarande sensorer
pinMode (PWMA0, OUTPUT);
pinMode (PWMB0, OUTPUT); //set PWM utgångar
pinMode (enable0, produktionen);
digitalWrite (enable0, låg); //set aktivera och tur ombord på OFF

pinMode (switch0, ingång);
pinMode (VÄXEL1, ingång);
digitalWrite (switch0, hög);
digitalWrite (VÄXEL1, hög), //set upp/ner switch, aktivera enternal reläer

pinMode (hall0, ingång);
digitalWrite (hall0, låg), //set hall, set låg starta för stigande kanten
attachInterrupt (0, speed0, RISING); Aktivera Halleffekten interupts

indragen = true; //start indragen
utökade = false;

Serial.BEGIN(9600);
} //end setup

void loop() {
ReadInputs (); //check input knappen, beräkna hastigheter

om (sw [0] == 0 & & sw [1] == 1 & & bakåt == false) destination = currentPos - 115; //dont Ändra destination när du flyttar
annars om (sw [0] == 1 & & sw [1] == 0 & & framåt == false) destination = currentPos + 115; //dont Ändra destination när du flyttar

Serial.Print ("antal [0]"); Serial.println(Count[0]);
Serial.Print ("currentPos"); Serial.println(currentPos);
Serial.Print ("destination"); Serial.println(destination);

om ((destination > = (currentPos - tröskel)) & & (destination < = (currentPos + tröskel))) stopMoving (); //stop om du är tillräckligt nära
annars om (destination > currentPos) goForwards (); //move om du behöver
annars om (destination < currentPos) goBackwards (); //move om du behöver

för (int jag = 0; jag < = 1; i ++) prev [i] = sw [i]; lagra switch värden som tidigare värden
} //end loop

void speed0() {
om (framlänges == true) räkna [0] ++; om flytta framåt, lägga till punkter
annars om (bakåt == true) räkna [0]--; om flyttar tillbaka, subtrahera räknas
} //end speed0

void ReadInputs() {
ampere = analogRead (amp0), //read nuvarande
SW [0] = digitalRead(switch0), sw [1] = digitalRead (VÄXEL1), //check växlar
currentPos = räkna [0]; //set där du är
} //end läsa ingångar

void goForwards()
{
framåt = sant;
baklänges = false; //set resa riktning
getFeedback (); //check strömförbrukning
digitalWrite (enable0, hög); //enable styrelsen
analogWrite (PWMA0, 255);
analogWrite (PWMB0, 0); //apply hastigheter
} //end goForwards

void goBackwards()
{
framåt = false;
baklänges = true; //set resa riktning
getFeedback (); //check strömförbrukning
digitalWrite (enable0, hög); //enable styrelsen
analogWrite (PWMA0, 0);
analogWrite (PWMB0, 255); //apply hastigheter
} //end goBackwards

void stopMoving()
{
framåt = false;
baklänges = false; //set resa riktning
analogWrite (PWMA0, 0);
analogWrite (PWMB0, 0); //set hastigheter till 0
Delay(10);
digitalWrite (enable0, låg); //disable styrelsen
} //end stopMoving

void getFeedback()
{
ampere = analogRead(amp0);
Serial.Print ("Amp avläsningar -"), Serial.println(amps);

om (ampere < = lowampLimit & & hitLimits < hitLimitsmax) hitLimits = hitLimits + 1.
annat hitLimits = 0;

om (hitLimits == hitLimitsmax & & bakåt == true)
{
Serial.println("RETRACTED");
indragen = sant;
räkna [0] = 0; Återställ räknaren när homing
destination = 0;
}

om (hitLimits == hitLimitsmax & & framåt == true)
{
Serial.println("Extended");
utökade = sant;
räkna [0] = maxCounts; Återställ räknaren när utsträckt
destination = maxCounts;
}
} //end getFeedback

Se Steg
Relaterade Ämnen

Dörr aktiverad LED belysning med hjälp av Hall effekt sensorer

jag har varit mening att göra något häftigt för mitt studentrum denna kommande termin och beslutade att några anpassade garderob lampor skulle se bra ut. I detta Instructable, ska jag visa dig hur man gör några fina LED-lampor som tänds automatiskt m...

Magno-Sniffer (magnetiska Sniffer Probe Whistler sak med A Hall effekt Sensor)

arbeta med magneter och vill ha ett snabbt sätt att berätta deras NORTHs från deras SOUTHs? Vill du få en uppfattning om deras fältet former? Som gör weeeeeeeooooooeeeeeeoooo ljud?Bygga en Magno-Sniffer med en hall effekt sensor, 555 oscillator krets...

Hall effekt sensorer 3: PID Control

I detta Instructable kommer vi avsluta vår serie i tre delar på hall effekt sensorer genom att vår ståndpunkt kontroll PID control. Vi kommer att gå över de tre delarna av PID control (proportionell, Integral, derivat) och hur de påverkar klivasvaret...

Hall effekt sensorer 2: Synkroniserar rörelse

I detta Instructable utökar vi på vad vi lärt oss i hall effekt införandet Instructable förra veckan. Vi kommer använda hall effekterna på två manöverdon för synkronisering av manöverdonen. Vi kommer att följa båda dessa punkter, och om räkningarna f...

Elektrisk cykel Hub Motor - hur man byter en Hall-effekt Sensor

borstlösa motorer använda elektroniska styrenheter i stället för borstsystem för att kontrollera tidpunkten och fördelningen av makt till motorn. Det gör använder vissa controller system hall-effekt sensorer inuti navet som spårar motorns position. D...

Övervakning bostäder vattenförbrukning genom att läsa kommunala vattenmätare med Hall effekt sensor + Arduino

om du vill övervaka din vattenförbrukning, som en del av en DIY smart hemautomation och övervaka projekt, då detta instructable kan hjälpa dig att uppnå detta mål. Den lösning som beskrivs här är icke-invasiv, använder din befintliga kommunala vatten...

Fläkt RPM med inre hall effekt sensor och Arduino (Intro till hårdvara avbryta och LCD display)

För mitt andra projekt för arbete, jag var tvungen att mäta rotationshastigheten av rotoren i varv Per minut (RPM) av en modifierad dator fläkt. Den hade tre kablarna kommer ut och som kryssat mig som kanske har något sätt att kontrollera sin hastigh...

Magnetiska pendel (med hall effekt sensor)

Bygga denna enkla Magnetiska pendel med mycket få komponenter. Halleffekten sensor används för att upptäcka förekomsten av magnetfältoch "push" pendeln i exakt ögonblick. Elektromagnet är "ON" under endast 20mS och batteri power avlopp...

Hur man mäter AC nuvarande med Hall effekt Sensor med Arduino eller andra gemensamma Microcontrollers

Vänligen se ett nytt enklare tillvägagångssätt härMål: Detta Instructable visar hur att göra en gränssnittet box som, när skarvas i en förlängningssladd, tillåter gemensamma mikrokontroller som Arduino att mäta AC nuvarande som DC spänning signal pro...

Förenklad Arduino AC ström mätning med hjälp av ACS712 Hall effekt Sensor

Detta är en förenklad metod till min tidigare Instructable om mäta AC nuvarande med ACS712 nuvarande sensor... länkFörenklingar är:Att avskaffa särskilt Signal konditionering kretskort - istället ska vi använda funktionen "RunningStatistics" i A...

Billigaste ljud effekt Sensor under

medan du gör DIY projekt själv ibland behöver du några sensorer. Detta ljud effekt sensor är billigaste sensor du någonsin har sett. En sådan sensor hittar du på 12$-15$. Men detta är bara kostar 2$.Steg 1: Nödvändiga komponenter lista Nödvändiga kom...

Raspberry Pi A1332 Precision Hall - effekt vinkel sensorn Java Tutorial

A1332 är en 360° kontaktlösa högupplösta programmerbara magnetiska vinkel lägesgivare. Den är utformad för digitala system en I2C-gränssnittet. Det är byggt på cirkulär vertikala Hall (CVH) teknik och en programmerbara mikroprocessorn baserad signalb...

Programmera Linker Hall Sensor på pcDuino med Python

Linker Hall Sensor Modulen är en Hall sensor.En Hall effekt sensor är en givare som varierar sitt utspänning som svar på ett magnetfält. Hall effekt sensorer används för närhet växla, positionering, hastighet upptäckt och aktuella miljöavkänning appl...

Halleffekten sensor

En Hall effekt sensor är en sensor som svar på ett magnetfält.När hall sensorn placeras i ett magnetfält Elektronerna rinner genom att flytta till ena sidan av sensorn. Sensorn kommer då ha en positiv och en negativ sida och skapa en spänning, känd s...

Billigt och enkelt varvräknare (RPM Sensor) för borstad DC motorer

jag kom bara upp med en mycket enkel, lätt att genomföra, och mycket billigt sätt att övervaka VARVTALET på borstad DC-motorer. Det skulle också fungera på borstlösa motorer men det finns bättre sätt för dem (räknande fasbyte) så jag skulle bara reko...

Rädda världen en droppe i taget, del 3: Nätverk din sensorer

För detta projekt arbetat jag tillsammans med Will Buchanan - delarna 1 och 2 - att skapa ett hem automationssystem som spår vatten användning över fixturer i hemmet, (handfat, dusch, WC etc). Med hjälp av visuella köer (inklusive ljus färg, längd oc...

Hur man använder vatten flöde Sensor - Arduino handledning

I denna tutorial får du lära dig att använda ett vatten flöde sensor med en Arduino ombord.Vatten flödessensorn består av en plast ventilhuset, en vatten rotor och en hall-effekt sensor. När vattnet flödar genom rotorn, rotor rullar och hastigheten p...

Halleffekten Sensor - NI Multisim

Bygga ett magnetiskt växla med en Hall effekt sensor i Multisim. 5 till 10 minuters nybörjare special!En Hall effekt sensor är en givare som varierar sitt utspänning som svar på ett magnetfält. Hall effekt sensorer är begagnade forproximity växla, po...

Dr Strange kostym

En Dr. konstigt kostym väcks till liv med trollformler med microcontrollers, lysdioder och sensorer!Se, trollkarl högsta!Med filmen kommer snart, sa en vän till mig min nästa kostym bör vara Dr Strange... Jag tror inte att han menade mig att ta honom...