Tecnica Impianti Inserito: 3 ottobre 2012 Segnala Share Inserito: 3 ottobre 2012 Buongiorno, mi è sorto un problema, ho collegato un fotodiodo con relativa resistenza da 10Kohm ad un pin del mio pic e programmato come input normale come se avessi collegato un normalissimo pulsante. Ma non funziona...... non è che dovrei programmare il pin per misurare la sua tensione? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 3 ottobre 2012 Segnala Share Inserita: 3 ottobre 2012 Ma come lo hai collegato? Metti lo schemino, altrimenti non si riesce a capire il problema. Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 4 ottobre 2012 Autore Segnala Share Inserita: 4 ottobre 2012 Domanda come si include un disegno? Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 4 ottobre 2012 Autore Segnala Share Inserita: 4 ottobre 2012 Ok c'e' l'ho fatta a caricare il disegno..... la resistenza è da 10Kohm.... Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 4 ottobre 2012 Segnala Share Inserita: 4 ottobre 2012 Se quello è il collegamento non può funzionare! Il fotodiodo deve essere polarizzato in modo inverso, altrimenti conduce sempre. Se misuri la tensione ai capi del diodo misurerai sempre un valore < 1 V. Inverti il diodo e vedrai che la tensione ai suoi capi varia in funzione dell'illuminazione; teoricamente si passa da circuito aperto, caso di buio, a bassissima resistenza in caso di piena illuminazione. Poi verifica sul data sheet del diodo quale luminosità necessita e la banda ottica del diodo (visibile, infrarosso vicino, infrarosso lontano, etc.). Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 4 ottobre 2012 Autore Segnala Share Inserita: 4 ottobre 2012 Guarda la polarizzazione lo già invertita e tra le altre cose sul disegno o sbgliato, e questo tipo di fotodiodo l'ho gia utilizzato per costruire delle barriere con il laser, infatti l'ho vado a illuminare proprio con il laser A questo punto non vorrei che si trattasse di qualche errore che ho commesso sulla saldatura del pin del micro o qualche impostazione.... Non riesco proprio a capire... Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 4 ottobre 2012 Segnala Share Inserita: 4 ottobre 2012 Dici che il diodo è connesso in modo corretto e che è sbagliato il disegno, va bene. Però a questo punto dovresti anche dire cosa misuri in assenza di collegamento al PIC, quella è la prima cosa da fare. Solo se i livelli buio-luce sono corretti si va ad investigare su come hai paramentrizzato la porta del PIC o altro. Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 5 ottobre 2012 Autore Segnala Share Inserita: 5 ottobre 2012 Ho misurato come dicevi tu, e infatti senza illuminazione ho 0,08 volt quando lo illumino arrivo a 5 volt quindi secondo me sbaglio qualcosa nella programmazione che adesso vado a rivedere..... Ti faccio sapere l'esito.... Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 5 ottobre 2012 Segnala Share Inserita: 5 ottobre 2012 Come hai programmato al porta usata? Non è che l'hai programamta come uscita? Misura anche le tensioni con diodo connesso alla porta, non vorrei che fosse troppo caricato. Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 5 ottobre 2012 Autore Segnala Share Inserita: 5 ottobre 2012 Allora ho preso il mio bel tester e ho fatto delle misure. a fotodiodo non illuminato mi trovo tra il pin del pic RA0 e gnd 5 volt circa. a fotodiodo illuminato i volt scendono quasi a 0. ma il led sulla portb continua a rimanere acceso. Ti posto il programma perchè sinceramente non sò che pensare.. #include <p18f2550.h> #include <delays.h> #include <timers.h> #pragma config FOSC = HSPLL_HS #pragma config IESO= ON #pragma config WDT = OFF #pragma config LVP = OFF #pragma config PBADEN = OFF //OSC = HSPLL_HS Impostato per lavorare ad alta frequenza CON PLL ATTIVATO //PLL = attivato la divisione //WDT = OFF Disabilito il watchdog timer //LVP = OFF Disabilito programmazione LVP //PBADEN = OFF Disabilito gli ingressi analogici //Impostazione per bassa priorità void Low_Int_Event (void); #pragma code low_vector=0x18 void low_interrupt (void){ //salto per la gestione dell'interrupt a bassa priorità _asm GOTO Low_Int_Event _endasm; } #pragma code #pragma interruptlow Low_Int_Event //Funzione per la gestione dell'interrupt a bassa priorità void Low_Int_Event (void){ // controllo che l'interrupt sia stato generato dal timer0 if(INTCONbits.TMR0IF==1){ PORTBbits.RB2=~PORTBbits.RB2; INTCONbits.TMR0IF=0; } } void main (void){ //Abilitazione oscilatore interno //Abilitazione TIMER0 T0CONbits.TMR0ON=1; //abilito il timer0 T0CONbits.T08BIT=1; // lo configuro a 8 bit T0CONbits.T0CS=0; //clock interno T0CONbits.PSA=0; // assegno il prescaler al timer0 T0CONbits.T0PS2=1; //valore di prescaler 1:32 T0CONbits.T0PS1=1; //valore di prescaler 1:32 T0CONbits.T0PS0=1; //valore di prescaler 1:32 INTCONbits.TMR0IE=1; //interruzioni abilitate INTCONbits.GIE=1; //Interrupt globali INTCONbits.PEIE=1;//Interrupt a bassa priorità INTCON2bits.TMR0IP=0;//Bassa priorità RCONbits.IPEN=1; //Interrupt priorità abilitato // Imposto PORTA tutti ingressi TRISA = 0b11111111; ADCON1= 0b11111111; //Imposto come 1/0 tutti i pin del lato A, avrei potuto anche impostarne uno solo. // Imposto PORTB tutti ingressi TRISB = 0b11111000; // Imposto PORTC tutti ingressi TRISC = 0b11111111; //Dico al Pin RA0 che il suo stato se premuto è uguale a 1 cosi il Pin del LED RB0 si attiva if(PORTAbits.RA2==1){ PORTBbits.RB0=0; } else {PORTBbits.RB0=1; } //Dico al fotodiodo che se si trova illuminato allora mi deve accendere il led altrimenti deve stare spento if ( PORTAbits.RA0==1){ PORTBbits.RB1=0; } else {PORTBbits.RB1=1;} while (1){ } } Tieni conto che allo stesso modo è collegato il pulsante su RA0 e funziona benissimo Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 5 ottobre 2012 Segnala Share Inserita: 5 ottobre 2012 A aprte il fatto che i commenti non corrispondono sempre alle istruzioni, mi sembra che ci sia un sacco di roba che non serve. Io non uso quel compilatore, perchè lavoro con CCS, però così ad occhio per fare quello che vuoi bastan 3 istruzioni assembler, più una decina di righe di inizializzazione. Sfronda il programma di tutto quello che non serve, per fare quello che desideri. Poi provi a farlo funzionare. Qundo riconosci lo stato di buio o luce, ed il LED lo ricopia, avrai il tuo mattocino pronto, funzionante e debuggato da inserire in un programma più complesso quando è necessario. Tu, se ho compreso bene, sei alle prime armi con la programmazione. Bisogna imparare prima il metodo corretto, ed il metodo corretto per no impazzire e perdere giornate a debuggare è crearsi tanti mattoncini elementari. Io ne alcuni che sono oramai più che maggiorenni. Poi quando si prova una funzione nuova, o un nuovo dispositivo, bisogna ridurre al minimo indispensabile le istruzioni di contorno, così da avere sotto controllo le cose che veramente interessano. Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 5 ottobre 2012 Autore Segnala Share Inserita: 5 ottobre 2012 Ha perfettamente ragione...... Proverò a seguire il suo consiglio.... Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 6 ottobre 2012 Autore Segnala Share Inserita: 6 ottobre 2012 Buongiorno ho un piccolo problema, sto cercando di fare accende un led illuminando un fotodiodo. Premetto che mi sta facendo uscir matto perchè non vuol funzionare. Dopo ripetuti tentativi ho preso in mano il tester e sono andato a misurare le tensioni che ho su un pulsante che mi fa accendere un altro led e poi ho misurato la tensione sul fotodiodo. sul pulsante ho 5 volt a pulsante non premuto e 0volt a pulsante premuto e il led si accende. sul fotodiodo ho 4,5 volt a fotodiodo non illuminato e 0,04 volt a fotodiodo illuminato ma il led ' sempre acceso.. cosa può essere???? vi posto anche il codice.. #include <p18f2550.h> #pragma config FOSC = HSPLL_HS #pragma config IESO= ON #pragma config WDT = OFF #pragma config LVP = OFF #pragma config PBADEN = OFF //OSC = HSPLL_HS Impostato per lavorare ad alta frequenza CON PLL ATTIVATO //PLL = attivato la divisione //WDT = OFF Disabilito il watchdog timer //LVP = OFF Disabilito programmazione LVP //PBADEN = OFF Disabilito gli ingressi analogici void main (void){ // Imposto PORTA tutti ingressi TRISA = 0b11111111; ADCON1= 0b11111111;//Imposto come 1/0 tutti i pin del lato A, avrei potuto anche impostarne uno solo. // Imposto PORTB tutti ingressi TRISB = 0b11111110; // Imposto PORTC tutti ingressi TRISC = 0b11111111; if (PORTAbits.RA2==1){ PORTBbits.RB0=0; } else{ PORTBbits.RB0=1; } while (1){ } } GRAZIE Si prega di notare, anche se non sono indicati i pulsanti codice di discussione e smile, sono ancora utilizzabili Link al commento Condividi su altri siti More sharing options...
patatino59 Inserita: 6 ottobre 2012 Segnala Share Inserita: 6 ottobre 2012 Non avendo lo schema elettrico posso ipotizzare o un errore nei collegamenti o un difetto del processore. Prova ad invertire le porte utilizzate per la coppia Fotodiodo/led-che-non-funziona con la coppia Tasto/led-che-funziona e vedi se il problema si inverte. Il fotodiodo sembra essere efficiente ed i valori di tensione misurati sono OK. Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 6 ottobre 2012 Autore Segnala Share Inserita: 6 ottobre 2012 Hai ragione devo provare a collegare il fotodiodo su di un'altra porta perchè non riesco proprio a spiegarmi qual'è il problema.... Pensavo che fosse un problema di voltaggio visto che non mi arriva a 0 pensavo fosse quello.... Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 6 ottobre 2012 Segnala Share Inserita: 6 ottobre 2012 Perchè hai aperto una nuova discussione? Serve solo a far confusione. Ora le ho riunite e sei invitato a continuare con questa discussione. sul pulsante ho 5 volt a pulsante non premuto e 0volt a pulsante premuto e il led si accende. Hai provato a collegare il pulsante al posto del diodo, lasciando tutto il resto così com'è e, viceversa, il diodo al posto del pulsante? Consiglio generale. Se disponi di altre porte è sempre meglio usare la porta B come ingresso, perchè si può lavorare anche ad interrutp; usare la porta A solo per ingressi analogici. Non è obbligatorio, ma è un modus operandi che può tornare utile. Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 7 ottobre 2012 Autore Segnala Share Inserita: 7 ottobre 2012 Devo provare giusto per curiosità a provare il collegamento su un'altro ingresso, ma questo lo farò domani.... grazie ancora e a presto Link al commento Condividi su altri siti More sharing options...
Tecnica Impianti Inserita: 8 ottobre 2012 Autore Segnala Share Inserita: 8 ottobre 2012 Come sospettavo, ho cambiato il pin di collegamento da RA2 a RA3 ma il discorso non cambia, allora probabilmente devo utilizzare l'entrata come ADC e leggere la tensione che mi da il fotodiodo, oppure creare una circuiteria con ad esempio un relè che mi da un segnale 1/0 pulito. Vero? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 ottobre 2012 Segnala Share Inserita: 8 ottobre 2012 No! Se usi la porta A come I/O digitali, se quel tipo di micro lo consente (questo non lo so perchè non ho letto il data sheet specifico), Il sistema deve funzionare. Rileggi quello che ti ho scritto nel #16 e fai quelle 2 semplici prove che ti ho suggerito. Anche per capire quello che succede si deve operare con metodo; fare prove ad libitum è solo una perdita di tempo. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora