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

Temas similares

12/11/2014 #1


Modulación ángulos servomotor con voltimetro
Hola. Necesito ayuda con una modulación de ángulos de un servomotor.
El código que estoy haciendo es este.
Código:
#include <16f887.h>
#fuses XT,NOWDT
#use delay( clock = 4000000 )  
#BYTE TRISB = 0x86            
#BYTE PORTB = 0x06            

int16 Angulo;
int16 TON;
int16 TOFF;

void main()
{    
set_tris_b(0x00);    
set_tris_a(0x1F); 

   
while (TRUE) {

set_adc_channel(0);
delay_us(20);
Angulo=read_adc();
Angulo=Angulo*180/1023;
TON=1000+(Angulo*1000/180);
TOFF=20000-TON;


output_high(PIN_B0);
delay_us (TON);  
output_low(PIN_B0);
delay_us(TOFF);
 



   }
 }

Al montar el voltímetro en el channel(0) en la simulación del proteus, el motor no marca nada.
¿Podrían ayudarme con algunas sugerencias?

Muchas gracias de antemano.
13/11/2014 #2
Moderador

Avatar de D@rkbytes

Te hace falta configurar el conversor ADC.

Agrega esto dentro del void main.
setup_adc_ports(sAN0);
setup_adc(ADC_CLOCK_INTERNAL);

Y si únicamente vas a utilizar el canal 0, también puedes establecer el canal dentro del void main, pues no tiene sentido estar estableciendo constantemente el canal dentro del bucle.

Suerte.
13/11/2014 #3


Muchas gracias por responder , aplique los cambios que me indicaste , y la salida del RB0 me entrega un constante angulo 90 aunque varíe el potencio-metro , aquí esta la simulación y el código, si podrías indicarme cuales son mis errores estaría muy agradecido
Archivos Adjuntos
Tipo de Archivo: rar Motor.rar (45,0 KB (Kilobytes), 10 visitas)
15/11/2014 #4


Disculpa, No has puesto la simulación en el archivo adjunto y el codigo es distinto.
15/11/2014 #5


acabo de revisar el archivo adjunto que subí , el código es igual con los cambios que me indico darkbites , y la simulación esta en proteus 8 , quizás tienes una versión anterior , el nombre de la simulación es motor.pdsprj
15/11/2014 #6
Moderador

Avatar de D@rkbytes

mivg dijo: Ver Mensaje
Muchas gracias por responder. Apliqué los cambios que me indicaste y la salida del RB0 me entrega un constante angulo 90 aunque varíe el potenciómetro
Aquí está la simulación y el código.
Si podrías indicarme cuales son mis errores, estaría muy agradecido.
Lo que pasa es que lo único que debiste poner fuera del bucle es la selección del canal.
Así:
Código:
void main()
{ 
   setup_adc_ports(sAN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);
   delay_us(20);
   
   
while (TRUE) {   
   Angulo=read_adc();
   Angulo = Angulo * 180/1023;
   TON=1000+(Angulo*1000/180);
   TOFF=20000-TON;
   
   output_high(PIN_B0);
   delay_us (TON);  
   output_low(PIN_B0);
   delay_us(TOFF);
   }
 }
Tampoco son necesarios los set_tris_x(); porque estás usando output_high(); y output_low();
Esas instrucciones configuran los pines seleccionados automáticamente como salidas.
ricber dijo: Ver Mensaje
Disculpa, No has puesto la simulación en el archivo adjunto y el código es distinto.
mivg sí adjuntó la simulación, pero es para proteus 8, y el código es el mismo pero modificado.

Saludos.
15/11/2014 #7


OK, tengo proteus 7
suerte
15/11/2014 #8


escribí el código con los correcciones nuevas darkbytes , pero , sigue marcándome 90 el servomotor aunque suba o baje el nivel de voltaje , ¿es un problema de la simulacion?

---------- Actualizado después de 2 minutos ----------

no le había puesto los 4MHZ en processor clock frequency , ya solucione el problema , era un error como novato que soy xD , muchas gracias por tu ayuda darkbytes
15/11/2014 #9
Moderador

Avatar de D@rkbytes

mivg dijo: Ver Mensaje
escribí el código con los correcciones nuevas darkbytes , pero , sigue marcándome 90 el servomotor aunque suba o baje el nivel de voltaje , ¿es un problema de la simulacion?
No lo sé, tampoco tengo un servomotor para realizar pruebas, pero adjunto el proyecto con los cambios que te mencioné.
Compara si este funciona o hace lo mismo que el tuyo.

Edit:
Solucionaste el problema mientras preparaba los archivos.
mivg dijo: Ver Mensaje
---------- Actualizado después de 2 minutos ----------
no le había puesto los 4MHZ en processor clock frequency , ya solucione el problema , era un error como novato que soy xD , muchas gracias por tu ayuda D@rkbytes
Me parece bien.

Suerte.
Archivos Adjuntos
Tipo de Archivo: rar Motor.rar (26,2 KB (Kilobytes), 7 visitas)
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.