Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola pues me dispongo a desarrollar un velocista en un plazo de un año, es decir, para el próximo cosmobot si dios o la caixa quieren. Y me gustaría pedir consejo y escuchar opiniones sobre diferentes puntos.
La base va a ser un coche rc de escala 1/28, como el miniz del cosmobot, esta vez otro modelo de coche, al que he podido incorporar un microservo de 0.1 s 60 grados, para el giro.
Mi primera duda surge en que tipo de sensores para detectar la línea usar, o cuáles hay disponibles. Lo ideal es que cuanto más pequeños mejor, y probablemente haga lectura analógica sobre digital, ya veremos como afectan los cambios de luz.
Yo hasta ahora sólo conozco dos modelos de sensor, en CNY70 y el QRD1114 de fairchild que nunca he usado, en el cosmobot vi a gente que llevaba diversos tipos de sensores, algunos de ellos eran muy pequeños, a ver si alguien me puede indicar otro modelo de sensores distintos de los dos anteriores, o foto trt y foto diodo.
Segunda duda, es como colocar los sensores, mi idea inicial es volver a usar dos placas de sensores, una delante y otra detrás, la de detrás es muy útil para conocer la posición del robot respecto a la línea, para poder realizar cambios de carril y acelerar, cuando el robot está centrado.
En el cosmobot vi a un robot, este http://es.youtube.com/watch?v=IVLpgTclsrI que usaba esa técnica para seguir la línea, me comentaron que esta era la manera correcta de hacerlo, o como se debia hacer. Me gustaría saber que ventajas tiene de hacerlo de esta forma frente a la clásica placa de sensores fija en el coche. Supongo que de esta forma se podrá obtener un error mucho más exacto.
Y por último que microcontrolador usar, he estado leyendo y creo que la mejor elección para este tipo de proyecto es un DSP, además de un mayor número de MIPS llevas los multiplicadores por hard, bastante útil a la hora de realizar operaciones.
Las señales que habría que leer en principio serían los sensores y un encoder que lleve el coche, que aún no sé muy bien donde se lo voy a poder colocar, quizás en el piñon o en la corona, y luego por último leer la batería. Las salidas el motor y el servo.
Aunque con un micro de 8 bits bien programado se puede hacer todo esto y más, yo creo que es un buen proyecto para iniciarse con micros mayores (almenos para mi), aún no sé la cantidad de operaciones que habría que hacer por segundo, mi idea inicial siendo muy optimista, es alcanzar los 2 m/s de media.
Así que a ver si alguien me puede aconsejar un micro para empezar, de momento yo he pensado en el dsPIC del que ya tendría el programador, por lo que el coste sería cero. Pero puestos a aprender no sé si sería mejor irme al mayor fábricante, es decir texas instruments, lo que no sé es cuánto costaría un DSP de estos, y cuánto el material para el desarrollo. La idea es usar un micro smd frente a un kit, por razones de espacio.
Tb me estoy iniciando estos días con atmel, que supongo que tendrá su alternativa a usar.
Gracias. S2
Yo tampoco creo que vayan los sensores en analógico, no tienes ninguna ventaja y sí que pierdes mucho tiempo. La línea la leeran igual en analógico que en digital, por tanto las posibilidades són las mismas.
JM, a parte del servo, son muy importantes dos cosas más:
- La longitud del morro que permite anticiparse mucho.
- La livianez del robot. Coger esas velocidades en curvas con un tocho-robot es imposible.
Lo de aprenderse el circuíto es muy probable, en los vídeos se ve como parpadea el led cada vez que pasa por meta. Aunque no lo veo del todo claro, si reconociera el circuíto quizá habría más diferencias entre el paso por recta y el paso por curvas, y parece que van bastante a piñón fijo.
Bueno, yo sigo con mi diferencial, hoy ya tengo la placa base lista. Ahora me queda hacer algún taladro y empezar a soldar, buscar algún que otro componente, montar los motores, esperar que me llegue la lipo que tengo pedida, etc, etc, CASI NADA!! Y encima después hay que programarlo 😯 Que poco tiempo queda!
Pon fotos cuando lo tengas montado, que a mi me gusta verlos ._.
ATENCIÓN, TOCHO
Bueno, respecto a lo de usar los sensores en analógico te puedo demostrar cuando quieras que no es lo mismo que en digital. Te pongo el ejemplo simple:
- 2 Sensores CNY-70 separados 1'5cm centro a centro y una linea en medio de 1cm
- Modo digital: ambos sensores verían 11 cuando estén en el centro
- Modo analógico: ambos sensores verían una cantidad de luz reflejada (por ejemplo 900 en cada sensor), y cada sensor tiene un signo (según si está a la derecha o izquierda del centro). Simplemente sumamos valores y debería de dar 0 si están bien calibrados.
Ahora movemos un poco (2mm) a la izquierda los sensores
- Modo digital: verían algo como 01, tomamos el error como la mitad de la distancia de separación, es decir, 0'75mm.
- Modo analógico, operamos igual que antes, y ahora obtenemos unos valores distintos en cada sensor, pues no recibe la misma luz reflejada uno que otro, por ejemplo (300, 900), al operar queda -300+900=600, por lo que ya sabemos que se ha movido un poco solo. Ahora sería cuestión de cada uno asignar errores a los distintos resultados de forma que salgo algo lineal.
Creo que queda claro que ganas mucha precisión al usarlos en analógico.
Respecto al tiempo, en mi caso voy a usar un 18F2550 que tiene 10 canales A/D. Según leo en el datasheet si lo hago funcionar a 48MHz cada bit (Tad) tardará 64*1/48M=1'33us y como son 11Tad los necesarios para una conversión de 10bits obtengo un tiempo de 14'66us. A esto le sumamos 2us para que se descargue el condensador del CAD y otros 0.2us para que el amplificador se estabilice, por lo que tenemos 17us entre conversión y conversión. Suponiendo una velocidad de 3m/s disponemos de 195 conversiones por cm.
Si tenemos 8 sensores tardaríamos 17us*8=136us en obtener el estado de todos los sensores, y en cada cm habríamos obtenido el estado de todos los sensores 24 veces.
Puede ser que me esté equivocando al interpretar los datos del datasheet, pero de ser correctos mis planteamientos creo que es mucho mejor leer en analógico los sensores. Por supuesto que la rutina del PID se complica un poco más, pero la precisión aumenta bastante.
Saludos.
FJ_Sanchez, no hace falta que me lo demuestres ya lo se. Pero bueno, seguramente tú tienes una idea de como puede ir mejor y yo tengo otra.
En la teoría el conversor AD funcionaría muy bien, en la práctica dificilmente encontrarás un mismo sensor que te de el mismo valor que otro aunque los coloques a la misma distancia y sobre la misma superficie. Y eso sin tener en cuenta las condiciones de la pista, iluminación, etc. Teóricamente con el conversor analógico tendrás más resolución, pero tienes muchos factores externos que juegan contra ti. En modo digital no tengo que calibrar nunca los sensores, no me dan errores (esto entrecomillado, claro), no veo pequeños cambios pero me puedo fiar mucho más de lo que veo.
Que ves en analógico?
120, 106, 52, 43, 217, 900 ,, 870, 209, 37, 41, 39, 50
* Puede que vayas perfectamente centrado, puede que vayas algo escorado, puede que un foco te esté afectando de un lado, etc, etc.
Que ves en digital?
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0
* Vas por encima de la linea, quizá me vaya un poco a un lado, eso depende de la distancia entre sensores, pero se que voy centrado.
Bueno, no me enrollo más. A mi, en la práctica, me parece mucho más conveniente usar los sensores en digital, por velocidad, por facilidad de programación, por ausencia de calibrado y, sobretodo, por ausencia de interferencias. La precisión real que consigues viene a ser la misma.
Bueno, esto tampoco es cierto del todo. En digital cualquier foco también te puede pasar de nivel bajo a nivel alto. En analógico lo que hago es 2 lecturas, una con el led apagado y otra con el led encendido, así elimino el offset introducido por la luz ambiente.