Autor Tema: carro que no se choca pic18f4550  (Leído 5355 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado andres9415

  • PIC10
  • *
  • Mensajes: 5
carro que no se choca pic18f4550
« en: 08 de Abril de 2013, 13:40:58 »
hola que tal en la universidad de proyecto final me pusieron hacer un carro que no se choque con algún obstáculo y ademas de que siga hacia adelante pues la verdad a penas estoy empezando a programar en pic c (aprendí a manejar un lcd) basicamente el carro constar en un srf05 o que me podrían aconsejar
OJO NO PIDO QUE ME LO HAGAN solo pido que me den unos consejos de como comenzar  ademas
ademas me pueden decir que librería utilizo para manejar un dispositivo de medición como srf05 (para pic c)
o cualquier consejo gracias

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: carro que no se choca pic18f4550
« Respuesta #1 en: 08 de Abril de 2013, 15:11:18 »
Hola Andres!
No se que compilador es el pic C, creo q es el CCS. Si queres sacar andando rapido el proyecto, es una buena eleccion. Sin embargo lo ideal es aprender a usar los compiladores de microchip (c18, xc18).
En ambos casos, tenes que escribir vos el codigo para hacer la lectura del sensor (no hay librerias prehechas como en arduino).
Para hacer una lectura, tenes q enviar un pulso de un ancho determinado al sensor, y luego medir el ancho de un pulso que te devuelve. Lo que te recomiendo, es que utilices una interrupcion por cambio de estado de un pin (puerto B), en combinacion con un timer. Lee bien la hoja de datos del sensor.
Ahora estoy un poco ocupado, pero mas tarde te puedo poner algo de codigo que tengo.

Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: carro que no se choca pic18f4550
« Respuesta #2 en: 08 de Abril de 2013, 16:09:26 »
Te aconsejo que estudies un poco el tema y que luego intentes definir exactamente con tu tutor qué es exactamente lo que vas a hacer.

Eso es para asegurarte de que el proyecto es suficientemente complicado como para que te lo acepten como proyecto final y para asegurarte de que no va a complicarse luego con modificaciones sin fin.

Saludos.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: carro que no se choca pic18f4550
« Respuesta #3 en: 08 de Abril de 2013, 16:17:38 »


Para detectar objetos a distancias cortas (15-50cm), se suelen usar más los sensores de infrarrojos, los sensores de ultrasonidos son más para distancias mayores, de varios metros, aunque también se ven micro-robots que los emplean.



Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: carro que no se choca pic18f4550
« Respuesta #4 en: 08 de Abril de 2013, 17:15:21 »
¿Que tipo de obstáculos debe detectar?  ¿Patas de sillas o mesas, paredes, escalones, alfombras, etc...?

¿A qué distancia debe detectarlos?

¿Qué debe hacer el carro ante un obstáculo? ¿Cambiar de dirección, intentar sortearlo, memorizar las posiciones de los límites del habitáculo, etc...?

¿Qué velocidad va a tener el carro?

¿Cómo se va a realizar el cambio de dirección? ¿Ruedas delanteras giratorias, con dos ruedas motrices paralelas y una rueda loca, con dos orugas, etc...?

Lo dicho, lo mejor es que comiences por definir qué es lo que quieres hacer.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: carro que no se choca pic18f4550
« Respuesta #5 en: 08 de Abril de 2013, 17:18:38 »
Este coche hace lo que tu quieres y tiene una dificultad cien veces menor que lo que se requiere para un proyecto fin de carrera:

http://roble.pntic.mec.es/~jsaa0039/cucabot/pegatortas-intro.html



Esquema eléctrico:



Saludos

Desconectado andres9415

  • PIC10
  • *
  • Mensajes: 5
Re: carro que no se choca pic18f4550
« Respuesta #6 en: 08 de Abril de 2013, 19:42:54 »
primero que todo agradesco a todos sus respuestas

1.aclaro que el proyecto no es de final de carrera, es para el final de una materia que estamos aprendiendo a programar los microcontroladores

2.  mi culpa el compilador no se llama pic c (asi le digo perdon) es pcw

intentare explicar las características del proyecto un poco mejor
el carro debe ser un robot el cual siga en linea recta que al encontrarse con un obstáculo pueda ser madera o incluso un pie humano (como un ejemplo) este no debe chocarse con el obstáculo antes de golpearse debe decidir ir en otra direccion y luego seguir en linea recta (la distancia que debe detectarlo tiene que ser la sufiiciente para que no lo golpee talves unos 15 cm) la velocidad del carro no debe ser muy alta (la verdad no hay un parametro) para el cambio de direccion me aconsejaron utilizar servomoteores aunque si me aconsejan otros son bienvenidos.

por si acaso el srf05 no es obligatorio tambien puden ser infrarrojos lo unico es que tiene que ser con u n pic (18f4550)

yo les pregunto a ustedes que tienen mas experiencias con esto y mi principal duda es exactamente como comienzo a programarlo  o como puedo comenzar

gracias de antemano y cualquier duda responder

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: carro que no se choca pic18f4550
« Respuesta #7 en: 08 de Abril de 2013, 20:23:50 »
Bueno, como lo prometi, aca te pongo la porcion de codigo para leer la distancia del srf05. Justamente esta compilado en CCS (pcw) para un pic18f4550. Como te comenté, lo que hago es utilizar la interrupción por cambio de estado de un pin en conjunto con el timer3.

Código: C
  1. #define TRIG1 PIN_B3
  2. #define ECHO1 PIN_B5
  3. #define TRIG2 PIN_B2
  4. #define ECHO2 PIN_B4
  5. #define ULTRASONIC_START() output_high(TRIG1);delay_us(15);output_low(TRIG1)
  6.  
  7.  
  8. void rb_isr(){
  9.    echo1_act = input(ECHO1);
  10.    
  11.    if(echo1_act && !echo1_last)
  12.       set_timer3(0);
  13.    else if(!echo1_act && echo1_last){
  14.       time1 = get_timer3();
  15.       echo1_ready=1;
  16.    }
  17.    
  18.    echo1_last = echo1_act;
  19. }
  20.  
  21. void init(){
  22.    // Digital IO
  23.    set_tris_a(0b111111);   //Y_RATE,RA4,Vref+,Z_ACC,Y_ACC,X_ACC
  24.    set_tris_b(0b11110011); //PGD,PGC,ECHO1,ECHO2,TRIG1,TRIG2,RB1,RB0
  25.    set_tris_c(0b11111111); //RC7,RC6,D+,D-,VUSB,PWM1,PWM2,RC0
  26.    set_tris_d(0b11000000); //RD7,SWITCH,LED_R,LED_G,1A,2A,3A,4A
  27.    set_tris_e(0b111);      //RE2,RE1,X_RATE
  28.    port_b_pullups(TRUE);
  29.    
  30.    // Timer3
  31.    setup_timer_3 ( T3_INTERNAL | T3_DIV_BY_8 );
  32.    
  33.    // Interrupts
  34.    disable_interrupts(INT_RB);
  35.    enable_interrupts(GLOBAL);
  36. }
  37.  
  38. void main(){
  39.    init();
  40.    set_motors(0,0);
  41.    output_low(TRIG1);
  42.    
  43.     enable_interrupts(INT_RB);
  44.     enable_interrupts(INT_TIMER1);
  45.     ULTRASONIC_START();
  46.      
  47.     while(TRUE){  
  48.           if(echo1_ready){
  49.              echo1_ready=0;
  50.              dist1=(float)time1*0.011494252;
  51.              ULTRASONIC_START();
  52.           }
  53.        }
  54.        
  55.        if(!(dist1>4 && dist1<10))
  56.           set_motors(0,0);
  57.        else
  58.           set_motors(FORWARD_GAIN*pitch + STEERING_GAIN*roll, FORWARD_GAIN*pitch - STEERING_GAIN*roll);
  59.     }
  60. }

