Simulador de Arduino


En el mundo del modelado 3D, Tinkercad se ha establecido como una valiosa introducción al diseño asistido por computadora (CAD) . Es un programa CAD gratuito e intuitivo basado en la web que cualquiera puede usar. De hecho, si desea comenzar con Tinkercad, incluso tenemos un tutorial para principiantes para que pueda comenzar .

Recientemente, Tinkercad ha introducido algo nuevo: una expansión para incluir circuitos en su capacidad de diseño llamada Tinkercad Circuits. Esto aporta un lado completamente nuevo a Tinkercad, que gira en torno a la simulación de circuitos con Arduino.

Arduino es una plataforma de creación de prototipos electrónicos de código abierto que también vende microcontroladores. Tinkercad Circuits permite a cualquiera crear y programar virtualmente proyectos Arduino sin la necesidad de hardware físico.

En este artículo, le mostraremos cómo programar un Arduino básico en Tinkercad, pero primero, echemos un vistazo más de cerca a las nuevas capacidades que ofrece Tinkercad Circuits.

Vamos a utilizar una herramienta de Autodesk gratuita y en la red: Tinkercad , pues en efecto de servir como una herramienta excelente de diseño en 3d también incluye un editor de componentes electrónicos, y lo que es aun mas interesante : un simulador

Una vez que decida crear un circuito, utilizará el nuevo entorno de Tinkercad Circuits. Puede parecer mucho al principio, pero no se deje intimidar: tenemos toda la información que necesita para tener éxito. Verá rápidamente que esta plataforma creativa es una excelente herramienta de creación de prototipos.

Área de construcción

En el lado derecho de la pantalla, verá un grupo de componentes electrónicos de arrastrar y soltar. Además, puede buscar y filtrar a través de una cantidad impresionante de componentes disponibles: hay de todo, desde LED hasta circuitos integrados (IC), e incluso algunas herramientas de instrumentos.

El área de construcción abierta es donde diseñas su creación. La barra de herramientas superior que comienza a la izquierda le brinda las operaciones generales para rotar, eliminar e incluso tomar notas sobre sus diferentes componentes. Una característica interesante es que, además de exportar y compartir su trabajo, puede descargar la lista de componentes. Esto hace que sea más fácil llevar sus creaciones al mundo real.

Para hacer las cosas fáciles vamos a usar un simple arduino al que conectaremos 4 entradas analógicas, y 5 digitales

Las entradas analógicas las conectaremos a 4 potenciómetros cuyo punto central lo enviaremos a los GPIO simulando asi 4 señales analógicas por lo que conectaremos también estos a 4 instrumentos analógicos para que de este modo podamos comprobar el valor de las salidas.

Las entradas digitales las conectaremos a un conmutador DIP y sus salidas conectaremos también a 4 leds con sus correspondientes resistencias con el fin de poder comprobar de este modo el estado de dichos interruptores.

Por ultimo conectaremos un pulsador y un led que no indica que el circuito esta funcionando,

Mas en detalle este es el esquema del montaje:

El diseño lo p uede descargar desde https://www.tinkercad.com/things/5P9LP1tlS9O-panel-osciloscopio-con-arduino-/

Área de programación

Una vez que tenga un componente programable en su diseño, puede abrir el visor de «Código» haciendo clic en el botón en la parte superior derecha de la barra de herramientas. Actualmente, los únicos dos dispositivos disponibles son el Arduino Uno R3 y el ATTiny. (El ATTiny es un Arduino más limitado y miniaturizado).

El área de programación es un entorno de desarrollo integrado (IDE) simplificado que hace que la programación del Arduino sea muy sencilla. El método predeterminado es a través de bloques de código, que veremos más adelante, y también hay una vista dual para aprender cómo los bloques de código se traducen en código real. Para aquellos que ya están familiarizados con la biblioteca Arduino, incluso hay una vista de texto.

En cuanto al código Arduino, simplemente hay que pulsar en el botón «Código» y justo ahí copiaremos el código de mas abajo ( ojo porque debe ser correcto sintácticamente hablando, porque en caso de que cometamos un error nos dará un error)

Este es el código para probar el montaje:

#define Sel1 7 // el potenciometro  P1 LO conectamos al GPIO7
#define Sel2 8 // el potenciometro  P2 LO conectamos al GPIO8
#define Sel3 9 // el potenciometro  P3 LO conectamos al GPIO9  
#define Sel4 10 //el potenciometro  P4 LO conectamos al GPIO10

#define trigger 3 // el pin al que conectamos el pulsador

int val = 0; //val se emplea para almacenar el estado del boton
int state = 0; // 0 se muestrean las señales de los ADC
int old_val = 0; // almacena el antiguo valor de val

int y1;  //Variable donde se guardara el valor leido del pin A0
int y2;  //Variable donde se guardara el valor leido del pin A1
int y3;  //Variable donde se guardara el valor leido del pin A2
int y4;  //Variable donde se guardara el valor leido del pin A3


