Autor Tema: comparar 2 voltajes con PIC16F628A (sin conversor ADC)  (Leído 5664 veces)

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

Desconectado MichaelKnight

  • PIC16
  • ***
  • Mensajes: 154
comparar 2 voltajes con PIC16F628A (sin conversor ADC)
« en: 18 de Mayo de 2006, 16:45:31 »
Hola, alguien me podria decir ¿que comando en CCS puedo utilizar para indicar que quiero comparar los voltajes que entran en diferentes patillas?

El funcionamiento de mi proyecto consiste en un potenciomentro que mete un voltaje comprendido entre 0 y 5v y un sensor que tambien mete un voltaje comprendido entre esos valores. El potenciometro es el umbral que yo marco manualmente. En el momento que el voltaje que manda el sensor sea inferior al marcado por el potenciometro, dependiendo del estado de otras entradas, ordenara que funcione un actuador.

Espero haber explicado suficientemente claro el proposito de mi proyecto y que me podais responder lo antes posible. Saludos a todos. Por cierto, un foro estupendo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: comparar 2 voltajes con PIC16F628A (sin conversor ADC)
« Respuesta #1 en: 18 de Mayo de 2006, 17:21:32 »
SETUP_COMPARATOR( )
Syntax: setup_comparator (mode)
Parameters: mode is a constant. Valid constants are in the devices .h file and are as follows:
  • A0_A3_A1_A2
  • A0_A2_A1_A2
  • NC_NC_A1_A2
  • NC_NC_NC_NC
  • A0_VR_A1_VR
  • A3_VR_A2_VR
  • A0_A2_A1_A2_OUT_ON_A3_A4
  • A3_A2_A1_A2
Returns: undefined
Function: Sets the analog comparator module. The above constants have four parts representing the inputs: C1-, C1+, C2-, C2+
Availability: This function is only available on devices with an analog comparator.
Requires: Constants are defined in the devices .h file.
Examples:
// Sets up two independent comparators (C1 and C2),
// C1 uses A0 and A3 as inputs (- and +), and C2
// uses A1 and A2 as inputs
setup_comparator(A0_A3_A1_A2);
Example Files: ex_comp

/////////////////////////////////////////////////////////////////////////
////                         EX_COMP.C                               ////
////                                                                 ////
////  This example demonstartes the use of the built in comparator.  ////
////  The program compares the input voltage with the internal       ////
////  reference voltage.  Turn the POT to change the voltage.        ////
////                                                                 ////
////  Configure the CCS prototype card as follows:                   ////
////     Connect pin A1 to GND.                                      ////
////     Connect the output of the POT to pin A0.                    ////
////                                                                 ////
////  NOTE: Make sure the POT is turned all the way counter clock    ////
////  wise before starting the program.                              ////
////                                                                 ////
////  This example will work with the PCM compiler.  The following   ////
////  conditional compilation lines are used to include a valid      ////
////  device for each compiler.  Change the device, clock and RS232  ////
////  pins for your hardware if needed.                              ////
/////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,2003 Custom Computer Services         ////
//// This source code may only be used by licensed users of the CCS  ////
//// C compiler.  This source code may only be distributed to other  ////
//// licensed users of the CCS C compiler.  No other use,            ////
//// reproduction or distribution is permitted without written       ////
//// permission.  Derivative programs created using this software    ////
//// in object code form are not restricted in any way.              ////
/////////////////////////////////////////////////////////////////////////


#if defined(__PCM__)
#include <12F675.h>
#fuses HS,WDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9200, xmit=PIN_A3, rcv=PIN_A4)
#endif

short safe_conditions=TRUE;

#INT_COMP
void isr()  {

   safe_conditions=FALSE;
   printf("WARNING!!  Voltage level is above 3.6 V.   \r\n");
}


main()   {

   printf("\r\nRunning voltage test...\r\n\n");

   setup_comparator(A1_VR_OUT_ON_A2);
   setup_vref(VREF_HIGH|15);
   enable_interrupts(INT_COMP);
   enable_interrupts(GLOBAL);


   while(TRUE)
   {
      if(safe_conditions)
         printf("Voltage level is below 3.6 V.              \r\n");
      safe_conditions=TRUE;
      delay_ms(500);
   }
}

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MichaelKnight

  • PIC16
  • ***
  • Mensajes: 154
Re: comparar 2 voltajes con PIC16F628A (sin conversor ADC)
« Respuesta #2 en: 18 de Mayo de 2006, 20:52:17 »
Gracias por tu respuesta, con ese ejemplo ya tengo claro como indicar que entradas voy a utilizar del comparador. Pero no tengo tan claro como hacer la comparacion:

si(PIN_A3 > PIN_A0)
      activar;

Gracias nuevamente por adelantado por vuestra ayuda.
« Última modificación: 18 de Mayo de 2006, 20:59:03 por MichaelKnight »

Desconectado angelito

  • PIC10
  • *
  • Mensajes: 2
Re: comparar 2 voltajes con PIC16F628A (sin conversor ADC)
« Respuesta #3 en: 22 de Junio de 2006, 12:52:06 »
Se dispara de manera automática la interrupción en la comparación???


Un saludo

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
Re: comparar 2 voltajes con PIC16F628A (sin conversor ADC)
« Respuesta #4 en: 23 de Junio de 2006, 21:43:36 »
La interrupcion del comparador se produce si esta activada, si no hay que leer un bit que representa la salida del comparador, que no se si esta definido en el .h del 628, si no esta habira que definirlo y hacer poolling sobre el para saber cuando se activo el comparador.
saludos
PikMan

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: comparar 2 voltajes con PIC16F628A (sin conversor ADC)
« Respuesta #5 en: 24 de Junio de 2006, 07:30:11 »
Como bien muestra el amigo RedPic, para configurar la interrupcion del comparador es asi:
Código: C
  1. setup_comparator(A1_VR_OUT_ON_A2);    ///Configura pines del comparador
  2.    setup_vref(VREF_HIGH|15);                      ///Configura la Vref
  3.    enable_interrupts(INT_COMP);                  ///Se activa la interrupcion del comparador
  4.    enable_interrupts(GLOBAL);                     ///Se da permiso para que se realice la interrupcion

Estos codigos, esta en el pic_a_usar.h.



Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte


 

anything