04 maggio 20, 17:38 | #91 (permalink) Top |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
|
dunque.. rallentare il servo è assurdo perchè si tratta di una controller per un automodello, il servo dello sterzo deve essere reattivo. ho caricato mobatools ma almeno col mio servo è identica in tutto e per tutto, vibrori compresi ad ogni modo ho provato la controller con un servo ottimo e le cose forse peggiorano cambiando la velocità cambia solo la velocità, le vibrazioni sono identiche almeno al mio banco prova. vabè dai.. ora vedo se riesco a venirne a capo in qualche modo.. il tuo banco prova è molto migliore del mio, a forza di fare prove si è pure annodato tutto probabilmente la tua radio invia un segnale più pulito della mia se faccio un video capisci.. sembra un diesel |
04 maggio 20, 18:11 | #92 (permalink) Top |
User Data registr.: 03-05-2020 Residenza: milano
Messaggi: 47
|
In realta' non si tratta di rallentare, ma di utilizzare una libreria pwm in sostituzione di quella standard che soffre spesso di tartagliamenti. E' un difetto che sembra conosciuto, anche per questo vi sono tante librerie alternative. Ultilizzando un automodello sicuramente occorre velocita, ma per un camion potresti riuscie trovare un compromesso accettabile tra velocita' e tartagliamento. Se vuoi inviami un video, cosi' cerco di capire in che condizioni riscontri il problema e replicarlo al meglio... Smsteves E' vero ma che radio utilizzi? Per due gioieliini simili? Ultima modifica di Smsteves : 04 maggio 20 alle ore 18:17 |
04 maggio 20, 18:54 | #93 (permalink) Top |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
|
ora ti faccio un video.. uso una spektrum dx3s nulla di speciale. 3 canali giusto perchè i camion hanno il cambio. stavo appunto guardando le librerie e gli esempi su github per vedere se trovavo qualcosa che potesse riguardare il segnale ppm https://github.com/willie68/RCReceiver sto leggendo anche Pulse Position e PPM encoder ma non mi sembra c'entrino nulla. il punto è che il segnale arriva sporco all'origine.. sulla radio posso settare un parametro che si chiama F Rate e scegliere tra 11ms e 16.5ms col primo 11ms la vibrazione peggiora con 16.5 un pò meglio ma non certo ottimo. ho provato adesso a usare la libreria PWMServo ma si blocca tutto.. non so se ho sbagliato ma scrivere ma non demordo. Ultima modifica di wrighizilla : 04 maggio 20 alle ore 19:00 |
04 maggio 20, 19:36 | #94 (permalink) Top |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
| a parte 2 escursioni da una parte all'altra, nel video cerco di stare nelle zone dove vibra che sono quelle dove avviene la proporzione dopo Slowlimit.. sotto slowlimit, in neutro o retro vibra un pochino ma funziona tutto molto meglio. le vibrazioni si hanno da quando inizia la correzione fino al massimo del gas Ultima modifica di wrighizilla : 04 maggio 20 alle ore 19:40 |
04 maggio 20, 20:10 | #95 (permalink) Top |
User Data registr.: 03-05-2020 Residenza: milano
Messaggi: 47
|
la situazione con la mia radio e' migliore ma non perfetta. Faro' una prova, suddividerò in n la corsa del impulso in ingresso in modo da squadrettarlo e stabilizzarlo un po'. Vedremo se migliora. Ps ma non e' che hai l'esponenziale attivo? se cosi' fosse un piccolo movimento corrisponderebbe ad una ampia variazione comunque... |
04 maggio 20, 20:20 | #96 (permalink) Top | |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
| Citazione:
quello che mi formicola in testa è capire se sia possibile equalizzare il segnale in entrata, filtrarlo prima che passi al resto del programma del tipo che se oscilla tra 1000 e 1005 ruscire a fare in modo (proporzionale) che passi una media tra i 2 valori.. 1003 perchè da monitor seriale questa oscillazione di dati la vedo benissimo ma sembra che serve una specie di controllo PID per fare una sorta di correzione preventiva di questo errore Ultima modifica di wrighizilla : 04 maggio 20 alle ore 20:24 | |
04 maggio 20, 21:51 | #97 (permalink) Top |
User Data registr.: 03-05-2020 Residenza: milano
Messaggi: 47
|
Ho cercato i squadrettare il segnale, dividendolo in sezioni di valore definiti. questo e' il massimo che ottengo, ma non cambia molto provalo te. hai due scale una per sterzo e una per gas. piu' piccolo e' il valore maggiore e' la precisione 1-n. 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 3 //-- if poor quality servo vibrates try 5 #define Max_gain 950 //-- gain steering reduction by throttle if reverse add - #define Slowlimit 1600 //-- slow forward without endpoint correction #include <MobaTools.h> MoToServo myservo; unsigned int Rxpulse; unsigned int Gaspulse ; unsigned int Gain; signed int NewPos, OldPos; int Stato; int Stato_Led=0; boolean Cmd_Led = false; int Ledpin=13; int Led=0; unsigned int scala_RX=5; unsigned int scala_GAS=20; void setup() { pinMode(7, INPUT); //-- throttle signal in pin pinMode(8, INPUT); //-- front servo signal in pin pinMode(Cmd_Led, OUTPUT); myservo.attach(10); //-- rear servo signal out pin myservo.setSpeed(128); Stato = 0; } void loop() { if (Stato == 0) { //lettura Rxpulse = pulseIn(8, HIGH); //Rxpulse = (((Rxpulse-Antsx)/scala)*((Antdx-Antsx)/scala))+Antsx; Rxpulse = Rxpulse - Antsx; Rxpulse = Rxpulse / scala_RX; Rxpulse = Rxpulse * scala_RX ; Rxpulse = Rxpulse + Antsx; Gaspulse = pulseIn(7, HIGH); Gaspulse = Gaspulse - Neutral; Gaspulse = Gaspulse / scala_GAS; Gaspulse = Gaspulse * scala_GAS; Gaspulse = Gaspulse + Neutral; } if (Stato == 1) { //Calcolo if (Gaspulse > Slowlimit) { Gain = map(Gaspulse, Slowlimit, Maxspeed, 0, Max_gain ); NewPos = map(Rxpulse, Antsx, Antdx, (Postsx + Gain), (Postdx - Gain)); Led=1; } else { NewPos = map(Rxpulse, Antsx, Antdx, Postsx, Postdx); Led=2; } } if (Stato == 2) { //scrittura if (abs(NewPos - OldPos) > Tolerance) { myservo.write(NewPos + Center); OldPos=NewPos; } } // Incrementa stato per il prossimo loop ++Stato; // Incrementa tempo led per il prossimo loop ++Stato_Led; if (Stato == 3) { // riparte da 0 Stato = 0; } //ritardo esecuzione cicli/stati delay(1); if (Led == 1) { //led veloce if (Stato_Led>20) { Cmd_Led= !Cmd_Led; Stato_Led=0; } digitalWrite(Ledpin, Cmd_Led); } if (Led == 2) { //led lento if (Stato_Led>60) { Cmd_Led= !Cmd_Led; Stato_Led=0; } digitalWrite(Ledpin, Cmd_Led); } } |
04 maggio 20, 22:15 | #98 (permalink) Top | |
User | Citazione:
RxPulse = 1500 Antsx = 1000 scala_RX = 5 ed analizziamo il valore assunto da Rxpulse nei vari step: Rxpulse = Rxpulse - Antsx; RxPulse = 1500 - 1000 = 500 Rxpulse = Rxpulse / scala_RX; RxPulse = 500 / 5 = 100 Rxpulse = Rxpulse * scala_RX ; RxPulse = 100 * 5 = 500 Rxpulse = Rxpulse + Antsx; RxPulse = 500 + 1000 = 1500 Dove sbaglio ? Forse con queste operazioni si arrotondano i valori intermedi ? La soluzione mi pare contorta ma, ripeto, di Arduino conosco poco.
__________________ Peace & Love Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein) Ultima modifica di ElNonino : 04 maggio 20 alle ore 22:19 | |
04 maggio 20, 22:19 | #99 (permalink) Top |
Guest Data registr.: 17-07-2013
Messaggi: 3.734
|
no non si risolve.. ho sguinzagliato i segugi.. vediamo se fiuteranno qualcosa ho provato anche a cambiare libreria e usare WriteMicroseconds ma non cambia nulla. con tolerance 30 mi sono accorto che funziona eccetto nel tratto della mappatura inversamente proporzionale, ovvero da slowlimit in poi e quando do tutto gas.. boh? mi arrendo, ho chiesto in giro su svariati forums, vediamo se esce qualche soluzione. comunque lavoro meglio sullo sketch corto senza led perchè lo capisco meglio e non trovo differenze di comportamento tali da giustificarlo. i led sono didatticamente interessanti ma abbastanza inutili fuori dal banco prova perchè la centralina finisce dentro una scatola chiusa e impermeabile una volta che sarà settata. i miei camion fanno vitaccia. Ultima modifica di wrighizilla : 04 maggio 20 alle ore 22:23 |
04 maggio 20, 22:35 | #100 (permalink) Top |
User Data registr.: 03-05-2020 Residenza: milano
Messaggi: 47
|
qui il problema non sembra essere lo sketch, ma qualche inghippo nascosto. Lo sketch con gli stati permette di regolare tempi e aggiungere facilmente funzioni rispetto ad uno sketch sequenziale, ma siamo fermi alla funzione base purtroppo. E poi tra i nostri banchi prova con lo stesso software vi e' comunque una differenza. Ci riprovero' nel we, ma per ora ho dato fondo alla fantasia. Vediamo se vi sono altre idee... le operazioni sopra avevano effetto perche' utilizziamo degli interi.. al esempio 1523 /30 = 50 * 30 = 1500... Ultima modifica di Smsteves : 04 maggio 20 alle ore 22:41 |
Bookmarks |
| |
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 |