Autor Tema: Pogramacion pic 16F876 Termometro de 4 canales.  (Leído 48964 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #15 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
Existo, aunque pienses que no pienso

Desconectado danone

  • PIC12
  • **
  • Mensajes: 78
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #16 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.

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #17 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
Existo, aunque pienses que no pienso

Desconectado danone

  • PIC12
  • **
  • Mensajes: 78
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #18 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?
« Última modificación: 30 de Mayo de 2006, 20:17:26 por danone »

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #19 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
Existo, aunque pienses que no pienso

Desconectado danone

  • PIC12
  • **
  • Mensajes: 78
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #20 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.

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #21 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.
Existo, aunque pienses que no pienso

Desconectado danone

  • PIC12
  • **
  • Mensajes: 78
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #22 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.

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #23 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
Existo, aunque pienses que no pienso

Desconectado danone

  • PIC12
  • **
  • Mensajes: 78
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #24 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.


« Última modificación: 31 de Mayo de 2006, 14:20:01 por danone »

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #25 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.
Existo, aunque pienses que no pienso

Desconectado danone

  • PIC12
  • **
  • Mensajes: 78
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #26 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?


Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #27 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?
Existo, aunque pienses que no pienso

Desconectado danone

  • PIC12
  • **
  • Mensajes: 78
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #28 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

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Pogramacion pic 16F876 Termometro de 4 canales.
« Respuesta #29 en: 31 de Mayo de 2006, 17:07:05 »
a ver indicame como le cargas el .hex al micro(el de la simulacion9
Existo, aunque pienses que no pienso


 

anything