Este documento es un sı́ntesis del curso de control de una lı́nea de cereza. Al finalizar el curso se espera que los participantes puedan implementar un sistema que incluye los componentes electrónicos y computacionales de un calibrador de cereza. El curso no toca los aspectos mecánicos de una lı́nea a pesar de la importancia que tiene la separación de racimos, singulación de la fruta y traslado de la fruta sobre los rodillos. Tampoco se trata el control de los periféricos, aunque es muy conveniente que este control se integra a los sistemas computacionales que sı́ forman parte de este curso.
La estructura lógica del sistema está ilustrado en el siguiente diagrama:
Los ı́conos con forma cuadrada son microcontroladores de la familia AVR con entrada y salida digital, y comunicaciones seriales. El PDI y Opera con computadores tipo PC. Los elementos dentro del recuadro amarillo se repiten para cada vı́a. Lo mı́nimo son dos vı́as, y tipicamente van a haber múltiples de dos vias, dos vı́as por cadena. En esta estructura de sistema, hay un solo Encoder y Director para todo la lı́nea y una sola estación Opera de interfaz con el operador, independiente del número de vı́as. Por ejemplo, si la máquina fuera de seis vı́as, entonces habrı́an seis controladores Lumos, seis Expelliarmus, seis PDI y seis conjuntos de cámaras. Un solo PC Opera administra todos los PDI de la máquina.
El primer clase de programación que el autor de este documento cursó fue en 1974. Los programas mismos, en Fortran, se escribieron en tarjetas perforadas de 80 columns. El proceso de compilar un programa tardaba 24 horas y si uno se equivocó en el sintaxis, otro dia. La ejecución también era de un dı́a para el otro. Se construyeron edificios para albergar a un computador, un mainframe, siempre IBM. Al principio de los ’80, empezaron a aparecer los computadores personales. Los primeros eran teclados que se conectaban a un televisor, y usaron cintas de audio para grabar programas y datos. Después llegaron los PC’s, y Bill Gates hizo su tremenda hazaña de desafiar a IBM con MS-DOS. Se abrieron las ventanas, y la evolución computacional tomó vuelo. Como lenguajes de programación, empezamos con Fortran, un poco de PL/1 y Cobol. Con los PCs, Pascal apareció. Basic era común. Después habı́a C, y mas tarde orientación a objeto con C++, Java, JavaScript. Siempre son lenguajes de sintáxis secuencial, muy poco programación en paralelo sobre FPGAs. Un aspecto importante del desarrollo es el sistema operativo. Recuerdo haber comprado SCO Xenix (una licencia para Unix) en aproximadamente $usd5000. La última vez que he usado Windows fue a mediados de los ’90. Era Windows 3.11, y la necesidad de comprar un nuevo computador para poder utilizar la interfaz gráfica fue demasiado. Linux es el sistema operativo con que se trabaja en este equipo. El sistema que se describe en este curso, y que se espera que los integrantes aprenden replicar, tiene un componente fuerte en programación. Inclusive la electrónica digital también es programación. Los controladores AVR se programan en C. Los programas de los PC’s son una mezcla de C y C++. Si los integrantes saben programar algun lenguaje, por ejemplo Python o JavaScript, es probable que van a poder entender el código que acompaña el curso. También hay conceptos del sistema operativo, shared memory, sockets, interrupciones que habrá que llegar a conocer. No es poca cosa. Tengo la impresión que hay casi una carrera de ingenerı́a en computación en este sistema. Se una persona no tiene formación en programación, pero sı́ conoce la operación de lı́neas de cereza, va a poder aprovechar del curso también. Posiblemente, su aporte va a ser mas como un usuario avanzado, indicando funcionalidad necesaria. Ya que estamos en el dı́a de la inteligencia artificial, serı́a gracioso si se pueden reemplazar estos años de trabajo con unas sesiones con ChatGPT. Hay tutoriales en lı́nea que pueden ser útiles para empezar. Por ejemplo, Programación de Arduino con AVR-GCC, Programación de microcontroladores AVR en Linux, programación de AVR usando C. Básicamente hay que tener: 1. inux instalado (yo voy con Ubuntu) 2. editor de texto para escribir los programas. Yo uso ’vi’, pero hay otros mas GUI, mas amigables 3. El compilador avr-gcc. Para programar los PC, el compilador es gcc, muy similar al avr-gcc. 4. El programador avrdude (el programa que pasa tu código compilado en el PC a la memoria flash del microcontrolador. Para los PC, este programa no es necesario. .5 Un programa tipo terminal para visualizar la salida del programa corriendo en tu AVR
La estructura del curso sigue la estructura del sistema.
En este curso hay que trabajar sobre una lı́nea fı́sica, programando y equivocándose. Se espera que el curso cuente con una lı́nea fı́sica operando sobre que los participantes pueden programar y probar sus código. Es un curso práctico, no teórico. Hay que terminar con el control funcionando de una lı́nea.
Si cada participante, o cada grupo de participantes, trae las
siguientes materiales a las primeras sesiones, entonces va a poder
impĺementar un sistema para su propio uso.