Colapsar columna

Menu Usuario -

Hola, Visitante
avatar


Mas Activos -

nocturno
Mensajes: 1969
Meta
Mensajes: 276
djfreeman
Mensajes: 272
spiderman
Mensajes: 257
HJ.0x00
Mensajes: 213

Autor Tema: Robot dibujante  (Leído 341 veces)

Desconectado Samus

  • Nuevo fichaje
  • *
  • Mensajes: 2
Robot dibujante
« en: Marzo 10, 2018, 03:04 »
Hola a todos, soy nuevo miembro de esta comunidad y tengo algunas dudas sobre programacion en pic. Soy estudiante universitario y estoy empezando a ver microcontroladores, ya he adquirido algunos conocimientos sobre programacion, pero solo lo basico.

El problema que tengo ahora es que unos compañeros y yo hemos decidido alocarnos un poco y presentar como proyecto final y robot dibujante... Ahora mismo nos estamos rompiendo la cabeza tratando de averiguar como podriamos programarlo para que haga su funcion.

Por el momento solo sabemos como funionan los motores paso a paso y el servo que vamos a usar.

Esta es una pequña programacion de prueba que hice para verificar el movimiento de los motores...

Código: [Seleccionar]
#include <16f877a.h>
#fuses hs, nowdt
#use delay(clock = 20M)

#define a0  pin_a0
#define a1  pin_a1
#define a2  pin_a2

long pulso = 0;
int servo = 100;     // 100 abajo, 75 arriba.
int temp = 40;
int i = 0;
/*
paso 1: 1010      10
paso 2: 1001      9
paso 3: 0101      5
paso 4: 0110      6
*/
byte const hor[4] = {10,9,5,6};              // pasos del motor en sentido horario
byte const ant[4] = {6,5,9,10};              // pasos del motos en sentido antihorario

#int_timer0
void timer0()
{
pulso++;
if (pulso == 1000)   { pulso = 0; }             // resetea los pulsos
if (pulso == 0)      { output_high(pin_c0); }   // flanco ascendente de 1 a 2ms
if (pulso == servo)  { output_low(pin_c0); }    // flanco descendente de 18 a 19ms
set_timer0(208);
}

void main()
{
set_tris_a(7);       // tres botones en el puerto a
set_tris_b(0);       // motor paso a paso 1
set_tris_c(0);       // servo
set_tris_d(0);       // motor paso a paso 2

setup_timer_0(rtcc_internal|rtcc_div_1);  // timer 0 como temporizador
set_timer0(208);                          // timer 0 a 10us
enable_interrupts(int_timer0);            //
enable_interrupts(global);

while (1)
{
   if (input(a2) == 1)  { servo = 75; }      // boton en el pin a2 = 1 pociciona a 0° el servo
   else                 { servo = 100; }     // boton en el pin a2 = 0 pocisiona a +90° el servo
   
   if (input(a0) == 1)           // si el boton en el pin a0 es presionado
   {                             // empieza a realizar el giro de los motores en sentido horario
      if (i<4)
      {
         output_b(hor[i]);
         output_d(hor[i]);
         delay_ms(temp);
         i++;
      }
      else {i=0;}                // si el boton en el pin a0 esta suelto
   }                             // el motor se detiene
   if (input(a1) == 1)
   {
      if (i<4)                   // si el boton en el pin a1 es presionado
      {                          // empieza a realizar el giro de los motores en sentido antihorario
         output_b(ant[i]);
         output_d(ant[i]);
         delay_ms(temp);
         i++;
      }
      else {i=0;}                // si el boton en el pin a1 esta suelto
   }                             // el motor se detiene
}
}



Agradeceria que me ayudaran a encontrar una forma de realizar un codigo para este robot...
« última modificación: Marzo 10, 2018, 03:08 por Samus »

Desconectado nocturno

  • Administrator
  • MicroPIC Gurú
  • *****
  • Mensajes: 1969
    • MicroPIC
Re:Robot dibujante
« Respuesta #1 en: Marzo 10, 2018, 12:28 »
Hola Samus, bienvenido.

Me alegro mucho de que os hayáis planteado un reto tan interesante. ¿Exactamente qué funciones hará el robot?, ¿cómo tenéis pensado plantearlo?
Un saludo desde Sevilla, España

Desconectado Samus

  • Nuevo fichaje
  • *
  • Mensajes: 2
Re:Robot dibujante
« Respuesta #2 en: Marzo 10, 2018, 18:59 »
Saludos de vuelta desde México.

Bueno, al principio teniamos planeado usar un sistema de vision para reconocer una imagen y que el robot la copie, pero decidimos que es demasiado para nosotros... Asi que, al final, decidimos simplemente disañar una aplicacion en C# o en LabView que tenga unas imagenes preestablecidas y que el robot las replique segun lo decida el usuario.

El robot cuenta con dos motores paso a paso para que moverse en los ejes X y Y respectivamente y un servo para el eje Z. El eje Z solo servira para levantar y bajar el lapiz.

Muchas gracias por mostrar interes en esta publicacion.

Desconectado nocturno

  • Administrator
  • MicroPIC Gurú
  • *****
  • Mensajes: 1969
    • MicroPIC
Re:Robot dibujante
« Respuesta #3 en: Marzo 11, 2018, 07:23 »
Entiendo entonces que el robot será un plotter.

Bien, aún hay que tomar muchas decisiones para seguir avanzando, pero un posible planteamiento podría ser:
- ¿dónde se van a almacenar las imágenes?. Una opción muy cómoda puede ser una tarjeta SD, que podrías escribir desde un PC.
- ¿en qué formato se van a guardar?, entiendo que lo ideal es no inventar la rueda y utilizar algo que ya exista. Echa un vistazo al formato GCODE
- ¿qué interface de usuario tendrá el robot?. De alguna manera, el robot tendrá que ofrecer al usuario un menú de opciones, y el usuario podrá interactuar con el menú para elegir el dibujo. ¿Qué habéis pensado?, se puede poner una pantalla lcd con pulsadores, o hacer por ejemplo un interface bluetooth con un teléfono móvil

Seguimos avanzando
« última modificación: Marzo 11, 2018, 07:26 por nocturno »
Un saludo desde Sevilla, España


 

login