fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Panchito: Robot bípedo con PIC16F84A

21 Respuestas
8 Usuarios
0 Reactions
9,750 Visitas
fulguitron
Respuestas: 50
Topic starter
(@fulguitron)
Trusted Member
Registrado: hace 16 años

Después de muchos problemas y frustaciones he conseguido que Panchito de sus primeros pasos, aquí os dejo un video para ver mi creación, que todavía esta en sus inicios pero que poco a poco iremos mejorando.

http://www.youtube.com/watch?v=nmLD8M1SleE " onclick="window.open(this.href);return false;

Pero como vereis tiene un problema de Parkinson, tiembla un montón y no se porque.Os dejo el programa que he hecho a ver si alguien me ayuda a mejorarlo para quitarle esos temblores.

;*****************PROGRAMA PANCHITO V2***********
; FECHA: 01/05/10
; PIC: 16F84A 4Mhz
; SERVOS: Futaba S3003
;
***************************************************

LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

cblock 0x0c
contA
contB
contC

ENDC

ORG 0 ; El programa comienza en la dirección 0.
Inicio
bsf STATUS,RP0 ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
clrf TRISB ; Las líneas del Puerto B configuradas como salidas.
movlw b'00011111' ; Las 5 líneas del Puerto A configuradas como entradas.
movwf TRISA
bcf STATUS,RP0
movlw d'15'
movwf contA
movwf contB
movwf contC

Movimiento_1
bsf PORTB,1 ; Activa el PORTB1
call Retardo_500micros ; la suma de los call genera el tiempo
call Retardo_200micros ; en alto para un ángulo de 60º
call Retardo_200micros
bcf PORTB,1 ; Desactiva el PORTB1
call Retardo_20ms ; el PORTB1 está en bajo durante 20ms.
bsf PORTB,0 ; Activa el PORTB0
call Retardo_1ms ; la suma de los call genera el tiempo
call Retardo_200micros ; en alto para un ángulo de 120º
call Retardo_200micros
call Retardo_100micros
bcf PORTB,0
call Retardo_20ms
bsf PORTB,2
call Retardo_1ms ; 120º
call Retardo_200micros
call Retardo_200micros
call Retardo_100micros
bcf PORTB,2
call Retardo_20ms
decfsz contA ; Cuenta a contA y sigue en la línea de abajo
goto Movimiento_1 ; Cuando contA sea = 0 omite la línea siguiente.
clrf contA
Movimiento_2
bsf PORTB,1
call Retardo_1ms ; 90º
call Retardo_200micros
bcf PORTB,1
call Retardo_20ms
bsf PORTB,3
call Retardo_1ms ; 120º
call Retardo_100micros
call Retardo_200micros
call Retardo_200micros
bcf PORTB,3
call Retardo_20ms
bsf PORTB,2
call Retardo_500micros ; 60º
call Retardo_200micros
call Retardo_200micros
bcf PORTB,2
call Retardo_20ms
bsf PORTB,0
call Retardo_500micros ; 60º
call Retardo_200micros
call Retardo_200micros
bcf PORTB,0
call Retardo_20ms
decfsz contB
goto Movimiento_2
clrf contB
Movimiento_3
bsf PORTB,3
call Retardo_1ms ; 90º
call Retardo_200micros
bcf PORTB,3
call Retardo_20ms
decfsz contC
goto Movimiento_3
clrf contC
goto Inicio

INCLUDE<LIBSERVOS.INC>
END

Y esta es la librería, LIBSERVOS.INC

;*************LIBRERIA DE TIEMPOS*************
;* PARA CALCULAR EL TIEMPO EN ALTO
;* DE UN ÁNGULO CON LOS SERVOS
;* FUTABA S3003 HAY QUE USAR ESTA FÓRMULA
;*
;* T=0,3+(angulo deseado)/100
;*
;******************************************************

CBLOCK
R_ContA
R_ContB
R_ContC
ENDC

Retardo_1ms
movlw d'1'
goto Retardo_ms

Retardo_20ms
movlw d'20'
goto Retardo_ms

Retardo_2ms
movlw d'2'
goto Retardo_ms

Retardo_900micros
nop
movlw d'296'
goto RetardoMicros

Retardo_800micros
nop
nop
movlw d'262'
goto RetardoMicros

Retardo_700micros
nop
nop
movlw d'229'
goto RetardoMicros

Retardo_600micros
nop
movlw d'196'
goto RetardoMicros

Retardo_500micros
nop
movlw d'164'
goto RetardoMicros

Retardo_400micros
nop
nop
movlw d'129'
goto RetardoMicros

Retardo_300micros
nop
nop
movlw d'96'
goto RetardoMicros

Retardo_200micros
nop
movlw d'64'
goto RetardoMicros

