BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Head track con Arduino e Nunchuk (https://www.baronerosso.it/forum/circuiti-elettronici/266067-head-track-con-arduino-e-nunchuk.html)

faustog_2 06 novembre 12 20:56

grazie
 
grazie CarloRoma63 del tuo intervento..

per il PWM ok nessun dubbio, la mia lacuna era appunto sul circuito Resistenza Capacità. che già i colleghi hanno spiegato sapientamente, il valore efficace del PWM riproduce benissimo il potenziometro dello Stick e qui che rende interessante la discussione... ...la possiamo ritenere una discussione molto valida e interessante. In futuro cercherò di usare il Nunchuk come stabilizzatore d'assetto per un aereo... teoricamente dovrebbe funzionare.. ma ne farò un altro tema a parte.. quando avrò trovato il tempo.

Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 3473561)
Fausto,
scusa se mi intrometto solo adesso, ma forse posso aggiungere il tassello che manca in questa conversazione.

All'inizio tu hai scambiato il segnale PWM per un segnale continuo e nessuno ti ha corretto esplicitamente. Questo ha certamente generato in te quella confusione che ha allungato questo post...

un segnale PWM, acronimo di Pulse Width Modulation cioè Modulazione dell'Ampiezza dell'Impulso, è un segnale ad onda quadra che oscilla, tipicamente, tra i valori 0 e +Vcc (tensione di batteria, nel nostro caso +5V). Il periodo di "0" è definito tempo OFF, quello a +Vcc è definito tempo ON.
Trattandosi di un segnale "impulsivo", la tensione che misuri con un tester analogico (non digitale, per avere una misura accurata occorre l'inerzia dell'ago) è un valore medio che dipende dal rapporto tra il tempo ON (ovverosia +5V) ed il tempo OFF+ON (cioè del periodo del nostro impulso).Questo rapporto si chiama DutyCycle. Per avere il valore della tensione letta dal tester devi moltiplicare questo valore per la tensione di ON.
Facciamo un esempio: se ho un PWM con un periodo di 100mS ed un tempo ON di 40mS (e quindi un tempo OFF di 60mS) avrò un DutyCycle del 40%. Se la tensione +Vcc è di 5V, allora il tester leggerà il 40% di 5, cioè 2V.

Per convertire un segnale PWM in un segnale continuo occorre un circuito RC (come ti hanno già spiegato) che stabilizzi la tensione in ingresso. In pratica, nei periodi ON il condensatore si carica attraverso la R (che contemporaneamente fornisce anche la corrente al carico), nei periodi OFF è il condensatore a fornire la corrente al carico. I due componenti vanno dimensionati in funzione del carico da alimentare e dalla frequenza (inverso del periodo) del segnale PWM in ingresso. Un C troppo piccolo non sarà in grado di stabilizzare bene la tensione in uscita, uno troppo grande renderà l'uscita poco sensibile alle variazioni del DutyCycle del PWM in ingresso.

Tu hai collegato un condensatore da 470micro direttamente all'uscita dell'arduino e dici che così funziona, credendo quindi che la R che ti hanno detto di inserire non sia realmente necessaria. Nulla di più falso! L'arduino ha, proprio per come è costruito, una R sulle sue uscite e tu stai sfruttando proprio quella. Il problema è che, così facendo, la stressi troppo (non è costruita per quello scopo) e rischi di fare danni. Ti consiglio caldamente di inserire nel circuito la R e di utilizzare i valori di R e C che ti sono già stati forniti.

Sperando di avrti chiarito gli ultimi dubbi :)

Carlo


faustog_2 13 novembre 12 20:16

una lezione molto chiara
 
come d'oggetto, volevo farvi leggere un interessante articolo che spiega il perchè l'accelerometro non misura la roteazione della testa, destra sinistra..

Cosa sono, come funzionano e a cosa servono gli Accelerometri | Settorezero

CarloRoma63 14 novembre 12 09:46

Citazione:

Originalmente inviato da faustog_2 (Messaggio 3485255)
come d'oggetto, volevo farvi leggere un interessante articolo che spiega il perchè l'accelerometro non misura la roteazione della testa, destra sinistra..

