Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

08/01/2011 #1


Adc con pic para controlar un servomotor rc
hola que tal,estoy tratando de controlar un servomotor con potenciometro, al girar el pot deve girar al mismo tiempo el servomotor rc, lo que no se, es la conversion de adc a us
estoy trabajando en pic c compiler con un pic16f877a, el adc lo estoy trabajando a 10 bits
(1024). esto es lo q tengo en la lectura adc
while(1){
set_adc_channel(0);
delay_us(10);
q=read_adc();
p=q; // esta deberia de ser mi conversion de adc a us
x=20000-p;
portb=0x01;
delay_us(p);
portb=0x00;
delay_us(x);
}
11/01/2011 #2


aqui hay algo que talvez te ayude http://www.electro-tech-online.com/m...ic18f4520.html
12/01/2011 #3


Dependerá de tu servo. Hay servos que funcionana desde 0.5mS a -90º, 1ms 0º y 1.5mS a 90º otros van de 1 a 2 ms. Averigua cual es el tuyo y luego la conversión es sencilla.

pones p=(q*1000/1024)+500;

De ese modo si q vale 1024, 1024/1024=1 1*1000= 1000 1000+500=1500uS
Si es 512, 512/1024=0.5 0.5*1000= 500 500+500= 1000uS
para 0 bueno 500 uS

Ten en cuenta que en la declaración de las variables necesitarás declararla como floats si lo haces en pasos intermedios y quieres guardar los decimales.


Eso será para cuando sea el caso de 0.5mS hasta 1.5mS

Saludos!
17/01/2011 #4


ok muchas gracias, el servomotor q

manejo es un servo hitec-322 q va desde 1 a 2 ms
17/01/2011 #5

Avatar de Vegetal Digital

Hola, lo que yo hago es usar el adc a 10bits de resolucion (varia entre 0 y 1023), como el pulso alto del servo varia entre 1000uS y 2000uS, yo hago un delay sumando al resultado del conversor 1000uS. Asi el pulso va a variar entre 1000uS (adc al minimo) y 2023 (adc al maximo).
"Un programa vale mas que mil palabras"

Código PHP:
while(1)
    {     
    
SERVO=1;
    
delay_us(1000+v);
            
    
SERVO=0delay_ms(15);
    
v=read_adc();          delay_ms(5);
    } 
Es muy sencillo y muy inestable, lo que recomiendo es usar interrupciones.
Saludos
17/01/2011 #6


gracias muchas gracias de antemano.
saludos vegetal digital
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.