Autor | Mensaje |
---|
| Asunto: ideas para control de servomotores con pic. Publicado: 05 Ene, 2011 - 07:24 |
|
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| la verdad que tampoco es que chane mucho con los micro pic pero es prestoso acer programillas con el micro estudio code pic basic aunque si que tiene algunas cosas que fastidian al ser tan facilon como que no puedo manejar tmr0 o bamos el contador individual y menos con el 16f84 la cuestion que para mover los servos unos un comando practico pulout que puedes dar un pulso a una patilla pongamos pulout porta.0, y la variable a contar que tampoco seria un tiempo exacto, a 4Mhz si el valos buera uno seria un pulso de 10microsegundos al igual que si el valos es 100 es 1milisegundo.
y con 20Mhz una relacion de 2us osease 5 veces mas resolucio en tiempo un valos de 100 serian 200microsegundos.
aunque la cuestion tampoco es esa.. jejejej un servomotor para miverse funciona con un pulso desde 500us a 1500us o 1,5ms y bueno si voy a mover 10 servos voy a tener que esperar de 5ms a 15ms cosa que el intervalo de parada entre pulso y pulso a de ser de 15-25ms 20ms lo mas conveniente la cuestion que me quedo sin tiempo para acer el resto de operaciones y seme dio por replantearlo de otra manera ya que tampoco puedo usar el contador interno tmr0.
mover_servo:
high porta.0
high porta.1
high porta.2
high porta.3
for pasos1=0 to 80
----SELECT CASE pasos1
--------case servo1
------------low porta.0
--------case servo2
------------low porta.1
--------case servo3
------------low porta.2
--------case servo4
------------low porta.3
----end select
next pasos1
return
el comando case es como una if solo que se conporta mas rapido de esta manera intento eter todos los servos ala vez en el mismo periodo de tiempo de 500us a 1500us cosa que queda una resolucion algo penos a que va desde el valor 20 que estaria en un lado el servo al valos 80 que estaria casi en la otra direccion. con el problema de que cadavez que muevo un servo de un lado a otro y cuadra con el mismo tiempo de otro en ese intervalo chifla un poco poniedose en otra posicion.. vale la cosa seria facil para que se notase menos esa chifladura poner un cristal de 20Mhz o menos por ejemplo y tendria mas resolucion y ese salto se notaria menos..
pero porloque se puedo ensamblarle lineas en mplab e igual hay poder manejar el timer aparte de acer esa rutina mas fluida..
alguno me podria dar una idea..
aver si con suerte alguno tuvo ganas de leerse todo eso y entenerme..
un saludo.. |
| |
|
|
|
 |
| Asunto: Publicado: 06 Ene, 2011 - 04:23 |
|
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| joer parece que las ideas no fluyen demasiado.... |
| |
|
|
|
 |
| Asunto: Publicado: 18 Ene, 2011 - 01:53 |
|
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| posteo el video..
http://www.youtube.com/user/tararirurit ... -2xk3-DzVI
en este caso uso el comando pulsout uara cada servo y el mando a distancia ese en particular manda el codigo muy lento realmente cuando pulss el voton manda discintos codigos de distintos aparatosno slo el que recojo para movelo pongamos que habra unos 20ms entre codigo y codigo correcto.
y ie que sumara de 3 en 3 por eso se ve tan brusco
el otrometodo que es mucho mas practico tengo que ver si posteo el video y ya vereis el fallo, para dos servos es vastante preciso unas 130 posiciones en los 270º que gira con un ristal de 4MHz..
realmente esa placa seria un proyecto para RC coches de nitro metano.. pangamos que para tener alguna luz y que al mismo tiempo que esta leyendo el servo poder chekear los fallos con la emisora y pasas a frenar el el coche automaticamente forzando los pulsos del receptor.
con ello pudiendo blokearlo desde un mando a distancia o blokeandose el mismo por fallos en la emisora y tenr que desblokearlo con el mando a distancia..
un poco lo que de a programar pero lo basico eso control de luces y asegurar un que se pare si sequeda sin señal de la central en u tiempo de 50ms pasando a frenar el coche y mantnr relenti frenar. vamos quedaria como que le das picos al acelerador para que no cale si falla mucho queda blokeado completamente y abria que ir acia el y desblokear con el mando a distancia ueno y un par de configuracion de luces tanto como que aumenten la luminosidad aprovechando el pulso de la recepcion (pongamos que asi coo ves el santo) el circuito funciona a 6v los led son de 3,6v pero como el pulso nunca es mayor de 1,5ms con un retardo de 3ms pues que vale casi a huevo como control PWM de los led. jejejej
bueno un saludo |
| |
|
|
|
 |
| Asunto: Publicado: 27 Ene, 2011 - 02:27 |
|
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| pues nada parec que el escupir ideas que no para muho aunque todavia tengo yo que pesaar como solucionarlo..
porlomenos si que cai e el problema lo malo era tener solo dos revos porlovisto el comando ese selec case ese que sirve para aorrar comparaciones if de una bariable cuando detecta que una es igual ace la funcion directamente y sale de el.
en el caso de los dos servos cuado los dos tenian el mismo valor termia de darle la orden al primero y sale sinn dar la orden al segudo..
que mi idea seria acer ese itervalo de tiempo mas corto aunque solo pueda ser con grupos de 2 examinar cual de los dos es mayor meterlo en una bariable y acer las repeticiones del for next ese numero veces y dejando una marca si son iguales para activarlo al final.
malo que si fueran 4 seria mas jodio..
pongamos que se podrian usar una if tambien pero las decisiones a secas tardan mas tiempo en procesaarse lo cual que se queda casi sin resolucion vamos cada vez que sume o reste uno el paso que daria el servo es de casi 3º para unn oscilador de 4Mhz.
alguo save de algu microcontrolador con porlomeos 8 salidas PWM
unn saludo |
| |
|
|
|
 |
| Asunto: Publicado: 27 Ene, 2011 - 02:27 |
|
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| pues nada parec que el escupir ideas que no para muho aunque todavia tengo yo que pesaar como solucionarlo..
porlomenos si que cai e el problema lo malo era tener solo dos revos porlovisto el comando ese selec case ese que sirve para aorrar comparaciones if de una bariable cuando detecta que una es igual ace la funcion directamente y sale de el.
en el caso de los dos servos cuado los dos tenian el mismo valor termia de darle la orden al primero y sale sinn dar la orden al segudo..
que mi idea seria acer ese itervalo de tiempo mas corto aunque solo pueda ser con grupos de 2 examinar cual de los dos es mayor meterlo en una bariable y acer las repeticiones del for next ese numero veces y dejando una marca si son iguales para activarlo al final.
malo que si fueran 4 seria mas jodio..
pongamos que se podrian usar una if tambien pero las decisiones a secas tardan mas tiempo en procesaarse lo cual que se queda casi sin resolucion vamos cada vez que sume o reste uno el paso que daria el servo es de casi 3º para unn oscilador de 4Mhz.
alguo save de algu microcontrolador con porlomeos 8 salidas PWM
unn saludo |
| |
|
|
|
 |
|