FAQ FAQ  •  Buscar Buscar  •  Registrarse Registrarse  •  Entre para ver sus mensajes privados Entre para ver sus mensajes privados
Login Login

LM35 con PIC
Índice de los Foros Electronica Facil » FOROS ELECTRONICA » Microcontroladores PIC
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
AutorMensaje
FMartinez
Asunto: LM35 con PIC MensajePublicado: 09 Dic, 2016 - 09:28
Nuevo en el Foro
Nuevo en el Foro


Registrado: 09 Dic, 2016
Mensajes: 1

Hola, estoy realizando un circuito con un pic18f4550, el cual quiero controlar la temperatura y el encendido y apagado de unos focos, todo a través de un modulo de bluetoth, el problema viene que solo me muestra la lectura de la temperatura hasta q le envio un dato, es decir, hasta q yo enciendo o apago un foco el micro me muestra la lectura del lm35, quisiera q me ayudaran con el codigo en C para q me este enviando constantemente la temperatura y poder activar o desactivar los focos, este es el codigo:


#include <18f4550.h>
#use delay(crystal =4MHz)
#include <string.h>

#fuses HS
#fuses NOPROTECT
#fuses NOPUT
#fuses NOWDT
#fuses MCLR

#use rs232(UART1, baud= 9600, xmit=pin_c6, rcv=pin_c7, parity=n, bits=8, stop=1)
#use standard_io(b)
#use standard_io(a)

#define lled1 pin_b0
#define led2 pin_b1

char dato;
float temperatura;
long valor;


}

