Styrning av Servo med Arduino

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Sun Tracker
Inlägg: 7
Blev medlem: 8 januari 2023, 18:36:25

Styrning av Servo med Arduino

Inlägg av Sun Tracker »

Hej, är i starten att bygga en ny solföljare som bygger på en Arduino och foto resistorer. Är nybörjare på programmering så jag behöver följande hjälp :) hur får jag ett kommando, i det här fallet att när Arduinon startas upp så ska servon gå till ett visst utgångsläge och sen efter en viss fördröjning börja reglera sig på informationen den får av fotoresistorerna? Bifogar koden som jag har experimenterat men ( en kod från startkittet "Styra servo med hjälp av en potensimeter" ) I detta utförande så kör den start kommandot hela tiden!
Tack sam för svar.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Wihelm
Inlägg: 588
Blev medlem: 18 juni 2019, 17:30:19
Ort: Nybro

Re: Styrning av Servo med Arduino

Inlägg av Wihelm »

Sist under setup()

myServo.write(vinkel);

Där vinkel är där du vill starta.
Det under setup() körs bara en gång.
Användarvisningsbild
pi314
Inlägg: 5682
Blev medlem: 23 oktober 2021, 19:22:37
Ort: Stockholm

Re: Styrning av Servo med Arduino

Inlägg av pi314 »

Några frågor
Jag hittade inte ditt exempel bland dom som följde med mitt program. Kanske har du en annan version?

Är det ett exempel som du hittat på nätet där man kan styra ett servo med en potentiometer?

Kan du i så fall länka till det exemplet?

Har du kopplat som i exemplet?

Vilket servo använder du?

Hur strömförsörjer du Arduino och servo?


Det här är inte ditt exempel, men kanske ett liknande?

https://www.instructables.com/Arduino-H ... otentiome/

Jag valde det eftersom det är ungefär så enkelt det kan bli.

När du kan styra ett servo med en poentiometer så kan du gå vidare med fotomotstånd och styra mot solen eller annan ljuskälla. Men, det kommer nog att kräva lite mer egen programmering.

/Pi
Sun Tracker
Inlägg: 7
Blev medlem: 8 januari 2023, 18:36:25

Re: Styrning av Servo med Arduino

Inlägg av Sun Tracker »

Tack Wihelm
Tack för ditt svar men tyvärr så tycks det inte fungera. Bifogar kod raden. Anledningen till att jag vill att detta ska ske är för att solcellerna ska stå i rätt vädersträck när solen börjar gå upp genom att en timer bryter strömmen till Arduinon på kvällen och matar på igen vid sol uppgång.
Med vänlig hälsning, Magnus


#include <Servo.h>
Servo myServo;
int const potPin = A0;
int potVal;
int angle;


void setup() {
myServo.attach(9);
Serial.begin(9600);
myServo.write(0)

}

void loop()
{

potVal = analogRead(potPin);
Serial.print("potVal: ");
Serial.print(potVal);
angle = map(potVal, 0,1023, 0, 179);
Serial.print(", angle: ");
Serial.println(angle);
myServo.write(angle);
delay(50);
}
Sun Tracker
Inlägg: 7
Blev medlem: 8 januari 2023, 18:36:25

Re: Styrning av Servo med Arduino

Inlägg av Sun Tracker »

pi314 skrev: 8 januari 2023, 19:46:34 Några frågor
Jag hittade inte ditt exempel bland dom som följde med mitt program. Kanske har du en annan version?

Är det ett exempel som du hittat på nätet där man kan styra ett servo med en potentiometer?

Kan du i så fall länka till det exemplet?

Har du kopplat som i exemplet?

Vilket servo använder du?

Hur strömförsörjer du Arduino och servo?


Det här är inte ditt exempel, men kanske ett liknande?

https://www.instructables.com/Arduino-H ... otentiome/

Jag valde det eftersom det är ungefär så enkelt det kan bli.

När du kan styra ett servo med en poentiometer så kan du gå vidare med fotomotstånd och styra mot solen eller annan ljuskälla. Men, det kommer nog att kräva lite mer egen programmering.

/Pi
Fick med exemplet i Arduino startkit i en bok så svårt att bifog. Men det är kopplat som ditt exempel. Servon ingick i kittet och den strömförsörjs av en USB nu. Ja jag har en hel del kod kvar men är bara i början av projektet och det finns massa koder för "sun Trackers" att ladda ner. Med vänlig hälsning, Magnus
Wihelm
Inlägg: 588
Blev medlem: 18 juni 2019, 17:30:19
Ort: Nybro

Re: Styrning av Servo med Arduino

Inlägg av Wihelm »

du har glömt ett ; efter myServo.write(0);

Bahövs nog ett delay(5000); efter med så att den hinner flytta sig innan den ställer sig efter potentiometern.
Sun Tracker
Inlägg: 7
Blev medlem: 8 januari 2023, 18:36:25

Re: Styrning av Servo med Arduino

Inlägg av Sun Tracker »

Prövar att skriva om ett par ggr och tappade nog; på vägen. Men delay gjorde susen . Tack :D
Användarvisningsbild
pi314
Inlägg: 5682
Blev medlem: 23 oktober 2021, 19:22:37
Ort: Stockholm

Re: Styrning av Servo med Arduino

Inlägg av pi314 »

Hur lång tid tar det för servot att ställa in sig?
Ett långsamt, billig servo brukar klara 60° på mindre än 0,15 sekunder.
https://www.amazon.se/Kuman-Micro-Helik ... 6489710780

Ett riktigt snabbt servo kan klara 60° på mindre än 0,05 sekunder.
https://www.amainhobbies.com/mks-servos ... 5i/p207982

Inte för att solen flyttar sig så snabbt, men det borde räcka med att vänta 0,25 sekunder på dom allra flesta servon. För att dom ska hinna ställa in sig. Dvs.

delay(250);

borde räcka gott och väl för att servot ska få gott om tid att "ställa in sig".

Vilken uppdateringsfrekvens klarar ett visst servo?
Långsamma analoga servon brukar klara en uppdateringsfrekvens på 50 Hz, dvs. 0,02 sekunder, 20 ms.

Det snabba servot ovan klarar en uppdateringsfrekvens på 560 Hz, dvs. ny puls med knappt 2 ms fördröjning.

Pulslängd
Det vanligaste är att servon centrerar vid en pulslängd på 1520 µs, 1,52 ms.
Men det finns servon som centrerar vid t.ex. 760 µs, som det snabba servot ovan.

Med

servo.attach(pin, min, max)

kan man ange om man har servon som inte går till ändlägena med min=540 (µs) och max=2400 (µs), som är default, eller om man vill minska maxutslaget.

Om man skulle råka ha ett servo av den snabba typen ovan, som centrerar vid 760 µs får man ställa t.ex. min=320 och max=1200, båda i µs.

Vilken uppdateringsfrekvens man väljer beror på hur bråttom man har. Med lite lägre frekvens drar servot lite mindre ström och blir lite mindre varmt. Än om man ligger på max frekvens som servot tål. För hög frekvens kan skada servot.

Vad servo() klarar när man har flera servon vet jag inte. Jag antar att du behöver två servon för att följa solen? Det tror jag att alla Arduino klarar med marginal.

/Pi
Skriv svar