![]() |
|
|
Benvenuto Visitatore ( Log In | Registrati )
Registrati per comunicare con gli altri e per accedere a tutte le altre funzionalità del sito!
Per qualsiasi info scrivi a staff [AT] ferraraforum [PUNTO] it.
![]() |
![]()
Messaggio
#1
|
|
Magister Equitum ![]() Gruppo: Utente Messaggi: 1051 Iscritto il: 30 October 2005 Età: 41 Da: Ferrara Utente Nr.: 381 ![]() |
Ciao, per il mese prossimo (diciamo a cavallo tra maggio e giugno) vorrei preparare l'esame di Bonfè, Ingegneria e Tecnologia dei Sistemi di Controllo. C'è qualcuno che ha in programma di darlo? In particolare, potendo sostituire una buona fetta di teoria con una tesina/progettino a scelta da un elenco di temi proposti, qualcuno sarebbe interessato? C'è la possibilità di fare la tesina in coppia, per questo chiedo (IMG:http://www.ferraraforum.it/style_emoticons/default/icon_smile.gif)
Link al sito ufficiale del corso. |
|
|
![]() |
![]()
Messaggio
#2
|
|
Magister Equitum ![]() Gruppo: Utente Messaggi: 1051 Iscritto il: 30 October 2005 Età: 41 Da: Ferrara Utente Nr.: 381 ![]() |
Domanda preliminare prima di scendere nel tecnico: non è che da qualche parte si fa paciugo tra gradi Fahrenheit e Celsius? x quanto riguarda uart: non ho mai usato quelle librerie, ma di solito quelle porte sono bufferizzate, quindi per leggere dovresti fare un while() che verifichi che il carattere non sia un terminatore ('\0', EOF..). Spero di non aver detto delle castronerie eccessive... Con variabili e calcoli opportuni, mappo correttamente la tensione in gradi C, seguendo pari pari le caratteristiche del datasheet. Finchè non intervengo sui sensori, dà anche dei risultati giusti o cmq consistenti (es.: dice 27 gradi quando in lab ce ne sono 25-26). Per la lettura, pensavo proprio a un CODICE while ( (c=Uartgetc()) =! '\0' ) {//istruzioni} però ora non posso provarlo, la scheda è in lab e posso lavorarci solo lì...probabilmente l'accoppiamento sensore luce e temp è dovuto alle dita Magari fosse così semplice... ho provato coprendo con un foglio di carta anzichè il dito, e non cambia assolutamente niente. Inoltre, la tensione (quindi quando i valori dei sensori sono ancora ANALOGICI) ai pin di uscita del sensore di temperatura non fluttua se uso il dito per oscurare il light sensor (o fluttua di pochissimo, ma nell'ordine della frazione di grado) CITAZIONE Un'altra ipotesi è che i cavi non siano schermati, se hai i sensori lontani, usa un accoppiamento cavo segnale-massa per pulirti da eventuali loop elettromagnetici. I sensori sono vicinissimi, ma la tensione che ciascuno da in output è giusta (misurato in diverse condizioni col multimetro), e fatto la conversione in °C con calcoli a mano: è giusta, e comunque le due tensioni non si mostrano accoppiate. Un attimo che cerco uartgetc e simili. Intanto, grazie mille. EDIT Il registro ADCON0 configura alcune cose, in particolare dice al convertitore A/D quale ingresso analogico usare (ce ne sono 8 di ingressi, da AN0 a AN7) I registri ADRESH e ADRESL sono entrambi a 8 bit. Il convertitore A/D è a 10 bit e, per come l'ho impostato, mette i primi 8 bit in ADRESL e i rimanenti 2 bit occupano le due posizioni meno significative di ADRESH. Chiaro? CODICE while(1) { ADCON0 = 0b01000001; //f_clock di ADC = 1/8 f_clock di sistema //Ora imposto AN0 (da reimpostare con anche AN1!!) //Convertitore abilitato ADRESH = ADRESL = 0b00000000; /*CONVERSIONE DEL SEGNALE DI TEMPERATURA*/ ADGO = 1; while(ADGO) // Attesa della fine di ADC continue; temp = ADRESL + (ADRESH<<8); // Salvo nella variabile temp /****************************************/ ADRESH = ADRESL = 0b00000000; /*CONVERSIONE DEL SEGNALE DI LUMINOSITA'*/ ADCON0 = 0b01001001; //Switch dell'ingresso da AN0 a AN1 ADGO = 1; // Partenza ADC while(ADGO) // Attesa della fine di ADC continue; light = ADRESL + (ADRESH<<8); // Salvo nella variabile light /****************************************/ // SEGUE L'OPPORTUNA CONVERSIONE DI TEMP E LIGHT IN GRADI E IRRADIANZA SECONDO LE INDICAZIONI DEI DATASHEET... Ho anche provato a ripulire i registri ADRES dopo la conversione (con ADRESH = ADRESL = 0b00000000; ) per sicurezza, ma.... nada. Mi pare proprio un problema di interferenza tra le linee del pic. Messaggio modificato da Ale83 il 30 Nov 2007 - 17:42 |
|
|
![]() ![]() |
Versione Lo-Fi | Oggi è il: 16 Jun 2024 - 17:59 |
|
![]() |
|||||||||||||
Contattaci a staff@ferraraforum.it - visitatori dal 25 Marzo 2005 ( oggi) |