Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Ordenación Eficiente de Resistencias para Proyectos con Arduino Nano: Un Método Simple y Ahorra Tiempo

Componentes y Suministros

Herramientas y Máquinas Necesarias

Aplicaciones y Servicios Online

Sobre el Proyecto

¿Te has encontrado alguna vez, tras terminar un proyecto, con un montón de resistencias desordenadas como esta?

Ordenación Eficiente de Resistencias para Proyectos con Arduino Nano: Un Método Simple y Ahorra Tiempo

¿Eres de los que les da pereza comprobar el código de colores de cada resistencia para ordenarlas? ¿Incluso usar un multímetro te parece demasiado trabajo? Entonces quizás esta sea tu solución: ¡el ohmímetro definitivo para vagos!

Ordenación Eficiente de Resistencias para Proyectos con Arduino Nano: Un Método Simple y Ahorra Tiempo

Todo lo que necesitas para construir este sencillo ohmímetro que comprobará el valor de tus resistencias desordenadas son un puñado de resistencias (de valor conocido esta vez), un Arduino y una pantalla (yo usé una pantalla OLED I2C).

Principio de Funcionamiento: Divisor de Tensión

Nos basaremos en la ecuación del divisor de tensión para obtener el valor de una resistencia desconocida en serie con una resistencia de valor conocido. Esta técnica simple tiene un inconveniente: cuanto más diferentes sean las dos resistencias, menos precisa será nuestra medición. Para superar esto, usaremos múltiples resistencias y escribiremos un código que permita al Arduino elegir la resistencia más adecuada para el cálculo del valor desconocido.

Siguiendo esta filosofía, podemos construir el ohmímetro siguiendo el esquema de la imagen inferior.

Ordenación Eficiente de Resistencias para Proyectos con Arduino Nano: Un Método Simple y Ahorra Tiempo

Si usas una pantalla I2C, también puedes seguir el esquema para esa conexión. El Arduino Nano usa el pin A4 para SDA y A5 para SCL.

El Código

El código que utilicé puede verse aquí. Utiliza la librería Adafruit para la pantalla OLED. Solo necesitas descargarla a través del Gestor de Librerías del Arduino IDE y copiar las partes necesarias. Usé dos bitmaps para hacer la lectura más vistosa; puedes añadir los tuyos o reemplazar los míos.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// ... (arrays de bitmap para logos)

int R1 = 100;
int R2 = 1000;
int R3 = 10000;
long R4 = 100000;
long R5 = 1000000;
long Rn;
int D2 = 2, D3 = 3, D4 = 4, D5 = 5, D6 = 6;
float raw = 0, Vout = 0, Ru = 0;
int Analogohm = A0;

void setup() {
  Serial.begin(9600);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("Fallo al asignar SSD1306"));
    for(;;);
  }
  display.clearDisplay();
  display.drawBitmap(0,0, myLOGO, 128, 64, WHITE);
  display.display();
  delay(2000);
}

void loop() {
  // Secuencia de selección automática de resistencia de referencia
  pinMode(D2, OUTPUT); pinMode(D3, INPUT); pinMode(D4, INPUT); pinMode(D5, INPUT); pinMode(D6, INPUT);
  digitalWrite(D2, HIGH);
  raw = analogRead(Analogohm);
  Rn = R5; // 1M

  if (raw < 350 || raw > 800) {
    digitalWrite(D2, LOW); pinMode(D2, INPUT);
    pinMode(D3, OUTPUT); digitalWrite(D3, HIGH);
    raw = analogRead(Analogohm);
    Rn = R4; // 100k
    if (raw < 350 || raw > 800) {
      digitalWrite(D3, LOW); pinMode(D3, INPUT);
      pinMode(D4, OUTPUT); digitalWrite(D4, HIGH);
      raw = analogRead(Analogohm);
      Rn = R3; // 10k
      if (raw < 350 || raw > 800) {
        digitalWrite(D4, LOW); pinMode(D4, INPUT);
        pinMode(D5, OUTPUT); digitalWrite(D5, HIGH);
        raw = analogRead(Analogohm);
        Rn = R2; // 1k
        if (raw < 350 || raw > 800) {
          digitalWrite(D5, LOW); pinMode(D5, INPUT);
          pinMode(D6, OUTPUT); digitalWrite(D6, HIGH);
          raw = analogRead(Analogohm);
          Rn = R1; // 100
        }
      }
    }
  }

  Vout = 5.0 * (raw / 1024.0);
  Ru = (Rn * Vout) / (5.0 - Vout);

  // Redondeo a valores comerciales estándar
  if (Ru < 100) Ru = 10 * round(Ru / 10);
  else if (Ru < 1000) Ru = 100 * round(Ru / 100);
  else if (Ru < 10000) Ru = 1000 * round(Ru / 1000);
  else if (Ru < 100000) Ru = 10000 * round(Ru / 10000);
  else if (Ru < 1000000) Ru = 100000 * round(Ru / 100000);
  else Ru = 1000000 * round(Ru / 1000000);

  Resistance(Ru);
  delay(1000);
}

void Resistance(long Ru) {
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println(F("Hola,"));
  display.println(F("El valor es:"));
  display.setCursor(20,25);
  display.setTextSize(2);
  display.print(Ru);
  display.print(F(" Ohm"));
  display.drawBitmap(0,0, myBitmap, 128, 64, WHITE);
  display.display();
  delay(2000);
}

Notas Importantes

NOTA #1: En cada sentencia IF necesitamos redefinir el pinMode de cada pin digital, ya que si lo mantenemos como salida se comportará como un pin de baja impedancia y arruinará nuestra medición en el pin A0.

NOTA #2: Para este dispositivo usé solo 5 resistencias, pero puedes añadir muchos más valores para cada pin digital de la placa.

Ordenación Eficiente de Resistencias para Proyectos con Arduino Nano: Un Método Simple y Ahorra Tiempo

Carcasa Impresa en 3D

Para la aplicación real, necesitamos construir una caja donde podamos enchufar la resistencia desconocida y ver el resultado en la pantalla. La caja que hice se puede imprimir fácilmente con una impresora 3D y todas las piezas se fijan con una pistola de silicona. Se requirió algo de soldadura de las resistencias conocidas para que todo cupiera en un volumen reducido.

Ordenación Eficiente de Resistencias para Proyectos con Arduino Nano: Un Método Simple y Ahorra Tiempo

Solo queda una cosa: enchufa tus resistencias desordenadas en esos pequeños agujeros y ¡limpia tu banco de trabajo!

ACTUALIZACIÓN: Modifiqué la parte de redondeo del código ya que podía causar errores al redondear resistencias alrededor de 5k. Con este cambio el problema debería estar solucionado. De todas formas, añadir una resistencia de 5k entre las referencias debería prevenir el problema por completo.

Código Completo

El código completo está disponible en la sección de código del proyecto original.

Piezas Personalizadas y Cajas

Esquemáticos

Ordenación Eficiente de Resistencias para Proyectos con Arduino Nano: Un Método Simple y Ahorra Tiempo

Proceso de manufactura

  1. Alerta de Sed Inteligente para Plantas: Sensor DIY para Riego Óptimo
  2. Reloj de Palabras en Italiano con Arduino Nano, NeoPixel, LCD y RTC
  3. Medidor kWh Sigfox Fiable con Arduino MKR Fox 1200
  4. Monitor de temperatura con Bluetooth usando Arduino Nano
  5. Cerradura por Gestos Sin Contacto: Acceso Seguro con APDS-9960 y Arduino
  6. Kit Compañero Arduino Nano: Componentes y Herramientas Esenciales para Electrónica DIY
  7. Kit Adaptador USB MIDI para Arduino Micro / Leonardo: Lista Completa de Componentes
  8. Circuito de entrada analógica aislada para Arduino
  9. Visualizador Espectro Audio RGB 32 Bandas - Matriz LED Arduino
  10. Test de Precisión de Tiempo de Reacción con Arduino UNO
  11. Resistencias de cero ohmios: Ventajas clave y usos reales