Tengo una duda con un sensor sharp a un pic16f873a

pues uno de esos sensores que tipo de respuesta nos da analoga o digital
si es digital lo debes conectar a una pata del pic y configurarlo como entrada
pero si es analoga usando el ADC
 
es un sensor analogico como lo puedo configurar? es-que bueno yo lo estoy poniendo asi
void main(void)
{


TRISA = 0x01; // sensor
PORTA = 0;
trisc =0x00; //led
portc = 0x00;

inicio:
if(porta && 0x01)
{
portc = 0x01;
}
else
portc = 0x00;

{goto inicio;}
}

segun yo no-se si este-bien o mal pero para encender un motor se-puede hacer con el-sensor sharp sin ponerle alguna distancia o es necesario ponerle distancia?
 
Última edición por un moderador:
Lo que no entiendo es como se configura el adc del pic16f873a estoy empezando y ya hice muchos programas y ahorita se me ocurrió hacerlo con sharp pero no-se como configurar el adc y ni como-se pondrían las distancias
 
Última edición por un moderador:
Hola amigos, tengo un problema con el sensor sharp 2y0a21 que mide de 10 a 80cm, quiero accionar algo como motores, leds o u otra cosa dependiendo a la distancia asignada. Pero no logro hacer la comparacion en el codigo para el pic16f877a.
El compilador ó los compiladores que esoy utilizando son MiKro C y MicroCode Studio.
espero y puedan ayudarme.
estoy intentando hacer un Robot levantador de objetos
 
Bueno, ante todo muy buenas noches.
El inconveniente es el siguiente. Estoy utilizando un sensor SHARP 2Y0A21 el cual tiene un rango de 10-80 cm, y quiero que cuando el objeto se encuentre a los 14 cm envíe un 1 al pin D0 del microcontrolador (16f877a)
Espero su ayuda, de ante mano gracias.
Estuve intentando con este código y el esquema hecho en proteus.

Código:
#include <16f877a.h>
#device adc=10
#fuses xt,nowdt
#use delay(clock=4000000)
#define LCD_DB4   PIN_B4
#define LCD_DB5   PIN_B5
#define LCD_DB6   PIN_B6
#define LCD_DB7   PIN_B7
#define LCD_RS    PIN_B2
#define LCD_E     PIN_B3
#include <lcd1.c>
float r,v;


void main(){

lcd_init(); //Inicializa la pantalla lcd
setup_adc_ports(an0);//Selecciona el puerto a realizar la conversion
setup_adc(adc_clock_internal);//Selecciona el reloj de conversion
set_adc_channel(0);//Selecciona el canal de conversion

inicio:
r=read_adc();//Conversion A/D la almacena en r en un binario de 0-1024
v=(1/(r/1024))*4.5;//Convierte a cm
lcd_gotoxy(1,1);//Posiciona el cursor en la posicion 1,1 de la pantalla lcd
printf(lcd_putc,"dist. = %.2f cm,", v);//Imprime
delay_ms(50);//Demora

if(v==14){
output_high(pin_b0);
}
goto inicio;

}
 

Adjuntos

  • robosuit.rar
    32.5 KB · Visitas: 46
Última edición por un moderador:
Bueno, buenas tardes. El inconveniente es el siguiente; que no sé cómo transformar esta fórmula al lenguaje de programación para CCS Compiler.
Bueno, la fórmula es la siguiente: distancia(cm) = 16746,73 · Vout^(-1,2134)
Espero que me den pistas o lo mejor, como poder realizarlo.
Bueno, ante todo, gracias.
 
Última edición por un moderador:
Atrás
Arriba