9 abr 2019
Proyecto horno III
En resumen hoy tocara solventar espero que los ultimos tres errores y ya pasaré a la fase de programación.
De momento así es como va quedando. A mi parecer horrible però como en el fondo es un prototipo y lo más importante será adquirir el conocimiento enen programación y testear sensores me daré por satisfecho si lo logro.
31 mar 2019
Como la vez anterior dejo una imagen a modo de testigo.
29 mar 2019
26 dic 2018
Buscador de polos. Segundo intento.
En resumen habrá que seguir ajustando resistencias, transistores y la longitud del cable que actua como sensor para que termine siendo un instrumento funcional y más fiable .
14 oct 2018
Fabricar líquido para estañar PCBs
Procedimiento
Para obtener la solución, primero obtenemos 1 g de soldadura de estaño sin plomo que contiene 95% o más de estaño metálico. Verifique la MSDS para estar seguro. Ahora a la soldadura agregamos 10 ml de ácido clorhídrico al 30%. Lo que estamos haciendo es cloruro de estaño. La solución burbujeará hidrógeno a medida que la lata se disuelva. Déjelo durante la noche y vierta el sobrenadante transparente en 100 ml de esmalte comercial de metal que contiene tiourea. Utilicé la marca "Tarn-X" para mis experimentos. También puede comprar tiourea directamente y usar 5 g por 100 ml de agua directamente junto con 1 g de ácido sulfúrico. De todos modos, como sea que obtenga su solución de tiourea, el cloruro de estaño agregado lo convertirá en una solución de estañado.
Ahora solo agregue cobre metálico como el de una PCB y una fina capa de estaño lo cubrirá.
Lo que está sucediendo es que normalmente el cloruro de estaño no desplaza el metal de cobre por lo que no se puede hacer una solución de estañado solo con cloruro de estaño. Una perspectiva es que el estaño tiene un potencial redox más bajo que el cobre, por lo que en realidad consumiría energía para desplazar el cobre.
Pero la tiourea forma complejos muy fuertes con el cobre. Esto reduce el potencial redox del cobre por debajo del estaño. Ahora el estaño puede desplazar el cobre.
Materiales
| HCl 33% |
1L
|
10,30€
|
| Tiocarbamida |
1Kg
|
9,50€
|
| SnAg |
100g
|
7,90€
|
| H2SO4 98% |
1L
|
12,20€
|
40€
|
https://www.finishing.com/0200-0399/260.shtml
fuente: https://www.youtube.com/watch?v=Hsw3lOnHaas&t=198s
fuente 2: https://www.youtube.com/watch?v=qBiE48p2D48&t=4s
31 jul 2017
Testigo fusible fundido
Aunque no soy muy de usar fusibles supongo que para algunos circuitos aún se usan. Y si se usan es porque algún dia van a fundirse es por ello que este circuito podria ser de utilidad. Un led que se enciende si se ha fundido el fusible.
Como extra otro circuito testigo de fusible fundido.
30 jun 2015
Sensor de distancia HC-SR04
Conexionado
El esquema no presenta ninguna dificultad ya que tan solo debemos conectar Vcc a 5v, Gnd a masa y echo y trigger a los pines 7 y ocho respectivamente.
Como funciona
Este sensor funciona igual que la eco localización de un murciélago. Primero emite una serie de sonidos y luego espera a obtener el eco contando el tiempo. Luego conociendo la velocidad del sonido podemos determinar a que distancia esta el objeto. Es lo mismo que nos enseñaron de pequeños con los truenos.
Código arduino
#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // Onboard LED
int error = 0;
int maximumRange = 200;
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
error = 1;
pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
Serial.begin (9600);
}
void loop() {
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(20);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
//Calculate the distance (in cm) based on the speed of sound.
// speedOfSound = 331+0.61*temp; // temp *C
distance = duration/58.2;
if (distance >= maximumRange || distance <= minimumRange){
/* Send a negative number to computer and Turn LED ON
to indicate "out of range" */
if( error ){
Serial.println("Out of Range");
error = 0;
}
digitalWrite(LEDPin, HIGH);
}
else {
error = 1;
/* Send the distance to the computer using Serial protocol, and
turn LED OFF to indicate successful reading. */
Serial.println(distance);
digitalWrite(LEDPin, LOW);
}
//Delay 50ms before next reading.
delay(60);
}
17 ene 2015
La familia crece
21 feb 2014
El sensor CNY70
3 sept 2013
Fabricacion PCB. Laminadora.
Hoy tocaba la parte sencilla. Tan solo debía imprimir los circuitos sobre el poliéster pasarlo por la laminadora y atacar el PCB al ácido, y poco más. Pero hoy no tenia que ser el día. La sorpresa ha sido mayúscula cuando la impresora no ennegrecía suficiente las áreas negras. La cosa pero tampoco iba a terminar aquí pues tras pasar varias veces el acetato y placa por la plastificadora no se ha grabado nada, salvo un muy leve gris apenas imperceptible, y ya para finalizar el primer chasco tras limpiar un poco la PCB mi hermano ha detectado que se podía intuir el color del cobre. Entonces he decidido repetir desde el estañado.
Saco un pequeña conclusión y es que la fase de estañado debe ser bien controlada pues la calidad de la fabricación puede determinar el grosor. He decidido montar con un Lm317 un circuito de intensidad constante, reduciendo el voltaje y la intensidad pues de forma visual veo que si se acelera el proceso aparece una ceniza. En fin tengo que averiguar los valores de voltaje, intensidad y poder crear una capa consistente y de calidad.
Otro aspecto que he podido medio corregir ha sido la transferencia del tóner. La segunda vez lo he hecho con papel y agua fría. He procesado el PCB más de diez veces y a una temperatura de 190, 200°C, para terminar con agua fría. La transferencia ha sido muy correcta pero he decidido borrarla pues pistas un poco finas habían perdido continuidad, la masa tenia puntos de estaño, en definitiva no me ha gustado.
Un aspecto positivo al menos ha sido borrar el tóner con acetona. Fácil, rápido y con unos resultados estupendos.
Mañana en un segundo asalto intentaré otro circuito esta vez con elementos smd (1206 y SOIC) y pistas un poco mas anchas allí donde se pueda, y como no con poliéster de nuevo. Estoy seguro que será un éxito y podre pasar a la siguiente fase. Pintura de la máscara de soldadura con pintura UV. Pues tengo ganas de empezar con los smd ya que veo que hay más componentes, más baratos y mejores.
1 jul 2013
De vuelta pero con temas nuevos
Como todo blog que se precie la inactividad y el abandono siempre está pesente. Evidentemente viene acompañado por una serie de justificaciones para terminar con la promesa de ser más activo. Pero este no será el caso. Rescataré el blog y pondré lo que me plazca con regularidad o no.
El hecho es que hace un año que tengo un montón de borradores de artículos que nunca terminé, y otros tantos que pensaba que no iba a publicar pero terminaré por hacerlo. Pues el asunto está en que hace unos meses me compré un flamante Asus Nexus 7. En su momento lo compré mas para ver la experiencia de usuario que otra cosa, pero para convencerme me pasé por una tienda y estuve jugando con el unas tres horas y me sorprendió gratamente. Y es justamente es sobre esto de lo que colgaré algunos artículos o no.
Un detalle que me llama la atención es la gestión de música en dicho aparato. De buenas a primeras, si eres poseedor de un iMac y un iPad, es un tanto extraña pues no hay una app oficial para sincronizar la música como el iTunes. Puedes arrastrar y copiar la música si te descargas una app desde la pagina de android. Pero esta app pasa inadvertida, así que la primera respuesta es que debes subir la música a tu cuenta de google play para luego si quieres poder sincronizarla en tu tableta. Así de fácil verdad? Claro es muy intuitivo. Pero si sigues este método luego no vas a ver las carpetas en tu dispositivo con la aplicación oficial de la pagina de android. Que bien! Pero espera que las sorpresas no acaban aquí pues puedes subir un montón de musica a la nube escucharla con tu dispositivo conectado a la WiFi sin ocupar un solo mega, cosa que con Apple te sale un pelín mas caro que un café. Pero ... Espera me surge una duda como puedo subir y bajar el volumen desde la aplicación Listen? Pues es sencillo por software no se puede, increíble. Es la primera aplicaciones donde el volumen no se toca. Debes usar los botones de Nexus, que al no tener la referencia del botón Home nunca sabes donde están. Lo cierto es que la marca del diseño de google es extrañamente desconcertante. Google con su capital humano y de dinero posee unos ingenieros capaces de sorprendernos con la mejores apps del mundo sin lugar a dudas. Por ejemplo es bien sabido que cuando uno esta leyendo un epub y busca en el diccionario una palabra devolverá la entrada del diccionario en inglés, pero esto en todo caso seria para colgar otra breve reseña en el blog.
10 jul 2012
Comprar electrónica
| Atmega328 | 74HC595N | Arduino Uno | LM35 | LM358 | Total* | |
| rs-online | 4,31€ | 0,47€ | 21,72€ | 2,51€ | 0,28€ | 7,57€ |
| farnell | 5,79€ | 0,56€ | 25,64€ | 1,81€ | 0,23€ | 8,39€ |
| digikey | 2,54€ | 0,53€ | 23,43€ | 1,39€ | 0,40€ | 4,86€ |
| mouser | 1,70€ | 0,58€ | 20,63€ | 1,60€ | 0,38€ | 4,26€ |
| ondaradio | - | 0,47€ | - | 1,66€ | 0,62€ | - |
| diotronic | - | 0,26€ | - | 0,86€ | 0,12€ | - |
| bricogeek | 7,00€ | 1,60€ | 23,48€ | - | - | - |
| futurelect | 3,30€ | 0,50€ | - | 1,95€ | 0,18€ | 5,93€ |
| sparkfun | $5,50 | $1,50 | $29,95 | - | $0,95 | - |
| elactan | 6,00€ | 0,32€ | 21,90€ | 2,18€ | 0,41€ | 8.92€ |
| media | 3,83€ | 0,68€ | 22,80€ | 1,75€ | 0,32€ | 6,65€ |
Algunas son muy caras pero tienen piezas que son difíciles o imposibles de encontrar en otras.
La decisión final donde compramos es nuestra (vuestra) pues a veces vale la pena pagar más por la confianza, por atencion o trato al cliente o por tiempo de respuesta.
nota: los precios son orientativos y canvian en el tiempo pero supongo que sirven para hacerse una idea de donde comprar. Además hay que tener en cuenta los portes.
*sin placa arduino
Utilidades. Calculadoras en internet.
3 jul 2012
Sensor de temperatura MLX90614
Actualizado:
Y aqui el código .ino para el arduino
#include <Wire.h>void setup(){ Serial.begin(9600); Serial.println("Setup..."); i2c_init(); //Initialise the i2c bus PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups } void loop(){ int dev = 0x5A<<1; int data_low = 0; int data_high = 0; int pec = 0; i2c_start_wait(dev+I2C_WRITE); i2c_write(0x07); // read i2c_rep_start(dev+I2C_READ); data_low = i2c_readAck(); //Read 1 byte and then send ack data_high = i2c_readAck(); //Read 1 byte and then send ack pec = i2c_readNak(); i2c_stop(); //This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614) double tempData = 0x0000; // zero out the data int frac; // data past the decimal point // This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte. tempData = (double)(((data_high & 0x007F) << 8) + data_low); tempData = (tempData * tempFactor)-0.01; float celcius = tempData - 273.15; float fahrenheit = (celcius*1.8) + 32; Serial.print("Celcius: "); Serial.println(celcius); Serial.print("Fahrenheit: "); Serial.println(fahrenheit); delay(1000); // wait a second before printing again }
2 jul 2012
Pulsadores y leds
Por ello vamos a poner antes de nada el código fuente del archivo .ini.
const int ledA = 11;
const int ledB = 10;
const int ledC = 9;
const int pushButton1 = 7;
const int pushButton2 = 6;
int pushed = 0;
int count = 0;
void setup(){
pinMode( ledA, OUTPUT);
pinMode( ledB, OUTPUT);
pinMode( ledC, OUTPUT);
pinMode( pushButton1, INPUT);
pinMode( pushButton2, INPUT);
}
void loop(){
int pushedA = digitalRead( pushButton1 );
int pushedB = digitalRead( pushButton2 );
if( pushedA == HIGH ){
pushed++;
if( pushed > 4 ) pushed = 0;
analogWrite( ledC, pushed*255/4 );
}
if( pushedB == HIGH ){
count++;
if( count > 4 )
count=0;
switch( count ){
case 1: showCount( 0, 0); break;
case 2: showCount( 0, 255); break;
case 3: showCount( 255, 0); break;
case 4: showCount( 255, 255); break;
}
}
delay(250);
}
void showCount(int a, int b ){
analogWrite( ledA, a );
analogWrite( ledB, b );
}
Y os dejo el videotutorial por si lo quereis seguir.
1 jul 2012
Usando LDR
Pero que mejor que verlo en este video.
28 jun 2012
Dónde encontrar datasheets
Es muy sencillo buscar los datasheets por internet poniendo el nombre del integrado en nuestro buscador preferido. Aun así podemos seguir otras estrategias y es tener localizadas las paginas dónde se recopilan datasheets o bien buscar directamente en la pagina de los fabricantes. Incluso podemos usar otro modo menos ortodoxo, buscar en paginas de tiendas de electrónica. Las más serias suelen poner enlaces a los datasheets e incluso nos pueden regalar librerías del IC para Eagle o tienen foros de consultas.
Es por ello que pongo una relación de los enlaces varios:
Paginas de datasheets
Paginas de fabricantes
Paginas de tiendas
Paginas con kits de montaje.
- Cebek
- Vellmart
- Farisel
24 jun 2012
Motor paso a paso

