desktop

Curso de programación de PIC en PICBasic Pro

mmm ya creo que te complica es saber "cuanto de humedad hay", es similar a la temperatura cuando no tienes de donde saber si realmente son n°C, por eso te dije que necesitas un valor (constante en el PIC) desde el cual parta el resto de medidas.

Por decir en su datasheet antes del circuito de prueba (el que bota frecuencia) hay una tabla que es aplicada a un módulo que saca voltaje, ahí obtuvo que 10RH son 1.41V, entonces al aplicar 1.41V al ADC del PIC (a 10 bits con referencia a VCC y GND) se obtiene el valor 288 (que representa al 1.41V), de eso se parte -valor de referencia- para hacer el resto de medidas y representarlo en RH.

Entonces te pregunto, en tu circuito cuantos RH son 0.56V o el mínimo voltaje que le aplicas al PIC?, eso es lo que tienes que obtener para así tener un valor de referencia, hacer el cálculo y representarlo en RH. Es mi idea, al menos para la capacidad de procesamiento del PIC.

saludos
 
hola amigos intento probar este codigo de un libro pero esta hecho en microcode me compila y todo pero al rato de realizar la simulacion no me sale nada el codigo es el siguiente y tambien adjunto la simulacion les agradeceria si me ayudaran un poco por favor:
Código:
@deviceXT_osc
define osc 4


define LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSRED PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EBIT 4
 
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
 
TRISA=%1
ADCON1=%00001110
 
DATO    VAR WORD
TEMPBAJ VAR BYTE
TEMPALT VAR BYTE
X       VAR BYTE
G       CON 233
RELEF  VAR PORTD.2
RELEC  VAR PORTD.3
LED    VAR PORTD.4
ENTER  VAR PORTD.5
BSUBIR VAR PORTD.6
BBAJAR VAR PORTD.7
 
EEPROM 0,[20,24]
 
INICIO:
 
FOR X=1 TO 3
 
HIGH LED
PAUSE 200
LOW LED
PAUSE 200
 
NEXT

READ 0,TEMPBAJ
READ 0,TEMPALT

SENSAR:
 
ADCIN 0, DATO
 
LCDOUT $FE,1, "T.MIN T.ACTU T.MAX"
DATO=DATO/128
LCDOUT $FE,$C6, DEC DATO,G,"C"
LCDOUT $FE,$C6, DEC TEMPBAJ,G,"C"
LCDOUT $FE,$C6, DEC TEMPALT,G,"C"

FOR X=1 TO 50
 
IF ENTER=0 THEN GRABARLA
PAUSE 10

NEXT

IF DATO<TEMPBAJ THEN CALENTAR
IF DATO<TEMPALT THEN ENFRIAR
LOW RELEC : LOW RELEF

GOTO SENSAR

CALENTAR:

HIGH RELEC : LOW RELEF

GOTO SENSAR

ENFRIAR:

HIGH RELEF : LOW RELEC

GOTO SENSAR

GRABARLA:

GOSUB SOLTAR

GRABAR1:

LCDOUT $FE,1,"PROGRAMAR TEMP."
LCDOUT $FE,$C0,"BAJA=",DEC TEMPBAJ,G,"C"
PAUSE 100

IF BBAJAR =0 THEN RESTAR1
IF BSUBIR =0 THEN SUMAR1
IF ENTER=0 THEN GRABARA

GOTO GRABAR1

RESTAR1:

GOSUB SOLTAR

IF TEMPBAJ<1 THEN GRABAR1

TEMPBAJ= TEMPBAJ-1

GOTO GRABAR1

SUMAR1:

GOSUB SOLTAR

IF TEMPBAJ>40 THEN GRABAR1

TEMPBAJ= TEMPBAJ+1

GOTO GRABAR1

GRABARA:

GOSUB SOLTAR

WRITE 0,TEMPBAJ

GRABAR2:

LCDOUT $FE,1,"PROGRAMAR TEMP."
LCDOUT $FE,$C0,"ALTA=",DEC TEMPALT,G,"C"

PAUSE 100

IF BBAJAR =0 THEN RESTAR2
IF BSUBIR =0 THEN SUMAR2
IF ENTER =0 THEN GRABARB

GOTO GRABAR2


RESTAR2:

GOSUB SOLTAR

IF TEMPALT<5 THEN GRABAR2
 
TEMPALT=TEMPALT-1

GOTO GRABAR2
 
SUMAR2:

GOSUB SOLTAR

IF TEMPALT>50 THEN GRABAR2

TEMPALT=TEMPALT+1

GOTO GRABAR2

GRABARB:

GOSUB SOLTAR

WRITE 1,TEMPALT

GOTO INICIO


SOLTAR:

HIGH LED
PAUSE 150
LOW LED
 
SOLTAR2:
 
IF BBAJAR=0 THEN SOLTAR2
IF BSUBIR=0 THEN SOLTAR2
IF ENTER=0 THEN SOLTAR2

PAUSE 100
RETURN
 
END
 

Adjuntos

  • simulacion.GIF
    simulacion.GIF
    53.3 KB · Visitas: 108
Creo que tambien se te pudo haber olvido cargar el archivo hex al proteus si no haces eso no podras simularlo y ten muy encuenta que en el pbp te pone un codigo de pic el cual tiene que el mismo que se va a cargar en el proteus


carlos jara dijo:
Creo que tambien se te pudo haber olvido cargar el archivo hex al proteus si no haces eso no podras simularlo y ten muy encuenta que en el pbp te pone un codigo de pic el cual tiene que el mismo que se va a cargar en el proteus


amigo lubeck mira me averigue por aca sobre los TRANSCEIVER RFM12B te dejo el codigo para que si puedas veas el datasheet cuesta igual que los modulos que estuvimos usando

amigo lubeck estuve haciendo una pruebas en los modulos pero al alimentar el pin 7 a 5v el pin 8 me marca 4.95v y si lo pongo a masa pues se que da en 2.92v es como si lo conectaria a masa o lo dejaria en el aire sin conectar
 
Última edición:
Carlos donde andas???

estas conectado????

eso es lo que esperamos 4.95 a positivo, y 2.92 mas o menos conectado a masa...

ya casi ya casi... :D
eso de los transiver me laten mas deja los checo vale...
 
pues es lo correcto nuestro amigo lubeck tiene razon tienes solamente que cargar el archivo pero si en caso necesitas ayuda pues sube el archivo tanto pbp como dsny en verdad podremos ayudarte

si el proteus es el diseño que tienes en el msj 123 tienes un primer error, no te va a salir nada en la pantalla lcd pues por que no tiene alimentacion, tienes que poner el pin 1 y 3 a masa el pin 2 a 5v
o mejor al pin 3 ponle al comun de un potenciometro de 5K los otros pines a masa y 5v ojala te pueda ayudar amigo si en caso no te funciona sube el archivo para checarlo y ver si se puede modificar
 
Última edición:
lubeck estoy aca en linea jeje
probe los modulos que teniamos los dos ultimos con el anterior que nos quedo y recuerdas el modulo viejito el primero que tenia pues todos ellos estan funcionando bien amigo los 4 estan operativos

los probe con un osciloscopio y pues los pulsos son magnificos
 
Última edición:
LUBECK amigo probe los modulos emisores mandandole pulsos desde un 555 y regulando con un potenciometro su velocidad y lo mismo que me emite , los receptores me lo recibe funciona de las mil maravillas con el Schmitt. Trigger es decir amigo creo que ya es un echo echarlo andar
 
Hola como estan... Necesito armar un circuito para controlar led's RGB... Utilizo en PBP con el PIC 16F628A... Por lo q averigue tengo q modificar el ancho del pulso como si fuera un motor cc... Lo q no se es si con un mismo PIC se pueden controlar la tres salidas y como armar el programa para q haga secuencias...
Gracias...
 
hola amigos bueno eso del lcd no hay tanta historia porque el programa casi siempre m los colocaba solo he hecho pruebas asi no me ha dado problema pero puedo intentarlo ya subo el pbp y el dsn Ojala que me puedan hechar una mano
 

Adjuntos

  • CLIMATIZADOR_1.rar
    72.3 KB · Visitas: 206
Hola amigos en el post #835 planteo un problema donde tengo un codigo en pbp para el control de un servomotor de cd con un encoder de 2000 pulsos/revolucion. el problema que tengo es que al compilarlo me genera 312 lineas de codigo y a una velocidad del 5% del motor funciona muy bien el codigo, pero a una velocidad mayor pierde muchos pulsos del encoder. estoy utilizando un oscilador de 8 Mhz y voy a cambiar a uno de 20 Mhz pero no creo que se resuelve el problema por completo por que cambie de 4Mhz a 8 Mhz
y el cambio en la lectura del encoder fue minimo..sugerencias....
 
Byaxel gracias por tus consejos ya logre q mostrara en la pantalla lcd el procentaje de humedad ahora mi problema radica en que tengo que guardar eso datos en la eeprom y compararlo no c si me podrias dar algunos consejos
 
guardar eso datos en la eeprom y compararlo
Para leer/escribir en la eeprom se usan las instrucciones READ/WRITE, encuentras ejemplos en este mismo tema.
Sobre comparar no entiendo, vas a comparar el RH guardado en al eeprom con el RH recién leído?, no veo el problema... puedes guardar el RH antes de mostrar en el LCD pero ¿es necesario usar la eeprom? ya que esta es usada para que el dato no se pierda a pesar de apagar el PIC; en escribir se demora al rededor de 10ms... ¿cada cuanto tiempo lees el sensor?.
 
el semsor esta en constante lectura ya q va a estar serca del lugar a sensar acada rato va a estar sensando las plantitas si detecta una variacion de humedad y es menor que la que el usuario guardo en la eeprom entonces activa una carga y si es mayo esta misma se debe desactivar es algo asi
 
el semsor esta en constante lectura ya q va a estar serca del lugar a sensar acada rato va a estar sensando las plantitas si detecta una variacion de humedad y es menor que la que el usuario guardo en la eeprom entonces activa una carga y si es mayo esta misma se debe desactivar es algo asi
Revisa el help del compilador para que veas como es la sintaxis de las instrucciones para la eeprom. Ten en cuenta la dirección donde guardas el valor.
Luego de leer el valor deseado lo comparas con lo leído y mediante IF-ELSEIF-ELSE decides si es mayo o menor... básicamente es un control on/off lo que haces, ya luego tal vez implementas un control PID.

saludos
 
Última edición:
PID ???? no habia escuchado de esa nota me puedes comentar algo sobre eso ??? porfa por mi parte tambien investigare eres grande man te agradesco por la informacion gracias
 
Atrás
Arriba