Övervaka belastning Feedback-ett ställdon (4 / 5 steg)
Steg 4: kalibrering
Det finns några ändringar du kan göra för att göra denna kod mer lämpade för din ansökan.
Den första sak att göra är inställd den nuvarande maxgräns. För att ta reda på vilket värde du vill ange det på, behöver du göra några tester. Det enklaste sättet är att använda Arduino exempelkod "AnalogReadSerial", och titta på serial bildskärmen för att se vad feedbacken är från motorn. När du vet det värde som du vill sluta på, kan du ställa in den i rutinen void setup() genom att ändra värdet maxAmps.
Ett annat alternativ är att göra gränsen justerbar. Om du bifogar en potentiometer till Arduino på en analog stift, kan du variera max ampere genom att variera potentiometern. För att göra så, behöver du lägga till en förklaring i början för att ställa in PIN-koden potentiometer, som så:
CONST int CPin1 = A5; motoriska feedback
CONST int Pot = 4; potentiometer för feedback justering
När det är det, måste du sätta "pinMode (kruka, indata);" in i void setup() rutin. När det är det, kan du använda analogRead() gränsvärde för den. Varje gång koden loopar, uppdateras det max strömstyrkan. Det skulle se ut så här:
void loop() {
maxAmps = analogRead(Pot);
latchButtons (); //check knappar, se om vi behöver flytta
moveMotor (); //check lås, flytta motor in eller ut
} //end huvudloop
En annan inställning kan du redigera är debounce timers, att göra knappar mer eller mindre mottaglig. Ändra värdet debounceTime, i början av programmet. Om du gör det högre värdet, knappen kan pressas långsammare, utan att det registreras två gånger. Om värdet är för högt, måste du vänta länge innan det kommer att registrera tryck på knapp igen. Om värdet är för lågt, och du trycker på knappen långsamt, kan det registrera två gånger och starta/stoppa motorn omedelbart. Att hålla värdet mellan 300 och 1000 är ett bra utbud.
int debounceTime = 300; belopp till Dämpningstid
lång lastButtonpress = 0; timer för debouncing
lång currentTimedebounce = 0;
Den sista sak att ändra är variabeln hitLimitsmax. Variabeln används att berätta när manöverdonet är i fullt infällda läge eller helt utdragen läget. När manöverdonet är i en av dessa positioner, kommer nuvarande monitorn att läsa 0 ampere. Genom att justera den hitLimitsmax variabeln, kan du ange hur lång tid det tar för manöverdonet att inse att det är på gränsen.
I idealfallet skulle gränsen kunna ställas in på 1. Så snart feedbacken är 0, stoppar manöverdonet. Om du har en låg strömstyrka ställdon (~ 1A), på grund av fluktuationer i den aktuella behandlingen, nuvarande kan läsas som 0 även när manöverdonet är i rörelse. Detta skulle orsaka manöverdonet att stoppa slumpmässigt. Du åtgärdar detta genom värdet det hitLimitsmax så att sensorn behöver läsa 0 ampere X antal gånger innan det kommer att sluta. Om du har en högre ström (> 5 ampere) ställdon, kan värdet vara lägre. Jag har den inställd på 10, så att manöverdonet tar 0,5 sekunder att stoppa när den träffar gränserna. Det kommer att ta 0,5 sekunder eftersom feedbacktimedelay är 50 millisekunder, och det loopar 10 gånger.