TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: lars en 18 de Noviembre de 2007, 20:28:15

Título: problemas con el ADC de 16F917
Publicado por: lars en 18 de Noviembre de 2007, 20:28:15
estamos armando un seguidor solar bastante sencillo..... utiliza 2 fotoresistencias, el voltaje resultante de estas... es comparado....

utilizamos un motor paso a paso bilolar para mover una fotocelda.... y colocarla en la mejor posicion al sol ( girando 360 grados....).....

utilizamos un controlador del motor que hicimos con puro TTL.... (el tipico controlador para stepper bipolar que encuentras en internet por todos lados) por lo que solo se necesita un tren de pulsos para que gire el motor....  y darle alto o bajo en una entrada de un XOR para cambiar la direccion...


todo va bien... hasta que intentamos igualar A y B.... el motor empieza a girar sin control... hacia ambos sentidos....

¿como puedo corregir esto?

este es el codigo...


utilizamos microcode studio... y PBP


'****************************************************************
'*  Name    : CELDA.BAS                                         *
'*  Author  : Lars Regalado                                     *
'*  Notice  : Copyright (c) 2007 BlackSheep                     *
'*          : All Rights Reserved                               *
'*  Date    : 14/11/2007                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
 

 DEFINE ADC_BITS 4
 DEFINE ADC_CLOCK 3
 DEFINE ADC_SAMPLEUS 10
 A var byte
 B var BYTE
 
 TRISA = %11111111
 
COMP:
ADCIN 0, A
adcin 1, B
IF a<b THEN
HIGH PORTB.0 'esto cambia el sentido' 
HIGH PORTB.1 'el tren de pulsos'
pause 50     'el tren de pulsos'
low PORTB.1  'el tren de pulsos'
pause 50     'el tren de pulsos'
endif
if A>B then
LOW PORTB.0  'esto cambia el sentido'
HIGH PORTB.1 'el tren de pulsos'
pause 50     'el tren de pulsos'
low PORTB.1  'el tren de pulsos'
pause 50     'el tren de pulsos'
ENDIF
if -200<=(a-b)&(a-b)<=200 then   'este es el problema'
HIGH PORTB.0
HIGH PORTB.1
pause 50
endif
GOTO comp


lo que queremos hacer es cuando las LDR... den un voltaje parecido..... la celda solar se detenga en esa posicion....

gracias de antemano
Título: Re: problemas con el ADC de 16F917
Publicado por: navaismo en 19 de Noviembre de 2007, 00:46:33
Hola, Bienvenido.

Primero los Bits del ADC segun se solo soportan 8 y 10 -y este ultimo depende del PIC- Por lo que la linea: DEFINE ADC_BITS 4 esta mal.

Luego en tu comparación donde tienes el problema cuando haces el & quieres hacer la AND de suma binaria o la AND de condicion. Porque si es lo segundo deberas poner AND asi textual
Título: Re: problemas con el ADC de 16F917
Publicado por: lars en 19 de Noviembre de 2007, 06:38:27
hola... en realidad definiendo el adc a 4 bits... funcionaba el A>B y el A<B..... el igual es el que no realizaba nada.... probe todo lo que dijiste.... pero sigue igual....


ya no se me ocurre nada...   tenemos la esperanza de que a la hora de que quede montado el proyecto (con la fotoresistencias ya en su lugar)... la celda empiece a oscilar entre un grado y el otro :P....

si a alguien se le ocurre algo hagamelo saber... muchas gracias..




por cierto.... muy buen foro... estuve leyendo otros proyecto.. muy interesantes..
Título: Re: problemas con el ADC de 16F917
Publicado por: lars en 19 de Noviembre de 2007, 07:00:28
emmmm..... justamente despues de postear lo pasado... se me ocurrio la geeenial idea de.... cambiar el pic.... en vez de usar el el 16F917... puse un 16F877A (que es el que normalmente uso).... y ... funciono el codigo perfectamente....


muchas gracias por por la ayuda....  de hecho le comente a un amigo (que es quien me esta enseñando a usar pics) lo de AND y & y fue como una revelacion.... pero igual lo que necesitaba era &....


 gracias
Título: Re: problemas con el ADC de 16F917
Publicado por: navaismo en 20 de Noviembre de 2007, 01:10:52
Bien, lo bueno es que funcione tu aplicacion, pero les recomiendo que se lean el manual de PBP  para el uso de las instrucciones -por aquello del adc-

Saludos