Sensore GP2Y0A21YK0F funzionamento anomalo

  • Lello Guidi
  • Autore della discussione
  • Platino Utente
  • Platino Utente
Di più
5 Anni 4 Mesi fa - 5 Anni 4 Mesi fa #1 da Lello Guidi
Sensore GP2Y0A21YK0F funzionamento anomalo è stato creato da Lello Guidi
Sto provando il sensore Sharp GP2Y0A21YK0F con un semplice schema che ho allegato in formato Eagle.

Il listato sorgente è il seguente:
Code:
/*********************** ****************** * GP2Y0A21YK0F.c * data: 3 gennaio 2020 * descrizione: Lettura del valore di GP2Y0A21YK0F, attivazione * di un rele'¨per 5 secondi se supera la soglia * librerie: Microchip * compilatore: MPLABX IDE v4.01 e XC8 v1.45 * picmicro: PIC12F683 * configurazione: * IR = GP4 * Rele = GP0 * LED = GP2 * /******************************************************************/ #include <xc.h> #pragma config FOSC = INTOSCIO #pragma config WDTE = OFF #pragma config PWRTE = ON #pragma config MCLRE = OFF #pragma config CP = OFF #pragma config CPD = OFF #pragma config BOREN = OFF #pragma config IESO = OFF #pragma config FCMEN = OFF #define _XTAL_FREQ 8000000 #define LDR GPIObits.GP4 // pin3 AN3 #define Rele GPIObits.GP0 // pin7 #define Led GPIObits.GP2 // pin5 // variabili unsigned int lettura; unsigned int volt; // funzioni void blink(); int main(void) { OPTION_REG = 0b00000000; // bit 8 (GPPU) disabilitato) GPIO = 0b00000000; // tutte le uscite a zero WPU = 0b00000000; // Pull-up disabilitati TRISIO = 0b00010000; // GP4/AN3 IN, gli altri OUT ANSEL = 0b00101000; // AN3 ingresso analogico x ADC, Fosc/32 ADCON0 = 0b10001101; // giustificato a Dx, Vref=Vdd, AN3(GP4), ADC ON CMCON0 = 0b00000111; // comparatore OFF while(1) { __delay_us(20); // delay to GO=1; GO_DONE = 1; // abilito conversione while(GO_DONE); // attesa fine conversione lettura = (unsigned int) ADRESL + ((unsigned int) ADRESH ) <<8; volt = lettura / 204; // 1 volt = 204 quanti, 2 volt = 408 quanti. ecc. if (volt >= 2){ Led = 0; // led spento Rele = 0; // relè a stato solido //Rele = 1; // relè TF2-5v __delay_ms(5000); } Rele = 1; // relè caduto //Rele = 0; // relè caduto blink(); } // end while } // end main void blink() { Led = Led^1; // pin5 __delay_ms(500); }
Quando inserisco il sensore nel circuito, l'ingresso sul pinGP4/An3 mi rimane fisso a 5volt, anche se il sensore non ha niente nel campo di funzionamento.
Se invece alimento il sensore separatamente funziona regolarmente, con un oscilloscopio vedo l'uscita che va a oltre 1volt ogni volta che gli avvicino la mano.
Se allontano la mano l'uscita torna a zero.
Ho bisogno di un aiuto.
Saluti

Lello


This browser does not support PDFs. Please download the PDF to view it: Download PDF

Allegati:
Ultima Modifica 5 Anni 4 Mesi fa da Lello Guidi. Motivo: inserito schema

Si prega Accesso o Crea un account a partecipare alla conversazione.

Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Forum - Ultimi messaggi