Por favor necesito ayuda con el PIC 18F4550, estoy intentando controlar un servo y no puedo hacer que funcione. La verdad es que soy muy novato en esto de los pics pero ya he conseguido hacer circuitos simples con leds y pulsadores( secuencias de luces, rutinas, etc) y el pic hacia lo que yo queria, pero con los servos no se que pasa.
El circuito es el siguiente:
http://img269.imageshack.us/img269/6986/sinsimular.jpgo este:
El codigo es de Mikrobasic (el lenguaje que estoy utilizando, tengo PicBasic Pro en un CD pero no lo he mirado mucho):
program servo_18F4550
symbol pul1 = portd.0
symbol pul2 = portd.1
sub procedure pulsout(dim byref Puerto as byte,dim Pin as byte,dim Pos as byte) ' Aqui genera el pulso para el servo
Setbit(Puerto,Pin)
delay_Cyc(Pos) ' Tambien he probado agregar otros delay_Cyc (pues el codigo original era para 4 Mhz
Clearbit(Puerto,Pin) ' Pero tampoco a funcionado, y solo tengo cristal de 20 y 12 Mhz
end sub
main:
CMCON = 7
INTCON = 0
ADCON1 = 7
TRISB = 0
TRISD = 1
PORTB = 0
PORTD = 0
while TRUE
if pul1 = 1 then
pulsout(portb,6,30)
delay_ms(10)
end if
if pul2 = 1 then
pulsout(portb,6,240)
delay_ms(10)
end if
if (pul1 = 0) and (pul2 = 0) then
pulsout(portb,6,135)
delay_ms(10)
end if
wend
end.
Y el objetivo es hacer que el servo gire en una u otra direccion dependiendo del pulsador que presione, si ninguno esta presionado, pues vuelve a su posicion central. Esto es para ir aprendiendo, despues pretendo hacer cosas mas complejas.
Pero al conectar la alimentacion el servo se desplaza en un sentido sin que ningun pulsador este presionado y alli se queda haciendo fuerza en ese sentido. Tambien he probado quitar los pulsadores e intentar que el servo vaya a su posicion central, pero ocurre lo mismo, apenas conecto la alimentacion se va para un lado y ahi queda.
La verdad me tiene bastante frustrado, pero sigo intentando y probando con el codigo (aumentando o disminyendo el delay_Cyc entre el setbit y el clearbit) y la configuracion del Pic.
Ultimamente me he limitado a utilizar un simulador para probar, por temor a quemar el pic o dañar los servos, donde vivo es muy dificil conseguir estos componentes electronicos, los que tengo tuve que encargarlos por internet y sale bastante caro. Estoy usando el Proteus Isis 7.2 y no tengo problemas en simular y hacer funcionar servos con pics 16F, pero con el 18F4550 no hay caso, me supera.
En la ventana "Edit Projec" del MKB tengo configurado de la siguiente forma:
PLLDIV_5_1L, CPUDIV_OSC1, USBDIV_1_1L, FOSC_HS_1H, WDT_OFF, MCLRE_ON, PBADEN_OFF, LVP_OFF, DEBUG_OFF
Estoy utilizando un cristal de 20 Mhz con condensadores de 22p, pero tambien tengo uno de 12 Mhz (de 4 Mhz no he podido conseguir). Si alguien pudiera mostrarme un programa que funcione, me seria de gran ayuda y de ahi podria ir deduciendo futuras modificaciones. La idea es ir aprendiendo lo basico (configuracion del pics, fuses, habilitar o desabilitar las funciones de los PORT, etc) y luego poder sacarle todo el provecho que tiene este pic.
Por si les sirve les comento que para programar el pic utilizo Winpic 3.64, y como alimentacion tengo una fuente ATX de un pc antiguo con voltajes de 5v y 12v. Bueno espero que alguien pueda guiarme y de antemano les agradezco su ayuda.