Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
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.
Aaaaaaaaaaaaaaaaaaaaaaaah o sea es por eso que Panchito andaba asi?? lastima que sea tarde y mañana tenga que levantar el pais sino me ponia ahora mismo a rectificar el programa,Respecto al tema del sensor CNY70 he visto que la señal que envia es analogica y que depende de la distancia a la que detecte el obstaculo, como lo hago para conectarlo al micro???
Como siempre muy agradecido, asi da gusto empezar algo nuevo.
P.D: Ya me he planteado empezar a hacer algo con C pero actualmente uso el Libro de Desarrollo de proyectos de RA-MA que me ha ido de perlas para empezar con este mundillo, me recomendais algun libro o tutorial para micros en C??? y a poder ser que use DEVC???
Buenas noches,
Hola!
Respecto al tema del sensor CNY70 he visto que la señal que envia es analogica y que depende de la distancia a la que detecte el obstaculo, como lo hago para conectarlo al micro???
Eso es cierto pero no del todo; me explico: La tensión de salida del sensor es analógica pero no lineal. La salida del CNY70 es un fototransistor de infrarrojos, es decir la base del transistor se controla por infrarrojos, por lo que el transistor conduce más o menos en función de la cantidad de infrarrojos que reciba el CNY. Aunque esto depende de la distancia, también afectan otros factores como el color y "brillo" de la superficie que refleja los infrarrojos, luz ambiente... y aún así la salida no es lineal.
Dado que el 16F84 no dispone de entradas analógicas, debes "digitalizar" la señal con un inversor trigger-schmitt. Con esto cuando detectas blanco (o superficie reflectante) tendrás un uno en la salida (con la polarización estandar->Salida = emisor) y un cero cuando la superficie sea negra o no exista.
Escribí algo relacionado en mi blog, pero no te sirve por que utilizo otro PIC.
Interfaz CNY70
me recomendais algun libro o tutorial para micros en C??? y a poder ser que use DEVC???
No sé si se podrá utilizar un compilador de C para PIC desde DEVC, pero yo probaría a utilizar otro entorno de desarrollo para PIC. Existen varios que permiten crear programas para el PIC en C, tales como CCS, MiKroC, piclab, MPLAB+C18... elegir uno u otro es cuestión de gustos. Para los dos primeros hay varios manuales en castellano circulando por la red. Yo particularmente utilizo CCS, aunque lo tengo en desuso por que ultimamente me estoy pasando al proyecto pinguino.
Salu2!
Bueeeeeeeeeeeno al final ya he rectificado el Parkinson de Panchito. Efectivamente era cosa de los tiempos y he hecho tal y como me habeis indicado, enciendo uno, lo apago y así hasta los cuatro y luego cuento el tiempo total, le resto 20ms y lo que sobra es el tiempo que se queda en bajo, simplemente genial, ya pondré otro día el código y un video para que veais los avances de Panchito.
Ahora tengo otro problema, ayer estuve cacharreando con un sensor CNY70 al cual en el emisor le he puesto una resistencia de 220 Ohmnios y en el receptor otra regulable de 10K y con un Trigger 74LS14 pero solo tiene un alcance de una par de mm. y necesito por lo menos un par de cm. Como lo hago para aumentar la distancia del sensor????
Como siempre muy agradecido, en pocos días he adelantado un montón con Panchito.
Hola!
Para polarizar el CNY70, yo utilizo 100 Ohm para el diodo y 4k7 en el emisor. Con eso consigues un poco más de margen, pero debes tener en cuenta que el alcance de este sensor es muy limitado como máximo obtendrás un centímetro. para distancias mayores debes usar otra cosa.
El TRCT5000, funciona como el CNY70, y tiene mayor alcance, por contra, es más sensible a perturbaciones externas.
TRCT5000
Salu2!
Una vez mas teneis razon, yo habia leido (mal por cierto) que el CNY70 tendria mas distancia pero no he conseguido ni 1cm. Probare estos TRCT5000 a ver que tal. Podeis pasarme algun esquema para hacerlo regulable??
Deciros que Panchito ha mejorado, aparte de que ya anda mejor he mejorado el caminar y ahora es mas estable, en duanto tenga arreglado lo de los sensores subo otro video.
Saludos.