uControl
Abril 30, 2017, 05:28:52 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Proyecto zowi  (Leído 232 veces)
0 Usuarios y 1 Visitante están viendo este tema.
macvek
PIC10F
*
Desconectado Desconectado

Mensajes: 1


« : Febrero 11, 2017, 11:51:13 »

Hola soy nuevo en este foro, pero espero que me ayuden. Estoy haciendo un proyecto un robot zowi en este enlace tienen el tipo de robot que es: https://www.bq.com/es/zowi
Estoy usando el pic18f2550 y usando servos de 180º ahora mismo solo he hecho el chasis y conectados los servos, para progrmarlos uso el mplabx y el compilador xc8 ahora mismo tengo esto de programa:
#include <xc.h>
#pragma config PLLDIV = 5
#pragma config CPUDIV = OSC1_PLL2
#pragma config FOSC = HSPLL_HS
#pragma config LVP = OFF
#define _XTAL_FREQ 48000000

void delay_ms(unsigned int milliseconds)
{
    int i;
    for (i=0; i<milliseconds; i++)
        __delay_ms(1);
}
void servorotatepr1()
{
    int i;
   for(i=0;i<50;i++)
    {
        LATBbits.LATB4 = 1;
        delay_ms(2);
        LATBbits.LATB4 = 0;
        delay_ms(18);
    } 
     
    for(i=0;i<15;i++)
    {
        LATBbits.LATB4 = 1;
        delay_ms(1);
        LATBbits.LATB4 = 0;
        delay_ms(19);
    }
   
     
 
       
     
}
void servorotatep2 ()
{
    int i;
    for(i=0;i<10;i++)
    {
        LATBbits.LATB4 = 1;
        delay_ms(2);
        LATBbits.LATB4 = 0;
        delay_ms(18);
    } 
     
    for(i=0;i<10;i++)
    {
        LATBbits.LATB4 = 1;
        delay_ms(1);
        LATBbits.LATB4 = 0;
        delay_ms(19);
    } 
}
void servorotatep3 ()
{
    int i;
    for(i=0;i<10;i++)
    {
        LATBbits.LATB3 = 1;
        delay_ms(2);
        LATBbits.LATB3 = 0;
        delay_ms(18);
    } 
     
    for(i=0;i<5;i++)
    {
        LATBbits.LATB3 = 1;
        delay_ms(1);
        LATBbits.LATB3 = 0;
        delay_ms(19);
    } 
}

void main(void) {
   
    TRISB=0b00000000;
   
    while(1)
    {
       
        servorotatepr1();
        servorotatep2 ();
        servorotatep3 ();
    }
   
   
   
    return;
}

Tengo echo 3 funciones con distintos parametros en el for para probar los servos la cosa esq quiero usar microsegundos en vez de mili para tener mas angulos pero al poner microsegundos el servo se queda como pillado intentando hacer fuerza pero sin conseguirlo. Alguno me puede echar una mano para corregir esto, he intentado usar interrupciones con timer pero no se me da bien controlar varios servos con timer, gracias.
Un saludo.
En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.082 segundos con 25 consultas. (Pretty URLs adds 0.007s, 2q)
loggkey