spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica Avanzata > Sensori

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 18-09-2014, 19.20.03
giorgik giorgik non è collegato
Robottaro senior
 
Data registrazione: 19-08-2011
Residenza: Torino
Messaggi: 49
Potenza reputazione: 49
giorgik E' per ora ancora un mistero
Predefinito Un aiuto per leggere un segnale analogico

Salve a tutti, lo so che la mia richiesta vi farà un pò incavolare, ma avrei bisogno che mi aiutaste a capire come si progetta un semplice circuito che usa l'ingresso analogico RA4 del PIC16F1455 con clock interno a 48MHz, per leggere un segnale analogico. Supponiamo inizialmente di usare come generatore di segnale analogico un potenziometro da 10kOhm.
Come devo impostare la scelta della frequenza in ADCON1 ? Se usassi un altro segnale analogico con una sua frequenza di xKHz, quale valore devo usare per ADCON1 ?
Immagini allegate
Tipo file: jpg mio-USB.jpg (53.0 Kb, 45 visite)
Rispondi citando
  #2  
Vecchio 18-09-2014, 22.12.30
L'avatar di Caronte
Caronte Caronte non è collegato
Administrator
 
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 53
Messaggi: 2,962
Potenza reputazione: 346
Caronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua fama
Predefinito

Io mi ero basato su questo progetto/tutorial. Non usa il 16F1455 ma secondo me è quello che ti serve. Oltre all'analogico + potenziometro studi anche il pwm.

Ciao

Antonio
Rispondi citando
  #3  
Vecchio 19-09-2014, 10.08.25
giorgik giorgik non è collegato
Robottaro senior
 
Data registrazione: 19-08-2011
Residenza: Torino
Messaggi: 49
Potenza reputazione: 49
giorgik E' per ora ancora un mistero
Predefinito

Grazie Caronte, lo vado a vedere subito.
Il mio interesse è quello di capire bene come impostare i valori nei registri per l'acquisizione del segnale analogico in ingresso che ha una data frequenza, sapendo la frequenza di lavoro Fosc del PIC.
Rispondi citando
  #4  
Vecchio 19-09-2014, 13.31.11
L'avatar di Caronte
Caronte Caronte non è collegato
Administrator
 
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 53
Messaggi: 2,962
Potenza reputazione: 346
Caronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da giorgik Visualizza messaggio
Grazie Caronte, lo vado a vedere subito.
Il mio interesse è quello di capire bene come impostare i valori nei registri per l'acquisizione del segnale analogico in ingresso che ha una data frequenza, sapendo la frequenza di lavoro Fosc del PIC.
Per quello (sento rimbombare nella mia testa le ur... le parole di Marnic e Ivano) non c'è altra soluzione del datasheet del componente (verso il fondo...)

Ciao

Antonio
Rispondi citando
  #5  
Vecchio 22-09-2014, 11.10.42
L'avatar di landyandy
landyandy landyandy non è collegato
Robottaro sostenitore
 
Data registrazione: 07-02-2010
Residenza: Abruzzo - Teramo
Età : 48
Messaggi: 2,330
Potenza reputazione: 346
landyandy La sua reputazione è oltre la sua famalandyandy La sua reputazione è oltre la sua famalandyandy La sua reputazione è oltre la sua famalandyandy La sua reputazione è oltre la sua famalandyandy La sua reputazione è oltre la sua famalandyandy La sua reputazione è oltre la sua famalandyandy La sua reputazione è oltre la sua famalandyandy La sua reputazione è oltre la sua famalandyandy La sua reputazione è oltre la sua fama
Predefinito

mi accodo alla risposta di Antonio ( che ultimamente sento sempre meno ).

le procedure sono più o meno sempre le stesse.

Setti le porte di ingresso e relative Vref, selezioni la giustificazione del risultato a destra o a sinistra, scegli i bit di conversione (8 o 10), setti il tempo di conversione, leggi il risultato tramite adresH e adresL.

