Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: moises27 en 20 de Septiembre de 2011, 23:36:28
Título: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
Publicado por: moises27 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.. :(
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); } }
Título: Re: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
Publicado por: AKENAFAB 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 (http://www.todopic.com.ar/foros/index.php?topic=27011.0)
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!
Título: Re: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
Publicado por: moises27 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
} }
Título: Re: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
Publicado por: AKENAFAB 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
setup_adc_ports(sAN0|VSS_VDD);//A0 entrada analoga Vref de 0-5v
setup_adc(ADC_CLOCK_INTERNAL);//velocidad de conversion
set_adc_channel(0);//Canal 0 del ADC
Título: Re: ayuda con el pic12f683... por favor alguien que pueda auxiliarme... :(
Publicado por: moises27 en 21 de Septiembre de 2011, 01:08:25
muchas gracias ya las estoy leyendoo..!!!!! gracias por la ayuda..!!!!! :D