Programación de la Raspberry Pi Pico y Cuidado del Motor Diésel: Guía Completa

  • Autor de la entrada:
  • Categoría de la entrada:blog

Introducción a la Programación de la Raspberry Pi Pico

En este artículo, exploraremos la programación de la Raspberry Pi Pico a través de ejemplos prácticos y detallados. Además, abordaremos el cuidado del motor diésel, un tema crucial para prolongar la vida útil de tu vehículo.

Antes de comenzar con la Raspberry Pi Pico, asegúrate de tener instalado MicroPython e Thonny en tu PC. Si aún no lo has hecho, consulta tutoriales introductorios para obtener más información sobre cómo hacerlo.

Materiales Necesarios

Para realizar las experiencias con la Raspberry Pi Pico, necesitarás los siguientes materiales:

  • Led verde x2
  • Led amarillo x 2
  • Led rojo x 2
  • Resistencias 330ohm x 10
  • Buzzer x 1
  • Botones x 2
  • Cables macho macho x 20
  • Raspberry Pi Pico x 1
  • Breadboard x1
  • Cable micro USB x1

Puedes comprar todos los materiales por separado o adquirir un kit que incluya todo lo necesario para estos ejemplos.

Experiencias con la Raspberry Pi Pico

Experiencia 1: Comprobación de la Configuración

En nuestra primera experiencia, comprobaremos que todo está configurado correctamente.

El LED incorporado está conectado al pin 25, por lo que lo configuraremos como una salida, y luego en el ciclo while True: escribiremos 1 para encender el LED y 0 para apagarlo. Debido a que la Rpi Pico puede ejecutar el código muy rápido, le pedimos que duerma un poco entre el encendido y apagado, en este caso, 500 ms, o 1/2 segundo.

Debido a que el código tiene un ciclo while True: una vez que comience a correr el código, este se ejecutará para siempre. Para cambiar el código o guardarlo, debemos presionar el botón «stop» en el IDE Thonny.

Experiencia 2: Utilización de una Entrada para Controlar una Salida

El objetivo de esta experiencia es aprender cómo utilizar un botón como entrada para la Raspberry Pi Pico y cómo procesar una entrada para controlar una salida.

Los microcontroladores son comúnmente utilizados para controlar algo como respuesta a una entrada que viene del mundo físico.

El botón está conectado a la salida 3v3 de la Raspberry Pi Pico, por lo que al presionarlo, la entrada subirá a 3.3 V y generará un ‘1’ lógico. Debido a que el pin está configurado como una entrada, no necesitamos preocuparnos por limitar la corriente que extraemos de la salida de 3.3v de la Rpi Pico. Los pines de entrada generalmente tienen una resistencia bastante alta, por lo que la cantidad de corriente que toma una entrada es pequeña.

El código configura un pin de entrada en GP0. Los pines digitales tienen solo 2 estados, ‘1’ o ‘0’. Cuando configuramos el pin, le indicamos que esté predeterminado en el valor ‘0’, esto lo hacemos con la configuración Pull Down. Esto activa una resistencia interna en la Raspberry Pi Pico que conecta el pin a 0V.

Luego usamos el valor que se lee del botón directamente para controlar el LED integrado.

Debido a que la Raspberry Pi Pico ejecuta el código rápidamente, pareciera que el botón está directamente controlando el LED.

Experiencia 3: Interrupciones

El objetivo de este experimento es:

  • Aprender qué es una interrupción
  • Aprender cómo manejar una interrupción
  • Aprender cómo controlar una GPIO cuando ocurre una interrupción

En lugar de hacer un bucle rápido para leer el valor del botón, los microcontroladores también pueden ser notificados de un cambio en forma inmediata.

En este código creamos una rutina de manejo de interrupción IRQ, este código se ejecuta cuando se genera una interrupción al presionar el botón. El controlador también se puede denominar Rutina de servicio de interrupción (ISR). Configuramos la IRQ para que ocurra en un flanco ascendente, es decir, cuando ocurra la transición de 0 a 1. También hay otras opciones disponibles, como el flanco descendente, de 1 a 0, o cuando la entrada es alta o baja. Cuando se presiona el botón, los procesadores interrumpen su ejecución normal y hacen que se llame la rutina de servicio de interrupciones para que se ejecute. Luego, el controlador cambia el estado de una variable antes de salir.

El bucle principal usa la misma variable para controlar el LED. De esta forma, la IRQ y el bucle principal pueden ‘comunicarse’. Cuando la IRQ se está ejecutando, el bucle principal se detiene o se interrumpe.

Experiencia 4: Modulación por Ancho de Pulso (PWM)

El programa inicia su bucle principal activando el zumbador a través del objeto PWM. Seguirá haciendo esto para siempre.

Como antes, tenemos un controlador IRQ (rutina de servicio de interrupción - ISR). Esta vez, sin embargo, hemos conectado 2 botones. El ISR comprueba qué botón hizo que se llamara y aumenta o disminuye la variable de frecuencia. Nuevamente usamos la palabra clave global para cambiar la versión de la variable en todo el programa, en lugar de crear una local. El controlador también verifica el valor de la variable Frecuency y la limita a 100 - 2000. Este es un buen rango de frecuencia para el zumbador y para que lo escuche la mayoría de la gente.

El sonido es una señal analógica. Las computadoras generalmente no pueden crear señales analógicas. Para simular salidas analógicas, la Raspberry pi Pico utiliza una técnica llamada modulación de ancho de pulso (PWM). Esto implica encender y apagar una señal digital rápidamente para que parezca analógica. Hay 2 parámetros para una señal PWM: la frecuencia de conmutación y el ciclo de trabajo: cuánto tiempo está encendida la señal en comparación con estar apagada.

Esta técnica se utiliza a menudo para controlar la velocidad de un motor, donde al variar el ciclo de trabajo varía la potencia enviada al motor.

Experiencia 5: Control de LEDs con Interrupciones Separadas

La Raspberry Pi Pico puede conducir hasta 300 mA con su salida de alimentación de 3.3V. Para evitar que conduzca demasiada corriente al LED, usamos una resistencia limitadora de corriente. Los LED necesitan una resistencia de 330 ohms para limitar la corriente a alrededor de 4 mA por LED.

El circuito ahora tiene 2 LED con los 2 botones. Los 2 botones ahora están conectados a 2 controladores de interrupción separados. Estos controladores modifican 2 variables separadas, que se usan en el bucle principal para controlar los 2 LED.

Al tener 2 ISRs separados, los LED se pueden operar de forma independiente y sin que el bucle principal tenga que sondear para verificar si se presionan los botones.

Se requiere la resistencia 330 ohms para controlar la cantidad de corriente que fluye en el circuito, limitándola a 2,7 mA. Esto es para asegurar que el flujo de corriente sea menor que el límite seguro para el pin de Pico (4mA)

El flujo de corriente, el voltaje de suministro y el valor de resistencia están todos relacionados por la Ley de Ohm:

Voltaje (V, voltios) = corriente (I, amperios) x resistencia (R, ohmios)

Para determinar el valor de resistencia apropiado, se debe calcular la caída de voltaje en los diferentes componentes. Al mirar la hoja de datos del LED, se puede ver que el voltaje directo, Vf, es de 2.1V. Dado que el voltaje de suministro se establece en 3.3 V, la caída de voltaje en la resistencia se puede calcular de la siguiente manera:

3.3 - 2.1 = 1.2 V

Con la caída de voltaje calculada como 1,2 V y la corriente máxima dada como 4 mA (0.004 A), el valor de resistencia más bajo aceptable se calcula de la siguiente manera con la ecuación de la Ley de Ohm reorganizada:

R = V/I

R = 1.2 V/0.004 A

R = 300 ohms

El valor de resistencia disponible más cercano es 330 ohms (debe ser superior a 300 ohms para mantener la corriente por debajo de 4 mA), por lo que se ha utilizado en el circuito.

Experiencia 6: Programación Multi tarea

El objetivo de este experimento es:

  • Aprender sobre ‘hilos de ejecución’
  • Aprender que la Rpi Pico puede hacer 2 cosas al mismo tiempo
  • Aprender a crear y detener un hilo

La Raspberry Pi Pico tiene un procesador de doble núcleo, por lo que puede ejecutar 2 cosas a la vez.

Uno de ellos es el ciclo while True: principal. También podemos ejecutar una segunda pieza de código en el otro núcleo al mismo tiempo.

Tenemos un bucle principal que simplemente enciende y apaga los LED en forma repetitiva. El botón está conectado a un ISR. Esto significa que se dará servicio al presionar un botón y luego el bucle principal continuará.

Cuando se presiona el botón, activa el ISR para verificar la variable de control. Esto indica si el zumbador ya está sonando. Si no es así, establece el indicador de control en verdadero e inicia un segundo hilo, que hace que el zumbador haga ‘bip’ una vez por segundo. Cuando se vuelve a presionar el botón, el ISR restablece la bandera, lo que hace que finalice el bucle en el subproceso y, por lo tanto, el subproceso termine.

Los subprocesos se ejecutan de la misma manera que el resto del código: si tienen un bucle eterno, se ejecutarán para siempre, si solo tienen unas pocas declaraciones, entonces los ejecutarán y saldrán. En nuestro subproceso tenemos un bucle controlado por la variable ‘Beeping‘, por lo que el ISR puede detener la ejecución del subproceso. Esta es una forma de comunicación entre procesos, similar a la bandera en el ISR que se comunica con el bucle principal.

Si presiona el botón rápidamente, es posible que vea un mensaje de error en el Shell de Thonny; esto indica que estamos tratando de iniciar otro hilo, pero ambos núcleos ya están en uso. Porque el hilo ‘Beep’ tiene 1 segundo dormir como parte de su código puede tardar hasta 1 segundo en finalizar (dependiendo de en qué parte del ciclo se encuentre cuando se restablece la bandera).

Si el subproceso no ha salido cuando intentamos iniciar otro, obtenemos un error del sistema operativo que nos dice que el núcleo que queremos usar ya está en uso.

Experiencia 7: Simulación de un Semáforo

El programa que simula un Semáforo tiene varias partes. El bucle principal ejecuta la secuencia habitual Rojo - Rojo y Amarillo - Verde - Amarillo - Rojo.

Los botones representan los botones del cruce peatonal. Cuando un peatón quiere cruzar la calzada pulsa el botón. Se llama al ISR, ya que las entradas del botón están conectadas al ISR. Ambos botones están conectados al mismo ISR, ya que no importa de qué lado de la carretera la secuencia de cruce sea la misma. El ISR reconoce la solicitud encendiendo la luz amarilla de ‘esperar’. Luego se establece el indicador CrossRequested, que se utiliza para indicar al bucle principal que alguien quiere cruzar la calle.

El bucle principal comprueba este indicador cuando los semáforos están en rojo y, si está activado, inicia un subproceso independiente para gestionar la secuencia de semáforos para peatones. El hilo de cruce de peatones enciende las luces de peatones y también emite un pitido para indicar que es seguro cruzar.

Cuando el período de cruce ha expirado, el subproceso borra el indicador CrossRequested y luego sale del subproceso.

Cuidado del Motor Diésel: ¿Es Necesario Esperar Antes de Apagarlo?

Una de las dudas más comunes entre los conductores de vehículos diésel es si se debe esperar un tiempo antes de apagar el motor. Según Francisco Inglés Ñanculeo, docente de la Escuela de Ingeniería y Recursos Naturales Duoc UC sede Maipú, la respuesta es afirmativa.

Es sugerible dejar pasar unos minutos, ya que son motores sobrealimentados con un turbo compresor de aire, el cual permite un mayor ingreso volumétrico de aire comprimido hacia el interior del motor, llenando forzadamente todos los cilindros constantemente en su funcionamiento.