Comunque, che tipo di segnale devi visualizzare in IN?
che tipo di linguaggio utilizzi?

Citazione:
Salve a tutti, lo so che la mia richiesta vi farà un pò incavolare,

non me lo posso ancora permettere.......



saluti
landyandy
__________________
------------------------------------------------




-----------------------------------------------
Rispondi citando
  #6  
Vecchio 22-09-2014, 14.30.05
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Età : 61
Messaggi: 5,458
Potenza reputazione: 436
marnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da giorgik Visualizza messaggio
Se usassi un altro segnale analogico con una sua frequenza di xKHz, quale valore devo usare per ADCON1 ?
Questa frase è sibillina.
Tu vuoi leggere il valore medio o il valore istantaneo del tuo segnale?
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #7  
Vecchio 22-09-2014, 18.20.31
giorgik giorgik non è collegato
Robottaro senior
 
Data registrazione: 19-08-2011
Residenza: Torino
Messaggi: 49
Potenza reputazione: 49
giorgik E' per ora ancora un mistero
Predefinito

Uffaaa, mi tocca riscrivere tutta la mia risposta una seconda volta, non mi ha salvato quello che avevo scritto.

Prima di tutto vi ringrazio tutti per le vostre risposte. Essendo diverse le cose che vi ho chiesto, partiamo dalla prima.
Ho fatto un progetto che usa il PIC16F1455 con USB usando le ultime versioni presenti ad ora di MPLABX e CX8. Inoltre ho fatto uso delle librerie MLA ultima versione prendendo come spunto l'esempio USB HID-custom con hardware Low Pin Count USB (vedi il mio schema circuitale).
Premetto che il tutto funziona bene, ma ora volevo capire meglio il codice.
Vediamo allora il caso in cui desidero usare l'USB con clock interno del PIC a 48MHz per avere USB full speed.
I fuses da impostare per ottenere tale caratteristica sono i seguenti:
Citazione:
#pragma config FOSC = INTOSC
#pragma config CLKOUTEN = OFF
#pragma config CPUDIV = NOCLKDIV
#pragma config USBLSCLK = 48 MHz
#pragma config PLLMULT = 3x
#pragma config PLLEN = ENABLED
Nell'inizializzazione e partenza del USB si ha:
Citazione:
OSCCON = 0xFC; // HFINTOSC @ 16MHz, 3x PLL, PLL enabled
ACTCON = 0x90; // Active clock tuning enabled for USB
Dalla tabella 29-2 di pag.357 del datasheet del PIC16F1455 mi sembra di capire che il clock interno del PIC sia di 16MHz (vedi HFosc), è corretto ciò?
Quindi per avere i 48MHz devo usare il PLL 3x, così che si abbia:
Citazione:
16MHz x 3 = 48MHz
Ma se io volessi usare il PIC senza sfruttare l'USB, ma voglio avere un Fosc di 48MHz (senza usare alcun quarzo esterno, ma solo il clock interno del PIC) devo comunque fare sempre le stesse impostazioni che ho riportato prima sia dei fuses che dell'inizializzazione e start del USB ?

Come posso verificare che effettivamente il clock del mio PIC è impostato sui 48MHz ?

Poi passiamo alla vera domanda di questo post, che però implica la comprensione di questa prima parte.

Ultima modifica di giorgik : 22-09-2014 alle ore 18.25.43
Rispondi citando
  #8  
Vecchio 22-09-2014, 19.16.57
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Età : 61
Messaggi: 5,458
Potenza reputazione: 436
marnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua fama
Predefinito

