TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: maxstring en 25 de Junio de 2014, 23:22:13

Título: Usar el comparador ADC para obtener un valor que mueva motores? PIC12F675
Publicado por: maxstring en 25 de Junio de 2014, 23:22:13
Hola!

Estoy haciendo un codigo en PIC Simulator IDE para el PIC12F675, programado en basic, pero se que tengo que usarlo de otra manera, el ejercicio es el siguiente:

Deben entrar señales analogicas por los pines GPIO.0 y GPIO.1 que supuestamente vienen de 2 fotoresistencias que reciben luz ( por lo tanto cada resistencia puede recibir mas o menos luz y se hace una diferencia entre ellas). OJO, no necesriamente son fotoresistencias, simplemente puedo usar cualquier señal analogica para emular el efecto de la luz.
Debo usar el canal 0 y 1 del ADC.
La conversion de los datos deben salir por el pin GPIO.2 mediante la funcion Servout hacia 1 motor y dependiendo del valor que salga, el motor debe girar a la izquierda o a la derecha. Ejemplo: si recibe mas luz a la derecha (diferencia positiva), los motores se mueven a la derecha.
Es algo asi como esas casas giratorias que se mueven hacia donde existe mayor fuente de luz del sol teniendo 2 fotoresistencias en el techo.

algo asi

(http://www.todopic.com.ar/foros/imgtiny/o1awy.jpg)

Yo tengo un codigo hecho pero segun lo que tengo entendido, para hacer esto debo usar los comparadores del ADC, ya que estos comparan las entradas del pin 0 y 1 y hacen algo segun como este configurado, el problema es que no se utilizar el comparador aca.

Esto es lo que tengo hecho.

Código: [Seleccionar]
Dim der As Word
Dim izq As Word

ANSEL = %00010011 
ADCON0 = %10000001 
CMCON = %00000111 
TRISIO = %00000011 
e_go:
ADCON0.1 = 1
no_fin:
If ADCON0.1 = 1 Then Goto no_fin
If ADCON0.2 = 0 Then
i = 256 * ADRESH + ADRESL
ADCON0.2 = 1
Else
If ADCON0.2 = 1 Then
d = 256 * ADRESH + ADRESL
ADCON0.2 = 0

If d > i Then
ServoOut GPIO.2, 1
Else
ServoOut GPIO.2, 2
Endif
Endif
Goto e_go

Ahi esta con los comparadores apagados y se esta haciendo la comparacion en el codigo, pero necesito usar el comparador, como lo puedo adaptar???


Esta es la idea en una hoja de papel

(http://www.todopic.com.ar/foros/imgtiny/5vaaop.jpg)

Ojala me puedan guiar un poco
Gracias!!