TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: danone en 29 de Mayo de 2006, 18:54:29

Título: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 29 de Mayo de 2006, 18:54:29
Hola buenasa todos soy nuevo en este foro me he registrado hace pocos dias, ante todo os pido que tengais un poco de paciencia conmigo ya que es el primer intento que hago con los pics haciendo el codigo yo, asi que es probable que tenga muchos errores, de eso a que me decida a contaros como es el proyecto a ver si me podeis ayudar.

El proyecto consta de un termometro que muestra 4 temperaturas en un display LCD Hitachi 2x16, como sondas voy a usar sondas TMP36, en otro foro  Teo me recomendo estas por el motivo de que entregan un voltaje positivo al adc del pic para temperaturas Negativas( necesito poder temperaturas negativas, ya que lo voy a necesitar para una peltier entre otras cosas).

El circuito original quiero decir que es de una persona llamada Ionitron podeis encontrarlo en la web www.x-robotics.com , yo con la ayuda de Teo lo he modificado para las sondas TMP36, le he añadido la parte de oscilacion del pic y los condensadores que faltaban para no meter ruido en la entradas de alimentacion a las sondas.

El circuito en cuestion ya modificado:

(http://img110.imageshack.us/img110/6619/temp9na.th.png) (http://img110.imageshack.us/my.php?image=temp9na.png)   

NUEVO DISEÑO DEL CIRCUITO MODIFICADO PARA LCD 4 BITS PARA PODER USARLO CON LA LIBRERIA LCD.C


(http://img412.imageshack.us/img412/7171/4bits4hn.th.png) (http://img412.imageshack.us/my.php?image=4bits4hn.png)

Voy a usar el compilador CCS C, aun no he hecho nada el codigo lo he escrito a pelo en un papel con la poca idea que tengo de esto, ni lo he compilado aun, mas que nada quiero que me comenteis por encima lo que esta mal y demas o como se deberia hacer pa hacerlo bien y poder seguir con ello.

Código: [Seleccionar]
#include "16f876.h"
#include "lcd.c"
#fuses NOLVP,XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)

#byte_port_a=5
#byte_port_b=6
#byte_port_c=7

#device adc=8

void main(void){

  int temp1,temp2,temp3,temp4
  const int tmp=50
 
  set_tris_a(0xFF)   //todos como entrada sondas de temperatura y vref
  set_tris_b(0x00)  //todos como salida datos lcd
  set_tris_c(0x00)         // pines de control lcd salida todos
 
  setup_adc_ports(RA0_RA1_RA2_RA5);
  setup_adc(ADC_CLOCK_INTERVALS);

   while(true){
     set_adc_channel(0);
     temp1=read_adc;
     temp1=(temp1/10)-tmp;
     set_adc_channel(1);
     temp2=read_adc;
     temp2=(temp2/10)-tmp;
     set_adc_channel(2);
     temp3=read_adc;
     tmp3=(temp3/10)-tmp;
     set_adc_channel(3);
     temp4=read_adc;
     temp4=(temp4/10)-tmp;
     lcd_init();
     lcdgotoxy(0,1);   //me posiciono en la linea 1 en el primer caracter
     printf(lcdputc,"T1= %d1 ºC",temp1); //Escribo temperatura del sensor1
     delay(500);   
     lcdgotoxy(8,1);   //me posiciono en la linea 1 , en el octavo caracter
     printf(lcdputc,"T2= %d1 ºC",temp2); //Escribo temperatura del sensor2
     delay(500);
     lcdgotoxy(0,2); //me posiciono en la linea 2, en el primer caracter
     printf(lcdputc,"T3= %d1 ºC",temp3); //Escribo temperatura sensor3
     delay(500);
     lcdgotoxy(8,2); //me posiciono en la segunda linea , octavo caracter
     printf(lcdputc,"T4= %d1 ºC",temp4); //Escribo temperatura del sensor4
     delay(500);
   }
}


A mas de uno os parecera una barbaridad seguro el codigo por la cantidad de fallos que tendra pero por eso os pido paciencia :P

Lo que mas me estas costando es comprender la parte superior del programa, sobre todo los uses_fast_io, byte_port_ y los set_tris_ ( concretamente como declarar no todos los pines como salida/entrada sino solo algunos)

Supongo que habra que usar Lcdgotoxy y demas funciones para posicionarme en sitios concretos del lcd, pero no tengo mucha idea tampoco de como escribirlo colocado.

Un saludo y muchisimas gracias a todos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: jfh900 en 29 de Mayo de 2006, 19:32:03
Asi mirando por encima, los condensadores de desacoplo, desacoplan tanto que no dejan pasar la alimentación :). Estan puestos en serie y hay que ponerlos en paralelo, si no no funcionara el circuito.

Un saludo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 29 de Mayo de 2006, 19:36:22
en cuanto a las preguntas sobre los fast_io ,byte_ port, set_tris
se utilizan para configuracion de puertos.
aca la explicacion de eso y much mas

http://www.todopic.com.ar/foros/index.php?topic=4533.0
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 05:07:22
Asi mirando por encima, los condensadores de desacoplo, desacoplan tanto que no dejan pasar la alimentación :). Estan puestos en serie y hay que ponerlos en paralelo, si no no funcionara el circuito.

Un saludo.

Muy bien, gracias :D luego cuando pueda modifico el circuito :P

en cuanto al codigo como lo veis?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 12:23:20
danone ya as compilado tu programa?
Te cuento cuando lo compilas te van apareciendo los errores.
En los printf te falta el %f de la variavble que estas imprimiendo
Otra cosita por el foro de c en los ejemplos de Vs zener tenes una traduccion del manual de CCS y el de la ultima vercion (en ingles)
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 12:32:25
buenas , que va juancho aun no he tenido tiempo de compilarlo todo lo que he hecho esta hecho en papel y eso, las variables las he declarado como enteras, a lo mejor segun estoy pensando lo msimo tengo que declararlas como numeros reales ...
He puesto %d porque como las habia declarado como enteras...
El resto del codigo como lo veis? Ahora dentro de un rato me pondre con el ccs a instalarlo y demas.

Un saludo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 12:38:19
a primera vista no veo mas errores una sola cosa declaras los puertos como constantes pero no se si es nesesario cuando usas el fast-io,va dejame probar en el picc y te cuento
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 13:42:40
ya he instalado el ccs y demas y pruebo y me falla en la libreria lcd.c, creo que el error puede ser el siguiente, no se si toy en lo cierto, el circuito estaba hecho por un tio en asm, y yo lo he modificado y lo toy programando para c, segun el tiene puesto el lcd como podeis ver en la foto, segun veo eso no esta controlado a 4 bits no? tendria que hacerlo como esta preparado la libreria no? pero yo mirando la libreria lcd.c me pone que tiene que estar de la siguiente manera:

RD0 a enable
RD1 a RS
RD2 a RW

RD4 a D4
RD5 a D5
RD6 a D6
RD7 a D7

empezando por que el pic que uso no tiene puerto D, que es lo que hago? cambio el esquema a 4 bits de datos? y 3 pines de control? usando el puerto B del pic?

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 16:20:24
bien como vos decis la libreria que que estas usando es para manejarlo con 4bits asique tendras cambiar el circuito como vos decis.
Con respecto a lo de el puerto tenes dos opciones.

o bien lo cambias en la libreria o usas la linea

#define use_portb_lcd TRUE  antes de presesar los datos ,es decir en el preprosesado

un saludo juan
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 17:21:34
puedo cambiar el circuito usando el puerto B para el lcd ,
siendo :


RB0 a enable
RB1 a RS
RB2 a RW

RB4 a D4
RB5 a D5
RB6 a D6
RB7 a D7


he añadido ya la linea al programa que me has dicho el #define use_portb_lcd TRUE

la libreria que tengo es la siguiente:

Código: [Seleccionar]
///////////////////////////////////////////////////////////////////////////
////                             LCDD.C                                ////
////                 Driver for common LCD modules                     ////
////                                                                   ////
////  lcd_init()   Must be called before any other function.           ////
////                                                                   ////
////  lcd_putc(c)  Will display c on the next position of the LCD.     ////
////                     The following have special meaning:           ////
////                      \f  Clear display                            ////
////                      \n  Go to start of second line               ////
////                      \b  Move back one position                   ////
////                                                                   ////
////  lcd_gotoxy(x,y) Set write position on LCD (upper left is 1,1)    ////
////                                                                   ////
////  lcd_getc(x,y)   Returns character at position x,y on LCD         ////
////                                                                   ////
///////////////////////////////////////////////////////////////////////////
////        (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.                               ////
///////////////////////////////////////////////////////////////////////////

// As defined in the following structure the pin connection is as follows:
//     D0  enable
//     D1  rs
//     D2  rw
//     D4  D4
//     D5  D5
//     D6  D6
//     D7  D7
//
//   LCD pins D0-D3 are not used and PIC D3 is not used.

// Un-comment the following define to use port B
#define use_portb_lcd TRUE


struct lcd_pin_map {                 // This structure is overlayed
           BOOLEAN enable;           // on to an I/O port to gain
           BOOLEAN rs;               // access to the LCD pins.
           BOOLEAN rw;               // The bits are allocated from
           BOOLEAN unused;           // low order up.  ENABLE will
           int     data : 4;         // be pin B0.
        } lcd;


#if defined(__PCH__)
#if defined use_portb_lcd
   #byte lcd = 0xF81                   // This puts the entire structure
#else
   #byte lcd = 0xF83                   // This puts the entire structure
#endif
#else
#if defined use_portb_lcd
   #byte lcd = 6                  // on to port B (at address 6)
#else
   #byte lcd = 8                 // on to port D (at address 8)
#endif
#endif

#if defined use_portb_lcd
   #define set_tris_lcd(x) set_tris_b(x)
#else
   #define set_tris_lcd(x) set_tris_d(x)
#endif


#define lcd_type 2           // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40    // LCD RAM address for the second line


BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
                             // These bytes need to be sent to the LCD
                             // to start it up.


                             // The following are used for setting
                             // the I/O port direction register.

struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out
struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // For read mode data pins are in



BYTE lcd_read_byte() {
      BYTE low,high;
      set_tris_lcd(LCD_READ);
      lcd.rw = 1;
      delay_cycles(1);
      lcd.enable = 1;
      delay_cycles(1);
      high = lcd.data;
      lcd.enable = 0;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(1);
      low = lcd.data;
      lcd.enable = 0;
      set_tris_lcd(LCD_WRITE);
      return( (high<<4) | low);
}


void lcd_send_nibble( BYTE n ) {
      lcd.data = n;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(2);
      lcd.enable = 0;
}


void lcd_send_byte( BYTE address, BYTE n ) {

      lcd.rs = 0;
      while ( bit_test(lcd_read_byte(),7) ) ;
      lcd.rs = address;
      delay_cycles(1);
      lcd.rw = 0;
      delay_cycles(1);
      lcd.enable = 0;
      lcd_send_nibble(n >> 4);
      lcd_send_nibble(n & 0xf);
}


void lcd_init() {
    BYTE i;
    set_tris_lcd(LCD_WRITE);
    lcd.rs = 0;
    lcd.rw = 0;
    lcd.enable = 0;
    delay_ms(15);
    for(i=1;i<=3;++i) {
       lcd_send_nibble(3);
       delay_ms(5);
    }
    lcd_send_nibble(2);
    for(i=0;i<=3;++i)
       lcd_send_byte(0,LCD_INIT_STRING[i]);
}


void lcd_gotoxy( BYTE x, BYTE y) {
   BYTE address;

   if(y!=1)
     address=lcd_line_two;
   else
     address=0;
   address+=x-1;
   lcd_send_byte(0,0x80|address);
}

void lcd_putc( char c) {
   switch (c) {
     case '\f'   : lcd_send_byte(0,1);
                   delay_ms(2);
                                           break;
     case '\n'   : lcd_gotoxy(1,2);        break;
     case '\b'   : lcd_send_byte(0,0x10);  break;
     default     : lcd_send_byte(1,c);     break;
   }
}

char lcd_getc( BYTE x, BYTE y) {
   char value;

    lcd_gotoxy(x,y);
    while ( bit_test(lcd_read_byte(),7) ); // wait until busy flag is low
    lcd.rs=1;
    value = lcd_read_byte();
    lcd.rs=0;
    return(value);
}

me da error en la linea delay_us(1) la he marcado en negrita en el codigo, no hay manera de hacerlo compilar :(

BYTE lcd_read_byte() {
      BYTE low,high;
      set_tris_lcd(LCD_READ);
      lcd.rw = 1;
      delay_cycles(1);
      lcd.enable = 1;
      delay_cycles(1);
      high = lcd.data;
      lcd.enable = 0;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(1);
      low = lcd.data;
      lcd.enable = 0;
      set_tris_lcd(LCD_WRITE);
      return( (high<<4) | low);
}

la duda que tengo es con RB0 que creo que es un pin de interrupcion, puedo hacerlo asi con ese pin o pasa algo pq sea un pin de interrupcion?

muchisimas gracias por la ayuda juanacho me estas ayudando mucho
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 18:01:15
podrias colgar el archivo del picc (tu programa en el picc) para ejecutarlo yo en mi picc
Porcierto lo estas simulando en proteus ?
si es asi pues tambien el archivo de tu simulacon en proteus.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 18:22:07
proba poniendolo asi y se te solucionara ese problema

#include "16f876.h"
#define use_portb_lcd TRUE 
#use delay(clock=4000000)
#include "lcd.c"
#fuses NOLVP,XT,NOWDT,NOPROTECT,PUT
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)

El problema es que en la libreria estabas usando una rutina de tiempo (delay_us()) y esta nesecita siempre tener definido antes el clock
Por cierto no declares los puertos como constantes o sea no pongas #byte_port_a=5 ni a los otros dos

Bueno a ver que dices
un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 18:49:17
que digo? que estas hecho un maquina tio, muchisimas gracias ya no me da ningun error la libreria lcd.c ya puse eso antes como comentabas, ahora el error me lo da en las lineas q te marco en negrita a ver si ya conseguimos hacerlo rular :P en proteus no puedo simularlo aunke lo tuviese bien compilado porque el programa no trae las sondas q utilizo :( un saludo.

#include "16f876.h"

#fuses NOLVP,XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)
#include "lcd.c"
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
//#define use_portb_lcd TRUE  no uso esta linea pq ya la tengo en la libreria.

//#byte_port_a=5
//#byte_port_b=6
//#byte_port_c=7

//#device adc=8

void main(void){

  int temp1,temp2,temp3,temp4;
  const int tmp=50;

  set_tris_a(0xFF);   //todos como entrada sondas de temperatura y vref
  set_tris_b(0x00);  //todos como salida datos lcd
  set_tris_c(0x00);         // pines de control lcd salida todos

  setup_adc_ports(all_analog);
  setup_adc(ADC_CLOCK_INTERNAL);

   while(true){
     set_adc_channel(0);
     temp1=read_adc();
     temp1=(temp1/10)-tmp;
     set_adc_channel(1);
     temp2=read_adc();
     temp2=(temp2/10)-tmp;
     set_adc_channel(2);
     temp3=read_adc();
     temp3=(temp3/10)-tmp;
     set_adc_channel(3);
     temp4=read_adc();
     temp4=(temp4/10)-tmp;
     lcd_init();
     lcd_gotoxy(0,1);   //me posiciono en la linea 1 en el primer caracter
     printf(lcd_putc,"T1= %d1 ºC",temp1); //Escribo temperatura del sensor1
     delay_ms(500);
     lcd_gotoxy(8,1);   //me posiciono en la linea 1 , en el octavo caracter
     printf(lcd_putc,"T2= %d1 ºC",temp2); //Escribo temperatura del sensor2
     delay_ms(500);
     lcd_gotoxy(0,2); //me posiciono en la linea 2, en el primer caracter
     printf(lcd_putc,"T3= %d1 ºC",temp3); //Escribo temperatura sensor3
     delay_ms(500);
     lcd_gotoxy(8,2); //me posiciono en la segunda linea , octavo caracter
     printf(lcd_putc,"T4= %d1 ºC",temp4); //Escribo temperatura del sensor4
     delay_ms(500);
   }
}
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 18:54:09
lo setup del adc los corregis asi

 setup_adc_ports(all_analog);
  setup_adc(ADC_CLOCK_INTERNAL);
si tardo en contestar es por mi servidor que es una babosa
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: JavisusII en 30 de Mayo de 2006, 19:03:21
Buenas Danone,

Me gustaría felicitarte por tu proyecto y ganas de superación.

Yo sólo quiero comentarte un par de observaciones sobre el circuito;

- en primer lugar veo que te has preocupado por desacoplar las sondas de temperatura, lo cual me parece correcto, pero
  tienes un problema de acoplo inductivo. Las sondas comparten la misma línea de retorno.
- en segundo lugar no veo las líneas de alimentación del uC. Éste también es sensible al ruido e interferencias. Debes    
  también poner le un condensador de desacoplo. Y si le pones un zener de protección mejor que mejor. Los pines que no
  utilizes no pueden estar al aire.
- Si programas en serie deberás poner una resistencia en el MCLR.
- No es usual ver una conexión de LCD al aire, debes poner pull-ups, Las líneas digitales siempre las verás forzadas.
- supongo que filtrarás digitalmente las señales de temperatura. :shock:
- Es muy usual filtrar la alimentación con algún condensador pesado, pon como mínimo uno de 10uf. :?

en fin ya iremos revisándolo poco a poco.

A nivel de soft no he utilizado este micro, programo usualmente el 18f8722,  30f6014a, y algunos modelos de Hitachi.
pero te veo fuerte y con ganas y la verdad es que aquí no faltan expertos en soft.

 



 
l
  
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 19:16:58
Bueno y aca lo dejo con el resto de las correcciones.
Ponele atencin a lo que te dice el amigo javisus que tiene mucha razon.
por cierto las sondas en proteus las podes simular con potenciometros que te vallan aciendo variar los valores de tencion a las entradas analogicas (no es lo mismo ,pero es un buen recurso para simular9
saludos juan

#include "16f876.h"
#define use_portb_lcd TRUE 
#use delay(clock=4000000)
#include "lcd.c"
#fuses NOLVP,XT,NOWDT,NOPROTECT,PUT
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)


//#BYTE PORTA=5
//#byte_port_b=6
//#byte_port_c=7

//#device adc=8

void main(void){


  int temp1,temp2,temp3,temp4;
  const int tmp=50;
 
  set_tris_a(0xFF) ;  //todos como entrada sondas de temperatura y vref
  set_tris_b(0x00);  //todos como salida datos lcd
  set_tris_c(0x00) ;        // pines de control lcd salida todos
 
  setup_adc_ports(all_analog);
  setup_adc(ADC_CLOCK_INTERNAL);

   while(true){
     set_adc_channel(0);
     temp1=read_adc();
     temp1=(temp1/10)-tmp;
     set_adc_channel(1);
     temp2=read_adc();
     temp2=(temp2/10)-tmp;
     set_adc_channel(2);
     temp3=read_adc();
     temp3=(temp3/10)-tmp;
     set_adc_channel(3);
     temp4=read_adc();
     temp4=(temp4/10)-tmp;
     lcd_init();
     lcd_gotoxy(0,1);   //me posiciono en la linea 1 en el primer caracter
     printf(lcd_putc,"T1= %d1 ºC",temp1); //Escribo temperatura del sensor1
     delay_ms(500);   
     lcd_gotoxy(8,1);   //me posiciono en la linea 1 , en el octavo caracter
     printf(lcd_putc,"T2= %d1 ºC",temp2); //Escribo temperatura del sensor2
     delay_ms(500);
     lcd_gotoxy(0,2); //me posiciono en la linea 2, en el primer caracter
     printf(lcd_putc,"T3= %d1 ºC",temp3); //Escribo temperatura sensor3
     delay_ms(500);
     lcd_gotoxy(8,2); //me posiciono en la segunda linea , octavo caracter
     printf(lcd_putc,"T4= %d1 ºC",temp4); //Escribo temperatura del sensor4
     delay_ms(500);
   }
}
PD:yo no e probado tu programa por lo que es posible que aun existan algunas fallas pero bueno cuando lo prueves nos cuentas.
PD2: simulalo en proteus como te indico seguro ahorraras tiempo,y si lo montas directamente presta mucha atencion a lo dicho por JavisusII un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 19:27:32
Bueno la verdad que quiero daros las gracias porque gracias a vosotros en dos dias estoy aprendiendo bastante y me llama muchismo la atencion este mundo de los pics.

Bueno pues ya he modificado lo que me ha dicho juanacho_ar y ya me compila perfectamente el programa, no se si funcionara luego o no pero compilar compila.

Hablando del circuito Javisus2, sip le puse ya los condensadores de desacoplo en la alimentacion de cada sonda, me dijeron que habia que ponerla en paralelo con tierra y lo ms cerca posible de la sonda, y de un valor de 100nF.

El circuito se va a alimentar a 5v por vcc y voy a poner un regulador de tension 7805 para tener 5 v estables.

Una cosa que no me queda muy clara es lo siguiente los pines del pic que no utilice hay que ponerle algo? no puedo dejarlos al aire sin soldar a nada? que tengo q ponerles?

que es programar en serie el lcd? y poner pull ups?

las señales de temperatura a que te refieres con filtrarlas digitalmente?

 es que toy muy pez en esto siento hacerte tantas preguntas, en el codigo del post anterior puedes ver como adquiero las temperaturas.

muchisimas gracias por todo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 19:42:23
danone no hay nada que agradecer aca en algun momento todos emos nesecitado alluda y la consegimos.
A lo que se refiere javisus con programar en serie es a que los pic tienen la posibilidad de ser programados en la placa final de tu proyecto.
Resistencias de full ups son resistencias conectadas entre las patas de los pic y masa ,esto se realiza para que en las entradas siempre alla un valor estable (0v ) en este caso.
un saludo juan
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 20:15:43
danone no hay nada que agradecer aca en algun momento todos emos nesecitado alluda y la consegimos.
A lo que se refiere javisus con programar en serie es a que los pic tienen la posibilidad de ser programados en la placa final de tu proyecto.
Resistencias de full ups son resistencias conectadas entre las patas de los pic y masa ,esto se realiza para que en las entradas siempre alla un valor estable (0v ) en este caso.
un saludo juan

hombre en lo de serie la verdad que no lo tenia pensado, supongo que habria que añadir un max232 y unos condensadores una especie de bootloader para no sacar el pic del circuito, eso a lo mejor mas adelante lo añado de momento voy a ir tirando con el programador que tengo, ya que tampoco me supone ahora para empezar sacar el chip del zocalo cada vez que lo kiera programar.

lo de las resistencias full ups ya lo he pillado , pero eso es solo necesario ponerlas en las patas del pic que no se utiliza? o tb en las patas del lcd que no utilizo?de que valor deben ser estas?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 20:33:43
mira suponte que vas a conectar un pulsador a la pata de un pic este por momentos (cuando lo pulses )estara ponindo una de las patas a un nivel de 5V bien ,cuando lo sueltes la pata estaria reciviendo un cero,esto ultimo no siempre es asi y en mi opinion lo mas correcto es decir que  "no"esta recibiendo un uno (5v) y si por alli anda dando vuelta algun ruido el pic podria interpretarlo como un uno (5v)
Para remediar esto le pones una resistencia entre la pata del pic y masa entonces te aseguras que mientras no estes apretando el pulsador la pata del pic esta a 0V
Por esto que cuando tenes un puerto por el que va a entrar algun dato este tiene que tener resistencias full ups
se entiende ?
sino me decis y vemos la forma de explicarlo mejor
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 20:45:08
lo del pulsador para meter datos al pic ya lo habia ledido yo en lo que he investigado por internet, lo unico que yo eso lo conocia como circuito anti rebotes no se si sera lo mismo de lo que hablamos supongo que si :P

me ha quedado bastante claro pero lo que no me queda del todo claro es que hablas de que
Citar
Por esto que cuando tenes un puerto por el que va a entrar algun dato este tiene que tener resistencias full ups
se entiende ?

hay que ponerlo solo en los que reciben datos? o en los pines que tb no voy a usar que se kedan libres hay q ponerles una resistencia a tierra para que siempre tengan el valor cero?

es que de los circuitos que he visto no he visto ninguno que en los pines q no se usan tengan esas resistencias, sera que es tan obvio que no lo ponen?

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 20:58:54
los puertos se configuran como entradas o como salidas
Si tu puerto es de entrada va a leer cualquier variacion .
suponete que por el puerto B entra este dato 11111111 si por algun motivo uno de esos bits se invierte el puerto lo va a leer y podria guardar en la memoria de tu pic (si estas guardando datos) un valor cono este 11111110 que noes el que enviaste realmente.
Si no estas usando uno de los puertos pues no estas leyendo ni enviando nada (yo generalmente si no lo estoy usando no le pongo resistencias full ups) con lo cual lo que pase en el no altera el programa ya que las variaciones que se produscan en el nunca son leidas por eso que ves circuitos a los que a algunas patas no les conectan res ful ups
Una buena prueva para entenderlo de modo practico es que por el puerto a configurado como salida le conectas un led y configuras como entrada el puerto B en este ultimo conectas un pulsador. y el puerto C como entrada
Te ases un programa qu cada vez que pulsas el led quede prendido uns milisegundos (o segundos)
entonces mientras el led esta prendido pones a 5v alguna pata del C y como este no esta siendo leido veras que no afecta a tu led.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 30 de Mayo de 2006, 21:02:21
ahora si, si señor muchas gracias muy buena explicacion sobre las resistencias full up.
Por hoy voy a ir dejandolo ya que aca en españa ya va siendo hora de irse a dormir, :P y mañana toca madrugar,
mañana vengo con mas dudas y avances.

un saludo muchas gracias y buenas noches desde españa.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 30 de Mayo de 2006, 21:08:03
saludos mañana sera otro dia y con mas dudas seguro
bueno un gusto aberte alludado
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 13:49:22
muy buenas señores, ya estoy por aqui dando guerra y haciendo mis pruebecillas ejeje, weno pues empezamos , poco a poco he ido pasando el nuevo esquema a proteus ya modificando el lcd para 4 bits en el puerto B del pic( tb en el codigo he kitao las lineas que hacian referencia al puerto C ya que no lo voy a usar al final).
Para poder simularlo como me dijiste tu bien juancho que me las ingeniera para simular las sondas como si fuesen resistencias variables para poder hacerlo con proteus, weno pos el circuitillo mas o menos ya esta montao.

El problema esta en que con el ccs c compilo ya mi codigo , no tiene ningun error segun pone, la pega es como genero el hex? y como lo cargo luego con proteus? y como vario las resistencias variables desde proteus?

Un saludo.



Modifico: he hecho lo siguiente me he metido en el mplb ide v6.60 en el le he dao a crear nuevo proyecto le he dicho que use el compilador ccs c para pic 16 etc.. le he agregado al proyecto el archivo C y he compilado el proyecto y me ha generado el hex y muchos mas archivos, pero me dice lo siguiente:

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Archivos de programa\PICC\Ccsc.exe" "termometro.c" +FM +DF +LN +T -A +M +Z +Y=9 +EA
>>> Warning 203 "C:\Documents and Settings\Adri\Escritorio\new hex\termometro.c" Line 29(1,1): Condition always TRUE
      Memory usage:   ROM=7%      RAM=6% - 13%
      0 Errors,  1 Warnings.
Loaded C:\Documents and Settings\Adri\Escritorio\new hex\termometro.cof
BUILD SUCCEEDED: Wed May 31 19:09:44 2006

 sale un warning en la linea 29 del codigo supongo que sera por lo del bucle infinito, pero al estar hecho aposta supongo que no sucedera nada, otra duda que tengo al proyecto en maplab tengo que agregarle la libreria lcd.c? o solo con agregar el archivo que yo he creado vale?.

Para meter el codigo hex al pic en proteus, haciendo doble click sale como ponerle el codigo ya compilado :P.


Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 15:04:36
No mi amigo no te compliques.
Cuando vos compilas en el picc este ye te genera el .hex y tambien te genera un archuvo .coff
en el pic (solo para simular) le podes cargar el .coof y y podras simular paso paso el programa en c.
Estos archivos estan en el mismo lugar donde guardas tu proyecto.
Las resistencias pues pones un potenciometro por con uno de los pines a vcc (power) y el otro a masa el pin del medio lo pones a la pin del pic que vallas a meter la señal .
bueno aver que pasa.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 16:34:15
muy buenas, sip tenias razon el ccs c me compila el hex tb al compilar, mucho mejor asi no me complico tanto, ya he cargado el hex en el pic en el proteus y he sustituido todo por potenciometros pot_lin y ya se ha solucionado lo de los valores, como me has comentado.

Le doy a compilar y me dice una serie de errores. los pego en la imagen siguiente, creo que kiere decir que he instalado mal la licencia? o a que se refiere?

(http://img185.imageshack.us/img185/9769/error8rs.th.jpg) (http://img185.imageshack.us/my.php?image=error8rs.jpg)
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 16:56:27
pue si si los dll no vas apoder simular
quizas instalaste mal el simulador
Que vercion es?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 16:58:55
no me digas eso tio :( si lo he instalado dos veces ya :(

la version es la 6.7 sp3
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 17:07:05
a ver indicame como le cargas el .hex al micro(el de la simulacion9
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 17:17:30
pues pincho en el micro con el segundo boton, se pone en rojo luego con el izquierdo entro en sus propiedades y en
program file : pongo la ruta del archivo hex que me ha hecho el ccs c

..\..\Escritorio\carpeta\termometro.HEX

cargando el archivo coff me da el mismo error. saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 17:35:45
cuando intalaste el simulador instalaste los Key.?
fijate que vas a encontrar un ejecutable con forma de candado seleccionas las llaves y cuando se activa install (en la parte inferior de la pantalla que se abre) pues precionas alli si no te funciona asi me avisas
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 17:44:44
ya esta solucionado compañero ya me compila perfectamente me carga el programa y se ven ya las cosas en el lcd :D

ahora tengo voy a poner unos voltimetros detras de los potenciometros para ver que voltaje le esta entrando al pic ya que me esta mostrando todo el tiempo temperaturas muy negativas voy a probar a ver. ahora te cuento
un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 17:48:46
Bien  :-/ :-/ :-/ :-/ :-/ acordate de subir los archivos (en picc y en proteus )asi lo puedo ver en mi pc y por si le sirve a alguno.
por cierto Quisiera (ya que en principio tu programa funca) aserte unas aclaraciones en cuanto a los rebotes,pero bueno vos me decis si te sirve que lo aga o no ,tampoco quiero aburrirte
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 18:12:38
en cuanto consiga depurarlo y hacerlo funcionar del todo, pongo pongo publicamente el codigo fuente, los archivos de proteus y demas por si a alguien le puede servir, estoy intentando ajustar el vref con el potenciometro a ver si consigo que salgan 2.5V pero no soy capaz aun, si dentro de un rato probar no lo consigo te lo paso pa ke le eches un ojo a ver si tu consigues apañarlo.

Como no por favor, explicame eso que claro que me interesa para un futuro.

muchisimas gracias :P
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 18:30:23
bien
Mira cuando vos accionas un pulsador este n se pone directamente en uno o cero ,sino que durante un tiempo muy corto los contactos mecanicos del mismo empiezan a rebotar (literalmente) para que te des una idea tomas una regla de esas de plastico por una punta y le pegas un golpecito en el otro extremo el efecto de "IR" y "Venir" que estas viendo es el mismo que ocurre con los pulsadores.
entonces el Pic o lo que sea ,estara reciviendo por un instante una variacion de unos (5v) y ceros(0v).
El problema es que este instante para la lectura de un puerto suele ser un tiempo muy largo
La solucion a esto no es la de las resistencias de full up, sino que tenes que generar un retardo en esa entrada para dar tiempo al pulsador a que se estabilize (despues de un tiempo la regla deja de ir y venir) para lo que hay dos caminos:
Por hard,es decir añadiendo a tu circuito un latch o de alguna otra forma
o por programa ,generas una rutina de retardo para que el puerto lea cuando el pulsador esta en estado estable.
Te ago esta aclaracion porque me parecio que avias entendido que los rebotes se podian solucionar y no es lo mismo que veniamos discutiendo
Bueno espero se entienda
un saludo y me que do a la espera para ver como te fue
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 18:50:32
hace poco lei algo muy parecido en un libro, ya me ha kedao aclarado del todo , muchas gracias es bueno tener a alguien que te lo explique asi de claro y con estos ejemplos uno sale bastante de dudas cuando eres un novato de esto.

Hasta hace dos dias no conocia ni proteus ni el ccs ni nada por el estilo y le estoy cogiendo la verdad que me esta encantando este mundillo, sobre todo con gente como vosotros en este foro.

te importa si te cuelgo los fuentes del proteus y del programa en C y le echas un ojo, pq muestra cosas pero no me termina de funcionar lo que necesito las temperaturas wenas, si eso avisame y te paso la URL
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 18:54:02
pues adelante colgalos y lo vemos
aver que pasa si no lo solucionamos hoy pues mañana 2 cabezas piensan mas que una echale cuelgalo y vemos .
No entendi lo de la ftp pero aca podes adjuntar los archivos a tu mensaje
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 19:08:09
a ver , este foro no me lo conozco aun muy bien y no se como colgarlo por aqui, pero weno no pasa nada
te lo cuelgo en mi servidor y te lo puedes bajar igualmente, ya cuando tengamos una version q funcione la subimos bien.

las sondas que uso son las tmp36   a una temperatura ambiente de 25 ºc entrgan 750 mV
el datasheet esta en esta url : http://www.analog.com/UploadedFiles/Data_Sheets/11415753TMP35_36_37_d.pdf

MIS ARCHIVOS SON ESTOS:

http://adri.no-ip.org/termometro.rar

sino entiendes algo o necesitas otra cosa avisame.

ahi tienes el archivo saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 19:19:13
bueno ya lo baje estoy probando
Vos decis que ves algo en el lcd?porque a mi no me sale nada se prende pero no muestra nada
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 19:23:01
indicale de nuevo la direccion donde tienes el archivo hex
y vuelve a arrancarlo a ver si a ti te sale, a mi si me funciona el problema es ke me marca temperaturas todas negativas muy grandes siempre
no se donde estara el problema
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 19:36:56
ya esta no tenia activado el puerto B.
Bueno lo primero que veo es que te muestra todas las temp al mismo tiempo,es decir
me pone temp1 -300 temp-200 en la misma pantalla
es Asi como lo queres?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 19:52:38
sip, en principio ahora para probarlo cuando lo monte voy a hacerlo con un display 2x16, tonces en la primera linea me tiene que mostrar las temp de las sondas 1 y 2 , y en la segunda linea las temps de las sondas 3 y 4.

Cuando lo vea montado y demas lo mismo luego lo paso a un lcd de 4x20 que tengo por aqui, supongo que solo sera modificar el lcd_gotoxy y listo no?

el problema es ke no se pq marca esas temperaturas metiendole 750mV tendriamos que estar viendo 25 grados.

pq en el codigo tenemos :

Código: [Seleccionar]
    set_adc_channel(0); // seleccionamos el canal 0
     temp1=read_adc(); //leemos la primera sonda
     temp1=(temp1/10)-tmp; //almacenamos en temp1     (750/10)-50 = 25 grados centigrados

 no se porque narices esta mostrando esas barbaridades, el Vref tiene que estar a 2.56V.

Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 19:58:54
bueno el problema es que el valor de tmp es mas grande que temp1 proba bajandole a tmp el valor (por ejemplo 2)lo volves a compilar y vas a ver que el LCD te muestra valores positivos

 temp1=(temp1/10)-tmp; //almacenamos en temp1   

porque tmp tiene que valer 50? 
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 20:09:36
vamos a ver si me se explicar , tmp es una constante que uso para poder sacar el valor real de temperatura.

es decir vamos a ver en el pdf se dice que la sonda en vout  si tuviesemos una temperatura midiendo de 25ºc la sonda entrega al pic 750mV
es decir el adc le ese valor y me lo almacena en tmp1, bien una vez tenemos el valor 750 almacenado tenemos que tratarlo para poder mostrarlo en la pantalla como grados centigrados y no como milivoltios.
Tonces la formula para pasarlo a grados centigrados es el valor en milivoltios dividirlo entre 10 y al resultado restarle 50. entonces (750/10)-50 da 25 grados que es el valor convertido en grados.

si tuviesemos midiendo una temperatura de 0ºc la sonda estaria entregando al pic 500mV haciendo las operaciones (500/10)-50 = 0ºc

si tuviesmos metiendo una temperatura de -10ºc la sonda estaria entregando al pic 400mV haciendo las opraciones (400/10)-50 = -10ºc

lo uso en forma de constante tmp=50 ya que si por cualquier casualidad cambiase de sonda podria cambiar el valor de la constante sin afectarme al resto del programa.

Entonces si entregamos 750mV es decir el voltimetro del potenciometro de la sonda tendria que marcar 0.075v en la pantalla deberia salir 25, he cambiado las propiedades del voltimetro para que mida en milivoltios, le meto 750mV y nada sigue dando negativo, para mi que el tmp1 no me pilla ese valor, como podriamos depurartlo? para saber que valor esta teniendo temp1?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 20:26:32
Bueno primero al pic le cargas el archivo .cof luego precionas pause
despues te vas a debug y abilitas la ventana que creas nesesaria,source code,las de las variables etc
luego para ver como el programa corre paso apsso le vas dandoi de a una vez al boton que esta entre el play y la pausa
entonces veras como se van modificando los reguistros y las variables
a ver si asi sale
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 20:53:37
bueno bueno depurando depurando me he topao que hay que cambiar los

printf(lcd_putc,"T1=%d1",temp1); hay que cambiarlos por printf(lcd_putc,"T1=%d",temp1); con esto ya se nos kita el molesto 1 que salia al final y me estaba a mi confundiendo tanto, creo que lo del 1 y demas se pone cuando le pasas varias variables y demas algo asi me parecio leer y eso me estaba confundiendo ahora ya marca valores de dos digitos, pero tras haberlo pasado el depurardor y analizar las variables temp1 .... tmp4 llego a la conclusion de que no estamos leyendo bien con el adc, y me esta leyendo otros valores de yo ke se. voy a seguir depurando a ver si consigo algo.

yo en el codigo para leer del adc escribo

Código: [Seleccionar]
set_adc_channel(0);
         temp1=read_adc();
         temp1=(abs(temp1/10))-tmp;

como sabe el compilador que el canal 0 es el puerto ra0? ni otro?.
saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 21:04:04
es verdad no avia visto ese 1 bueno anotalo en el libro de los descuidos  :mrgreen:
es el canal que el pin tiene asignado
Ademas aora e doy cuenta de algo
Proba esto sacale los voltimetros y conecta la salida del potenciometro directamente al a entrada del pic
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 21:07:34
ya lo tengo mi amigo tenes los voltimetros mal conectados
El voltimetro se conecta con un pin al pin del medio del potenciometro y el otro a masa
jeje pues otro descuido mio
cambialo como te digo y veras que la cosa pinta mejor
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 21:20:30
ahora si que me he perdido totalmente xD, tu me dices que los coloque en paralelo con la resistencia y la pata menos a tierra? aun asi cambiando todos los voltimetros a eso y metiendole 500 mV me sale en la pantalla  -48 y debria de salir 0ºc, a ti te lo muestra bien?

Mi duda es la siguiente nosotros hemos puesto
setup_adc_ports(all_analog); es decir que lea de todas las entradas analogicas, como puerto de entrada solo tenemos el a, es decir que empezara leyendo en orden desde a0 hasta a5 digo yo no? pasando por vref y a4 q esta sin usar, tonces ahi no tendriamos un problema?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 31 de Mayo de 2006, 21:41:49
Bien
primero los valores que ves en negativo es porque al convertir tu señal el valor que queda es menor que el de tmp
eso lo verificas asiendo mas chico el valor de tmp (solo para verificarlo)
lo que estoy pensando es que un valor de mv quizas sea muy pequeño creo que el pic ve un uno en su entrada a partir de 3 volt lo que te implicaria amplificar un poco tu señal de entrada (no te alarmes)
para probar esto pones el voltimetro en volt y vas a ver que a partir de 3volt tenes valores positivos (es solo para probarlo)
los voltimetros los conectas asi:
uno de las puntas (del voltimetro) la conectas a masa(0v) la otra la conectas a al punto medio del potenciometro (la resistencia con tres patas)

setup_adc_ports(all_analog);
lo que realiza es "avisar " que todas las patas del puerto A van a ser entradas analogicas (el unico puerto que tiene entradas analogicas es el A)

set_adc_channel(0);
Esta ultima es la linea que te activa el canal a ser leido

una ves que termina de leer y guardar los datos de este canal sige con el otro

por ejemplo con el uno

set_adc_channel(1);

como esta en tu programa

Por cierto el pic solo usa un conversor a la ves
empieza a leer en el primero recien cuando termina con e primero sige con el otro
se entiende? sino pregunta de nuevo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 21:49:04
pues si es asi cuando yo marco set_adc_channel(3) para la ultima sonda, me lo estaria leyendo en el ra3 que es el voltaje de referencia, pq yo la sonda 4 la conecto a ra5, tendria que poner set_adc_channel(5) para la ultima sonda no? pq esta en el ra5, si eso de ke no lo hace a la vez ya lo sabia, lo va haciendo por pasos.

lo de los voltios no lo entiendo, yo lo he puesto en escala de voltios le meto 3 y me sigue saliendo valores negativos en el lcd, a que te refieres con amplificarlo?

Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 31 de Mayo de 2006, 22:05:25
bueno maestro, muchas gracias por las lecciones que me has dao hoy :D estoy aprendiendo ya bastante gracias a ti.

creo que por hoy voy a dejarlo ya y me voy a dormir que ya son las 3 am aca.

Mañana si te parece seguimos con ello que tendremos la mente algo mas despejada.

Un saludo y muchisimas gracias de nuevo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 14:12:43
muy buenas gente, pues aqui ando de nuevo liado con esto un dia mas llevo ya un wen rato haciendo pruebas de simulacion y no consigo sacar nada en claro :( sigue mostrandome las temperaturas que le dan la gana :( si que estamos apañaos, he estado leyendo por inet varios manuales y la lectura del adc la hacen como yo, no se donde puedes estar el fallo :( saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 14:44:59
danone e estado simulando y por mas vueltas que di no e podido acer que muestre valores positivos,con lo que creo que no va a ser bueno simularlo con potenciometros.
paro mira agamos algo dame un rato y te armo el circuito y el programa para un solo termo una ves que lo hechamos a andar le agregamos lo demas ,es que el programa no esta mal nose quizas estemos omitiendo algun pequeño detalle
Bueno que yo tambien me enganche con este proyecto jeje :mrgreen:
Bueno mi propuesta esta a ver que te parece.
una cosa, en tu simulador no tenes sensores de temperatura? sino me avisas
otra pregunta tu proyecto tiene mucha urgencia para terminarlo?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 15:11:43
Muy buenas compañero, pues la verdad que yo una posibilidad que no descartaba era esa la de que los potenciometros no fueran lo ideal pa hacer esto. En cuanto a sndas el problema esta en que las sondas que utilizo no son comunes lo comun es usar sondad de tipo LM35 , que sucede que descarte estas sondas ya que necesito usar temperaturas negativas tb , y las lm35 hay una variante que mide negativo pero entrega milivoltios negativos y eso el pic no se lo puedes meter , por eso opte por las sondas tmp36 que siempre entregan un voltaje positivo al pic tanto para temperaturas negativas como positivas.

Creo que mi simulador no simula sondas a lo sumo.... creo que en sondas analogicas como mucho la lm35, podriamos intentar simularlo con la sonda lm35, y en el codigo suprimiendo las constante tmp ya que para las lm35 no hace falta restarle la constante sino solo dividirlo entre 10.

Por ejemplo la Lm35 entrega 250mV a 25 grados .
                                          -250mV a -25 grados
 etc...

podriamos simularlo con la lm35 pero solo pa temperaturas positivas y asi descartamos el problema de los potenciometros es wena idea.

Hombre prisa lo que se dice prisa no tengo para terminarlo, pero no me quiero demorar mucho en el proyecto ya que lo necesito porque esto va a servirme para monitorizar las temperaturas de un sistema de refrigeracion para mi ordenador, va a monitorizar la cara caliente y fria de una celula peltier y la temperatura del agua de la refrigeracion liquida.

Por cierto me han recomendado que cuando comience el montaje, utilice cable apantallado para dichas sondas, que te parece? supongo que mejor que cable normal no?.

saludos compañero.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 15:23:04
rectifico, solo puedes meter la sonda en el circuito pero no permite simularla :(

es posible meterle una input power y decirle el valor de la entrada en milivoltios?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 15:25:04
Bien tratemos entonces de descargar los potenciometro.
 a ver te subo dos archibos los des comprimes y el que tiene el nombre dos los pegas en la carpeta library del proteus.
y el que tiene el nombre uno en la de models
luego bas a proteus donde buscas los componentes y fijate si te aparece la libreria transducer o en el buscador de arriba pones tcb y le das buscar
Bueno prueba eso y me cuentas si ves las termocuoplas a ver si te sirven.
Si esto no funciona pues tendremos que remper un oco el coco
buena proba eso y contame
yo te digo de simularlo primwero para que no tengas que sacar y poner el pic a cada rato
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 15:35:16
buenas, si me salen ya pero ahora el problema es que he hecho lo que me has dicho, he agregado ya las termocuoplas y al intentarla añadir al esquematico me lanza una ventana de error que dice lo siguiente

VSM model SETPOINT.DLL not found for "TC1" GLE=0x0000...

parece ser que me falta una libreria dll por lo que veo para poder usar las termocouplas.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 15:58:19
bueno no se`porque  :shock: a mi me funciona con esas nada mas pero bueno si vos no podes de nada sirve

por lo pronto agragale esta linea a tu programa #device adc=8 de la sigiente manera

#include "16f876.h"
#device adc=8

esta linea lo que ase es indicar la resolucion a utilizar (creo la avias puesto pero en mal lugar)
bueno voy a pegarle otra mirada al programa y ver si se me ocurre como simularlo
Pero vamos con animo que falta poco
a ver si lo podemos terminar hoy o mañana
ya vuelvo

Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 16:32:53
la puse al principio, lo que pasa q termine por quitarla pq no se donde lei que sino indicabas anda suponia que el adc era de 8 bits, para lo demas si habia indicarlo, pero nada mejor lo indicamos y una cosa menos q tenemos q comprobar. :P

Pues a ver si conseguimos sacarlo pronto :P

gracias juan.

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 16:53:03
bien
abri el adjunto de proteun y cargale el c que adjunto
las punta azul que ves es para me ter dintintos valores de voltaje clikeas sobre esta con el derecho y elegis dc a 50mV y anda cambiandolos veras que le lcd te mostrara distintos valores positivos
esto es solo para un conversor pero si este va ya le agregaremos otros
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 17:01:44
buenas :( el c puedo verlo pero el archivo que me mandas de proteus creo q es de una version posterior a la mia y no me deja verlo, yo uso la 6.7 sp3. y no me deja abrir tu archivo, que version usas?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 17:10:51
bien te suvo una imagen en word

al pin azul anda cambiando los voltajes
asi
primero 5v
lueg 4
asi asta llegar a 1vol
a partir de aca le vas cambiando de 0.25
es decir tu sigiente valor sera 0.75 es decir 750mV
luego 500mV y asi veras que al fin todos los valores son positivos
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 17:23:21
ummmm he insertado un dc generator de esos lo que pasa que tiene 1 punta en vez de dos como la tuya, no se si sera lo mismo, le he metio eso y 750mV y en la pantalla me muestra 38ºC, con el programa que me has mandado tu y una vref de 2.5V.

Tendria que mostrar 25ºC a ti te muestra 25ºc cuando le metes 750mV?

es que no lo puedo entender, si le entran 750 mV, tmp1 =(750/10)-50 = 25 pq narices marca 38 yo no se ke narices esta leyendo el adc. pq desde luego que 750 no esta guardando.

a ver si es ke toy haciendo algo mal.
saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 17:33:37
esperate esperate
te explico una de las puntas es un generador de corriente continua DC.
la otra te muestra los volt o milivolt que tenes en ese punto
son dos puntas distintas
armate este circuito que te adjunto
vas a ver que solo varia entre 1 y dos el tema que si lo que entra son milivolt qizas la variavle temp1 deveria ser de otro tipo
lo que quiero que entiendas es que el A/D si esta adquiriendo y si se producen variaciones en la lectura
El problema estoy sospechando es en como presentamos la variavle en LCD
bueno probalo a ver si me entendes lo de los conversores si es asi ya pasamos a otra cosa sino pues pregunta aunque te paresca una tonteria
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 17:41:51
vamos a ver la segunda punta esa pa ver el potencial en ese punto no la encuentro en ningun lao pongo un voltimetro ahi y me lo mide, supongo que dara igual tener un voltimetro o eso, lo he probao y el voltimetro me marca lo que le estoy metiendo asi que bien.

si el adc ya veo que esta midiendo, lo que no se si has probao a variar Vref, pq no se produce alteraciones en el valor variando el adc?.

podemos probar con una variable de mayor rango a ver si puder ser por eso.

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 17:50:16
no tenemos patas abilitadas para un valor de referencia por eso que no pasa nada si varias la tencion de entrada ai
veo que lo del adc mas o menos lo pillaste
bueno lo de la variable pues si fijate de probar con un float o una que te permita ver un 0,045etc
se entiende?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 17:59:24
he probado con un float y si me marca la temperatura con muchos decimales, en vez de tener 39 ahora marca 38.999999 , este no creo q sea el problema,

otra duda, pq me dices que no utilizamos la Vref que le metemos de 2.5, no habria que usarla para tener precision? lo mismo es eso lo ke nos esta fallando no?.

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 18:11:38
lo de la referencia digo de no usarlo por el momento porque cencillamente elpicc no me deja compilar si la activo ¿porque ? pues estoy investigando
lo de la exactitud es como decis es un tema de precicion pero una cosa es que sea preciso y otra que nos muestre cualquier cosa. de momento no te agas problemas por eso que ya avansaremos sobre eso tambien
Bueno fijate que en el programa en C tuyo no vallas a tener tmp1 multiplicado por un 0.98 o algo asi yo te mande el archivo pero no me acuerdo si borre eso ,si esta borra esa linea
bien aora cargale a la punta V va a tener que ver 255 que es lo que estoy viendo yo y eso o sorpresa mi amigo es el valor de 5 v en hexadecimal correjime si me equivoco y entonces lo que restaria es realizar la convercion para poder verlo en numeros decimales
Bien primero realiza las pruevas que te digo y me contas si vos ves lo mismo que yo
ya nos estamos acercando mi amigo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 18:35:58
creo que para meterle el vref hay que escribir setup_adc_port(ra0_analog_ra3_vref); no se pq , pero a mi tampoco me compila si escribo eso.

lo de multiplicar por 0.98 no se a ke te refieres, no tengo ninguna linea con eso , ademas no me suena ahora mismo haberla tenido, (sera que me toy volviendo ya loco jajja) cuando le meto 5 voltios si me muestra 254.999999 es decir 255 sip

me kieres decir que nos esta mostrando la temperatura en hexadecimal?

y hay q pasarla de hexadecimal a decimal? osea si cambiamos temp1=read_adc(); y no hacemos ninguna operacion sobre el, muestra el valor de 5 voltios en hexadecimal en la pantalla?

a eso te refieres?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 18:50:03
pues si que eres rapido ¿ya sabias programar en algun lenguaje?

bien explico lo de el 255

Si vos pudieras ver el registro donde el adc guarda las converciones verias una serie de unos y ceros.
Aora si vos le pones 5V a una entrada del adc tendrias en la entrada del adc el valor maxim de tencion que puede manejar el adc ,o sea que el registro donde se guerda el dato de la convercion estaria lleno y si pudiera verlo verias esto 11111111  y !!o sorpresa ! esto es el valor que vos ves en el LCD nada mas que en decimal o sea 255
entonces cada valor que ves en el lcd es el valor con que esta cargado el registro del conversor
se entiende sino pregunta sin verguenza
vamos que ya estamos cerca
por lo que restaria realizar es que hay que multiplicar la variavle tmp1 por un numero constante que en este preciso momento no lo recuerdo pero ya e pongo a buscar como era que lo asia yo
lo del 0.98 no me afgas casso
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 18:56:43
He programado solo en Pascal y visual Basic, pero el C por lo que veo no es muy complicado se parece en algo....

lo del 255 como valor maximo entiendo que sea pq estamos trabajando con un adc de 8 bits, es decir 2 ^8 = 256 es decir valores de 0 hasta 255

si le metemos el valor de 5 voltios supongo que ya supera el maximo y siempre vemos el maximo. hasta ahi lo entiendo, lo ke no entiendo muy bien es lo de convertirlo con una variable conversor, en que se supone q esta los datos de es registro?

edito
un compañero de otro foro, que se llama radon, que tb participa en este foro ha hecho una especie de termometro digital pero para un acuario pero con sondas lm35 en vez de las mias, si quieres ver el codigo por si sacamos algo mas en claro te pongo la url.

http://www.hardcore-modding.com/modules.php?name=Forums&file=viewtopic&t=25698&postdays=0&postorder=asc&start=15

saludos
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 19:06:31
los datos en un registro se encuentran en binario
o sea valores altos de tencion (1) o valores vajos (0)
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 19:08:18
que me kieres decir entonces, que lo que leemos del adc esta en binario, y tendriamos que crearnos una funcion q metiendole un binario nos devuelva su decimal y ahi ya operar con el dividiendolo entre 10 y restandole 50?
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 19:16:54
mas o menos jeje tengo un poco oxidado el tema de converciones y pantallas
bueno te pongo el archivo en c a ver si me explico mejor
cuando veas el archivo vas a ver que multiplico la variavle temp1 por un numero
con este programa cuando tengas 5 volt a la entrada en el lcd veras los 5volt
entonces aora si puedes aplicar la formula de tu sonda
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 19:29:26
joder jjaja es curioso , pero en eso tienes razon ya se ve el valor que le estas metiendo, sabes que pasa? que ahora hago eso y despues ya hago la operacion y empieza otra vez a mostrar cosas raras, es como si a la operacion tb hubiese q tratarla con algo.

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 19:37:31
vale ya esta compañero lo hemos logrado, ya va perfecto sabes que pasaba que yo estaba operando teniendo en cuenta de que lo que salia en la pantalla eran milivoltios, que pasa que lo ke sale eran voltios tonces estabamos confundidos.... en vez de dividir habia que multiplicar.

con esto ya tira de pm

  setup_adc_ports(RA0_analog);
     setup_adc(ADC_CLOCK_INTERNAL);
     set_adc_channel(0);
     delay_us(20);
     temp1=read_adc();
     temp1=temp1*0.009803*2;
     temp1=(temp1*100)-tmp;  // en esta linea pasamos temp1 que esta en milivoltios para pasarlo habria que multiplicar por 1000 pero como luego hay que
                                             //dividir entre 10 pues solo multiplicamos por 100 y luego restamos la constante y ya va de lujo .

le metes 750 mv y en la pantalla muestra ya 24.50ºc un valor muy aproximado a los 25 reales q tenian que dar supongo que eso ya se corregira con el vref.

eres un genio tio
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 19:51:06
 :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/

jeje ya me parecia esa constante de 50 siempre iba a meternos un valor negativo

pues bien andale haora me pongo a provar con el vendi to referencial que no se porque no me lo compila

bueno veras que es cencillo haora mientros veo el referencial puedes arreglar todo y cargarle el resto de las entradas armalas todas iguales a ver si no chilla y me cuentas
por cierto si lo ases haora subime el archivo C asi no tengo que realizar todo de nuevo es que lo abia borrado  :mrgreen: :mrgreen:
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 20:00:31
sip ahora cuando lo haga te lo subo, pero tengo unas serie de dudas... estoy apreciando una serie de desfase de un grado y pico a ver me explico:

introduzco 750mV -----> valor que marca el lcd 24.502729  ---> valor teorico 25ºc
introduzco 500mV -----> valor que marca el lcd -0.98500 -----> valor teorico 0ºC
introduzco 2500mV ----> valor que marca el lcd -26.472800 ---> valor teorico -25ºC

Hay un desfase ahi en las temperaturas, otra cosa yo con la instruccion printf(lcd_putc,"T1=%f",temp1); escribe en la pantalla el valor temp1
la hemos declarado de tipo float. al ser de este tipo tiene porron de decimales, C tiene algun parametro para el printF para que muestre solo 1 decimal? en vez de todos? o tiene C alguna funcion que convierta al entero mas cercano un float?
es que quiero apañar esto mas o menos antes de añadir lo demas.

Tu crees que ese desfase es de calculo de las cuentas que hacemos? o que es por culpa del vref y con eso ya lo solucionamos?

Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 20:14:43
si
 despues de la f pones el numero de enteros que queres que te muestre  un punto y el numero de decimales a mostrar
No te pongo un ejemplo porque jeje no me funciona, no se no puedo verlo en el simuladorjeje no se porque misterios de la simulacion estoy viendo si puedo corregir eso
bueno prueva eso que te digo y me cuentas
ejemplo
printf(lcd_putc,"T1=%f1.3",temp1); deberia mostrar un solo entero y tres decimales

lo que decis de el defasaje es verdad pero se me ocurre que en parte por la referencia y ademas bueno es un simulador y no se que tan perfecto sera pero bueno veo si se puede corregir algo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 20:18:05
perdon es entre el % y la f
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 20:22:58
dudas dudas, a ver he probado eso y no tira, pero tira de la siguiente manera printf(lcd_putc,"T1=%1.3f",temp1); hay que ponerlo despues del %, otra cosa pq cuando muestra el -0.2 por ejemplo me lo muestra como si fuese notacion de calculadora y me pone -.2, hay alguna manera de forzarle a escribir el cero? o habria que meter por ahi un if por cojones que compruebe si el valor a mostrar es un 0. y escriba el 0 en otro printf? es que son gilipolleces pero me pica la curiosidad la verdad. ahora monto ya el c y te lo subo modificado.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 20:27:53
esa si que no me la acuerdo creo que alguna vez logre escribir de esa forma .2 pero si que no me acuerdo ya ya pero bueno dejame investigar
Por cierto no creo que sean gilipolladas pues la presentacion de final para mi es importante ase que uno se sienta mejor jeje :mrgreen:
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: jfh900 en 01 de Junio de 2006, 20:42:30
Perdonar que me entrometa en la conversación pero estais utilizando mal la especificación de salida del "printf". Para sacar correctamente los números en coma flotante (float) se utiliza: "%5.2f" donde el 5 representa el nº de digitos incluyendo el punto decimal y el 2 que tenemos dos decimales, por lo tanto para el ejemplo tendremos 2 enteros, el punto decimal y dos decimales, en total 5 digitos. Si queremos que nos rellene con ceros pondremos "%05.2f". Tal y como lo teneis puesto es una incoherencia ya que: "T1=%1.3f" esta diciendo que tienes un digito en total y por otra parte que quieres tres decimales cuando solo puedes representar un dígito.

Un saludo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 20:50:31
weno vamos a ver ya he añadido todos, y funciona el unico que no funciona es el sensor 4 que se encuentra en el pin ra5.
creo que el problema esta en el set_adc_channel he probado con set_Adc_channel(5) pq esta en el pin ra5 y tb he probado con set_adc_channel(3) pq es el siguiente canal al ke hemos usao y tampoco.
te subo el codigo los otros tres ya van.


tienes razon jfh900 no se como sera en C , pero si es verdad que si metes 1.3 por ejemplo estas diciendole q tienes 1 digito en total y 3 decimales, pero el compilador es mas listo y añade los digitos que sean necesarios, al menos eso pasa en pascal, y en c por lo ke estoy viendo pasa lo mismo te los añade.
no pasa nada siempre son bien recibidos las aportaciones e ideas.

saludos
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 21:02:07
el sensor 4 es chanel 4 no es ni 3 ni 5 si lo poes asi andan todos
por cierto lo que dice jfh es correctisimo yo te abia entendido mal la pregunta
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 21:08:15
tienes toda la razon ahora si ke los tengo en pantalla todos mostrando datos validos. a ver si sacamos el vref y conseguimos la precision que nos falta, si lo conseguimos apañar todo antes del fin de semana, me pongo en el finde a montarlo ya en placa y posteo fotillos.

una cosa no se si a a ti tb te pasa, la primera vez que empieza mostrando en pantalla, parece q muestra en el lcd valores basura, luego en la segunda vuelta al bucle ya muestra todo correcto. es curioso

Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 21:11:30
una cosa si no queres que el lcd parpadee tanto(a mi me resulta molesto) tenes que bajar mucho los delay en tre cada printf
otra posibilidad es lo contrario subirlo mas para poder apreciar mas tiempo cada lectura pero bueno eso es cuestion de gustos
me pongo con el ref
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 21:15:15
jjejee gracias, ya lo habia cambiado tio, me pasaba como a ti me estaba kedando ciego perdido, lo q pasa q no he dicho nada pq pense q lo habias dejao pa poder ver como cambiaba los digitos. pero ya veo q te pasaba igual :P

jejejej :D
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 01 de Junio de 2006, 21:30:48
weno compañero, tengo que dejarlo por hoy, mañana sera otro dia , a ver si lo rematamos ya :P jejjejeje venga juan un  saludo y gracias por todo.

Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 01 de Junio de 2006, 21:32:55
pues mañana sera otro dia un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 02 de Junio de 2006, 15:10:47
bien e probado toda la noche y no e podido utilizar la ref
como te fue a vos
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 02 de Junio de 2006, 15:17:59
muy buenas compañero a ver te cuento he estado indagando y un compañero me ha dicho que para utilizarlo la ref en nuestro caso seria asi

#define A_ANALOG_RA3_REF 0x83 // A0 A1 A2 A5 Ref=A3

setup_adc_ports(A_ANALOG_RA3_REF );

con eso efectivamente compila, pero vuelve a salir valores extraños en la pantalla,
Otra cosa para tener mas precision me han comentado que es mejor que utilicemos el adc a 10 bits en vez de a 8 con lo cual tendremos muchisima mas precision.

Otra cosa mirando mirando no me salen muy bien las cuentas, de donde sacaste esto:

temp1=temp1*0.009803*2;      el 0.09803*2 de donde sale? es que me han contado lo sieguiente , en nuestro caso estabamos usando un adc de 8 bits es decir tenemos 256 valores del 0 al 255.

si pillamos 2.5Voltios de tension de referencia y lo dividimos entre 256 trocitos que tenemos de adc da = 0,009765625  el *2 donde lo sacas?

no estaremos teniendo de nuevo problemas con unidades? q una cosa entre en voltios y nosotros la restemos en mV o viceversa?

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 02 de Junio de 2006, 15:28:57
bien lo del adc es verdad pero no se si es nesesartia que lo pongas a 10 (cuestion de probar) pero bueno mi propuesta es que por el momento lo dejemos en 8 y vemos que pasa.

las cuentas que te an contada son perfectas el tema es que nosotros no estamos usando la referencio por (2.5 v) sino que por defecto esta a (0) entonces como yo el calculo lo avia echo para en un futuro usar la ref a 2.5v pues sencillamente multiplico por 2 asi cuando consiga aser funcionar la ref pues solo le borro el 2.

yo ya abia usado la ref como lo pones vos pero nada no me deja compilarla
bueno voy a volver a probarla y te cuento.
Se entendio lo del 2? sino preguntame
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 02 de Junio de 2006, 15:31:50
vale, ahora si que entiendo lo del 2. ahora si , pues es que yo tb he probado a declararlo como te he puesto el vref compila pero no muestra bien yo no se pq sera :( el caso es que si te fijas el ccs tiene unas opciones q tu marcando casillas y demas, el programa solo te hace lo que son las declaraciones esas el solo, has probado a hacerlo asi? haciendolo asi creo que sale lo que te he copiado antes.

Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 02 de Junio de 2006, 15:40:58
 :-/ :-/ :-/ :-/ :-/
ya me compilo y le puse 2.5v en la ref y anda joya sige con un poco de imprecicion pero supongo deve ser el simulador
bua a probar unpar de veces mas y te cuento
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 02 de Junio de 2006, 15:45:10
okis,si consigues unos valores ya mas o menos decentes y quitandole el *2 y ya con el vref, pasame el codigo cuando lo tengas y pruebo yo a simularlo tb, si keda mas o menos preciso mañana empiezo a hacer el protoboard a ver que valores tengo en la realidad, y mientras tanto , si lo conseguimos podemos estudiar lo del adc a 10 bits.
saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 02 de Junio de 2006, 18:02:17
adc en 10 bits
ref en 2.5 volt
bueno a ver si te sirve asi
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 02 de Junio de 2006, 18:11:44
y aca el circuito para la simulacion
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 02 de Junio de 2006, 20:52:55
gracias compañero, pero no se que pasaba con el foro, que no me dejaba entrar, de todas formas no te preocupes q ya lo consegui yo tambien
con adc a 10 y vref a 2.5
ahora si que se nota la precision , estaba consiguiendo 24.9 C de los 25 teoricos q tenia q marcar asi que ya de lujo, todo perfecto.

No se que ha pasado q no me ha dejao entrar al foro durante horas...

un saludo, voy a echarle un ojo a tus archivos, aunque supongo que seran iguales.
Ahora voy a intentar cambiar la pantalla a un lcd de 4x20 en vez de 2x16 creo que hay q cambiarle la libreria tb al programa, es que no lo habia pensado y he estado mirando entre mis chips y mis componentes y tal y solo tengo de sobra por casa un lcd de 4x20, y como mañana ya queria empezar con las pruebas en placa no tendre mas remedio que hacerlo ahi, ademas q creo que kedara merjo son mas lineas para escribir asi que mejor :P

Un saludo.

Por cierto tienes un MP.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 02 de Junio de 2006, 21:03:25
estoy echando un ojo a tu codigo que me has mandao y no lo entiendo

vamos a ver si tenemos el adc a 10 bits. es decir tenemos 1024 trocitos

Ah, pon el ADC en modo 10 bits = 1024 valores, tendras mas resolucion

2.5V / 1024 = 0,00244140625  ese es el valor por el que tenemos que multiplicar ,
pq multiplicas tu por
     temp1=temp1*0.0049015;  ? yo lo he probado con esto que te digo y da un desvio de 1 decima como muchisimo de grado de precision.

cuando lo leas cuentame .

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 02 de Junio de 2006, 21:17:01
bien te pase el archivo que donde me faltava esa correccion ,perdon
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 02 de Junio de 2006, 21:27:06
ah, ok entonces esta todo claro, ya he pasado a la libreria de 4 lineas por 20 caracteres y ya he hecho tb el circuito con el nuevo display, mañana le echare alguna fotillo y te comentare como va el asunto en protoboard.

Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 02 de Junio de 2006, 21:34:29
sale amigo bueno espero no tengas problemas con el circuito recuerda todo lo que te aconsejaron sobre los ruidos y demas.Es un placer ayudar ajente que realmente quiere aprender y enteder y no que le pasen un codigo hecho y ya.
Esperare a ver el circuito quizas yo tambien lo arme :mrgreen:
Por cierto  demas esta decir que seguro el programa por mas que te funcione cuando lo armes ,siempre se podra optimizar
pero bueno eso lo realizaras cuando vallas adquiriendo practica
espero te alla sido de alluda
un saludo desde argentina.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 03 de Junio de 2006, 14:53:27
Muy buenas juanacho que tal estamos? pues de momento muchos problemas no estoy teniendo, el circuito ya lo tengo montado entero en protoboarda y demas, estoy montando ahora una especie de bootloader para el pic en la misma placa pq, he tenido q reprogramar un par de veces, ya que se muestra los datos muy rapidos en la pantalla y parapean demasiado, asi que cuando termine con el bootloader y demas me pondre a modificar un poco los delay a ver si consigo verlo sin que parapadee demasiado.

En cuanto a las sondas tb quiero probar con un cable que tengo por aqui apantallado primero, y con otro termometro que tengo digital para ver que tal marca uno comparado con el otro. Cuando termine de apañarlo todo cuelgo fotos y tal.

Lo de optimizarlo y demas tb lo pense, hacer procedimientos que le pase por parametros el canal del adc y la variable y me guarde la temperatura directamente y alguna cosa mas , ahorrando codigo fuente, pero la verdad que viendo las pocas lineas q tenia ni se me ocurrio tampoco comentartelo, cuando lo monte o en un futuro si que me gustaria optimizarlo, pq me gustaria poder comunicar en un futuro dicho circuito con el puerto serie del ordenador y poder mandarle info de temperaturas tb pero todo eso son ideas que mas adelante... ya veremos que pasa jeje.

El placer es mio de poder haber aprendido tantas cosas en tan poco tiempo, hace menos de 1 semana no tenia ni idea de programar pics, ni manejar proteus ni el compilador ccs ni nada y ya ves xD, lo que hace tener alguien q te lo explique todo jeje

Muchas gracias por todo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 03 de Junio de 2006, 21:17:19
PUES NO AY ADA QUE AGRADECER AMIGO PARA ESO ESTAMOS
BIEN ME QUEDARE ESPERANDO A VER COMO TE QUEDA DESPUES DE CORREGIR LOS DETALLES.
Y SABES SI TENES ALGUNA DUDA PUES NOMAS PREGUNTAS QUE SI YO NO TE LO PUEDO RESPONDER NO FALTARA QUIEN HECHE UNA MANO.
UN SALUDO
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 06 de Junio de 2006, 12:08:26
Muy buenas, que hay? jejje ya toy otra vez por aca, que conste q no me he olvidado del proyecto solo que estoy ahora de examenes en la universidad y no estoy teniendo mucho tiempo :(, monte todo el la protoboard hice un bootloader tb pq estaba ya cansao de sacar el chip y volver a programarlo, eso todo esta bien, tambien he ajustado ya el lcd bien ya que salia todo muy rapido y no se leia bien ya esta mas o menos todo los delays corregidos.

Estoy teniendo problemillas con las sondas que pedi de samples, se me han freido 2 sondas y eso que las he puesto en su posicion correcta, antes de montarlas en el circuito las puse independientes y medi con un voltimetro su vout en milivoltios a ver que metian, pues se me han freido dos y eso que ponen en su datasheet que la tension de entrada puede ser de 2.7 a 5.5 voltios, Probe a alimentarla a 5 por la comodidad de que todo el circuito esta a 5 entero .
Pues empezo a calentarse la sonda y el voltimetro en la vout de la sonda cada vez veia como iba cayendo el potencial de salida :( no se que sucedera pero en su datasheet pone que se pueden alimentar de 2.7 a 5.5 no se pq a 5 se quemaron y si ke estaban bien puestas las patillas.


http://www.analog.com/UploadedFiles/Data_Sheets/11415753TMP35_36_37_d.pdf


saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 06 de Junio de 2006, 12:21:07
En la hoja de datos en el circuito de aplicacion lo alimenta con 3 volt,el circuito esta en la pagina 11 del datasheet .
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 06 de Junio de 2006, 12:24:58
ademas cuando la utiliza a mas de 3 volt utiliza un disipador pagina 14
yo te recomendaria que armes el circuito de prueva exactamente como esta en las hojas de datos paginas 11 a 14
ya que esos circuitos deven estar ya provados.
un saludo juan
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 12 de Junio de 2006, 19:21:59
jejje que conste que no he abandonado el tema eh ! jejeje pero es ke ahora no tengo todo el tiempo ke kisiera para dedicarle, y ademas me estan dando guerra las sondas, al final he tenido que usar amplificadores operacioneles y aun estoy teniendo problemillas, a ver si consigo apañarlo del todo, mañana tengo q revisarlo todavia. xD

una imagen de la proto, aun no me funciona del todo toy haciendo pruebas con una sonda solo.

http://img157.imageshack.us/my.php?image=termometro0011lh.jpg

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 12 de Junio de 2006, 19:33:59
Pues se ve bastante bien felicitaciones aunque te falte un poco.
recuerda que en el foro tecnico te pueden dar una buena mano con el tema de las sondas.
y tranquilo que que despacio tambien se llega
un saludo juan
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 13 de Junio de 2006, 16:29:01
PRUEBA CON SONDA LM35 sin amplificador operacional ni nada.

nueva modificacion de codigo, he decidido hacerme una funcion para optimizar un poco el codigo ya que como van a ser 4 sondas de temperatura y 5 mediciones por sonda, esto creo que empezaria a consumir demasiados recursos, he hecho una sonda y reutilizo una array local a la funcion.

VIDEO DE LA PRUEBA.

os dejo un video de la prueba de 1 sola sonda lm35(lo malo de esta sonda que solo me da rango positivo de valores), he probado lo mismo pero restandole 50 con la sonda tmp36 y esta si con amplificador ya que sino le pongo el amplificador no me tira bien, y en esta obtengo cambios de decimas de grados muy  bruscamente y eso que hago la media, estoy viendo a ver si puedo solucionar el tema de ruidos a ver ke tal... q creo q va a ser eso, sino lo consigo creo q voy a tener que kedarme solo con el entero en vez de con decimales :( sniff

http://adri.no-ip.org/video.avi


Código: [Seleccionar]
#include "16f876.h"
#device adc=8
#fuses NOLVP,XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)
#define A_ANALOG_RA3_REF 0x83 // A0 A1 A2 A5 Ref=A3
#define use_portb_lcd TRUE
#include "lcd420.c"
#use fast_io(A)
#use fast_io(B)

float media (int canal){
  float temp[5],media;

  set_adc_channel(canal);

  temp[0]=read_adc();
  delay_ms(200);
  temp[1]=read_adc();
  delay_ms(200);
  temp[2]=read_adc();
  delay_ms(200);
  temp[3]=read_adc();
  delay_ms(200);
  temp[4]=read_adc();
  delay_ms(200);
  media=(temp[0]+temp[1]+temp[2]+temp[3]+temp[4])/5;
  return media;
}

void main(void){
  float temperatura;
  const int tmp=50;

  set_tris_b(0x00);  //todos como salida datos lcd
  setup_adc_ports(A_ANALOG_RA3_REF );
  setup_adc(ADC_CLOCK_INTERNAL);
  lcd_init();

while (true){
     lcd_gotoxy(1,1);
     printf(lcd_putc,"TERMOMETRO TEST");
     lcd_gotoxy(1,2);   //me posiciono en la linea 1 en el primer caracter
     temperatura=media(0);
     printf(lcd_putc,"T1=%2.1f",temperatura); //Escribo temperatura del sensor1
     delay_ms(500);
}
    }


Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 14 de Junio de 2006, 19:52:13
Bien veo que ya estas agarrando el C .
mira te doy un consejo con lo de las sondas ,porque no abres un hilo en el foro tecnico poniendo tus dudas sobre las mismas,es muy probable que ya alguien las alla usado y te pueda pasar el circuito con que las iso andar .
aunque para mi si armas el circuito del datasheet tiene que andar ,pero para estar bien seguro y no fritar otra asme caso consultalo en el foro tecnico que tendras una pronta respuesta.
por cierto muy bueno el video
un saludo juan
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 15 de Junio de 2006, 06:10:26
pues tienes toda la razon del mundo, aunque estoy muy liado voy a abrir un post ahora en la zona tecnica a ver que me recomiendan. jejeje , sino tendre que prescindir de los decimales, ya consegui apañarlo para las tmp36 , simplemente poniendo los condensadores de desacoplo al pic y a los amplificadores y desconectando el bootloader ya no se volvian tan locas las sondas tmp36, ya solo me varian los decimales aveces otras no tanto, yo creo q es por el ruido, a ver si esta tarde hago tb una prueba con cable apantallado... a ver ke pasa jejje.
weno con el C ahi ando luchando jejeje, la verdad que poco a poco le voy pillando el gustillo jejej.

un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 15 de Junio de 2006, 16:34:38
muy buenas juanacho, que tal como andamos? pues el circuito mas o menos ya lo tengo apañado y los ruidos he mejorao algo pero mucho no he podido hacer se sigue pirando algunas decimas de vez en cuando pero vamos que tampoco pasa nada, ahora tengo unos problemillas con el proteus y demas, luego si tienes un rato a ver si te puedo pasar el eskematico pa ke me mires unas cosillas.

Un saludo y gracias.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 15 de Junio de 2006, 18:25:46
Cuando quieras no hay problemas.
un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 15 de Junio de 2006, 20:17:12
Te he mandado un email, gracias tio.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: angelito en 22 de Junio de 2006, 12:36:02
Felicidades por el proyecto. Estaba buscando infomacióna cerda de como usar pics con conversores A/D para un proyecto y el post me ha servido de mucha ayuda, creo que iniciaré mi proyecto!!

Gracias por la aportación!
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 22 de Junio de 2006, 13:44:56
Bueno que  me alegra que te ala servido y si te podemos alludar pues nomas pregunta
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 24 de Junio de 2006, 10:52:28
Felicidades por el proyecto. Estaba buscando infomacióna cerda de como usar pics con conversores A/D para un proyecto y el post me ha servido de mucha ayuda, creo que iniciaré mi proyecto!!

Gracias por la aportación!

nada angelito a ver si entre todos conseguimos echarnos una manilla y aprender mas sobre este mundillo jejjee, si tienes algun problema y te podemos ayudar te digo lo mismo que juan.

un saludo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 26 de Junio de 2006, 20:38:56
wenas, pues a ver ya diseñe mi circuito con ares, imprimi mi fotolito en una transparencia lo deje que secar y a mi apariencia
kedo bastante opaco y bastante bien, bueno me he hecho una insoladora con 6 bombillas de estas economicas de 20 w cada bombilla creo que son.

todo ello montado en la caja de un antiguo scanner a mi apariencia da tanta luz que te ciega la vista y todo, bueno pues he hecho dos pruebas, en la primera con 10 minutos se me ha marcado muy pokito, la segunda ha durado 15 minutos de insoladora, luego lo he metido en agua templada a unos 27 ºc con sosa, y he notado como rapidamente se kitaba el barniz de la placa, todo correcto pero... las pistas en la primera placa se habian marcado nada, y en la segunda se habian marcado pero no lo suficiente , el acido y la agua oxigenada de maravilla se lo ha comido muy bien, y el acalarado ha sido tb weno.

Por lo que deduzco que los problemas los estoy teniendo en el insolado y revelado, que me recomendais para que se me marquen bien las pistas? es problema del fotolito? es problema de tiempos de insolacion? la placa pone que es para 3 min de actinica o 6 min de luz blanca. es fotosensible postiva a una cara.
saludos.


Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 27 de Junio de 2006, 11:59:08
Bueno pues parece que ya le he pillado el tiempo a la insoladora jejeje, con el aguita templada con sosa, y la insoladora poniendo doble fotolito y un tiempo de 5 minutillos obtengo unos resultados que creo que me serviran jejjeje, asi que nada poquito a poco, ahora les enseño unas fotos.

un saludo.

(http://img60.imageshack.us/img60/4042/img00111od.th.jpg) (http://img60.imageshack.us/my.php?image=img00111od.jpg)

(http://img465.imageshack.us/img465/1198/circuitoinsolado0055sf.th.jpg) (http://img465.imageshack.us/my.php?image=circuitoinsolado0055sf.jpg)

(http://img465.imageshack.us/img465/730/circuitoinsolado0063ky.th.jpg) (http://img465.imageshack.us/my.php?image=circuitoinsolado0063ky.jpg)
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 27 de Junio de 2006, 14:33:17
Jeje pues si que an quedado bonitas :-/ :-/
Bueno cuando termines nos cuentas que tal  un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 28 de Junio de 2006, 12:42:18
buenass, weno pues voy poniendo avances, la placa ya esta soldada entera con sus componentes y ya he hecho las conexiones para el bootloader y el lcd 2x16 azul, al final me he decicido por este en vez del de 4x20 ya que no tengo mucho mas sitio en la caja... y al final voy a usar este ademas es azulito y keda mas cuco jeje.

El bootloader lo he hecho independiente para ahorrar sitio tambien y para no meter mas ruido a las sondas ya que me he dado cuenta de que son muy delicaditas.

Luego me pondre con el tema de programacion de nuevo ya que el circuito tb sera capaz de controlar 4 ventiladores 2 bombas de agua y 2 fuentes de alimentacion. y de momento solo lee 4 sensores de temperatura y los muestra por pantalla.

Tambien me tengo que creear una nueva placa para la etapa de potencia.

saludos.

aqui os dejo unas imagenes.

(http://img247.imageshack.us/img247/8070/circuitoinsolado0117uq.th.jpg) (http://img247.imageshack.us/my.php?image=circuitoinsolado0117uq.jpg)

(http://img275.imageshack.us/img275/6395/circuitoinsolado0101iv.th.jpg) (http://img275.imageshack.us/my.php?image=circuitoinsolado0101iv.jpg)

(http://img394.imageshack.us/img394/8264/circuitoinsolado0099mq.th.jpg) (http://img394.imageshack.us/my.php?image=circuitoinsolado0099mq.jpg)

Pd: las sondas miden eso XD pq no estan conectadas ejejje y estan metiendo valores erroneos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 28 de Junio de 2006, 19:09:14
Si que queda chulo ese lcd azul
Digo yo no seria mejor si cambias este hilo al foro de proyectos? es que mas que una consulta esto ya es un proyecto casi terminado 8) y creo seria mas aprovechado en ese foro,pero bueno es solo una opinion.
Me alegra que vallas avansando con tu proyecto un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 29 de Junio de 2006, 07:11:21
Buenas Juan, pues me parece wena idea, pero voy a terminar de programar la etapa de potencia y el programa y ya cuando acabe el programa que vaya manos o menos bien, lo movemos a proyectos si te parece bien :P

Venga Juan un saludo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 29 de Junio de 2006, 13:47:46
Me parece bien un saludo y aca estare pa lo que se nesecite. :mrgreen:
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 02 de Julio de 2006, 15:31:18
wenas juan, que hay? pues mira ya toy liado con el circuito y demas para hacer los menus y eso, y tengo problemas con los rebotes de los pulsadores , he metio dentras de la lecutra del pulsador
un delay pero no... consigo tenerlo fino tengo q pulsar varias veces y algunas va otras no...
como lo solucciono de manera sencilla por codigo hay que usar interrupciones por narices?

saludos.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 02 de Julio de 2006, 19:17:40
A que te referis con menus?
lo de los pulsadores se puede corregir por soft o por hard sugiero lo realizes por soft para no modificar tu circuito.
A distintas maneras de aserlo dejame ver el programa y te paso lo que me parezca mas adecuado.
upongo el programa no lo as cambiado desde que me pasaste el ultimo si as cambiado algo pues me lo mandas denuevo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 05 de Julio de 2006, 06:45:14
bueno os dejo unas fotillos de lo que he hecho hoy.

He hecho la etapa de alimentacion del circuitillo, os voy a comentar de que consta.... consta de dos salida regulables... de 1 voltio y pico hasta 18 Voltios, regulados mediante una resistencia multivuelta.
Cada canal de 1.5 Amperios... , lo he hecho con los Lm317.

Dos salidas de 12 Voltios a 1 amperio.

Dos salidas de 5 voltios a 1 amperio tambien cada una.

Todo esto lo he hecho utilizando un transformador de poratil que me regalaron y lo tenia ahi sin usar...
Dicho transformador me entrega 18 voltios . asi que weno xD me viene de perlas... las entras regulables las voy a usar para los ventiladores.

(http://img204.imageshack.us/img204/3963/img00265sz.th.jpg) (http://img204.imageshack.us/my.php?image=img00265sz.jpg)

(http://img61.imageshack.us/img61/207/img00279rd.th.jpg) (http://img61.imageshack.us/my.php?image=img00279rd.jpg)

(http://img301.imageshack.us/img301/1792/img00293ic.th.jpg) (http://img301.imageshack.us/my.php?image=img00293ic.jpg)

Por cierto decir tb que todo no es tan bonito como parece ejejje he tenido un pekeño susto con este invento.... xD no cai y use un condensador de 16 voltios .... y... que paso? xD que a los 4 segundos chimpon xD la verdad que es la primera vez que veia explotar un condensador de tan cerca ! descuidos que se tienen xD

fotillo del susto:

(http://img140.imageshack.us/img140/1301/img00232mx.th.jpg) (http://img140.imageshack.us/my.php?image=img00232mx.jpg)


Pero ya esta funcionando perfectamente :)

Bueno os posteo tb unas fotillos de la etapa de los ventiladores....
es para controlar el encendido y apagado de 4 ventiladores, desde el pic. He usado transistores bd135.

(http://img112.imageshack.us/img112/7962/img00300if.th.jpg) (http://img112.imageshack.us/my.php?image=img00300if.jpg)

(http://img133.imageshack.us/img133/9851/img00311bo.th.jpg) (http://img133.imageshack.us/my.php?image=img00311bo.jpg)

un saludo.
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 05 de Julio de 2006, 09:10:05
buenas aqui os dejo unas fotillos de la interface grafica que toy haciendo, es un poco cutre de momento pero bueno, tb voy a hacer que haga unas especie de graficas con unas barras. ( en la segunda revision del programa usare un lcd grafico que me toy dando que me he kedado chico con el 2x16) pero weno para ir tirando de momento me vale. jejej.

Tambien quiero programar que una vez pulsado el boton de encender el pc, no se inicie el pc hasta que la cara fria no alcance una temperatura que nosotros tengamos prefijadas.

Un saludo.

INICIO.
(http://img138.imageshack.us/img138/9543/img00357kg.th.jpg) (http://img138.imageshack.us/my.php?image=img00357kg.jpg)

ESTADOS:
(http://img138.imageshack.us/img138/8804/img00342wd.th.jpg) (http://img138.imageshack.us/my.php?image=img00342wd.jpg)

MENU:

(http://img138.imageshack.us/img138/3802/img00330qn.th.jpg) (http://img138.imageshack.us/my.php?image=img00330qn.jpg)
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: Arbolito en 05 de Julio de 2006, 15:43:04
Pues yo lo veo ya muy bien ,aunque con las modificaciones que queres realizar te quedara conuna pinta bastante profecional.
Felicitaciones y un saludo
Título: Re: Pogramacion pic 16F876 Termometro de 4 canales.
Publicado por: danone en 06 de Julio de 2006, 19:59:18
Buenas pues os traigo mi aportacion de hoy jejjee, el software a falta de un retoque ya lo tengo terminado, espero que no me de mucha guerra jeje.

Aqui esta diseñada la etapa que controla las dos bombas de agua, consta de dos optoacopladores moc3041 y dos triacs tic 236M
aqui os dejo unas fotillos :P
(http://img437.imageshack.us/img437/1073/img00386ux.th.jpg) (http://img437.imageshack.us/my.php?image=img00386ux.jpg)

(http://img438.imageshack.us/img438/2803/img00367sj.th.jpg) (http://img438.imageshack.us/my.php?image=img00367sj.jpg)