Retardo_100micros
movlw d'31'
goto RetardoMicros

Retardo_50micros
nop
movlw d'14'
goto RetardoMicros

Retardo_20micros
movlw d'5'
goto RetardoMicros

RetardoMicros
movwf R_ContA
Rmicros_Bucle
decfsz R_ContA,F
goto Rmicros_Bucle
return

Retardo_ms
movwf R_ContB
R1ms_BucleExterno
movlw d'249'
movwf R_ContA
R1ms_BucleInterno
nop
decfsz R_ContA,F
goto R1ms_BucleInterno
decfsz R_ContB,F
goto R1ms_BucleExterno
return

Por último me gustaría ponerle unos sensores en los pies que detecten la ausencia de suelo para que no caiga de una mesa por ejemplo, alguna sugerencia??? por supesto alguno sencillito, como veis estoy empezando. A ver si entre todos me hechais una mano a ver hasta donde llego en el esto de hacer Robots.

Muchas gracias, un saludo.

Responder
20 respuestas
fulguitron
Respuestas: 50
Topic starter
(@fulguitron)
Trusted Member
Registrado: hace 16 años

Buenas noches, al final me he comprado un led infrarrojos emisor y otro receptor, porque los TCRT5000 no los he podido encontrar. Lo he conectado igual que un CNY70 y lo paso por un 74ls14, pero a pesar de que he probado varias combinaciones de resistencias no consigo que la entrada del 74LS14 sea mayor de un voltio, por lo que al pasarlo a digital se queda en cero,¿como puedo darle más voltaje????

Unsaludo.

Responder
furri
Respuestas: 2708
(@furri)
Ardero
Registrado: hace 20 años

Lo primero que yo haria es verificar que el receptor es de verdad un receptor y no un emisor.... te lo digo por que a mi me los han vendido cambiados en una ocasión y hasta que lo descubrí habia perdido dos tardes enteras.

La forma de averiguarlo es con una webcam o la camara del movil, 5V, resistencia de 220, si el led se ilumina de forma ténue incluso enfocandolo de frente... es un receptor.

tecnicas para aumentar la lectura, meter un operacional en el receptor o aumentar la intensidad del emisor aumentando voltaje y usando PWM para no quemarlo, esto lo usé para controlar desde el PC a MiniTarribot y la señal IR alcanzaba mas de 5 metros....

Saludos.
furri.

Responder
fulguitron
Respuestas: 50
Topic starter
(@fulguitron)
Trusted Member
Registrado: hace 16 años

Hola Furri, primeramente felicitarte por Tarribot, no solo por el robot sino por el excelente tutorial que en su día te curraste, gracias a ti y a Xbot, pedazo de tutorial el de electronica básica, mis inicios, he llegado hasta donde estoy ahora.
bueno, muy buena idea lo de probar con la càmara si el led funciona o no, si se ilumina es que emisor va OK. Al final me he currado este esquema que he probado en la protoboard y va OK

sensoresinfrarrojos sensoresinfrarrojos

Uploaded with [URL= http://imageshack.us ]Imag

R1 = 200 ohm.
R2 = Resistencia variable de 100K

He puesto una resistencia variable porque me he dado cuenta que la propia luz también interfiere en el receptor así que supongo que según la superficie habrá que regular esta resistencia.
Ahora vienen las preguntas, que se puede poner aparte de 74LS14?? lo veo excesivo tener 14 pines si solo voya a usar dos pines.
También quiero colocar un LED bicolor que esté en verde cuando detecte suelo y rojo cuando no detecte y no se como hacerlo, alguna sugerencia???

Como siempre muy agradecido

Responder
fulguitron
Respuestas: 50
Topic starter
(@fulguitron)
Trusted Member
Registrado: hace 16 años

Hola otra vez, que pesado soy todo el día preguntando, he pensado que mientras resuelvo el tema de los sensores quiero darle independiencia a Panchito y ponerle unas pilas para que pueda andar a sus anchas. Mi duda es esta. Que dura más una pila de 9v y ponerle un integrado para pasarlo a 5v o cuatro pilas de 1,5v y pasarlas a 5v??
Tengo ganas de acabar este par de cosas para subir otro video para que veais los avances, ya voy por el buen camino.

Responder
bastian
Respuestas: 384
(@bastian)
Ardero
Registrado: hace 17 años

Hola!

Las pilas recargables de 9V (en realidad 8,4V) tienen una capacidad de 240mA/h aproximadamente, mientras que una pila recargable tipo AA (1,2V) puede superar los 2400mA/h, que son diez veces mas que una de 9V. A esto añadimos una ventaja más, si utilizas las recargables de 1,2V y pones 4 en serie, no necesitas regulador, por que te van a dar una tensión de 4,8V. 😉

Salu2!

Responder
Página 3 / 5
Compartir: