Autor Tema: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(  (Leído 3656 veces)

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

Desconectado moises27

  • PIC10
  • *
  • Mensajes: 3
ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
« en: 20 de Septiembre de 2011, 23:36:28 »

Hola amigos pss soy un poco nuevo en esto de la programacion de pic´s pero le ee picado un poco el caso es que hice un programa en el MPLAB que es el control de encendido y apagado
de un ventilador por medio de un Lm35 pero lo programe para el pic18f4550 pero resulta que me pidieron ahora el mismo funcionamiento pero con un pic12f683 y no se
como hacer la conversion logia para que funcione o haga lo mismo que el programa que ya hice alguien puede ayudarme?????????
se lo agradeceria mucho..!! y aclaro solo conoscoo el lenguaje que maneja el MPLAB asi que estoy muy corto en conocimiento de programacion ojala que alguien pueda ayudarme  :S


aqui les pongo el programa ojala que alguien pueda ayudarme.. :(


#include <18f4550.h>

#device adc=10 //Usa resolución de 10 bits
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT,PLL1,CPUDIV1
#use delay (clock=20000000) 
#include <STDLIB.H>
#include <lcd.c>
#use standard_io (D)


void main (void)
{
float temper=0,medicion=0,vent=0;

lcd_init();                //Inicia LCD
lcd_putc(" Termometro\n"); //Saca texto
lcd_putc(" con LM35");     //Saca texto
delay_ms(2000);
lcd_putc("\f");            //Limpia pantalla
lcd_putc("Temperatura\n"); //Saca texto
lcd_putc("actual");        //Saca texto
delay_ms(1000);
lcd_gotoxy(13,2);          //Acomoda cursor LCD
lcd_putc("oC");

while (1)
{

lcd_gotoxy(8,2); //Acomoda cursor LCD
lcd_putc(" ");   //Limpia ese sector de pantalla
lcd_gotoxy(8,2); //Acomoda cursor LCD


setup_adc (adc_clock_internal);

setup_adc_ports (all_analog);

set_adc_channel (0);   //Elige canal a medir RA0
delay_us (20);
medicion=read_adc ();  //Hace conversión AD
setup_adc (adc_off);   //Apaga ADC


vent=temper;        //esto es para encender el ventilador si la temperatura pasa de 35º grados
if(vent>=35)
output_high(pin_a2);


if(vent<=30)       //esto es para apagar el ventilador si la temperatura es 30º grados
output_low(pin_a2);


//temper=((medicion*0.0048875855327468))*100;  //lectura del adc de la temperatura

temper=medicion*(0.488); //Pasa binario a °C

//////////////////////////////////////////////////////////////////////////////////
// el "0.48875" sale de dividir 5/1023 y el resultado de eso multiplicarlo por 100
// el 5 sale de los 5 voltios aplicado a el voltage de referencia, los 1023 salen
// de los 10 bit de resolucion del conversor analogico digital que seleccionamos.
// Si utlizaramos la resolucion de 8 bist del conversor analogico digital, la
// formula fuera (5/255)*100 ya que con 8 bits el numero maximo posible es de 0-255
//////////////////////////////////////////////////////////////////////////////////

printf(lcd_putc,"%02.1f",temper); //xxx.x °C
delay_ms (1000);
}
}

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
« Respuesta #1 en: 21 de Septiembre de 2011, 00:24:45 »
Bienvenido al foro! :-/

¿Qué tipo de LCD usas ?
¿Cuántos pines decesita para trabajarlo con el pic?

¿En necesario el cristal de 20MHZ o podrías trabajar con el Oscilador interno del pic a 8MHz ?



Esto te lo pregunto porque el pic12F683 solo tiene 6 pines , de los cuales 5 trabajan como E/S y uno solo como entrada(MCLR).
Entonces si tu pantalla usa LCD hitachi controlador 44780 pues no te alcanzarán los pines.

Checa este link

Por lo demás no le veo problema para migrar tu programa.

-------------------------

Esta libreria creo que ni la usas #include <STDLIB.H>

MPLAB no es un lenguaje xD , solo es el entorno.

Tu estas trabajando en C del CCS C compiler.

Sube más datos del hardware que usas y así tener una mejor idea de como emplear el 12F683.

Saludos!
« Última modificación: 21 de Septiembre de 2011, 00:36:12 por AKENAFAB »

Desconectado moises27

  • PIC10
  • *
  • Mensajes: 3
Re: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
« Respuesta #2 en: 21 de Septiembre de 2011, 00:51:42 »
sii de hecho el #include <STDLIB.H> ya lo habia qquitado sorry por eso.. y pss no el crital no es necesario de 20Mhz y tampoco el lcd no lo lleva
lo que pasa es que al hacerlo con el 4550 queria observar el comportamiento de la temperatura como variaba pero con el 12F683 no llevara el LCD y pss menos por que los pines son muy pocos y este
y ya lo modifique y ya me simulo en el proteus y lo tengo asii nomas que eso de los fuses aun no me queda muy claro te lo dejo para que lo cheques y grax.!!! por tu comentario de vdd
que tengo muy poco conocimiento con estoo y no se realmente si ponga cosas que en realidad estan de mas pero tus comentarios me ayudan a saber en que estoy fallando de vdd aqui te dejo
el que modifique para el 12f683 si en algo estoy mal o lo puse de mas te agradeceria tus correcciones :D


#include <12f683.h>

#device adc=10 //Usa resolución de 10 bits
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOCPD                    //No EE protection
#FUSES NOPROTECT                //Code not protected from reading
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES RESERVED                 //Used to set the reserved FUSE bits
#use delay (clock=8000000) 
#include <STDLIB.H>




void main (void)
{
float temper=0,medicion=0,vent=0;


while (1)
{



setup_adc (adc_clock_internal);

setup_adc_ports (all_analog);

set_adc_channel (0);   //Elige canal a medir RA0
delay_us (20);
medicion=read_adc ();  //Hace conversión AD
setup_adc (adc_off);   //Apaga ADC


vent=temper;        //esto es para encender el ventilador si la temperatura pasa de 35º grados
if(vent>=35)
output_high(pin_a2);


if(vent<=30)       //esto es para apagar el ventilador si la temperatura es 30º grados
output_low(pin_a2);


//temper=((medicion*0.0048875855327468))*100;  //lectura del adc de la temperatura

temper=medicion*(0.488); //Pasa binario a °C



}
}

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
« Respuesta #3 en: 21 de Septiembre de 2011, 01:03:34 »
Para que te guies con el uso de los perifericos de cada pic usando el CCS C .

Abre el archivo 12F683.H

En el encontraras como configurar el ADC del pic , las interrupciones , timer,etc...

Código: C
  1. setup_adc_ports(sAN0|VSS_VDD);      //A0 entrada analoga Vref de 0-5v
  2.     setup_adc(ADC_CLOCK_INTERNAL);               //velocidad de conversion
  3.     set_adc_channel(0);               //Canal 0 del ADC

Desconectado moises27

  • PIC10
  • *
  • Mensajes: 3
Re: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
« Respuesta #4 en: 21 de Septiembre de 2011, 01:08:25 »
muchas gracias ya las estoy leyendoo..!!!!! gracias por la ayuda..!!!!! :D