Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Volgens mij misbruikt hier iemand die arme miskende visjes als excuus om lekker met techniek, radiobesturing en modelbouw bezig te zijn.... Ik ben een visser. Ik heb een voerboot. ...
Volgens mij misbruikt hier iemand die arme miskende visjes als excuus om lekker met techniek, radiobesturing en modelbouw bezig te zijn.
Dan wordt het wel een heel grote uitdaging. Het is op zich niet heel moeilijk maar het kost wel veel tijd zoals alles wat je zelf maakt.
Ik heb eigenlijk nog nooit iets gezien wat dit standaard doet. Zal wel te weinig vraag naar zijn. Als je iets simpelere wilt kan je het ook mechanisch maken net als bij een ruitenwisser. Dat is ook een motor die ronddraait en door een mechanische overbrenging een heen en weer gaande beweging creëert.
Een servo heeft een puls nodig waarvan de lengte de stand van de servo bepaalt. Als je hem dus heen en weer wilt laten gaan heb je een pulsgenerator nodig die net als bij een looplicht de puls van de minimale naar de maximale lengte varieert en dan weer terug.
Voor een Arduino heb je standaard bibliotheken voor het aansturen van servo’s en geef je een getal mee dat de positie bepaalt.
Dit kun je vrij simpel oplossing met een servotester. Die kun je "los" van je RC-installatie op de servo zetten.
Is in feite niets anders dan een soort puls-generator.
Je hangt een geschikte voeding (4,8V) aan de servo-tester, je hangt de servo aan de servo-tester en het ding gaat heen en weer.
Je kunt zelfs het tempo bepalen waarop hij heen en weer gaat...
Het gaat er in dit geval alleen om hoe de pulsjes en de pulstreintjes op de ontvangeruitgangen er uit moeten zien, qua spanning en tijden. Zo moeten ze ook uit een servotester en een Arduino o.i.d. komen.Oei, dat is zware materie voor een leek, zeg.![]()
// WikkelServo Voerboot project
// Gemaakt door MdG-RC-Electronics "marten77"
#include <VarSpeedServo.h> // Dit is een externe bibliotheek trage servo beweging
#include <EEPROM.h>
#define RCmax 2200 //
#define RCmid 1500
#define RCmin 800
#define RCcor 15
#define TimeOut 260000
#define Aan 1
#define Uit 0
#define MaxPos1 170 //
#define MinPos1 10 //
#define MidPos1 (MaxPos1 - MinPos1) / 2
#define MaxSpeed1 127
#define MinSpeed1 10
#define WikkelServoPin 8
#define RCport1 4 //
VarSpeedServo WikkelServo; //servo om het wikkelen te begeleiden
int RCpulse1; // dit geeft de variable RCpulse1 een integerwaarde (een geheel getal tussen 0 en ...) in RCread! deze waarden kan vervolgens worden veranderds naar believe
int Address1 = 0;
int Address2 = 1; // EEProm adres 1 gebruiken we, om de laatste Pos1 op te slaan
int Address3 = 2; // EEProm adres 2 gebruiken we, om de laatste Richting1 op te slaan
byte Pos1;
byte Speed1;
byte ReadPos1; // hier maken we een uitlees var. aan voor de servo positie uit te lezen, dan kunnen we dingen starten vanaf een bepaalde servo positie alleen 3 wordt nu gebruikt
byte Richting1;
byte Richting1BackUp;
void setup()
{
Richting1BackUp = EEPROM.read(Address3);
if(Richting1BackUp == 0 && EEPROM.read(Address1) == 0)
{ // dit gebeurt maar eenmalig, i.v.m. de eerste opstart!
EEPROM.write(Address1,MaxPos1);
EEPROM.write(Address2,MaxPos1);
EEPROM.write(Address3,MaxPos1);
Richting1 = MaxPos1;}
else {Richting1 = Richting1BackUp;}
Pos1 = EEPROM.read(Address2); // Start waarde voor servo positie
ReadPos1 = EEPROM.read(Address2); //
Speed1 = MinSpeed1; //
WikkelServo.attach (WikkelServoPin); //plaats de servo op pin 8 (zie regel 20)
WikkelServo.write(Pos1); // deze regel zorgt ervoor dat tijdens de start, de servo naar de gewenste positie gaat of blijft op deze postitie en niet centered
pinMode(RCport1, INPUT_PULLUP); //plaats de ontvanger op pin 4 (zie regel 21) //
//Serial.begin(9600);
}
void RCread(){ // hier word de RC input ingelezen
RCpulse1 = pulseIn(RCport1, HIGH, TimeOut);} // Leest de ogenblikkelijke puls van de ontvanger
void Hijsen()
{
Speed1 = map(RCpulse1, RCmin, RCmid-RCcor, MinSpeed1, MaxSpeed1);
if(ReadPos1 > MaxPos1-1){Richting1 = MinPos1;}
else if(ReadPos1 < MinPos1+1){Richting1 = MaxPos1;}
else{Pos1 = Richting1;} // Pos1 is laatste richting
}
void Vieren()
{
Speed1 = map(RCpulse1, RCmid+RCcor, RCmax, MinSpeed1, MaxSpeed1);
if(ReadPos1 > MaxPos1-1){Richting1 = MinPos1;}
else if(ReadPos1 < MinPos1+1){Richting1 = MaxPos1;}
else{Pos1 = Richting1;} // Pos1 is laatste richting
}
void loop()
{
RCread(); // Ga naar RCread, om de RC input in te lezen.
if(RCpulse1 > RCmin-RCcor && RCpulse1 < RCmax+RCcor)
{ // Zijn ze binnen een veilige zone, dan voer onderstaande uit:
if(RCpulse1 >= RCmid-RCcor && RCpulse1 <= RCmid+RCcor) // Stick in het midden
{
Pos1 = ReadPos1;
EEPROM.update(Address2, Pos1);
EEPROM.update(Address3, Richting1);
}
else if(RCpulse1 > RCmid+RCcor){Vieren();} //
else {Hijsen();}
}
else {Pos1 = MidPos1; Speed1 = MinSpeed1;}
WikkelServo.write(Pos1,Speed1,false); // laat de servo naar de variabele 'pos1' gaan
ReadPos1 = WikkelServo.read(); // lees de positie van de servo
//Serial.print("RCpulse1 = "); // hiermee kan je de pulses meten en tonen als het bord is aangesloten op de seriele monitor.
//Serial.println(RCpulse1);
//delay(1000);
}
Ik denk dat ik het niet goed heb uitgelegd: Ik bedoel, dat je beter 2 stuks - éénaderige kabels kunt gebruiken, dan 1 stuks - twee aderige, dan wikkelen de draden op precies gelijke manier op, en is er geen verschil in dikte of stugheid van de kabels, dus zullen ze (hopelijk) op dezelfde manier opwikkelen.