Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 01 maggio 20, 22:02   #1 (permalink)  Top
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
così sembra fare tutto.. rimane da vedere la corsa del servo che muta di conseguenza ai settaggi di altri parametri..

la corsa dovrebbe essere più o meno fissa, ovvero quella definita con define postsx e postdx
ma se cambio valore di max_correction aumento la corsa degli endpoint

uguale anche se diminuisco gaslimit che ho inserito per cercare di avere una stringa dove decidere quanto gas a bassa velocità poter dare.. se lo abbasso allargo la corsa e viceversa.
non so manco se gaslimit possa servire in questo modo perchè se lo cambio sballo i finecorsa comunque.. ma visto che sta facendo e mi girano le paperelle sulla testa per adesso lascio così.

insomma così come è adesso non funziona malissimo, la correzione non attacca subito, lascia un pò di margine per dare gas.
diciamo che l'unico difetto avviene se uno modifica qualcosa, avrà da rifare gli endpoint per adattarsi alla nuova situazione.

spero sia la via giusta, ad ogni modo ora funziona come dovrebbe, instabile e un pò complicato da settare ma utilizzabile.


#define minffw 1500 // -- minimum forward signal
#define maxffw 2000 // -- maximum forward signal
#define antsx 1000 // -- in front servo signal sx
#define antdx 2000 // -- in front servo signal dx

#define postsx 5 // out rear servo sx endpoint if inverted with postdx it reverse
#define postdx 175 //-- out rear servo dx endpoint if inverted with postsx it reverse

#define center 0 //-- add or subtract xx value to center steering
#define tolerance 3 //-- if your poor quality servo vibrates try 5
#define maxcorr 100 //-- in gain steering reduction by throttle if reverse add -
#define gaslimit 1700 //-- slow forward without correction

#include <Servo.h>
Servo myservo;
unsigned int rxpulse;
unsigned int gaspulse ;
unsigned int correction;
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 > gaslimit);
else
gaspulse = constrain (gaslimit, minffw,maxffw);
correction = map(gaspulse, minffw, maxffw, 0, maxcorr);
newPos = map(rxpulse, antsx, antdx, (postsx+correction), (postdx-correction));
}
if (abs(newPos - oldPos)> tolerance) {
oldPos = newPos;
myservo.write(newPos + center);
}
}
wrighizilla non è collegato   Rispondi citando
Vecchio 02 maggio 20, 21:06   #2 (permalink)  Top
Guest
 
Data registr.: 17-07-2013
Messaggi: 3.734
niente via.. arrivo fino qui.

ho provato una marea di cose ma nessuna ha funzionato.

ho messo un pochino di ordine nel testo e ho cambiato alcuni nomi per rendere più chiaro lo sketch.

funziona tutto come dovrebbe, compresa la possibilità di dare un pochino di gas a bassa velocità mantenendo tutto lo sterzo (cambiando valore a Slowlimit)
anche la correzione funziona perfettamente adesso, inversamente proporzionale e fino a chiudere completamente la corsa del servo posteriore (cambiando valore a Max_gain)

ma se cambio i valori di Slowlimit e Max_gain si spostano anche i finecorsa Postdx e Postsx obbligandomi a reimpostarli da capo di conseguenza alle modifiche.

rompe un pò perchè sarebbero valori che dovrebbero restare fissi visto che dipendono dalla effettiva corsa di sterzo a disposizione, anche solo cambiando i parametri si rischia di allargare la corsa molto oltre quella che lo sterzo meccanicamente permette.
sarebbe uno dei parametri da impostare per primo e poi dimenticare..

non so.. manca qualche parentesi oppure va scritto meglio qualcosa ma non trovo l'inghippo

riporto lo sketch rivisto e corretto al meglio delle sue attuali possibilità

#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 5 // out rear servo sx endpoint if inverted with postdx it reverse
#define Postdx 175 //-- out rear servo dx endpoint if inverted with postsx it reverse
#define Center 0 //-- add or subtract xx value to center steering
#define Tolerance 3 //-- if poor quality servo vibrates try 5
#define Max_gain 100 //-- gain steering reduction by throttle if reverse add -
#define Slowlimit 1700 //-- 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);
else
Gaspulse = constrain (Slowlimit, Neutral, Maxspeed);
Gain = map(Gaspulse, Neutral, Maxspeed, 0, Max_gain);
NewPos = map(Rxpulse, Antsx, Antdx, (Postsx + Gain), (Postdx - Gain));
if (abs(NewPos - OldPos)> Tolerance) {
OldPos = NewPos;
myservo.write(NewPos + Center);
}
}
wrighizilla non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
buggy da completare BoBoPoP Automodellismo Mot. Scoppio Off-Road 41 18 maggio 16 17:56
monster da completare...! bronto_19 Automodellismo Mot. Elettrico Off-Road 2 22 giugno 10 17:35
Sto costruendo uno schiumino (o tzagi), mi aiutate??? crido96 Aeromodellismo Principianti 72 07 febbraio 10 02:26
Come completare una associated B4? ryan-j Automodellismo Mot. Elettrico On-Road 9 04 maggio 08 11:55



Tutti gli orari sono GMT +2. Adesso sono le 15:45.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002