Cosa sono, come funzionano e a cosa servono gli Accelerometri | Settorezero

Complimenti, hai trovato un articolo eccellente!
Tornando all'argomento "rotazione della testa", mi viene in mente una applicazione fatta con il Remote della Wii, ove sulla testa del soggetto vengono posti due led ad infrarossi ai lati della fronte ed il remote è posto sopra alla TV, puntato verso il soggetto. Un programma (disponibile in rete) permette di leggere quindi sia la posizione spaziale che la rotazione della testa del soggetto e quindi di elaborare le informazioni per creare immagini virtualmente in 3D su tv tradizionali (Wii Headtracking Creates 3D Window Display). Si potrebbe pensare ad un sistema simile: si posizionano sul caschetto del pilota tre microfoni non direzionali, posti ai vertici di un triangolo isoscele, capaci di ricevere un segnale a 20kHz. Si pone poi ad un paio di metri di distanza un altoparlantino che emette treni di impulsi a 20kHz. Un circuito (arduino?) legge il ritardo tra i treni di impulsi ricevuti dai tre microfoni e calcola quindi la rotazione del caschetto rispetto alla sorgente. In pratica si tratta di simulare il funzionamento del sistema GPS. Ho scelto la frequenza dei 20kHz in quanto non fastidiosa per l'uomo ma ancora utilizzabile con componenti audio di fascia economica. Pensate che sia realizzabile?

Carlo

ElNonino 14 novembre 12 10:17

Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 3486025)
Complimenti, hai trovato un articolo eccellente!
Tornando all'argomento "rotazione della testa", mi viene in mente una applicazione fatta con il Remote della Wii, ove sulla testa del soggetto vengono posti due led ad infrarossi ai lati della fronte ed il remote è posto sopra alla TV, puntato verso il soggetto. Un programma (disponibile in rete) permette di leggere quindi sia la posizione spaziale che la rotazione della testa del soggetto e quindi di elaborare le informazioni per creare immagini virtualmente in 3D su tv tradizionali (Wii Headtracking Creates 3D Window Display). Si potrebbe pensare ad un sistema simile: si posizionano sul caschetto del pilota tre microfoni non direzionali, posti ai vertici di un triangolo isoscele, capaci di ricevere un segnale a 20kHz. Si pone poi ad un paio di metri di distanza un altoparlantino che emette treni di impulsi a 20kHz. Un circuito (arduino?) legge il ritardo tra i treni di impulsi ricevuti dai tre microfoni e calcola quindi la rotazione del caschetto rispetto alla sorgente. In pratica si tratta di simulare il funzionamento del sistema GPS. Ho scelto la frequenza dei 20kHz in quanto non fastidiosa per l'uomo ma ancora utilizzabile con componenti audio di fascia economica. Pensate che sia realizzabile?

Carlo

Certo che la fantasia non vi manca, il sistema terrebbe anche distanti cani, zanzare, talpe e topi.... :D :D :D

Ma usare una semplicissimo gyro e/o bussola elettronica troppo difficile ???? se poi voleste qualcosa di 'diverso' guardate qua: ams

Questi: ams, magnetic position sensor products, linear incremental magnetic position sensor, 3D position sensor, easypoint joystick position sensor ad un asse li uso da tempo.

Buona sperimentazione. :wink:


:yeah:

CarloRoma63 14 novembre 12 10:35

Citazione:

Originalmente inviato da ElNonino (Messaggio 3486059)
Certo che la fantasia non vi manca, il sistema terrebbe anche distanti cani, zanzare, talpe e topi.... :D :D :D

Ma usare una semplicissimo gyro e/o bussola elettronica troppo difficile ???? se poi voleste qualcosa di 'diverso' guardate qua: ams

Questi: ams, magnetic position sensor products, linear incremental magnetic position sensor, 3D position sensor, easypoint joystick position sensor ad un asse li uso da tempo.

Buona sperimentazione. :wink:


:yeah:

Si parlava di soluzioni alternative.... :), poi tenere a distanza mosche e zanzare mente si vola non sarebbe certamente un male... :fiu::fiu:

Le opzioni che proponi sono certamente valide, la mia avrebbe una opzione in più: la possibilità di avere la sorgente sonora attaccata fissa dietro le spalle, in modo da poter rilevare la rotazione del collo rispetto alle spalle, in modo da lasciare al pilota la libertà di orientarsi in qualsiasi posizione lui voglia. :D

Carlo

ElNonino 14 novembre 12 11:11

Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 3486090)
Le opzioni che proponi sono certamente valide, la mia avrebbe una opzione in più: la possibilità di avere la sorgente sonora attaccata fissa dietro le spalle, in modo da poter rilevare la rotazione del collo rispetto alle spalle, in modo da lasciare al pilota la libertà di orientarsi in qualsiasi posizione lui voglia. :D

Carlo

Pensa che usando il sistema 'magnetico' il pilota avrebbe sulla testa solo un semplice e piccolissimo magnete fissato al cappellino; bloccato sulle spalle un semplice filo di ferro portante un sensore microscopico e leggerissimo.

IMHO

:yeah:

CarloRoma63 14 novembre 12 11:17

Citazione:

Originalmente inviato da ElNonino (Messaggio 3486153)
Pensa che usando il sistema 'magnetico' il pilota avrebbe sulla testa solo un semplice e piccolissimo magnete fissato al cappellino; bloccato sulle spalle un semplice filo di ferro portante un sensore microscopico e leggerissimo.

IMHO

:yeah:

Si, concordo sull'idea.
Visto che lo scopo di tutto mi pare sia poter azionare il "tilt &pan" della telecamera, a mio avviso è più importante poter misurare l'angolo tra la testa e le spalle (lungo i due assi destra-sinistra e alto-basso) che la posizione della testa in senso assoluto, altrimenti rischi di non riuscire più a "guardare avanti".

Carlo

faustog_2 14 novembre 12 13:27

!!??!!
 
ciao ElNonino..

la fantasia è un valore e bisogna rispettarla.... anche quando si usano mezzi di fortuna...
Detto questo concordo con ElNonino... ....leggendo i suoi consigli... ritengo migliori di molti altri discorsi copiati dai vari siti web..

Credo che la soluzione piu economica sia un sensore magnetico per il movimento testa destra sinistra .. ieri su Farnell leggevo che un sensore costa circa 2 Euro! poi però per il movimento su e giù ci serve un accelerometro adatto a rilevare le inclinazioni lungo i due assi ...

Presto prenderò un giroscopio a tre assi, e un sensore magnetico... credo che con essi si ottiene un ottima prestazione.

PErò un idea "bestia" la vorrei gettare qui! quindi ... usare delle semplici ed economiche fotoresistenze, esattamente 4, due di esse per stabilire la direzione del sole... quindi una posta rispetto all'altra di 180 gradi, la prima deve avere il sole di fronte l'altra invece posta nel retro del caschetto sulla testa. Ancora altre due fotoresistenze poste a 180 gradi l'una dall'altra , e poste ortogonalmente alle prime due, adesso il gioco diventa semplice... perchè?? se gira la testa a desta la fotoresistenza di destra prenderà meno luce... quindi meno resistenza.... invece la fotoresistenza di sinistra prenderà piu luce.. quindi farà piu resistenza.... usando 4 ingressi analogici di Arduino.. il gioco dovrebbe funzionare.. usando solo la luce naturale del sole... spendendo 2 euro di fotoresistenze!

Da un punto di vista fisico immaginiamo una semisfera montata sul caschetto attraverso un asse, in modo che questa semisfera possa roteare... un semplice beep segnala la direzione del sole dopo aver fatto un giro di 360 gradi... giusto per tarare il dispositivo.. ...dal beep si deduce la direzione del sole... .da quesl momento in poi ... in poi entra in funzione l'algoritmo vero e proprio quello che piloterà due servi..