Secondo me quei fuses e OSCCON sono già configurati per non usare il quarzo esterno.
Sul datasheet cap 5.1
Se usi INTOSC è oscillatore interno
poi configurando OSCON come HFINTOSC lo setti a 16MHz
Il PLL lo puoi abilitare sia con l'oscillatore interno che esterno con il limite dei 48MHz quindi 16x3
Quello che ti dice per la usb è che se la vuoi usare in pieno devi avere 48MHz di clock
per verificare di avere quel clock fai un sw che fa lampeggiare un led con un timer, fai i conti usando i 48M e fallo lampeggiare ad esempio a 1 sec on e 1 sec off, se lampeggia diversamente (e sei sicuro dei calcoli) hai un clock diverso
oppure se hai l'oscilloscopio imposta il clockout e guarda
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #9  
Vecchio 23-09-2014, 09.14.04
giorgik giorgik non è collegato
Robottaro senior
 
Data registrazione: 19-08-2011
Residenza: Torino
Messaggi: 49
Potenza reputazione: 49
giorgik E' per ora ancora un mistero
Predefinito

Grazie Marnic, l'oscilloscopio ce l'ho ma purtroppo non posso leggere i 48MHz con precisione in quanto la banda di ogni canale è al massimo di 24MHz. Proverò dunque con un sw adatto per l'occasione.
Grazie per le altre delucidazioni.
Ora il valore così definito (i 48MHz) è quindi Fosc che viene riportato nelle formule del datasheet del PIC ?
Lo chiedo perchè nel passo successivo quando si imposta ADCON1, i suoi bit <6:4> rappresentano la freq. di campionamento (per es. 100 corrisponde a Fosc/4 e quindi ad una frequenza di 48MHz/4 = 12MHz).
E' esatto tutto ciò ?

Passo successivo delle mie domande:
2- quando ho un segnale analogico da acquisire e poi inviare alla USB, devo
definire il corretto valore di ADCON1 (vedi discorso fatto sui 4 bit alti).
Quindi tenendo anche conto che per il teorema del campionamento devo
avere una Freq >= 2 * Banda del segnale in esame (dove la Banda è la
freq. più alta del segnale in esame), come devo procedere nei conti ?
Ho letto nella tabella 16-1 di pag.151 del datasheet del PIC16F1455,
che per Frc (dedicated internal oscillator) i bit ADCS<2-0> di ADCON1
valgono x11 dove con x posso avere 0 o 1 che corrisponde ad avere un
Tad di circa 1.6us (per Fosc da 20MHz a 1MHz). Nel mio caso se
Fosc = 48MHz (o 16MHz dipende da quale risposta mi hai dato alla prima
domanda posta in alto) quanto vale Tad ?

In parole povere mi puoi definire quale sono le formule che devo usare per fare tutti questi conti e definire così correttamente i valori da far corrispondere ai bit del registro ADCON1 ?
Devo solo definire questo registro oppure devo fare ancora altre impostazioni prima di far partire la conversione ?
Sarebbe molto bello se qualcuno di voi, che ha una maggiore esperienza in queste cose, possa scrivere un tutorial che chiarisca tutti questi dubbi, magari insegnando anche a come leggere correttamente i datasheet del PIC in esame.
Rispondi citando
  #10  
Vecchio 23-09-2014, 09.54.28
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Età : 61
Messaggi: 5,458
Potenza reputazione: 436
marnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua fama
Predefinito

Perdona, poi ti rispondo con calma ma cosa devi misurare? Temo che tu ti stia infilando in un ginepraio inutilmente.
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Sensore MEMS analogico: condizionamento del segnale? el berto E. Digitale 1 24-03-2014 10.16.31
2 Arduino 2 xbee e segnale analogico "AIUTO" Ostrogoto0101 Arduino 9 29-07-2013 15.33.26
acquisizione segnale analogico e misurazione della frequenza carloandrea Arduino 0 07-01-2013 17.44.40
Ripetitatori di segnale audiovideo mi serve aiuto!! Nicol857 E. Digitale 4 07-05-2012 07.58.23
Integrazione di un segnale analogico con il pic Marco Elettronica 6 10-09-2004 20.02.46


Tutti gli orari sono GMT. Adesso sono le: 22.40.01.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB