Visualizza messaggio singolo
Vecchio 04 maggio 20, 00:44   #20 (permalink)  Top
wrighizilla
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
Citazione:
Originalmente inviato da nicolap Visualizza messaggio
di fatto in questo modo lavori con tutti valori espressi in microsecondi ma dovresti utilizzare il comando write.microseconds…. ho modificato un po il tuo sketch..vedi se funziona


se funziona poi ti spiego cosa ho fatto… per il momento abbandono...ho altri lavori a cui dedicarmi e che non posso trascurare
buon lavoro!!
ma ci credo ti ringrazio immensamente per tutto l'aiuto e il tempo che ci hai dedicato

il tuo sketch ha alcuni vantaggi perchè adesso si annulla la corsa del servo mettendo a zero Max_gain
ma impazzisce tutto se sposto il center anche di pochi valori, finisce con influire anche sulla retro.

inoltre vibra molto di più di prima in tutte le posizioni, di fatto ha annullato Tolerance che evitava le vibrazioni ritmiche..
non ho provato a ritoccare tolerance perchè è comunque tutto più instabile.

questo code qui sotto, dalle prove fatte per il momento è il migliore.. e ne ho fatte parecchie perchè ne sto discutendo con altri 4 ardunauti in differenti forums.

Codice:
#define Neutral 1500 // -- minimum forward signal
#define Maxspeed 2000 // -- maximum forward signal
#define Antsx 1000 // -- in front servo signal sx
#define Antdx 2000 // -- in front servo signal dx
#define Postsx 1000 // out rear servo sx endpoint if inverted with postdx it reverse
#define Postdx 2000 //-- out rear servo dx endpoint if inverted with postsx it reverse
#define Center 0 //-- add or subtract xx value to center steering
#define Tolerance 5 //-- if poor quality servo vibrates try 5
#define Max_gain 950 //-- gain steering reduction by throttle if reverse add -
#define Slowlimit 1800 //-- slow forward without endpoint correction
#include <Servo.h>
Servo myservo;
unsigned int Rxpulse;
unsigned int Gaspulse ;

unsigned int Gain;
unsigned int NewPos, OldPos;
void setup() {
myservo.attach(10); //-- rear servo signal out pin
pinMode(8, INPUT); //-- front servo signal in pin
pinMode(7, INPUT); //-- throttle signal in pin
}
void loop(){
Rxpulse = pulseIn(8, HIGH);
Gaspulse = pulseIn(7, HIGH);

if (Gaspulse > Slowlimit) {
Gain = map(Gaspulse, Slowlimit, Maxspeed, 0, Max_gain );
NewPos = map(Rxpulse, Antsx, Antdx, (Postsx + Gain), (Postdx - Gain));
}
else {
NewPos = map(Rxpulse, Antsx, Antdx, Postsx, Postdx);
}
if (abs(NewPos - OldPos)> Tolerance) {
OldPos = NewPos;
myservo.write(NewPos + Center);
}
}


quindi alla fine questo code per adesso è tipo graal e più che utilizzabile anche adesso, snello, veloce non vibra fa tutto quello che deve fare.
certo se lo setti male scavalchi, fai la camminata a granchio etc.. ma va bene così.

alla fine aggiungendo 2 linee guida scritte si ottiene un buon setup facilmente, poi se qualcuno lo userà imparerà i limiti e le correzioni necessarie.

voglio dire.. bisogna sapersi accontentare, ho visto controller esc che per settarli a mano o via radio erano molto ma molto peggio

io vi ringrazio a tutti. è tutto interessante, compresi gli sbagli, le modifiche, qualsiasi cosa permette di confrontare cosa accade

Ultima modifica di wrighizilla : 04 maggio 20 alle ore 00:49
wrighizilla non è collegato   Rispondi citando