/* Stepper Motor Control - one revolution This program drives a unipolar or bipolar stepper motor. The motor is attached to digital pins 8 - 11 of the Arduino. The motor should revolve one revolution in one direction, then one revolution in the other direction. Created 11 Mar. 2007 Modified 30 Nov. 2009 by Tom Igoe */ #includeconst int stepsPerRevolution = 200; // change this to fit the number of steps per revolution // for your motor // initialize the stepper library on pins 8 through 11: Stepper myStepper(stepsPerRevolution, 8,9,10,11); void setup() { // set the speed at 60 rpm: myStepper.setSpeed(60); // initialize the serial port: Serial.begin(9600); } void loop() { // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(stepsPerRevolution); delay(500); // step one revolution in the other direction: Serial.println("counterclockwise"); myStepper.step(-stepsPerRevolution); delay(500); }
RTC DS1307
Para empezar vamos a montar el tinglado

Y finalmente el código
//// Maurice Ribble
// 4-17-2008
// http://www.glacialwanderer.com/hobbyrobotics
// This code tests the DS1307 Real Time clock on the Arduino board.
// The ds1307 works in binary coded decimal or BCD. You can look up
// bcd in google if you aren't familior with it. There can output
// a square wave, but I don't expose that in this code. See the
// ds1307 for it's full capabilities.
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
// Stops the DS1307, but it has the side effect of setting seconds to 0
// Probably only want to use this for testing
/*void stopDs1307()
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.send(0x80);
Wire.endTransmission();
}*/
// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you're passing in valid numbers
void setDateDs1307(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.send(decToBcd(second)); // 0 to bit 7 starts the clock
Wire.send(decToBcd(minute));
Wire.send(decToBcd(hour)); // If you want 12 hour am/pm you need to set
// bit 6 (also need to change readDateDs1307)
Wire.send(decToBcd(dayOfWeek));
Wire.send(decToBcd(dayOfMonth));
Wire.send(decToBcd(month));
Wire.send(decToBcd(year));
Wire.endTransmission();
}
// Gets the date and time from the ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
// A few of these need masks because certain bits are control bits
*second = bcdToDec(Wire.receive() & 0x7f);
*minute = bcdToDec(Wire.receive());
*hour = bcdToDec(Wire.receive() & 0x3f); // Need to change this if 12 hour am/pm
*dayOfWeek = bcdToDec(Wire.receive());
*dayOfMonth = bcdToDec(Wire.receive());
*month = bcdToDec(Wire.receive());
*year = bcdToDec(Wire.receive());
}
void setup()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
Wire.begin();
Serial.begin(9600);
/*
// Change these values to what you want to set your clock to.
// You probably only want to set your clock once and then remove
// the setDateDs1307 call.
second = 00;
minute = 15;
hour = 22;
dayOfWeek = 5;
dayOfMonth = 27;
month = 11;
year = 11;
setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
*/
}
void loop()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
Serial.print(hour, DEC);
Serial.print(":");
Serial.print(minute, DEC);
Serial.print(":");
Serial.print(second, DEC);
Serial.print(" ");
Serial.print(month, DEC);
Serial.print("/");
Serial.print(dayOfMonth, DEC);
Serial.print("/");
Serial.print(year, DEC);
// Serial.print(" Day_of_week:");
// Serial.println(dayOfWeek, DEC);
delay(1000);
}
Hay mucho otro código válido para el DS1307, incluso arduino tiene librerías enteras para él pero este es el que mejor resultado me ha dado.fuente: en este caso el código lo saqué de el blog de carballada
*no tengo ni idea sobre ello!
Usar tu fuente ATX para alimentar tu arduino
Un detalle importante es que las fuentes suelen tener varios sistemas de protección lo que da un poco de seguridad ya que los amperajes de la misma pueden ser importantes.
Resumen de los pines de la fuente de 24 conectores.