Cuando uno detiene repentinamente el motor, se puede producir un desgaste excesivo en los bujes o rodamientos, ya que automáticamente se detiene la bomba de aceite cortando el circuito de lubricación hacia el turbo y generando desgaste de los mismos materiales, lo que se suma a las altas temperaturas a las que puede estar sometido el mismo turbo al estar en constante funcionamiento.

Si uno le da tiempo de detención en ralentí como con el uso de un accesorio eléctrico conocido como Turbo Timer puede compensar esta necesidad de protección, permitiendo de esta manera dos grandes cosas: Bajar las velocidades de giro del eje central del turbo, cosa que cuando se detenga el motor no quede girando prolongadamente sin lubricación, y segundo, que al mantenerse en funcionamiento en ralentí después de sacar la llave de contacto pueda refrigerarse o bien, bajar la temperatura del mismo para evitar que el aceite en su interior se queme generando carbonilla o partículas solidas que a la larga dañarán al mismo turbo.

En conclusión, cuando una persona haga un viaje con un auto diésel, lo recomendable es dejarlo en ralentí, a las revoluciones mínimas que puede estar en funcionamiento un motor, por unos dos minutos. Esto permitirá que el aceite lubrique el turbo y que el resto de las piezas disminuyan su temperatura, evitando de esta manera complicaciones que solo nos harían gastar dinero en reparaciones.

Programar Tiempo Lejos del Dispositivo

Puedes programar tiempo lejos de tu pantalla, definir límites para el uso de las apps y más.

Bloquea las apps y las notificaciones durante los periodos en los que quieres tomarte un descanso de tus dispositivos. Por ejemplo, puedes programar tiempo desactivado durante las horas de comer o de dormir.

Durante el tiempo desactivado, sólo se permiten las llamadas, mensajes y apps que selecciones.

Pasos para Programar Tiempo Desactivado

  1. Ve a Configuración > Tiempo en pantalla.
  2. Toca Actividad en apps y sitios y, si aún no lo haces, activa esta opción.
  3. Toca Tiempo desactivado y luego realiza una de las siguientes acciones:
    • Toca Activar hasta mañana.
    • Toca la opción Programado para programar un tiempo desactivado con anticipación. Cuando programas un tiempo desactivado, se muestra un recordatorio 5 minutos antes de que vaya a comenzar. Puedes ignorar el recordatorio, o activar el tiempo desactivado de una vez y durante el horario que se había programado.
    • Selecciona Todos los días o Personalizar días y establece los tiempos de inicio y fin.

Puedes desactivar un tiempo desactivado programado en cualquier momento al desactivar la opción Programado.

Definir Límites para el Uso de Apps

Establece límites para una categoría de apps (por ejemplo, juegos o redes sociales) o para apps específicas.

  1. Ve a Configuración > Tiempo en pantalla.
  2. Toca Límites para apps y toca Agregar límite.
  3. Selecciona una o varias categorías de apps. Para establecer límites para apps específicas, toca el nombre de la categoría para ver todas las apps en esa categoría y elige las apps que quieres limitar. Si seleccionas varias categorías o apps, el límite de tiempo que establezcas se aplica a todas ellas.
  4. Toca Siguiente en la esquina superior derecha y establece el tiempo de uso permitido. Para establecer un periodo de tiempo para cada día, toca Personalizar días y establece límites para días específicos.
  5. Cuando hayas terminado de establecer límites, toca Agregar.

Elegir Apps y Contactos Permitidos Siempre

Especifica las apps que pueden usarse y los contactos a los que puedes contactar en todo momento, incluso durante el tiempo desactivado. Esto resulta útil, por ejemplo, en caso de que se presente una emergencia.

  1. Ve a Configuración > Tiempo en pantalla > Siempre permitidas.
  2. Para especificar los contactos con los que quieres permitir la comunicación, toca Contactos. Aquí se mostrará la opción que seleccionaste en los límites de comunicación.

tags: #Auto

Deja una respuesta