Lo simplifique lo mas que pude asi se entiende bien. Espero que te sirva. Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: carro que no se choca pic18f4550
« Respuesta #8 en: 08 de Abril de 2013, 20:33:29 »
me aconsejaron utilizar servomoteores aunque si me aconsejan otros son bienvenidos.


Los servos de modelismo son una buena opción, pero los tendrás que modificar para que giren sin fin. Otra opción son los motores PAP, que puedes sacar de impresoras viejas.





Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: carro que no se choca pic18f4550
« Respuesta #9 en: 09 de Abril de 2013, 14:40:07 »
Te aconsejo utilizar dos motores con reductora y una rueda loca.

Algo parecido a esto:
http://roble.pntic.mec.es/~jsaa0039/cucabot/pu-montaje.html

O a esto:


Las reductoras puedes moverlas con cualquier tensión entre 3 y 5 voltios (la misma que el pic).

Si las dos reductoras funcionan a la vez, el carro avanza. Si sólo funciona la reductora derecha, el carro gira a la izquierda y viceversa.

Para dar corriente a cada reductora puedes utilizar un simple transistor BD435 o un BD675 y un diodo de libre circulación para proteger al transistor.

El segundo transistor es un dárlington. Tiene mayor ganancia de corriente a cambio de una caída de tensión colector-emisor mayor. Yo elegiría el primero, pero es cuestión de gustos.


Saludos.

Desconectado andres9415

  • PIC10
  • *
  • Mensajes: 5
Re: carro que no se choca pic18f4550
« Respuesta #10 en: 17 de Abril de 2013, 19:04:06 »
primero quiero pedirle una muy sentida disculpa a los que respondieron en el foro lastimosamente se me presentaron problemas personales y no pude estar muy atento al proyecto pero ya pude superarlos.
primero a @GERA agradecerle por el codigo aunque me gustaria entenderlo un poquito mas aci que si no es mucha molestia (la verdad no entiendo mucho lo de la programcion del srf05)
1. if(echo1_act && !echo1_last) basicamente _act y _last que vendrian siendo??'
2. yo estaba acostumbrado a set_tris_a(0x00) porejemplo pero nunca habia vistoo set_tris_a(0b111111); si pudiera explicarlo me ayudaria mucho
y la veradad toda la ayuda posible sobre como funciona me serviria gracias
ahora a @picuino la verdad que esa idea me ha servido mucho asi que muchas gracias

DE NUEVO DISCULPAS POR NO RESPONDER A TIEMPO