Robotica, pequeño tutorial+construccion y desarrollo de minirobot

Me gustaría hacer este proyecto pero creo que me quedaría en la programación
amigo mio: yo no soy un experto en programacion pero con pic basic es muy simple :) fijate en el foro hay un tutorial.
bueno, despues de depurar un poco de soft para que el robot siga un az de luz, estoy aqui para dejarles el codigo en pbp y el hexa para cargar al pic. el codigo en pbp, esta explicado linea por linea, asi que creo que lo van a entender bien y seguramente, lo podran modificar segun sus propias ideas.
lo que hace el programa, es que el robot este parado mientras no haya luz, si la luz llega a la fotoresistencia deredha, el robot gira a la izquierda, si da en la fotoresistencia izquierda, el robot gira a la derecha. y por ultimo, si la luz da en ambas fotoresistencias, el robot va hacia la luz.
es un programita simple, como para empezar a hacer que nuestro bot se mueva. mañana subire un video para mostrar como funciona el mio.
saludos y espero les sea de utilidad.

Código:
'****************************************************************
'*  Name    : luzadicto.bas                                     *
'*  Author  : Cesar Dario Quinteros                             *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 28/03/2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
 'configuracion de fuses
@ DEVICE MCLR_OFF, INTRC_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
 
CMCON = 7                     ' desactivo el convertidor AD del puerto A
TrisA=%11111111               'todo el port A como entrada
TrisB=%00000000               'todo el port B como salida
PORTA = %11111111             'todo el port A en 1
PORTB = %00000000             'todo el port B en 0
resder var byte               'variable para guardar el valor del ldr derecho
resizq var byte               'variable para guardar el valor del ldr izquierdo
b2 var byte                   'variable de comparacion

start:                        'etiqueta star, inicia el programa
pot porta.6, 255,resder       'lee la ldr conectada en porta 6 y guarda el valor en resder
pot porta.7, 255,resizq       'lee la ldr conectada en porta 7 y guarda el valor en resizq
If resder and resizq >80 then adelante  'si resder y resizq tienen valor mayor a 80, ir a etiqueta adelante
if resder > resizq then izquierda 'si resder es mayor a resizq, ir a etiqueta izquierda 
if resizq > resder then derecha    'si resizq es mayor a resder, ir a etiqueta derecha
if resizq and resder <= 80 then pare ' si resizq y resder son menores o iguales a 80, ir a etiqueta pare 

pare:              ' etiqueta pare
PORTB = %00000000  'todo el puerto b en 0
goto start         'vuelve a start

adelante:          'etiqueta adelante
portb = %00001001                  'port B 0 y port B 3 a 1 ir adelante
goto start         'vuelve a start

izquierda:         'etiqueta izquierda
b2 = resder-resizq  'b2 es igual a resder menos resizq
if b2 > 15 then left1 'si b2 es mayor a 15 ir a left1
goto adelante   'ir a etiqueta adelante

left1:                  'etiqueta left1
portb = %00001010              'port B 1 y port B 3 a 1 giro hacia la izquierda
goto start               'vuelve a start

derecha:                 'etiqueta derecha
b2 = resizq-resder       'b2 es igual a resizq menos resder
if b2 > 15 then right1   'si b2 es mayor a 15, ir a etiqueta right1
goto adelante             'ir a etiqueta adelante

right1:                   'etiqueta right1
portb = %00000101            'port B 0 y port B 2 a nivel 1 giro a la derecha
goto start                 'vuelve a start
end                     'fin del programa
 

Adjuntos

  • luzadicto.rar
    565 bytes · Visitas: 70
Última edición:
hola gente, aca de nuevo para dejarles esta vez, unas imagenes y un rar con el esquematico del modulo sensor de luz para el robot y su pcb listo para imprimir, como asi tambien, unos videos de las pruebas que le hice al robot, en modo seguidor de luz. el modulo se puede conectar al puerto que uds quieran, siempre y cuando, hagan las modificaciones necesarias al programa. yo, en mi caso, lo conecte al conector del RA6 y RA7 de mi placa ;)
saludosss y cualquier duda la postean aqui :)

rob1.JPG

rob2.JPG

luzadicto esquematico.JPG

luzadicto pcb.JPG



 

Adjuntos

  • sigueluz.rar
    28.5 KB · Visitas: 76
Una recomendación , es que le pongas un sensor IR y le programes un decodificador RC5 para pode guiarlo con un control remoto...asi no tendrás que manejarlo en penumbra y vas a poder obtener un control mucho más fluido del robot.

Por lo demás, te felicito es un gran laburo !
 
Una recomendación , es que le pongas un sensor IR y le programes un decodificador RC5 para pode guiarlo con un control remoto...asi no tendrás que manejarlo en penumbra y vas a poder obtener un control mucho más fluido del robot.

Por lo demás, te felicito es un gran laburo !

gracias por la recomendacion pero, si te fijas en el titulo, esto es un minitutorial de robotica y esta es la primera practica. en el primer mensaje estan descritos los objetivos a los que pienzo llegar. saludosss
 
Última edición:
hola gente, aca de nuevo para dejarles esta vez, unas imagenes y un rar con el esquematico del modulo sensor de luz para el robot y su pcb listo para imprimir, como asi tambien, unos videos de las pruebas que le hice al robot, en modo seguidor de luz. el modulo se puede conectar al puerto que uds quieran, siempre y cuando, hagan las modificaciones necesarias al programa. yo, en mi caso, lo conecte al conector del RA6 y RA7 de mi placa ;)
saludosss y cualquier duda la postean aqui :)

Ver el archivo adjunto 50912

Ver el archivo adjunto 50913

Ver el archivo adjunto 50906

Ver el archivo adjunto 50907

http://www.youtube.com/watch?v=UxrFcaDWAF4

http://www.youtube.com/watch?v=fQd_xooi4IU

http://www.youtube.com/watch?v=NugmDedSOrs
d@rio usted si que es un buen maestro.... lo felicito
 
gracias amigo :)
en estos dias subo otro programa para hacer que el robot evada obstaculos y a la vez, busque un lugar oscuro para "esconderse".
saludosss
 
:D hola gente, yo por aqui de nuevo.
bueno, despues de corregir todos los errores y diseñar nuevamente la placa del puente H, estoy aqui para dejarles el nuevo RAR con los archivos corregidos y un par de nuevas imagenes...
me habia equivocado en la configuracion darlington de los transistores PNP del puente H y me habia dejado un par de pistas sin conectar en la parte de la placa I.D.C (Interface Didactico de Control) y tambien algun que otro detalle. le pido a cachito o fogo, o el que este, si pueden borrar el rar del primer post y las imagenes de los circuitos de la interface junto con los pcbs , asi evitamos metidas de pata de lectores apresurados :LOL:
bueno, aca les dejo las imagenes. ah, en el rar hay un archivo hex de prueba para cargar en el pic, este hace un testeo de los motores del robot. se puede cargar con este programador JDM se usa con el icprog les dejo el codigo pbp.
saludosss

Código:
 @ DEVICE MCLR_OFF, INTRC_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
 
CMCON = 7
TrisA=%11111111
TrisB=%00000000
PORTA = %11111111
PORTB = %00000000

test1:
portb = %00000000
pause 5000
portb = %00001001
pause 5000
portb = %00000110
pause 5000
portb = %00001010
pause 5000
portb = %00000101
 pause 5000
goto test1
end
Ver el archivo adjunto 50579

Ver el archivo adjunto 50580

Ver el archivo adjunto 50581

Ver el archivo adjunto 50582

Ver el archivo adjunto 50584

Ver el archivo adjunto 50586

Ver el archivo adjunto 50585

Ver el archivo adjunto 50583

amigo me podria hacer otro avor de mandarme el diseño del programador JDMen el pcb (y)
 
hola diodito. te pido disculpas avos y a los que estan esperando mas avances en este tutorial pero, estos dias he estado muy atareado y no le he podido dedicar nada de tiempo al tema.
si te referis al diodo que se ve debajo en la placa, es un diodo que le agregue para que el integrado 40106 no consuma el vpp del programador y no provoque errores al programar onboard. al final, sin ese diodo, funciona igual, asi que no es imprescindible.
en estos dias subo mas info. saludos a todos :)
 
:apreton: Que tal Dario me pearecio un exelente aporte para los que nos gusta la electronica en movimiento jejeje.

He visto tus aportes y me parecen geniales ademas de muy bien datallados los pasos que sigues.

:unsure:Este mismo robot podria ser multiusos se le puede agregar una plaquita para hacerlo seguilineas y tambien detector de obstaculos, lo unico que cambiaria seria la programacion en PBP.

saludos y felicidades.(y)
 
hola diodito. te pido disculpas avos y a los que estan esperando mas avances en este tutorial pero, estos dias he estado muy atareado y no le he podido dedicar nada de tiempo al tema.
si te referis al diodo que se ve debajo en la placa, es un diodo que le agregue para que el integrado 40106 no consuma el vpp del programador y no provoque errores al programar onboard. al final, sin ese diodo, funciona igual, asi que no es imprescindible.
en estos dias subo mas info. saludos a todos :)

gran amigo espero con satisfecho terminar mi primera practica....con `pic

a demas me serviria para un proyecto que tengo que precentar
saludos(y)
 
hola gente del foro.
muchas gracias a todos por sus comentarios :)
despues de varios dias sin subir info, aca estoy de nuevo para dejarles un ejemplito
de deteccion de obstaculos y seguimiento de objetos mediante infrarrojos.
el siguiente paso despues del buscador de luz, era la deteccion de obstaculos mediante bumpers
de vigote, pero les confieso que el bumper infrarrojos, me parecio mejor, ya que es practicamente
lo mismo, solo varia el sensor y algunas lineas de codigo. mas adelante subire un ejemplo de ese
tipo de deteccion.
les cuento que este ejemplito me ha costado casi 3 semanas jeje :). primero intente generar
38khz con el pic, pero como este esta usando su oscilador interno, no funciono. despues
hice un oscilador con un 555 y ahi recien obtuve resultados mas o menos aceptables pero,
al parecer habia ruido en el circuito. esto lo solucione, colocando un capacitor de 47uf
en la alimentacion del 555.
finalmente, despues de renegar un poco, he logrado hacer funcionar el bendito bumper infrarrojo
y asi he podido hacer unos programitas de prueba que aqui comparto con uds.
ah, tambien les dejo un nuevo rar con el trabajo completo, 2 videos y unas imagenes.
espero les sea de utilidad, saludosss

bumpers
Código:
'configuracion de fuses
@ DEVICE MCLR_OFF, INTRC_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
 
CMCON = 7                     ' desactivo el convertidor AD del puerto A
TrisA=%11111111               'todo el port A como entrada
TrisB=%00000000               'todo el port B como salida
PORTA = %11111100             'todo el port A en 1
PORTB = %00000000             'todo el port B en 0
ojoizq var bit
ojoder var bit
 inicio:
 portb = %00010000            'oscilador encendido motores apagados
 ojoder = porta.0             'ojoder toma el valor de porta.0
 ojoizq = porta.1             'ojoizq toma el valor de porta.1
 IF ojoizq = 1 THEN der   'si la variable ojoizq es = a 1 gira a la izquierda
 if ojoder = 1 then izq   'si la variable ojoder es = a 1 gira a la derecha
 goto inicio
 
der:
PORTB = %00011010         'giro a la derecha y mantengo el 555 encendido
ojoder = porta.0          'ojoder toma el valor de porta.0
IF ojoder = 0 THEN inicio 'si la variable ojoder es = a 0 vuelve a inicio
 goto der                 ' ir a der
 
izq:
PORTB = %00010101         'giro a la izquierda y mantengo el 555 encendido
ojoizq = porta.1          'ojoizq toma el valor de porta.1
IF ojoizq = 0 THEN inicio 'si la variable ojoder es = a 0 vuelve a inicio
goto izq                  'ir a izq

sigue objetos
Código:
'configuracion de fuses
@ DEVICE MCLR_OFF, INTRC_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
 
CMCON = 7                     ' desactivo el convertidor AD del puerto A
TrisA=%11111111               'todo el port A como entrada
TrisB=%00000000               'todo el port B como salida
PORTA = %11111100             'todo el port A en 1
PORTB = %00000000             'todo el port B en 0
ojoder var bit                'variable para guardar el valor de porta.0
ojoizq var bit                'variable para guardar el valor de porta.1
pause 5000                    'espero 5 segundos para empezar
 inicio:
 portb = %00010000            'oscilador encendido motores apagados
 ojoder = porta.0             'ojoder toma el valor de porta.0
 ojoizq = porta.1             'ojoizq toma el valor de porta.1
 IF ojoizq = 1 THEN izq   'si la variable ojoizq es = a 1 gira a la izquierda
 if ojoder = 1 then der   'si la variable ojoder es = a 1 gira a la derecha
 goto inicio
 
der:
PORTB = %00011010         'giro a la derecha y mantengo el 555 encendido
pause 500                 'espero 500 ms antes de detectar
ojoder = porta.0          'ojoder toma el valor de porta.0
IF ojoder = 0 THEN inicio 'si la variable ojoder es = a 0 vuelve a inicio
 goto der                 ' ir a der
 
izq:
PORTB = %00010101         'giro a la izquierda y mantengo el 555 encendido
pause 500                 'espero 500 ms antes de detectar
ojoizq = porta.1          'ojoizq toma el valor de porta.1
IF ojoizq = 0 THEN inicio 'si la variable ojoder es = a 0 vuelve a inicio
goto izq                  'ir a izq


infra1.JPG

infra2.JPG

Oscilador 38khz.JPG


 

Adjuntos

  • infrarrojo.rar
    182.7 KB · Visitas: 87
Última edición:
amigo ya que eres experto en programacion necesito ayuda para programar un teclado hexadecimal pero lo quiero manejar con el puerto b y las dos primeras del puerto b ya que la profesora quiere que le coloque un display 7 segmento en el puerto C del pic, y en el puerto D conectar 4 leds en los bits menos significativos. apenas me inicializo en esto es apenas mi primera practica lo veo muy complejo, ya que es apenas la primera practica y ni eh visto clase teorica estado leyendo tutorial de proton y proteus, El micro q uso es el PIC 16f877 y lo estoy programando en lenguaje basic. quientenga algo parecido o por lo menos ideas del teclado 4x4, por favor necesito ayuda de como lograrlo, luego voy por tu robot me parece imprecionante lo que logras.
 
Dario (coterraneo je)

Probablemente vos ya lo sepas pero queria dejar constancia aqui de una sugerencia. Para miniaturizar el robot, en vez de las placas de puente H se podrian usar los integrados L293 que no son muy caros y en un solo integrado tendrias los dos puentes H.
 
Dario (coterraneo je)

Probablemente vos ya lo sepas pero queria dejar constancia aqui de una sugerencia. Para miniaturizar el robot, en vez de las placas de puente H se podrian usar los integrados L293 que no son muy caros y en un solo integrado tendrias los dos puentes H.

asi es amigo seaarg, el l293 es mejor solucion y te da un monton de ventajas pero, me gusto mas hacer los puentes con transistores. siempre quise hacer un robot cuyos puentes H sean transistorizados :D de paso los novatillos, aprenden a usarlos y a no olvidarse de lo importante que puede llegar a ser un transistor jeje...
si te fijas en mi hexapodo, he usado un tda7073 para los motores... es mas, podria haber utilizado un pic12f675 como cpu y 2 transistores para controlar los motores y asi obtener un microbot reprogramable. en fin...
saludosss y gracias por la sugerencia. :)
 
bueno, no estoy seguro de a que te referis amigo diodito, pero en estos dias estare subiendo mas ejemplos de practicas con el bumper infrarrojo.
saludosss
 
Atrás
Arriba