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

Temas similares

19/05/2013 #1


Pwm con ldmicro, no se posiciona el servo, solo vibra.
buen dia. necesito lograr posicionar un servo con el pwm usando ldmicro, al programarlo , solo vibra el servo y no logro qUE se posicione. estoy usando el pic16f877.
19/05/2013 #2
Moderador general

Avatar de Fogonazo

amspanter48 dijo: Ver Mensaje
buen dia. necesito lograr posicionar un servo con el pwm usando ldmicro, al programarlo , solo vibra el servo y no logro qUE se posicione. estoy usando el pic16f877.
Reglas generales de uso del foro

03) Cuando preguntes, danos la máxima información posible. ¡ No somos adivinos !

05) Escribe de manera correcta y legible para todos. Estás en un Foro no en un Chat.

¿ Esquema ?
¿ Programa ?
02/06/2013 #3


quiero mover un servo motor con el software ld micro. el pic 16f877 es el que estoy programando, pero al querer simularlo no funciona. quiero saber en que estoy mal. quiero mover el servo, controlandolo desde un potenciometro, modulando su posicion, pero aun no logro hacerlo, dejo el archivo. espero ayuda. gracias.pwm.rar
28/06/2013 #4


amspanter48 dijo: Ver Mensaje
quiero mover un servo motor con el software ld micro. el pic 16f877 es el que estoy programando, pero al querer simularlo no funciona. quiero saber en que estoy mal. quiero mover el servo, controlandolo desde un potenciometro, modulando su posicion, pero aun no logro hacerlo, dejo el archivo. espero ayuda. gracias.Archivo Adjunto 93556
Hola, es fácil solo tenes que tener en cuenta la frecuencia del pwm,
y tenés que saber las especificaciones del servo.
Acá te paso un ejemplo...

Código:
//Programa principal
void main(){
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(ccp_pwm);
enable_interrupts(INT_EXT);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

long duty=0;

while(TRUE){
set_adc_channel(0); //selecciona el canal 1 del adc
delay_us(20);
duty=read_adc();
delay_us(20); 
set_pwm1_duty(duty);
}
}
En este ejemplo podés variar la parte en alto del pwm con una resistencia conectada al conversor analógico.
Para que el servo te quede a 90 grados por lo general la parte en alto del pwm debe estar en 1,5 ms.
29/06/2013 #5


Hola amspanter48
Nunca intente con LdMicro pero en ASM o C Es relativamente facil, Tomando en cuenta que la señal de control PWM es de 1ms para un extremo y 2ms para el extremo opuesto, ademas esta debe generarse cada 20ms por la frecuencia del servo 50Hz.
Para poder emplear el modulo PWM del PIC la frecuencia de oscilacion debe ser menor a 1MHz dado que la base del tiempo se obtiene del TIMER2 sin considerar el Postscaler. Por esa razon yo prefiero hacer la modulacion PWM empleando INTERRUPCION + TIMER.
La señal digitalizada del potenciometro debe adecuarse a una relacion que permita el control del tiempo de 1ms a 2ms de duracion del pulso.
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.