Autor Tema: Sensor Capacitivo com apenas ADC (AN1298)  (Leído 2583 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MAUTV

  • PIC10
  • *
  • Mensajes: 15
Sensor Capacitivo com apenas ADC (AN1298)
« en: 14 de Abril de 2012, 22:50:29 »
Olá a todos! Hoje estava verificando a possibilidade de utilizar o PIC 16F877A para realizar uma aplicação com Touch (capacitivo) conforme documento da Microchip AN1298.

Abaixo segue o código que criei mas não funcionou muito bem.

Código: [Seleccionar]
unsigned long int TOUCH ()
{
    unsigned long int VALOR = 0;

    //ADRESH = 0X00;
    //ADRESL = 0X00;

    ADCON1 = 0b11000010;

    RA0 = 1;                                // Seta RA0 hight
    TRISAbits.TRISA0 = 0;         // Seta AN0 como RA0

    __delay_ms(30);

    ADCON0 = 0b10000001;  // Faz AN0 como analógico

    RA1 = 0;                                // Seta saída em zero
    TRISAbits.TRISA1 =0;         // Seta AN1 como RA1
    TRISAbits.TRISA1 =1;         // Seta RA1 como AN1

    ADCON0 = 0b10001001;    // Faz AN1 como analógico
    __delay_us(30);

    ADCON0bits.GO_DONE =1;
    while(GO_DONE);

    VALOR = ADRESH;
    VALOR <<= 8;
    VALOR = VALOR | ADRESL;

    ADCON0bits.ADON = 0;
    TRISAbits.TRISA1 =0;         // Seta AN1 como RA1

    return VALOR; 
}
O erro que ocorre é o seguinte.
A variável VALOR não tem um valor constante, ele varia de 0000 até 500 aleatoriamente, assim não consigo assertividade na detecção do acionamento da tecla capacitiva.

Alguém poderia me ajudar a encontrar o problema?

Muito obrigado novamente!

Desconectado MAUTV

  • PIC10
  • *
  • Mensajes: 15
Re: Sensor Capacitivo com apenas ADC (AN1298)
« Respuesta #1 en: 16 de Abril de 2012, 23:41:14 »
Boa noite!

Ainda estou estudando este documento, entretanto consegui obter algo já usual como abaixo:

Código: [Seleccionar]
unsigned long int TESTE ()
{
    unsigned long int VALOR = 0;

    ADRESH = 0X00;                 // Zera registros
    ADRESL = 0X00;                 // Zera registros

    ADCON1 = 0b10001110;           // Justificar a direita & Fosc/64 & AN0 com referencias internas

    PORTA=0X00;                    // Zera valor do capacitor interno do AD (CHOLD)
    TRISA=0X00;                    // Porta A como saída
    __delay_ms(10);                // Tempo para garantir 0v no CHOLD
    PORTA=0XFF;                    // Carrega o CHOLD com Vdd

    ADCON0bits.CHS = 0b000;        //Liga canal AN0
    ADCON0bits.ADCS = 0b10;        // Fosc/64
    ADCON0bits.ADON = 1;           // Liga ADC

    TRISA=0XFF;                    // Porta A como entrada
   __delay_us(30);                 // Tempo para realizar a leitura

    ADCON0bits.GO_DONE =1;         // Inicia a conversão
    while(GO_DONE);                // Aguarda finalizar a conversão

    VALOR = ADRESH;
    VALOR <<= 8;
    VALOR = VALOR | ADRESL;

    ADCON0bits.ADON = 0;            // Desligar ADC

    return VALOR ;
}

Agora sem toque 850 e 830, conforme vou aproximando o dedo este valor vai diminuindo gradativamente até o valor de 650. Já pode-se utilizar para detectar entretanto ainda que realizar conforme material da Microchip.

Aguardo ajudas, muito obrigado!

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Sensor Capacitivo com apenas ADC (AN1298)
« Respuesta #2 en: 18 de Abril de 2012, 20:12:23 »
fantastico!! espero ver los resultados! saludos!
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Sensor Capacitivo com apenas ADC (AN1298)
« Respuesta #3 en: 19 de Abril de 2012, 00:10:22 »
Aca también hablamos del tema, hay videos y ejemplos
http://www.todopic.com.ar/foros/index.php?topic=35513.0

Saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein