*RISOLTO* Utilizzo laser lidar con servi, rallentamenti e problematiche elettr..

A quel punto quando accendo l'interruttore per alimentare tutto da batteria (servi, laser, arduino ecc) ottengo che le lucine della Mega, appunto gia' accese dall' alimentazione usb, diventano piu' luminose.

Misura con il tester la tensione su USB e scrivitela.
Misura con il tester la tensione di uscita dello stepdown 2.0A e scrivitela.

Se tra i due valori c'è differenza è naturale notare questo incremento di luminosità.
Regola la vitina per avere una tensione misurata sui morsetti dello stepdown 2.0A a circa 5.0V, se riesci anche a 5.1V (5.11, 5.12, 5.15 va bene pure).

Fai le misure sia a vuoto che su carico.
A vuoto si intende senza collegare alcun circuito da alimentare.
Su carico si intende con il circuito da alimentare collegato.

Visto che devi fare compere prendi anche i morsetti, mammut ecc.

Mentre per i condensatori elettrolitici il valore in microfarad non è critico, quindi 47uf, 68uf, 100uf, 220uf vanno comunque bene. Per la tensione di lavoro VL puoi scegliere tra 16V, 25V, 35V, maggiore è la tensione più aumentano le dimensioni.

Normalmente dentro il cassetto dei componenti ci deveno sempre essere dei condensatori 100nF (nano farad). Questi si usano in parallelo ai condensatori elettrolitici.
100nF (0.1uF) ceramico

Qui sia ceramici che poliestere. Anche al poliestere si trovano da 50V tensione lavoro.

I ceramici sono economici, validi e comodi da usare anche perché i terminali sono un poco più lunghi, mentre molti poliestere sono pensati per essere inseriti su pcb e i loro terminali sono davvero corti (circa 3mm).

Ciao.

Misura con il tester la tensione su USB e scrivitela.
Misura con il tester la tensione di uscita dello stepdown 2.0A e scrivitela.

Ok mentre per lo stepdown 2A devo mettere i puntali del tester sui rispettivi morsetti di uscita, non ho la piu' pallida idea di come misurare la tensione su usb.. dove devo piazzarli i puntali?

Se tra i due valori c'è differenza è naturale notare questo incremento di luminosità.
Regola la vitina per avere una tensione misurata sui morsetti dello stepdown 2.0A a circa 5.0V, se riesci anche a 5.1V (5.11, 5.12, 5.15 va bene pure).

ok questo dovrei riuscire a farlo, sperando che, usando il tester che ho, possa ottenere una lettura precisa!

Fai le misure sia a vuoto che su carico.
A vuoto si intende senza collegare alcun circuito da alimentare.
Su carico si intende con il circuito da alimentare collegato.

Ok, a vuoto intendi senza la presenza fisica ne del laser ne dell'adafruit (compresi quindi anche i servi) nel circuito? o semplicemente senza che i servi si muovano?
mentre sotto carico probabilmente intendi con la scansione che sta avvenendo (quindi laser e servi a lavoro)

Mentre per i condensatori elettrolitici il valore in microfarad non è critico, quindi 47uf, 68uf, 100uf, 220uf vanno comunque bene. Per la tensione di lavoro VL puoi scegliere tra 16V, 25V, 35V, maggiore è la tensione più aumentano le dimensioni.

Bene, quindi prendero' 4 o 5 condensatori di diverso valore!
Per tensione di lavoro intendi sempre riferito ai condensatori giusto? non sarebbe meglio una tensione di lavoro piu' simile ai 9 o 10V?

Normalmente dentro il cassetto dei componenti ci deveno sempre essere dei condensatori 100nF (nano farad). Questi si usano in parallelo ai condensatori elettrolitici.
100nF (0.1uF) ceramico

mmmm interessante; quindi dovrei mettere, in parallelo ai condensatori gia' menzionati, anche questi
piccoli condensatori?? a cosa servono? (ho postato uno schema.. e' corretto?)

aldoz:
Ok mentre per lo stepdown 2A devo mettere i puntali del tester sui rispettivi morsetti di uscita, non ho la piu' pallida idea di come misurare la tensione su usb.. dove devo piazzarli i puntali?

Tra GND e +5V di Arduino.

Ok, a vuoto intendi senza la presenza fisica

Si, tutto scollegato.

non sarebbe meglio una tensione di lavoro piu' simile ai 9 o 10V?

I valori di tensione sono standard, di solito si prendono con il valore di tensione maggiore o uguale a quello di lavoro. Se pensi di usarli anche per altri esperimenti abbonda un po', 35V per gli elettrolitici grossi, 63..100V per quelli più piccoli come 10µF.

piccoli condensatori?? a cosa servono?

Nel mondo reale quei piccoli condensatori reagiscono molto più velocemente agli impulsi brevissimi rispetto agli elettrolitici, che invece fanno fronte a variazioni di tensione più prolungate nel tempo (si parla comunque di millisecondi, microsecondi, o anche meno).

Intanto Claudio grazie per tutte le dritte!!
Ed eccoci qui, fatta la misurazione a vuoto:

5.03 V in uscita dallo stepdown 2A
4.29 V tra 5V eGND dell'arduino...

mmm non mi sembra che prometta bene... :o

Quindi quando alimenti la MEGA tramite USB, senza lo stepdown hai 4.29 V.
Mentre se colleghi lo stepdown hai 5.03 V.

5.03 - 4.29 = 0,74 in meno.

Quindi è normale che con 5.03 noti l'aumento di luminosità.

mmm non mi sembra che prometta bene... :o

mmm...invece è proprio ottimo.

Considera che 4.29 a vuoto diminuiscono ulteriormente sotto carico. Quindi sotto carico potresti scoprire di avere solo 4.1V.

Con lo stepdown invece sotto carico difficilmente scenderai sotto 4.9V, che va pure bene.

Maurotec:
Quindi quando alimenti la MEGA tramite USB, senza lo stepdown hai 4.29 V.
Mentre se colleghi lo stepdown hai 5.03 V.

5.03 - 4.29 = 0,74 in meno.

Quindi è normale che con 5.03 noti l'aumento di luminosità.

mmm...invece è proprio ottimo.

Considera che 4.29 a vuoto diminuiscono ulteriormente sotto carico. Quindi sotto carico potresti scoprire di avere solo 4.1V.

Con lo stepdown invece sotto carico difficilmente scenderai sotto 4.9V, che va pure bene.

mmmmmm diciamo quindi che abbiamo eliminato uno dei sospettati riguardo la creazione del problema del freeze del codice (durante l'esecuzione) quando si utilizza l'alimentazione da batteria?

mmmmmm diciamo quindi che abbiamo eliminato uno dei sospettati riguardo la creazione del problema del freeze del codice (durante l'esecuzione) quando si utilizza l'alimentazione da batteria?

No, al momento non c'è motivo di parlare di freeze, c'è solo la certezza che dallo stepdown esce la giusta differenza di potenziale, e pertanto puoi procedere ad alimentare il tutto da batteria.

Anzi, prima di collegare il cavo USB accendi l'interruttore e poi colleghi USB.
La MEGA ha uno switch mosfet che seleziona la sorgente di alimentazione, dopo avere collegato la USB il circuito si accorge che l'ingresso 5V è già alimentato e pertanto la 4.29 della USB non viene usata.

Maurotec:
Anzi, prima di collegare il cavo USB accendi l'interruttore e poi colleghi USB.
La MEGA ha uno switch mosfet che seleziona la sorgente di alimentazione, dopo avere collegato la USB il circuito si accorge che l'ingresso 5V è già alimentato e pertanto la 4.29 della USB non viene usata.

Ahh pensa che ho sempre fatto il contrario : prima usb e poi accensione batteria..

Purtroppo non ho ancora i condensatori per fare nuovi test ma ne aprofitto per chiedere conferma che lo schema qui sotto sia corretto per quanto riguarda appunto l'uso dei vari condensatori

Purtroppo non ho ancora i condensatori per fare nuovi test ma ne aprofitto per chiedere conferma che lo schema qui sotto sia corretto per quanto riguarda appunto l'uso dei vari condensatori

Schema Ok, puoi anche procedere senza condensatori perché sulla MEGA ci sono già dei condensatori, sulla scheda ADAFRUIT non è verificato ma figurati se ladyada non c'è li mette.

Sul LIDAR non so, ma è pratica diffusa l'uso di condensatori.

Per cui secondo me dovrebbe funzionare senza freeze anche così, per questo ti avevo detto che prima della cura va trovata la malattia.

Ciao.

Maurotec:
Schema Ok, puoi anche procedere senza condensatori perché sulla MEGA ci sono già dei condensatori, sulla scheda ADAFRUIT non è verificato ma figurati se ladyada non c'è li mette.

Sul LIDAR non so, ma è pratica diffusa l'uso di condensatori.

Per cui secondo me dovrebbe funzionare senza freeze anche così, per questo ti avevo detto che prima della cura va trovata la malattia.

Ciao.

mauro entro domani provero' nuovamente la scansione con questa configurazione ma...
...questa configurazione è quella nella quale avveniva il freeze! :\ non c'e' nulla di diverso.. tranne il fatto che domani accendero' per prima l'alimentazione della batteria e solo sucessivamente inseriro' il cavo usb.
Comunque domani ritesterò tutto e vi faro' sapere!
e ragazzi, per ora, a tutti, GRAZIE per il grandissimo aiuto!

Non conosco come lavora LIDAR, in effetti ho fatto una ricerca su LIDAR LITE v2 è ho trovato una libreria, questa, mentre tu usi direttamente la wire, c'è un motivo?

Ciao.

Maurotec:
Non conosco come lavora LIDAR, in effetti ho fatto una ricerca su LIDAR LITE v2 è ho trovato una libreria, questa, mentre tu usi direttamente la wire, c'è un motivo?

Ciao.

Ciao Mauro, grazie per questa libreria ma è solo per la versione Lidar v2 con ETICHETTA BLU! purtroppo io ho la prima versione della v2, con etichetta grigia :\
Non so cosa cambia, ma so che i codici e librerie per il lidar v2 con etichetta blu non funzionano per il mio lidar.

Per quanto riguarda la mia situazione, ora il laser (sfruttando l2c oppure wire) funziona molto bene sia con l'alimentazione da rete elettrica sia con alimentazione da batteria.
Importantissimoil consiglio che mi hai dato riguardo il fatto di accendere prima la batteria e solo dopo inserire il cavo usb!
Ora quando alimento con batteria, non ho piu' blocchi :slight_smile:

Per quanto riguarda i rallentamenti, ho parzialmente risolto riducendo la variabile "nackack" a 25 (il codice originale aveva 100).
Diciamo che il problema del rallentamento lo ottengo solo nelle scansioni 1x1 cioe' quelle con piu' risoluzione.
Sembra proprio che l'Arduino accumuli fatica! e ho accertato che tale rallentamento avviene (sempre eseguendo scansioni accurate in alta risoluzione) anche quando la scheda NON è connessa usb.. (quindi alimentata dalla batteria e assenza di processing)

Lo dico perche' mi stavo convincendo che tale rallentamento provenisse, in qualche modo, dal collegamento della scheda con il pc e invece sembra proprio la mia arduino Mega, quando esegue scansioni cosi' prolungate, fatichi, e' come se si riempisse una bottiglia finche' non c'e' piu' spazio per altra acqua...

Abbassando a 25 la variabile nackack sono riuscito a trovare un buon compromesso che mi permette almeno di evitare tali rallentamenti nelle scansioni a media/bassa risoluzione (che appunto impiegano un lasso di tempo inferiore per eseguire la scansione).

oltretutto se abbasso ancor di piu' il valore di questa variabile, ottengo nuovamente i rallentamenti al posto di ulteriori miglioramenti.. (mah)

Ah, ho provato con diversi baud rate 115200, 57600 ma mi è sembrato che questo settaggio non c'entri con questi rallentamenti.

EDIT:

Per quanto riguarda i rallentamenti, ho parzialmente risolto riducendo la variabile "nackack" a 25 (il codice originale aveva 100).
Diciamo che il problema del rallentamento lo ottengo solo nelle scansioni 1x1 cioe' quelle con piu' risoluzione.
Sembra proprio che l'Arduino accumuli fatica! e ho accertato che tale rallentamento avviene (sempre eseguendo scansioni accurate in alta risoluzione) anche quando la scheda NON è connessa usb.. (quindi alimentata dalla batteria e assenza di processing)

Dopo ulteriori test, non sono piu' cosi' sicuro che il cambio del valore della variabile neackack sia in qualche modo legato a tali rallentamenti..
La cosa di cui sono piu' certo è che tali rallentamenti avvengono quando la scansione dura piu' di 20/30 secondi.
Ecco perchè eseguendo scansioni con risoluzione media (che impiega circa 11 secondi per essere eseguita) tali rallentamenti non avvengono mai.
Bisogna che la scansione duri di piu' per avere tali rallentamenti; sembra proprio che qualche "buffer" vada oltre la sua capacita'.. classico collo di bottiglia.

E confermo che per "resettare" tale rallentamento e ottenere nuovamente la velocita' corretta, bisogna staccare e riattaccare l'alimentazione USB (se la Mega è alimentata dall'usb) o spegnere e riaccendere l'alimentazione da batteria (se la Mega, appunto, è alimentata dalla batteria)
Quindi è un problema "resettabile" solo staccando e riattaccando l'alimentazione dell' Arduino Mega.

A questo punto mi manca solo provare tutto utilizzando l'ultimo schema, quello che usa le coppie di condensatori piazzati in prossimità dei dispositivi.
Appena avro' tutto, faro' dei test e vi aggiornerò!
Se intanto vi venisse in mente qualche altra soluzione teorica per risolvere questi rallentamenti, sono tutto orecchi!

PS : il mio laser:
LIDAR-Lite Laser Rangefinder (PulsedLight)
Product Code: RB-Pli-01
non sono piu' cosi' sicuro che sia il V2.. anche se quando lo ordinai lessi appunto V2..
mah

Leggi questo post di @milefori.Alimentazione Arduino 5V Buck-Boost converter - #23 by milefori - Hardware - Arduino Forum

Li si consiglia di modificare un cavo USB rimuovendo i due conduttori di alimentazione.

Il rischio è nei confronti del chip USB del PC, tuttavia potrebbe pure non accadere nulla di disastroso, in sostanza alimentare da USB e contemporaneamente da +5V non è esente da rischi.

Abbassando a 25 la variabile nackack sono riuscito a trovare un buon compromesso che mi permette almeno di evitare tali rallentamenti nelle scansioni a media/bassa risoluzione (che appunto impiegano un lasso di tempo inferiore per eseguire la scansione).

Io non avevo risposto apposta perché nonostante non avesse senso per me, l'importate era che funzionava e magari mi sfuggiva qualcosa. Ora tu mi confermi che non risolve il problema.

Ecco perchè eseguendo scansioni con risoluzione media (che impiega circa 11 secondi per essere eseguita) tali rallentamenti non avvengono mai.
Bisogna che la scansione duri di piu' per avere tali rallentamenti; sembra proprio che qualche "buffer" vada oltre la sua capacita'.. classico collo di bottiglia.

Il buffer della seriale si riempe solo se si inseriscono nella unità ti tempo più dati di quanti se ne possono spedire con il baud rate selezionato. Comunque per verificare basta evitare di spedire da seriale,
Ciao.

Leggi questo post di @milefori.

Li si consiglia di modificare un cavo USB rimuovendo i due conduttori di alimentazione.

Il rischio è nei confronti del chip USB del PC, tuttavia potrebbe pure non accadere nulla di disastroso, in sostanza alimentare da USB e contemporaneamente da +5V non è esente da rischi.

Non capisco bene a cosa ti riferisci (queste tue parole sono senza un testo in "Quote") ma di sicuro dopo il tuo consiglio di accendere prima la batteria e solo dopo inserire il cavo usb, ho risolto i problemi di freeze del codice quando appunto alimento il tutto con la batteria.

Io non avevo risposto apposta perché nonostante non avesse senso per me, l'importate era che funzionava e magari mi sfuggiva qualcosa. Ora tu mi confermi che non risolve il problema.

Si, in effetti ad ora non ho capito a cosa serva la variabile nackack..
sto facendo anche in questi minuti dei test e ho notato che abbassando tale variabile a 25, otterro'il rallentamento verso i 30 secondi di scansione;
utilizzando un valore di 100 ottengo il rallentamento nei primi 10 secondi.
Ho parecchi test oramai che confermano questo ma comunque continuo a non afferrare il senso di tale variabile.. anche perchè riducendolo ulteriormente si ottiene il rallentamento immediatamente dopo 1 o 2 secondi.. mah...

Il buffer della seriale si riempe solo se si inseriscono nella unità ti tempo più dati di quanti se ne possono spedire con il baud rate selezionato. Comunque per verificare basta evitare di spedire da seriale,
Ciao.

Queste tue parole mi dovrebbero consigliare di aumentare il baud rate..
cio' creerebbe un flusso dati disponibile ben piu' "largo" dell'attuale e quindi teoricamente non dovrebbe piu' avvenire il collo di bottiglia, o tuttalpiu' dovrebbe avvenire piu' tardi nel tempo e invece, purtroppo, anche con baud rate tipo 250000, 500000, 1000000 la strana logica di questi rallentamenti non cambia.. avvengono lo stesso..
ma poi perchè si e' costretti a spegnere e riaccendere l'alimentazione per riottenere il codice alla giusta velocita'??
Dovrebbe bastare semplicemente un riavvio del codice! e invece no, bisogna proprio togliere e rimettere l'alimentazione...
non è che sia proprio la mia Mega danneggiata? (ne ha visti tanti di brutti cablaggi in questi anni)

Ps ho dei condensatori da 1500 e 2200 uF. posso tentare di usare questi? o sono troppo alti di uF rispetto a quelli consigliati da 47uF?

EDIT :
Altro indizio..

durante l'esecuzione, a velocita' normale, della scansione la lucina TX è fissa con rapidissimi e momentanei spegnimenti

Durante i rallentamenti questa lucina TX invece lampeggia chiaramente (si accende e si spegne in maniera ben visibile)

Ora sto provando con il delay dei nackack portato da 1 a 5ms..
Sono alla sesta scansione ad alta risoluzione di seguito
e per ora zero rallentamenti!!.. (ottenendo anche una scansione piu' limpida seppur piu' lenta)

quindi forse era il famoso overpolling... ("Wait 1 ms to prevent overpolling") ed evidentemente 1millisecondo era troppo poco per scansioni cosi' lunghe come quella in alta risoluzione

Ragazzi! dopo ulteriori test posso confermare che questo mio thread puo' essere modificato in RISOLTO.
Confermo le parole in grosseto del mio ultimo commento.

Entrambi i due problemi iniziali(i rallentamenti e i freeze del codice) sono stati quindi risolti.

GRAZIE davvero a Mauro e Claudio! e ancora una volta questo forum si dimostra per me ed il mio progetto, indispensabile!

Non capisco bene a cosa ti riferisci (queste tue parole sono senza un testo in "Quote")

Colpa mia, mancava il link, ora l'ho corretto.

Entrambi i due problemi iniziali(i rallentamenti e i freeze del codice) sono stati quindi risolti.

GRAZIE davvero a Mauro e Claudio! e ancora una volta questo forum si dimostra per me ed il mio progetto, indispensabile!

Ottimo, letto anche in merito ad overpoling e mi chiedo se non ci sia modo di evitarlo. La wire (o i2c) usano gli interrupt e mi pare si possa configurare una funzione utente la quale viene chiamata quando ci sono dati da leggere, ma non so come si possa al momento integrare con LIDAR a cui ho dedicato poco tempo.

Per me ancora rimane il mistero del rallentamento che una volta innescato va via solo dopo un reset.

Ps ho dei condensatori da 1500 e 2200 uF. posso tentare di usare questi? o sono troppo alti di uF rispetto a quelli consigliati da 47uF?

No, ma solo perché sono troppo ingombranti e senza i 100nF e lavoro sprecato, piuttosto ci sarebbe da sistemare il cablaggio, ad esempio potresti usare delle schedine millefori e dei morsetti a vite così eviteresti anche di saldare condensatori volanti, ma questo credo che sia meglio pensarci quando il tutto è pienamente funzionante e testato. Se vuoi rivedere il cablaggio sperimentale vale quanto detto in precedenza, cioè morsetti volanti mammut.

Ciao.

Colpa mia, mancava il link, ora l'ho corretto.

Ma figurati!! comunque ora me lo leggo :slight_smile:

Per me ancora rimane il mistero del rallentamento che una volta innescato va via solo dopo un reset.

In effetti è una roba strana.. come se qualcosa nella Mega si "svuotasse" SOLO ed ESCLUSIVAMENTE dopo aver "staccato e rialacciato" la corrente..

No, ma solo perché sono troppo ingombranti e senza i 100nF e lavoro sprecato, piuttosto ci sarebbe da sistemare il cablaggio, ad esempio potresti usare delle schedine millefori e dei morsetti a vite così eviteresti anche di saldare condensatori volanti, ma questo credo che sia meglio pensarci quando il tutto è pienamente funzionante e testato. Se vuoi rivedere il cablaggio sperimentale vale quanto detto in precedenza, cioè morsetti volanti mammut.

Appena avro' a disposizione i condensatori a 47uF e quelli da mettergli in parallelo (quelli da nF), faro' immediatamente nuovi test! (certo ora sono risolti i problemi ma punto a creare un cablaggio corretto)

Mauro, ancora GRAZIE 1000!