Aventuras y Desventuras de un hobbyist

Aventuras y Desventuras de un hobbyist....

Multiple DS18B20 parasitic mode.

En un post anterior he realizado un termómetro con un Sensor de Temperatura DS18B20 de Dallas.

Esta vez estoy usando 3 sensores de temperatura y así probar el parasitic mode con posibilidad de aplicar  esto en una vivienda unifamiliar para monitorizar la temperatura en diferentes estancias / zonas de la casa.
El cable necesario seria uno de únicamente un par de hilos, uno con GND para el pin 3 del DS18B20 y otro para la transmisión de datos en el pin 2. Planeo realizar pruebas futuras sobre la eficacia del sensor en función de la longitud del cable.
Aquí tenéis un par de imágenes del setup:



 
El código que he usado es el siguiente:




#include "onewire.h"

#include "dallastemperature.h"

#include "liquidcrystal.h" //Libreria para el LCD


// Data wire is plugged into pin 8 on the Arduino

#define ONE_WIRE_BUS 8


// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)

OneWire oneWire(ONE_WIRE_BUS);


// Pass our oneWire reference to Dallas Temperature.

DallasTemperature sensors(&oneWire);
//Iniciamos la libreria del LCD con los respectivos pines

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


void setup(void)

{

  
      //Setup de las lineas y columnas.

      lcd.begin(16, 2);


  Serial.begin(9600);


  // Start up the library

  sensors.begin();

}



void loop(void)

{

  // call sensors.requestTemperatures() to issue a global temperature

  // request to all devices on the bus

  Serial.print("Requesting temperatures...");

  sensors.requestTemperatures(); // Send the command to get temperatures

  Serial.println("DONE");

 

  Serial.print("Temperature for Device 1 is: ");

  Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
float val1 =  sensors.getTempCByIndex(0) ; // Almacenar la temperatura

 Serial.print("Temperature for Device 2 is: ");    

  Serial.println(sensors.getTempCByIndex(1)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
float val2 =  sensors.getTempCByIndex(1) ; // Almacenar la temperatura

 Serial.print("Temperature for Device 3 is: ");

  Serial.println(sensors.getTempCByIndex(2)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
float val3 =  sensors.getTempCByIndex(2) ; // Almacenar la temperatura


    
lcd.setCursor(1, 0);
lcd.print("T1");
lcd.setCursor(0, 1);
lcd.print(val1);
lcd.setCursor(4, 1);
lcd.print("  ");

lcd.setCursor(7, 0);
lcd.print("T2");
lcd.setCursor(6, 1);
lcd.print(val2);do
lcd.setCursor(10, 1);
lcd.print("  ");

lcd.setCursor(13, 0);
lcd.print("T3");
lcd.setCursor(12, 1);
lcd.print(val3);

}

Home made Arduino II

Según lo comentado en el post anterior "Home made Arduino I" pude cargar el bootloader en el Atmega.328 usando el programador paralelo.

Para este proyecto de paperduino he estrenado mi insoladora casera que lamentablemente no ha funcionado, no se si ha faltado tiempo de insolado (7 minutos) o no he manipulado correctamente la placa fotosensible, bueno el caso que luego de insolar la placa y luego de usar el químico para revelar me he encontrado con la sorpresa de que mi placa ha salido como una placa virgen de cobre.
He tenido que recurrir al método "pcb a la plancha" y este fue el resultado:
Seguidamente procedí a hacer los agujeros en la pcb, el clásico sistema del clavo para hacer la guía.
Y asi luego usar el taladrin.
Finalmente aquí tenéis la placa soldada y conectada a una batería de 9v.
  
No he podido hacer uso de la paper-etiqueta porque dificultaba la visión a la hora de introducir los componentes ya que al realizar los huecos con taladrin y a mano sobre la PCB se tiene poca precisión especialmente a la hora de introducir el zócalo para el Atmega328.

Insoladora casera de leds UV

Como a partir de ahora realizare pequeñas placas me he decidido buscar un método casero para crear PCBs, he visto que el método de la plancha da resultados pero si la placa es muy pequeña parece ser que este método no funciona. 

Debo decir que no lo he probado pero que por lo que he encontrado en internet la balanza se inclina en que es un poco difícil conseguir que la impresión se pegue en la placa, aunque hay personas que tienen este método totalmente contralado y que obtienen resultados casi profesionales.

Leyendo me he enterado que las  insoladoras aseguran fidelidad en la transferencia del fotolito a la placa. Como estoy corto de presupuesto he buscado una insoladora casera y hay muchísimos diseños en internet.

Por un momento estuve a punto de embarcarme en la realización de una insoladora dentro de un escáner viejo(Link1 Link2) , hasta que encontré una que he es pequeña y que será suficiente para mis necesidades a mediano plazo.
La idea de tener un cacharo del tamaño de un scaner para hacer PCBs de 7x7cm máximo no me gustaba mucho.
El Diseño lo he sacado de la web de los chicos de RadikalDesig Insoladora leds UV de tamaño compacto, buena presentacion y leds UV.
Me hecho con todo lo necesario:

54 Leds UV de 300nm 100leds en Ebay por 12€
18 resistencias de 68 ohms, 1/4W - 0.36 €
1 conector de dos polos tipo regleta - 0.50€
1 condensador electrolitico de 2200uF y 30v -
1 placa de cobre virgen 100x160 unos 7.6 €


Los chicos de RadikalDesig tienen la suerte de tener una insoladora con la cual han transferido el circuito a la placa, en mi caso yo no dispongo de dicho equipo por lo que opte por usar el método “PCB  a la plancha” , no se si fue el papel que utilizaba o la plancha pero me llevo unos cuantos intentos hasta obtener una transferencia más o menos decente, a pesar de ello tuve que repintar las pistas con un marcador indeleble y luego del ataque químico aquí tenéis el resultado:

Siguiendo el tutorial me he comprado una caja de maquillaje de los chinos. 9€
Luego de soldar los componentes en la PCB y montar la PCB dentro de la caja, este es el resultado:
La parte interior:
La parte trasera con su conector hembra para usar un adaptador 12v. 
Y finalmente con el cristal y la espuma en la tapa para tener un buen contacto entre la trasnparencia y la pcb.
Ahora toca conseguir las transferencias, imprimir, insolar y ver que pasa.

Para esta ocacion he elegido hacer un paperduino.

Home made Arduino I

Me veo en la necesidad de tener más Arduinos, tengo la intención de usar varios sensores de temperatura Ds18b20 para la monitorización de temperatura en una vivienda unifamiliar y no quiero tener problemas con la longitud de los cables sumado a esto tengo unas ganas de ponerme a hacer una pequeña red CAN bus pero eso vendrá luego primero lo primero,  he intentado comprar clones chinos en UK pero lamentablemente llevo un mes esperando. Pensé que tardarían menos desde UK pero ya veis..


He optado por construirme yo mismo los arduinos. Mi intención es realizar el famoso paperduino.

He conseguido todos los componentes, la mayoría ya los tenia excepto por el Atmega328.
El Atmega328 me ha costado 3.96 en Conectrol de Madrid, por cierto tenía mucha esperanza en esta tienda pero al igual que en Diotronic el asesoramiento es mínimo y pareciera que te hacen un favor al venderte.

Antes de ensamblar el Paperduino necesito ser capaz de subir el bootloader de Arduino en el Atmega328 no quisiera tener la placa y luego encontrarme con que no tengo bootloader.

Normalmente la programación de PICs se la realiza con productos específicos como PICKIT o
AVRISP,etc etc. pero si nuestro trabajo gira en torno a Arduino existe una manera económica y muy fácil de realizar la carga del bootloader y es a través de un programador paralelo. Tengo la suerte de tener en el trastero un laptop  DELL L4000 que tiene dicho puerto.

La realización de este cable es muy sencilla simplemente seguir el siguiente gráfico:
El proceso completo lo encuentras en este link ParallelProgrammer

Finalmente este es el cable que he podido crear:




PD: la carga del bootloader fue muy fácil y rápida. Ahora que se que mi Atmega328 tiene arduino procedo con la elaboración de un paperduino.