Giusto per non andare a complicare le cose piuttosto che intervenire sulla presa allievo maestro... si può intervenire sui due potenziomentri interni della radio, con un lavoro fatto pulito mettendo delle spinette, si possono tirare fuori i due segnali.. verso il dispositivo... ( GIA' COLLAUDATO ) abbiamo il nostro Head Track con una spesa di circa 4 Euro .

Il movimento su e giù può essere pilotato dalle due fotoresistenze che sono allineate verso il sole.. anche questo è già collaudato..

Lunico inconveniente è che non si può usare quando non c'è sole, però abbiamo speso circa 4 euro di materiale !!


a dopo

Citazione:

Originalmente inviato da ElNonino (Messaggio 3486059)
Certo che la fantasia non vi manca, il sistema terrebbe anche distanti cani, zanzare, talpe e topi.... :D :D :D

Ma usare una semplicissimo gyro e/o bussola elettronica troppo difficile ???? se poi voleste qualcosa di 'diverso' guardate qua: ams

Questi: ams, magnetic position sensor products, linear incremental magnetic position sensor, 3D position sensor, easypoint joystick position sensor ad un asse li uso da tempo.

Buona sperimentazione. :wink:


:yeah:


CarloRoma63 14 novembre 12 13:36

Citazione:

Originalmente inviato da faustog_2 (Messaggio 3486338)
Credo che la soluzione piu economica sia un sensore magnetico per il movimento testa destra sinistra .. ieri su Farnell leggevo che un sensore costa circa 2 Euro! poi però per il movimento su e giù ci serve un accelerometro adatto a rilevare le inclinazioni lungo i due assi ...

Presto prenderò un giroscopio a tre assi, e un sensore magnetico... credo che con essi si ottiene un ottima prestazione.

Ricordati che l'applicazione dovrà sempre considerare i dati in reciproca relazione. Il sensore magnetico (che dovranno essere necessariamente due, altrimenti non riesci a capire in quale direzione sposti la testa) viene anche influenzato dai movimenti avanti-indietro.

L'idea delle fotoresistenze dimenticala... tempo fa costruii una banalissima barriera a raggi infrarossi da usare all'aperto.... nonostante le schermature, ogni volta che passava una nuvola mi suonava l'allarme. Fui costretto a complicare notevolmente il circuito, con l'adozione di sistemi CAG ed utilizzare un segnale modulato al posto di un semplice led IR a luce fissa.
In sostanza, rischi che il sistema rilevi come movimenti della testa anche delle variazioni di luminosità dovute alle fonti più disparate (anche semplicemente qualcuno che ti passa vicino).


Carlo

faustog_2 14 novembre 12 15:51

???
 
si infatti il micro deve elaborare le informazioni che provengon dalle 4 fotoresistenze... non da una sola! quindi lo spostamento è valido solo se avverte una diminuzione di luce da un lato ed un simultaneo spostamento dall'altro lato... poi in ogni caso ..son controlli che non riguardano l'aereo.. si può creare un test... giusto per mettere a punto l'algoritmo... nn precipita nessun aereo come conseguenza.. è chiaro che l'utente deve operare in un campo aperto.. ma ciò è consuetudine in un campo volo! mi piacerebbe avere un opinione di ElNonino

a dopo


Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 3486353)
Ricordati che l'applicazione dovrà sempre considerare i dati in reciproca relazione. Il sensore magnetico (che dovranno essere necessariamente due, altrimenti non riesci a capire in quale direzione sposti la testa) viene anche influenzato dai movimenti avanti-indietro.

L'idea delle fotoresistenze dimenticala... tempo fa costruii una banalissima barriera a raggi infrarossi da usare all'aperto.... nonostante le schermature, ogni volta che passava una nuvola mi suonava l'allarme. Fui costretto a complicare notevolmente il circuito, con l'adozione di sistemi CAG ed utilizzare un segnale modulato al posto di un semplice led IR a luce fissa.
In sostanza, rischi che il sistema rilevi come movimenti della testa anche delle variazioni di luminosità dovute alle fonti più disparate (anche semplicemente qualcuno che ti passa vicino).


Carlo


ElNonino 14 novembre 12 15:56

Concordo con Carlo nello sconsigliarti il sistema ottico basato su fotoresistenze.

Nel 2004 ho realizzato un sensore per effettuare un suntracker per pannelli fotovoltaici, il sensore ,ed i successivi sviluppi, sono visibili qui: Foto | Wallytech - Wallytech ed è il 'barilotto' in alluminio.

