Ho acquistato un joystick da futura elettronica http://www.futurashop.it/index.php?route=product/product&filter_name=joystick&product_id=5321 .
Volevo provare a pilotare due servo con un pic16f88 che come sappiamo ha un solo adc e può quindi gestire un solo ingresso alla volta da cui prelevare il segnale.
Ingresso che viene selezionato con il registro ADCON0.
Con un solo ingresso adc imposto ADCON0 e vai......ma con un joystick la situazione si complica.
Esempio:
muovo il joystick sull' asse delle x e tutto va bene in quanto l'ingresso è selezionato con ADCON0.
muovo il joystick sull' asse delle y non accade nulla perché l'ingresso non è selezionato è ancora selezionato
l'altro ( quello delle x)
Non riesco a trovare un modo per deselezionare il " vecchio " ingresso per il "nuovo"
Faccio presente che non ho scritto nessun programma questo problema mi blocca.
Massimo.
[PIC16F88] Interfacciamento joystick mediante adc
Moderatore:
Paolino
7 messaggi
• Pagina 1 di 1
0
voti
Potresti risolvere con un multiplexer analogico, ce ne sono vari in commercio, oppure una soluzione dedicata a transistor. L'idea di base è selezionare alternativamente un ingresso (asse x) mandarlo all'ADC, fare la conversione e memorizzarla come asse x, poi selezionare l'altro ingresso (asse y) mandarlo all'ADC, fare la conversione memorizzandola come asse y, e cosi' via.
La frequenza di scambio deve essere decisa in base alla velocita' di conversione dell'ADC (c'è un limite massimo di frequenza dato dalla "lentezza" della conversione) da decidere, ad esempio se tutta la conversione completa impiega 20 us (esempio) scambi gli ingressi ogni 25 us, di modo da fare 40'000 letture (20'000 per "canale") ogni secondo; inoltre il multiplexer avra' una sua frequenza massima data nel suo datasheet.
Un esempio: http://www.analog.com/en/switchesmultip ... oduct.html
La frequenza di scambio deve essere decisa in base alla velocita' di conversione dell'ADC (c'è un limite massimo di frequenza dato dalla "lentezza" della conversione) da decidere, ad esempio se tutta la conversione completa impiega 20 us (esempio) scambi gli ingressi ogni 25 us, di modo da fare 40'000 letture (20'000 per "canale") ogni secondo; inoltre il multiplexer avra' una sua frequenza massima data nel suo datasheet.
Un esempio: http://www.analog.com/en/switchesmultip ... oduct.html
-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
1
voti
Per decidere quale canale "guardare" puoi usare il polling, puoi aspettare un interrupt ADC (che va settato e ti dice quando la conversione è finita), puoi fare come vuoi visto che hai piu' canali a disposizione.
Io avevo capito che tu volessi usare un solo canale per piu' ingressi analogici, da li' il multiplexer.
Senza googlare tanto, vai direttamente qui, è sicuramente la fonte piu' affidabile: http://ww1.microchip.com/downloads/en/d ... 30487c.pdf
Da pagina 116 spiega per bene i passi da seguire, in multichannel e con/senza interrupt.
Devi lavorare sostanzialmente con 5 registri (ADCON0, ADCON1,ADSEL,ADRESH,ADRESL).
Io farei un polling, ma se vuoi complicarti un po' puoi usare uno start "triggerato" settando il modulo compare come scritto a pagina 120.
Una lettura piu' approfondita la puoi dare a questo piccolo capolavoro : http://ww1.microchip.com/downloads/en/d ... 33023a.pdf
Tutto cio' che trovi in rete deriva da questi documenti, tanto vale leggere direttamente la fonte
Io avevo capito che tu volessi usare un solo canale per piu' ingressi analogici, da li' il multiplexer.
Senza googlare tanto, vai direttamente qui, è sicuramente la fonte piu' affidabile: http://ww1.microchip.com/downloads/en/d ... 30487c.pdf
Da pagina 116 spiega per bene i passi da seguire, in multichannel e con/senza interrupt.
Devi lavorare sostanzialmente con 5 registri (ADCON0, ADCON1,ADSEL,ADRESH,ADRESL).
Io farei un polling, ma se vuoi complicarti un po' puoi usare uno start "triggerato" settando il modulo compare come scritto a pagina 120.
Una lettura piu' approfondita la puoi dare a questo piccolo capolavoro : http://ww1.microchip.com/downloads/en/d ... 33023a.pdf
Tutto cio' che trovi in rete deriva da questi documenti, tanto vale leggere direttamente la fonte

-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
0
voti
non so se puoi fare un polling in quanto se si considera che il joystick è in posizione centrale si avrà sul pin interessato una tensione di circa 2.5 V che non è ne zero ne uno secondo me.......
0
voti
Non sapevo come è il segnale che arriva dal joystick, nel tuo caso ci vuole una pre-elaborazione del segnale con qualche operazionale, penso. Ma aspetta pareri piu' autorevoli, e metti magari le specifiche del joystick altrimenti se ad ogni post dici una cosa in piu' non la finiamo manco a natale, specifica bene il tipo di segnale che arriva e quanti sono.
-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
7 messaggi
• Pagina 1 di 1
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

