sábado, 24 de febrero de 2024

Encendido y apagado de los leds rojo, amarillo, verde y blanco del 'shield' Basic I/O

//------------------------------------------------------------------
// Encendido y apagado de los leds rojo, amarillo, verde y blanco 
// del shield Basic I/O 
// Ulitilizo la placa Arduino UNO
// Se encienden y apagan secuencialmente, en el orden:
// rojo -> amarillo -> verde -> blanco
// Joan Aranès Clua
// 22/02/2024
//------------------------------------------------------------------
int led_rojo=11; 
int led_amarillo=10; 
int led_verde=9; 
int led_blanco=6; 
int retardo=100; //valor del retardo (delay) en milisegundos

void setup() {
  pinMode(led_rojo,OUTPUT);
  pinMode(led_amarillo,OUTPUT);
  pinMode(led_verde,OUTPUT);
  pinMode(led_blanco,OUTPUT);

}

void loop() {
  digitalWrite(led_rojo,HIGH);
  delay(retardo);  // put your main code here, to run repeatedly:
  digitalWrite(led_rojo,LOW);
  delay(retardo);
  digitalWrite(led_amarillo,HIGH);
  delay(retardo);  // put your main code here, to run repeatedly:
  digitalWrite(led_amarillo,LOW);
  delay(retardo);
  digitalWrite(led_verde,HIGH);
  delay(retardo);  // put your main code here, to run repeatedly:
  digitalWrite(led_verde,LOW);
  delay(retardo);
  digitalWrite(led_blanco,HIGH);
  delay(retardo);  // put your main code here, to run repeatedly:
  digitalWrite(led_blanco,LOW);
  delay(retardo);
}

Uso del puerto serie y del teclado del ordenador para cambiar el valor del temporizador de retardo en el encendido y apagado de un LED

//------------------------------------------------------------------
// Uso del puerto serie y del teclado del ordenador
// para cambiar el valor del temporizador de retardo 
// ---
// Utilizo la placa Arduino UNO y el shield Basic I/O
// --- 
// Se encienden y apaga el led amarillo
// con duración controlable del parpadeo 
// entre lenta y rápida
// la cual se puede cambiar durante la ejecución del sketchr
// ---
// Joan Aranès Clua
// 23/02/2024
//------------------------------------------------------------------

int led_amarillo=10;//Éste es el LED que utilizaré para hacer la práctica 
int retardo=0;//inicialización a cero del valor del retardo
char caracter_de_control; 

void setup() {
  pinMode(led_amarillo,OUTPUT);
  Serial.begin(9600);  
}

void loop() {
  Serial.println("El led amarillo está encendido"); 
  if (Serial.available()>0){
    caracter_de_control=Serial.read(); //lectura del carácter de control
  }
 if (caracter_de_control=='r'){
   retardo=200; // intervalo de tiempo entre el encendido y el apagado de 0,2 s
   //información de salida por el puerto serie hacia el ordenador:
   Serial.print("parpadeo rápido:"); 
   Serial.println(retardo);
 }
if (caracter_de_control=='l'){
   retardo=1000; // intervalo de tiempo entre el encendido y el apagado de 1 s
   //información de salida por el puerto serie hacia el ordenador:
   Serial.print("parpadeo lento:"); 
   Serial.println(retardo);
 }
  //Encendido 
  digitalWrite(led_amarillo,HIGH);
  delay(retardo);
  //Apagado  
  digitalWrite(led_amarillo,LOW);
  delay(retardo);  
 }

martes, 6 de junio de 2023

Multímetros de bajo coste que permiten medir la mayor parte de las magnitudes eléctricas con la suficiente fiabilidad y precisión

El multímetro que uso en mi taller, junio de 2023
El multímetro que uso en mi velero, para comprobar el estado de las baterías y para realizar reparaciones que pueden surgir a bordo, junio de 2023

jueves, 9 de marzo de 2023

Carga y descarga de un condensador. Una práctica con Arduino Uno

He realizado el montaje del circuito, poniendo el condensador en paralelo con la resistencia, probando distintos valores de capacidad del condensador, C, y de la resistencia, R.

Dispongo de un Arduino Uno y una protoboard así como muchos y variado componentes ( condensadores, resistores, etcétera ) por lo que espero poder seguir el curso con dicho material. Después de muchas pruebas, al final, he podido apreciar claramente la carga y la descarga con los valores que figuran en el sketch que he elaborado ( R=220 ohmios y C=470 microfaradios ) para apreciar las variaciones con la suficiente claridad. En las lecturas del puerto serie he podido ver como se pasaba de 3 V en la carga ( incompleta ) a 1 V en la descarga ( incompleta ). Con otros valores y con el sketch original fluctuaban los valores demasiado rápido y no podía apreciar suficientemente bien la carga y la descarga. Los retardos que he programado, acordes con la constante de tiempo son de 100 ms ( T=RC = 103 ms ). Desde luego para valores del condensador de 1 pF y 1 kilo ohmio de resistencia los tiempos de carga y descarga son demasiado pequeños para poder apreciarlos y distinguirlos (1000 microsegundos).

/*

Programa que he escrito para mi Arduino Uno, para poder leer (desde el mismo IDE de Arduino, por el puerto serie) los valores durante la carga y la descarga del condensador (haz clic en la imagen para ver su tamaño natural y leer mejor):

Con Fritzing he también he cargado este código. Todo ha funcionado bien, obteniendo el diseño esquemático y el diseño en PCB (que no muestro aquí). $\diamond$

Detector de presencia con Arduino Uno y un sensor PIR

Esquema del montaje (Fritzing):

Programa que he escrito para Arduino Uno (haz clic para ver el tamaño natural de la imagen):

$\diamond$

Dispositivo de asistencia al aparcamiento, empleando el microcontrolador Arduino Uno, un sensor de ultrasonidos, un LED rojo (alarma luminosa), un zumbador (alarma acústica) y un display (para leer la distancia medida)

$\diamond$

Medida de una distancia con ultrasonidos, empleando mi Raspberry Pi 3B+ y el sensor de ultrasonidos HC-SR04

He montado el sensor de ultrasonidos HC-SR04 en la tableta de prototipos y ésta la he conectado a una Raspeberry Pi 3 B+ mediante un enlace Pi T-Cobber Plus para Raspberry Pi de Adafruit para facilitar el uso de los pines GPIO

Para adecuar la salida el eco de la HC-SR04 ( de 5 V ) a la placa Raspeberry he utilizado un divisor de tensión con dos resistencias: una de 2 kΩ – dos de 1kΩ en serie - ( conectada a GND y a la salida del eco) y otra de 1 kΩ ( conectada a la salida del eco ) y al pin GPIO #23 de la Raspberry. Así, se obtiene la tensión adecuada de 3,3 V para la entrada a la Raspberry: $$\dfrac{5}{(1+2)\cdot 10^3}\cdot 2\cdot 10^3 =\dfrac{10}{3} \approx 3.3\,\text{V}$$ Por otra parte, he conectado el Trigger del sensor al pin GPIO #18 de la Raspeberry. La alimentación del sensor se realiza conectando la entrada de 5 V, que he conectado al pin homónimo de la Raspberry, y GND del sensor con GND de la Raspberry.

Este es el programa (haz clic en la imagen para verla en tamño natural), con el código fuente en Python (que guardo en el archivo midedistancias.py), para poder gestionar el medidor de distancias:

Nota: En las anteriores prácticas, ya importé e instalé la librería GPIO (necesaria para las prácticas de electrónica ) tal como se indica en el material de estudio. Recuerdo que lo hice de la siguiente manera:

  1. Descarga de la librería:
    $ wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz
      import RPi.GPIO

  2. Descompresión de la librería descargada:
    $ tar zxf RPi.GPIO-0.5.11.tar.gz

  3. … des del directorio:
    $ cd RPi.GPIO-0.5.11

  4. Y, finalmente, se instala la librería en el sistema, haciendo:
    $ cd ..
    $ sudo python setup.py install

y ésta es una captura de pantalla desde el shell de Raspbian (haz clic en la imagen para verla en tamño natural):

Des del directorio en el que he guardado los ejercicios ejecuto el intérprete de Python para poner en marcha el script:

        $ sudo python midedistancias.py
  

Además, en este vídeo ( grabado con mi smartphone ) intento dar una visión de conjunto de la forma en que he procedido para la realización de las medidas de distancia. Y, debajo, dejo un volcado de pantalla del cómo pongo en marcha el medidor:

$\diamond$

¿Con 350 W basta?

Mi pequeño taladro de columna que tengo puesto encima de un banco