gear door sequencer
24 berichten
• Pagina 2 van 3 • 1, 2, 3
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: gear door sequencer
ben komt dat niet door die write (1000)?Of doen die deuren ook raar?
Advertisement
Re: gear door sequencer
Hij doet enkel raar in het begin... in het Loop gedeelte ... werkt alles perfect.
Misschien moet je de servo niet in de setup al attachen.
Dan kan hij raar gaan doen, nog voor je iets gedaan hebt.
Verder na de actie (wiel in/uit), de servo weer detachen. Dan blijft hij in de stand staan waarin hij stond.
Ik moet eerlijk bekennen dat ik je programma niet helemaal ben langsgelopen ofzo.
Zoek op dit forum naar chattering. Daar kom je wat meer uitleg tegen. (http://arduinoforum.nl/viewtopic.php?f= ... ering#p539)
Re: gear door sequencer
het gedeelte wielen uit of wielen in word verschilende malen doorlopen , dit zorgt er soms voor dat de deur al terug naar een positie gaat voor hij de andere bereikt heeft. endloop zou er voor moeten zorgen dat dit niet gebeurd.
in de volgende sketch word dit opgelost met "if (ServoIn > ServoOld-300 && ServoIn < ServoOld+300)" dit zorgt ervoor dat er slechts eenmaal de code word uitgevoerd.
#include <VarSpeedServo.h>
VarSpeedServo maingear; //declaire maingear
VarSpeedServo geardoor1; //declaire geardoor1
VarSpeedServo geardoor2; //declaire geardoor2
int ServoIn; //declair int for switchchannel
int ServoOld; //declair int for servo jitter
void setup(){
//lower the gear when power on to avoid plane dropping to ground
maingear.attach(9); //maingearservo has to be conected to this pin
geardoor1.attach(11); //geardoor1 servo has to be conected to this pin
geardoor2.attach(10); //geardoor2 servo has to be conected to this pin
geardoor1.slowmove(2000,50); //open geardoor1
geardoor2.slowmove(2000,50); //open geardoor2
delay(3000); //wait 3s
maingear.writeMicroseconds(1000);//lower maingear
delay (3000); //wait 3s
geardoor1.slowmove(1000,50); //close geardoor1
ServoIn = pulseIn (8,HIGH,25000);//measure switchchannel
ServoOld = ServoIn; //make shure switch needs to be moved
pinMode(13,OUTPUT); //put the LED pin in output mode
}
void loop(){
ServoIn = pulseIn (8,HIGH,25000); //measure switchchannel
if (ServoIn > ServoOld-300 && ServoIn < ServoOld+300){//filter radio jitter. give a range where the system is idle
delay (15); //wait for next servopuls
}
else if (ServoIn <= 1400){ //if the pulse is shorter than 1400ms lower the gear
GearDown:
geardoor1.slowmove(2000,50); //open geardoor1
geardoor2.slowmove(2000,50); //open geardoor2
delay (3000); //wait 3s
maingear.writeMicroseconds(1000);//lower maingear
delay (3000); //wait 3s
geardoor1.slowmove(1000,50); //close geardoor1
digitalWrite(13,HIGH); //put on LED
ServoOld = ServoIn; //make shure switch needs to be moved
}
else if (ServoIn >= 1600) { //if the pulse is longer than 1600ms raise gear
GearUp:
geardoor1.slowmove(2000,50); //open geardoor1
delay (3000); //wait 3s
maingear.writeMicroseconds(2000);//raise maingear
delay (3000); //wait 3s
geardoor1.slowmove(1000,50); //close geardoor1
geardoor2.slowmove(1000,50); //close geardoor2
digitalWrite(13,LOW); //switch off LED
ServoOld = ServoIn; //make shure switch needs to be moved
}
}
in de volgende sketch word dit opgelost met "if (ServoIn > ServoOld-300 && ServoIn < ServoOld+300)" dit zorgt ervoor dat er slechts eenmaal de code word uitgevoerd.
#include <VarSpeedServo.h>
VarSpeedServo maingear; //declaire maingear
VarSpeedServo geardoor1; //declaire geardoor1
VarSpeedServo geardoor2; //declaire geardoor2
int ServoIn; //declair int for switchchannel
int ServoOld; //declair int for servo jitter
void setup(){
//lower the gear when power on to avoid plane dropping to ground
maingear.attach(9); //maingearservo has to be conected to this pin
geardoor1.attach(11); //geardoor1 servo has to be conected to this pin
geardoor2.attach(10); //geardoor2 servo has to be conected to this pin
geardoor1.slowmove(2000,50); //open geardoor1
geardoor2.slowmove(2000,50); //open geardoor2
delay(3000); //wait 3s
maingear.writeMicroseconds(1000);//lower maingear
delay (3000); //wait 3s
geardoor1.slowmove(1000,50); //close geardoor1
ServoIn = pulseIn (8,HIGH,25000);//measure switchchannel
ServoOld = ServoIn; //make shure switch needs to be moved
pinMode(13,OUTPUT); //put the LED pin in output mode
}
void loop(){
ServoIn = pulseIn (8,HIGH,25000); //measure switchchannel
if (ServoIn > ServoOld-300 && ServoIn < ServoOld+300){//filter radio jitter. give a range where the system is idle
delay (15); //wait for next servopuls
}
else if (ServoIn <= 1400){ //if the pulse is shorter than 1400ms lower the gear
GearDown:
geardoor1.slowmove(2000,50); //open geardoor1
geardoor2.slowmove(2000,50); //open geardoor2
delay (3000); //wait 3s
maingear.writeMicroseconds(1000);//lower maingear
delay (3000); //wait 3s
geardoor1.slowmove(1000,50); //close geardoor1
digitalWrite(13,HIGH); //put on LED
ServoOld = ServoIn; //make shure switch needs to be moved
}
else if (ServoIn >= 1600) { //if the pulse is longer than 1600ms raise gear
GearUp:
geardoor1.slowmove(2000,50); //open geardoor1
delay (3000); //wait 3s
maingear.writeMicroseconds(2000);//raise maingear
delay (3000); //wait 3s
geardoor1.slowmove(1000,50); //close geardoor1
geardoor2.slowmove(1000,50); //close geardoor2
digitalWrite(13,LOW); //switch off LED
ServoOld = ServoIn; //make shure switch needs to be moved
}
}
Re: gear door sequencer
mijn probleem blijft nog altijd hetzelfde, de servo's bewegen tijdens de opstart van de Arduino. En dit wil ik absoluut vermijden, ik wil niet dat de deur of wielen een beweging maken tijdens het opstarten. ze zouden tegen de wielen kunnen bewegen terwijl ze uitstaan.
Ben
Ben
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: gear door sequencer
Heb je al eens geprobeerd het probleem te isoleren. Maw. een simpele sketch en met een servo. En dan eerst alleen de attach. Dan opnieuw maar dan met slowmove erbij enz.? Nu blijft het een beetje gokken waar het in kan zitten.
Re: gear door sequencer
Misschien kun je het ondervangen door de voedingsspanning van de servo na het opstarten vertraagd te laten inschakelen door de arduino.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: gear door sequencer
Ik vraag me nog steeds af waar nu het probleem zit. Door een simple sketch te maken kun je het probleem isoleren. Nu is het wel allemaal heel erg vaag.
Re: gear door sequencer
Het probleem zit hem vooral in het begin, bij het opstarten. Bij het aanzetten van het toestel voor een tweede vlucht te doen, dus wanneer het vliegtuig reeds op zijn poten staat. Dan bewegen de servo's, op dit moment zouden ze niet mogen bewegen. Het risico dat een deur zich sluit wanneer het landingsgestel uit staat en er tegen aan loopt. Of wanneer het vliegtuig klaar wordt gemaakt voor de eerste vlucht en de wielen ingetrokken zijn dus met de deuren dicht, het landingsgestel er uit zou komen.
Ben
Ben
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: gear door sequencer
Waarom maak je dan niet een eenvoudige sketch om de verschillende stappen te doorlopen die de servo aansturen. De reden is dat je dan kan bepalen of het in de Servo library zit OF in jouw code OF het een elektronisch probleem. Nu heb je veel te veel mogelijkheden en blijft het constant gissen. Ik ben geen vliegtuig bouwer dus kan ik daar niet over oordelen en moet mij beperken tot de losse componenten en jouw programma.
Als jij het probleem kan isoleren dan heeft een bijdrage zin. Ik heb niet meer dan een listing code met een setup die alleen maar loopt als er een harde reset op komt of dat er spanning op de Arduino komt.
Als jij vervolgens begint over een 2e vlucht, weet ik niet of de spanning nu wel of niet van de Arduino af is geweest.
Snap je?
Als jij het probleem kan isoleren dan heeft een bijdrage zin. Ik heb niet meer dan een listing code met een setup die alleen maar loopt als er een harde reset op komt of dat er spanning op de Arduino komt.
Als jij vervolgens begint over een 2e vlucht, weet ik niet of de spanning nu wel of niet van de Arduino af is geweest.
Snap je?
Re: gear door sequencer
De spanning gaat volledig van de Arduino als het vliegtuig uitgeschakeld wordt. Het is dus wanneer er opnieuw spanning op gezet wordt dat de problemen er zijn.
Ben
Ben
24 berichten
• Pagina 2 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 13 gasten