Come elementi sensibili ho utilizzato semplici LED verdi, sono disposti a coppie su due piani ortogonali fra loro e con angolo fra coppia complanare di 60°, un 5° LED centrale fornisce il dato sulla luminosità diffusa (globale).

Quando il valore letto da una coppia di sensori è uguale il sole si trova esattamente sulla bisettrice dell'angolo, essendo i piani delle coppie ortogonali si ottiene un tracking completo su 2 assi.

Il sensore centrale, unito ad un sensore di temperatura all'interno del contenitore consente di compensare e scalare la sensibilità della misura.

Dopo un anno di messa a punto sul modello piccolo ho trasferito il tutto sul impianto definitivo e sta funzionando benissimo da circa 7 anni, durante i quali ho affinato il firmware di controllo, non avendo mai avuto fault anche con escursioni di temperature comprese far i -30°C ed i + 60°C.

:yeah:

CarloRoma63 14 novembre 12 16:19

Citazione:

Originalmente inviato da ElNonino (Messaggio 3486568)
Come elementi sensibili ho utilizzato semplici LED verdi...

:yeah:

????

LED VERDI come sensori????? Spiegati meglio.. :blink:

Carlo

ElNonino 14 novembre 12 18:20

Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 3486596)
????

LED VERDI come sensori????? Spiegati meglio.. :blink:

Carlo

La prendo un po larga:

In genere in fisica ogni conversione di energia è reversibile o bidirezionale, pure in campo elettrico/elettronico accade: per esempio un motore a spazzole può comportarsi da dinamo od un brushless da alternatore trifase.

i LED emettono luce se percorsi da corrente se sono illuminati però emettono corrente :D:D:D

I fotodiodi non sono altro che LED ottimizzati per generare corrente; i diodi LED usati come sensori hanno alcuni vantaggi:
- hanno una curva di conversione lumen/uA piuttosto lineare.
- quelli verdi hanno uno spettro di risposta che ben si adatta alla misurazione della luce solare.
- costano poco.
- son facilmente reperibili.
- è facile selezionarne 4 con caratteristiche molto simili.

E' chiaro che per poterli utilizzare come sensori è necessario amplificare la modesta corrente generata usando un OP-AMP ma posso garantire che il risultato è ottimo.

Questo il mio primissimo prototipo da laboratorio del 2002/2003:

http://win.wallytech.it/public/PrototipoSensore_3.jpg

Se interessa posso pubblicare lo schema del semplice ampli necessario.

:yeah:

CarloRoma63 15 novembre 12 09:13

Citazione:

Originalmente inviato da ElNonino (Messaggio 3486723)
La prendo un po larga:

In genere in fisica ogni conversione di energia è reversibile o bidirezionale, pure in campo elettrico/elettronico accade: per esempio un motore a spazzole può comportarsi da dinamo od un brushless da alternatore trifase.

i LED emettono luce se percorsi da corrente se sono illuminati però emettono corrente :D:D:D

I fotodiodi non sono altro che LED ottimizzati per generare corrente; i diodi LED usati come sensori hanno alcuni vantaggi:
- hanno una curva di conversione lumen/uA piuttosto lineare.
- quelli verdi hanno uno spettro di risposta che ben si adatta alla misurazione della luce solare.
- costano poco.
- son facilmente reperibili.
- è facile selezionarne 4 con caratteristiche molto simili.

E' chiaro che per poterli utilizzare come sensori è necessario amplificare la modesta corrente generata usando un OP-AMP ma posso garantire che il risultato è ottimo.

Questo il mio primissimo prototipo da laboratorio del 2002/2003:

http://win.wallytech.it/public/PrototipoSensore_3.jpg

Se interessa posso pubblicare lo schema del semplice ampli necessario.

:yeah:

Azz... :) Spiegazione semplice ed esaustiva, grazie.
E' proprio vero, se muori la mattina muori ignorante.. :) :)

Carlo

ElNonino 15 novembre 12 10:57

Se può interessare questo è il semplicissimo circuito di amplificazione per usare i LED come sensori; il filtraggio e l'elaborazione del segnale vengono eseguiti nel firmware del micro.

http://win.wallytech.it/public/LedAMpli.jpeg


:yeah:


Tutti gli orari sono GMT +2. Adesso sono le 09:30.

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