void setup() {
  
  Serial.begin(115200);
  pinMode(Sel1,INPUT_PULLUP);
  pinMode(Sel2,INPUT_PULLUP);
  pinMode(Sel3,INPUT_PULLUP);
  pinMode(Sel4,INPUT_PULLUP);

  pinMode(trigger,INPUT_PULLUP);
  Serial.println("Empezando la simulacion");
}

void loop() {

   val = digitalRead(trigger); // lee el estado del Boton
    if ((val == HIGH) && (old_val == LOW)) {  //Detectamos flanco de subida
        state = 1 - state;           //Cambiamos el valor de state de 0 a 1 ó de 1 a 0            
        delay(10);               //pausa de 10ms
    }
    old_val = val; // actualizamos el valor del antiguo estado


  if (!state) {  //si la variable state es 0 escribimos en el serial


        if (!digitalRead(Sel1) && !digitalRead(Sel2)&& !digitalRead(Sel3) && !digitalRead(Sel4)) {
            
            y1 = analogRead(A0);  //Leemos el conversor A1 y guardamos la lectura en sensor1
            Serial.print(y1);      //Imprimimos en el serial el valor de sensor1
            Serial.print(",");          //Imprimimos en el serial , 
            delay(10);                 //Pausa de 10ms

            y2 = analogRead(A1);  //Leemos el conversor A1 y guardamos la lectura en sensor1
            Serial.print(y2);      //Imprimimos en el serial el valor de sensor1
            Serial.print(",");          //Imprimimos en el serial , 
            delay(10);                 //Pausa de 10ms

            y3 = analogRead(A2);  //Leemos el conversor A1 y guardamos la lectura en sensor1
            Serial.print(y3);      //Imprimimos en el serial el valor de sensor1
            Serial.print(",");          //Imprimimos en el serial , 
            delay(10);                 //Pausa de 10ms

            y4 = analogRead(A3);  //Leemos el conversor A1 y guardamos la lectura en sensor1
            Serial.println(y4);      //Imprimimos en el serial el valor de sensor1
            //Serial.println(" ");          //Imprimimos en el serial , 
            delay(10);                 //Pausa de 10ms
        }

    
          if (digitalRead(Sel1) && !digitalRead(Sel2)&& digitalRead(Sel3) && digitalRead(Sel4)) {
            
           // y1 = analogRead(A0);  //Leemos el conversor A1 y guardamos la lectura en sensor1
           // Serial.print(y1);      //Imprimimos en el serial el valor de sensor1
            Serial.print("");
            Serial.print(",");          //Imprimimos en el serial , 
            delay(10);                 //Pausa de 10ms

            y2 = analogRead(A1);  //Leemos el conversor A1 y guardamos la lectura en sensor1
            Serial.print(y2);      //Imprimimos en el serial el valor de sensor1
            Serial.print(",");          //Imprimimos en el serial , 
            delay(10);                 //Pausa de 10ms

           // y3 = analogRead(A2);  //Leemos el conversor A1 y guardamos la lectura en sensor1
          //  Serial.print(y3);      //Imprimimos en el serial el valor de sensor1
            Serial.print("");
            Serial.print(",");          //Imprimimos en el serial , 
            delay(10);                 //Pausa de 10ms

            //y4 = analogRead(A3);  //Leemos el conversor A1 y guardamos la lectura en sensor1
           // Serial.println(y4);      //Imprimimos en el serial el valor de sensor1
            Serial.println(" ");          //Imprimimos en el serial , 
            delay(10);                 //Pausa de 10ms
        }
        


    }

}

Solución de problemas:  si su programa no se comporta como se esperaba, verifique su cableado y programación. Asegúrese de que todos los pines estén conectados correctamente y de que cada bloque esté escrito correctamente.

Si todo parece funcionar, ¡enhorabuena! Siempre puede seguir jugando con el código y los diferentes componentes para aprender más sobre cómo funciona todo.

Impresion 3d para hacer frente al coronavirus


Es  ya casi imposible seguir los avances que a diario se esta realizando desde  el forocoronavirusmakers.org ( A.I.R.E. o Ayuda Innovadora a la Respiración), equipo que por cierto , hasta hace casi nada  ni tenia contacto entre sus miembros  , consiguiendo de una manera colaborativa  ,altruista  y desinteresada intentar mitigar  la escasez  de material sanitario  fabricando  en un tiempo récord  y a a precios irrisorios   todo tipo de material sanitario , pantallas, utensilios , etc,   así como   respiradores  open source  ante el  grave problema de  indisponibilidad de stock de estos carisimos dispositivos que  cuestan a la sanidad pública casi 15.000 euros  por dispositivo.  

Es interesante destacar  que en este foro están presentes  médicos e ingenieros sanitarios que indican y marcan las pautas para crear un proyecto que cumpla con todas las garantías sanitarias.

También  es importante destacar que las soluciones que se están buscando pretenden ser  soluciones de código abierto, rápidas y baratas  para poder ser rápidamente replicables y escalables gracias  a  técnicas  de fabricación modernas como son el corte laser, los cnc   o la impresión 3d .

Veamos ahora  los 4 principales frentes abiertos :

Respiradores Open Source

