Control de temperatura On-Of con termocupla tipo J y pic16f877A

#1
bueno estoy trabajando con un amplificador de instrumentacion ad594 aq especial para termocuplas tipo j, y diseñe un acondisionador de señales con lm741 de modo que la señal emitida por la termocupla y el ad594 en mv, varie de 1 a 5v, ahora bien...yo necesito que ese voltaje que varia se refleje en el lcd (16x2) en forma de temperatura a traves del pic16f877a y cuando la temperatura llegue a los 70 grados el pic mande apagar un led y cuando la temperatura baje a 40 grados el led sea encendido de nuevo...la cuestion es que yo no se nada de programacion, lamentablemente ese no es mi fuerte, se que tengo que a prender, pero por ahora el factor tiempo se me esta acabando, ya que tengo que entregar esto dentro de una semana...y no tengo a nadie que me ayude, solo tengo un amigo que medio sabe pero la programacion que me hizo no me funsiono, se que el me hizo la programacion con un programa llamado "protron ide" y creo que en lenguaje Basico...Bueno se que esta mala la progrmacion porque cuando lo intento simular en proton me sale este error ((PIC16ADC)PC=OXOO93 ADC conversion clock period (4e.07) is less than min TAd=1.6us and is possibly divice clock frequency.) y sale como 1000veces., entonces crei que era en proton qe estaba malo asi que queme el pic y lo monte en el circuito y los numeros salen raros, se mueven a lo loco..de verdad yo no se programar mi fuerte son los montajes y la interpretacion de circuitos claro obviamente tengo que buscar la manera de aprender pero despues por q ahora necesito entregar esto porque sino pierdo un año en la uni....si alguien me puede ayudar se lo agradeceria con la mano en el corazon de verdad....
y aqui esta la programacion que me hizo mi amigo la cual no sirvio...

Device = 16F877A
XTAL = 20
TRISD = %00000001
TRISC = %00001000
PORTD = %00000000
PORTC = %00000000
Dim CONTADOR As Byte
TRISA = $ff
ADCON1= $80
Dim valor As Word
Dim GradoC As Word
Declare ADIN_RES 10
Declare ADIN_TAD 8_fosc
Declare ADIN_STIME 50
inicio:

valor = ADIn 0
GradoC= (valor*100)/1023

If PORTC.3=1 Then
Print At 1,1," Inst. y Control"
Print At 2,1, " Electrcidad "
DelayMS 5000
Else
Print At 1,1," TEMPERATURA "
Print At 2,1, Dec GradoC
Print At 2,4, "Grados "
EndIf

If GradoC >= 70 Then
PORTD.2 = 0
DelayMS 50000

EndIf
If GradoC <= 40 Then
PORTD.3 = 1

EndIf
 
Última edición por un moderador:
#3
puedes subir el circuito para simularlo y probarlo y que sea mas facil poder ayudarte, tambien podrias cambiar la frecuencia xtal a 4 y luego intentar simularlo. saludos
 
Última edición:
#4
podrias probar con algo como esto pero ten en cuenta la coneccion de el lcd.


Device = 16F877A
[/SIZE]Xtal [/size]
= 20
TRISD = %00000001
TRISC [/SIZE]= %00001000
PORTD [/SIZE]= %00000000
PORTC [/SIZE]= %00000000
TRISB = %00000000
Dim CONTADOR As Byte
TRISA = $ff
ADCON1= $80
Dim valor As Word
Dim
GradoC As Word

Declare LCD_Type
= 0
Declare LCD_DTPin = PORTB.0
Declare LCD_ENPin = PORTB.4
Declare LCD_RSPin = PORTB.5
Declare LCD_Interface = 4
Declare LCD_Lines = 2
DelayMS 500
Cls
Declare Adin_Res
10
Declare Adin_Tad 8_fosc
Declare Adin_Stime 50
inicio:
 
If PORTC.3=1 Then GoSub texto
If PORTC.3=0 Then GoSub lectura
texto:
Print At 1,1," Inst. y Control"
Print At 2,1, " Electrcidad "
Return
lectura:
valor = ADIn 0
GradoC= (valor*100)/1023
Print At 1,1," TEMPERATURA "
Print At 2,1, Dec GradoC
Print At 2,4, "Grados "
 
If GradoC >= 70 Then
PORTD.2 = 1
Else
PORTD.2 = 0
 
EndIf
If
GradoC <= 40 Then
PORTD.3 = 1
Else
PORTD.3 = 0
EndIf
Return
End
 
Arriba