void main()
{


while(true)
{


dato=getc();

setup_adc(adc_clock_internal);
setup_adc_ports(all_analog);
delay_us(20);

set_adc_channel(0);
delay_us(50);
valor=read_adc();
//temperatura=(0.488758*(float)valor);
temperatura=(0.48875*(float)valor);
printf("%2.1f\n\r",temperatura);
delay_ms(2000

switch (dato)
{
case 'a':
output_high(led);
break;

case 'b':
output_high(led2);
break;
}
}
}
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
rina
Asunto:  MensajePublicado: 11 Dic, 2016 - 11:34
Fanatico de la Electronica
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1859

la verdad que no me manejo mucho o nada con el pic c
pero me da que el problema biene por que nada mas pedir la lectura del lm35 pausas el pic entonces igua no te carga la respuesta o queda parada en el registro usart del puerto serial y lo carga en la siguiente.
aparte tienes una errada en el led1, pero que bueno es una tonteria..

aunque en tu programa hay muchas cosas que no llego a entender.. el puesto usar lo tienes bien definido eso si.. pero cual es el bucle de programa. el c no usa un goto.. porque los comandos del pic solo tiene o goto o gosub, pero en tu codigo no veo que tenga un programa central donde este corriendo hay de continuo. esta claro que en ordenadores o telefonos ya tienen un entorno ma prediseñado, pero los pic son dispositivos mas pequeños que corren a mucha menos frecuencia por eso se intenta esplotar al masimo o dejar que pueda explotar el masimo de su rendimiento para la programacion. entonces te queda crearla a ti segun te convenga para lo que quieras hacer..

otra que tampoco entiendo muy bien es como trabaja el c la subrrutina de interruciones (eso es algo medio electrico) el pic tiene un bit que cuando se marca guarda el emplazamiento de donde esta en un apartado de memoria que tiene propio para volver y salta a la parte de programa de interrucciones para despues mirar ese registro de donde estaba y volverse. que tampoco entiendo muy bien como hace eso el pic c. las subrrutinas normales eso ya no esas las guarda en un registro de ram. pero interrucciones tienen su propio registro.. y bueno lo dicho no se como las maneja aun asi no veo que las tengas definidas...

mi consejo que es el de siempre desde hace mucho. si estas empezando con el mundo de los microcontroladores hacte de primeras con un pic con menos circuitos internos e interrucciones. esque sino vas a tener que definir muchos mas parametros para que no te den puñetas.. me esplico
apagar las puestas comparadoras que ese modelo las tiene y no estan apagadas apagar el usb si no lo usas etc etc etc. por eso siempre biene bien empezar con un integrado mas sencillo..

otra cosa que los lenguajes compiladores estos que usamos aveces lo aga el solo pero solo aveces y despues estamos dando golpes de ciego y peleandonos con el dataseet para saver que coño hay mal.. pero na en tu caso es un programa muy de principiante :p lo siento. esque esta poco definido

un saludo
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
rina
Asunto:  MensajePublicado: 11 Dic, 2016 - 11:48
Fanatico de la Electronica
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1859

y otra que estoy perdido. no se como define los puertos el pic c.. y porlo que veo los define fatal..

llos pic tienen unos registros de memoria que estan asignados a los puertos del pic.
porta, portb, portc, etc etc etc
estos definen si los transistores de salida esta a 1 o 0 vamos si el transistor de masa se actiba o el de vdd al mismo tiempo son bidireccionales. (vamos que son como una ram) si tu fuerzas ese 1 a 0 en el pin que sea el port detecta eso y pone esa variable a 0 automaticamente asta que tu por programa la fuerces a uno.
despues estan los registros tris tambien son de ram. esos de fine si enciendo los terminales de corriente port. pongamos que port da una corriente de 20ma por patilla para forzar un bit hay que mandar mas de 20mA si tengo definido la patilla con tris como entrada esa patilla queda libre de potencial y podria pasar de 0 a 1 solo por la estatica (hay es cuando sele pone una resistencia de pul-up fijando un 1 o 0 pero con mucha menos intensidad de 20ma casi como que 1ua nada mas)

tienes que aprender a manejar esos dos registros lo primero y aprender como los camvia el pic al actibar por ejemplo el uart o cuando lo activas como entradas analogicas (el pic automaticamente el internamente canvia los registros tris y port de esas patillas asignadas)...

vamos que la razon de empezar con un pic mas pequeño es tan sencilla como que el dataseet de un pic mas pequeño como un 16f819 tiene poco mas de 100 pajinas de informacion y el modelo que tu usas que es muy completo casi 400.. empieza a leer una documentacion de un pic mas pequeño y despues pasas a uno superior..
realmente son todos iguales o muy parecidos, solo que cadavez tienen mas circuitos dentro de apollo, porlocual mas cosa que tienes que controlar y activar o desactivar.. al final los bit de actibacion y desactivacion de esos sub circuitos es como darle a un interructor de la luz.
los compiladores suelen empezar con todo encendido y no te interesa tener todas las luces de una mansion encendidas tansolo las que necesites para ver. piensa que los circuitos internos que actives tambien consumen corriente muy poca pero consumen si los apagar pues mejor

lo dicho un saludo
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
rina
Asunto:  MensajePublicado: 12 Dic, 2016 - 12:01
Fanatico de la Electronica
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1859

bueno si por requete ultimo.. ese pic que usas tiene dos terminales pwm que funcionan interna mente por hardwar. activas esa ese circuito interno que esta asignado al timer 2. y se controlan con los registros ccpr1 ccpr2..

vamos que ya puestos que vas a manejar una iluminacion led porlomenos aprovechar que puedes regularla por que ese integrado tiene internos dos pwm por hardwar (otra cosa si tuvieras que crear los pwm por softwar que seria mas coña) y no modules a lo burro la portadora cuadrada intenta filtrarla con un cuerpo inductor como funciona cuanquier regulador dc-dc como el lm2596 o modelos similares. aparte que para tener una portadora pwm a una buena frecuencia de 50Khz necesitarias un oscilador de 8mhz o mas (mas que nada y por practicas propias. cuando la portadore pwm es inferior a 1khz da unas jakecas de la leche con o sin estavilizador de corriente bueno es de 10khz para arriba. la cosa es que si bas estavilizar la corriente 10khz es poco y pide un inductor y condensador muy grandes porlocual mejor aumentar la frecuencia entre 50 y 150khz asi el inductor purde ser mas pequeño de unos 22-47uH para 150khz y 100-220uH para una frecuencia de 50khz.

bamos el condensador lo mismo para una carga de 10-30W led el condensador deveria ser de 1000-1500uF a 50khz mientras que si la portadora la suves a 150khz el condensador ya te valdria uno de 220-470uF

la verdad que si eres principiante te va ser todo un royo por eso aconsejo empezar con microcontroladores mas pequeños e ir pasito a pasito
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Mostrar mensajes anteriores:     
Cambiar a:  
Todas las horas son GMT + 1 Hora
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
 Índice de los Foros Electronica Facil » FOROS ELECTRONICA »  Microcontroladores PIC
powered by phppowered by MySQLPOWERED BY APACHEPOWERED BY CentOS© 2004 - 2017Información LegalPrensa