Desgraciadamente la estimación de respiradores que se necesitarán solo en España en los próximos días es de miles de respiradores, incluso contando con todos los que se están comprando a nivel estatal, regional y privado. Dado que en los próximos días u horas se liberaran algunos de los diseños es importante que aunque se haga con buena fe ser lo mas filedignos  a las  pruebas que ya se han hecho dado que es cierto que  algunos de estos podrian ser contraproducentes al poder producir mas daño al paciente que beneficios para el   .

Reesistencia Team ya ha conseguido  desarrollar los primeros respiradores autónomos Open, basados en el denominado sistema Jackson Rees .

En el foro  hay varios prototipos de respiradores DIY en proceso de validación clínica muy avanzados  : Reespirator23, Oxygen, Makespace Madrid,varias empresas importantes en industria y varios muy prometedores de personas individuales. 

El equipo asturiano ha mostrado una demo de su prototipo que promete mucho , el cual será validado con el Departamento de Sanidad del Principado de Asturias. Si se demuestra que puede ser útil en situaciones de escasez de respiradores comerciales, las comunidades maker en cada CC.AA. pueden llevar el proyecto a escala España en cuestión de días. 

https://twitter.com/ReesistenciaT/status/1241052680119824385?s=20


Respirador maker asturiano

Pantallas

Dada la eficaz protección  física   que ofrecen, el equipo  esta imprimiendo en 3d estructuras que van montadas  sobre la cabeza   para albergar un filtro de acetato el cual ha demostrado ser muy eficaz    si lo complementas con mascarillas  y gafas de protección

El modelo mas popular por su simplicidad   y rápida impresión  es MODEL SACYL.STL  .

Estos son algunos de los parámetros que se están usando para imprimir el  Modelo SACYL:

      • Diámetro del Nozzle: 0,4mm
      • Altura de capa : 0,28 – 0,30
      • Grosor de pared: 1,2
      • Capas superiores/inferiores: 4
      • Relleno: 50%
      • Patrón de relleno: grid, rejilla
      • Velocidad: 80 mm/s
      • Velocidad superior/inferior: 40 mm/s
      • Sin soporte

 

Por cierto,  para acelerar la producción   podemos imprimir en cualquier impresora 3d  de  300x300x300  dos unidades por impresión  , como vemos en la imagen superior,

A todos aquellos personas que estén fabricando pantallas, las tengan ya hechas o las vayan a fabricar es importante destacar algunas pautas:

      •  Eliminen los filos cortantes (pasando un cutter es suficiente), sobre todo la zona que entra en contacto con la frente.
      • Redondear los picos inferiores del acetato, si es que lo tiene a disposición
      • Para que la pantalla no se empañe, es necesario que deje pasar algo de aire por la parte superior, sí ha impreso algún modelo sin agujeros intente ver la forma de realizárselos sin destrozar el trabajo realizado.

Una vez impresas  es importante que se registre cada una de las pantallas ( hay grupos de Telegram en https://t.me/coronavirus_makers) . Mientras se termina de gestionar las logística, cuando  se  tenga un número importante de pantallas (+ de 10) fabricadas, se limpien  y se embolsen  usando bolsas nuevas con auto-cierre (bolsas de basura),guantes y mascarilla y se limpie  cada pantalla con disolución de agua y legía (10%) y papel adsorbente desechable.

Tambien es muy importante, que cuando se cambie de pantalla se  limpie también  los guantes con la disolución, antes de la siguiente pantalla a limpiar.

 

Mascarillas 

Hay muchas confirmaciones de centros hospitalarios informando que las mascaras impresas  en 3D   comparándolas  con una bufanda , sobre  todo por el aspecto psicológico de  que pueden dar una falsa sensación de seguridad. 

Como se puede ver en la imagen   ya esta demostrado que una mascarilla impresa  en 3d   y una bufanda hacen prácticamente lo mismo  debido al carácter poroso  que permite dejan pasar las partículas infecciosas . 

El problema  como nos dicen los expertos no es el diseño ,material  o la buena intención ,   sino la falsa seguridad que puede provocar el llevarla puesta  pues con impresión 3d las mascarillas no aíslan de los virus por muchos filtros que intentemos ponerlos ( por  ejemplo el que usa goma eva )

Por  tanto,  si se quiere ayudar   construyendo material  , es   mas aconsejable imprimir pantallas protectoras  y nos mascarillas 

No obstante desde el grupo de Telegram de  Aire , solicitan ayuda:

      • Necesitan diseñadores 3D con cierta experiencia

      • Necesitan expertos que nos ayuden con morfología facial

      • Necesitan moldes para inyectar silicona

Adicionalmente  también hacen falta filtros de los siguientes tipos para evaluación: recambios de filtros y prefiltros P2, N95, P3, trapezoidales y circulares

 

Valvulas

Por ultimo esperando   que no llegue a ser necesario es interesante recordar la fabricación de reemplazos de válvulas para respiradores en impresión 3D que llevaron a cabo ingenieros italianos para el Hospital de Brescia,

 

 

 

Si es usted querido lector  un maker, aficionado , médico o ingeniero y puede aportar su granito de arena en este proyecto, pásese por sus diferentes grupos de Twitter, telegram  o la  web https://foro.coronavirusmakers.org/: