Icono del sitio ELECTROALL

Como hacer un cronómetro gigante

YouTube
YouTube
Instagram
Instagram
GitHub
GitHub

Desde hace mucho tiempo llevo practicando el ciclismo de montaña y en la ciudad que vivo se realizan competencias cada cierto tiempo. Sin embargo, en ninguna de estas competencias se hace uso de la tecnología para el control de los competidores, y yo como electrónico me propuse crear todo el sistema de control. Hablamos del cronómetro, del contador de vueltas, y lo más importante el sistema de control que lleva cada competidor el chip RFID, prácticamente este chip permite saber cuánto tiempo se ha demorado para llegar a la meta, además con este chip se sabrá en que puesto quedó el atleta. Y bueno hoy empezaremos creando el cronometro que será capaz de mostrar los segundos, minutos y las horas. cuyas dimensiones totales son de 1metro por 30 cm, prácticamente aprenderemos a crear desde el esquemático electrónico el diseño pcb, y el armado de las estructuras.

DATOS TÉCNICOS
  1. Tensión de alimentación……………………….…………12VDC
  2. Corriente de alimentación………………….……………2.5A
  3. Entadas digitales 0V……………………….……2
  4. Salida a transistor 12V – 1A…………………….1
  5. Entorno de programación………………………..………..Arduino IDE
  6. Condiciones ambientales min……………………….….-40°
  7. Condiciones ambientales max…………………..……….150°
  8. Dimensiones……………………………………………………….300x170mm
  9. Programación directa (PC-placa cronometro)……Sí
DISEÑO TARJETA PCB
LISTA DE COMPONENTES ELECTRÓNICOS
Categoría Cantidad Referencias Valor PCB Package Coste unitario
Condensadores 6 C1,C2,C3,C4,C5,C6 100nF 0603_CAP
Condensadores 1 C7 470uF CAP SMD 10.5X10MM ALUMINUM 470UF/35V
Condensadores 1 C8 220uF CAP SMD 6.3X7.7MM ALUMINUM 220UF/16V
Condensadores 1 C9 100nF 1206_CAP
Condensadores 1 C10 1000uF ELEC-RAD25
Resistencias 4 R1,R7,R8,R10 10k 0603_RES
Resistencias 3 R2,R3,R9 1k 0603_RES
Resistencias 1 R4 1M 0603_RES
Resistencias 2 R5,R6 10k 1206_RES
Resistencias 1 R11 220 0603_RES
Resistencias 51 R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,R23,R24,
R25,R26,R27,R28,R29,R30,R31,R32,R33,R34,R35,R36,R37,
R38,R39,R40,R41,R42,R43,R44,R45,R46,R47,R48,R49,R50,
R51,R52,R53,R54,R55,R56,R57,R58,R59,R60,R61,R62
180 1206_RES
Integrados 1 U1 ATMEGA328P QFP80P900X900X120-32
Integrados 1 U2 CH340C SO16
Integrados 1 U3 ILD207T SO8
Integrados 1 U4 7805 TO263-3S
Integrados 1 U5 LM35 TO92
Integrados 1 U6 TLP127 SOIC250P670X300-4
Integrados 1 U7 ULN2803 SO18W
Integrados 1 U8 74HC595 SO16
Transistores 1 Q1 MJD112-001 TO228P1003X238-3
Diodos 196 D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,
D13,D14,D15,D16,D17,D18,D19,D20,D21,D22,
D23,D24,D25,D26,D27,D28,D29,D30,D31,D32,
D33,D34,D35,D36,D37,D38,D39,D40,D41,D42
,D43,D44,D45,D46,D47,D48,D49,D50,D51,D52,
D53,D54,D55,D56,D57,D58,D59,D60,D61,D62,
D63,D64,D65,D66,D67,D68,D69,D70,D71,D72,
D73,D74,D75,D76,D77,D78,D79,D80,D81,D82,
D83,D84,D85,D86,D87,D88,D89,D90,D91,D92,
D93,D94,D95,D96,D97,D98,D99,D100,D101,D102,
D103,D104,D105,D106,D107,D108,D109,D110,D111,D112,
D113,D114,D115,D116,D117,D118,D119,D120,D121,D122,
D123,D124,D125,D126,D127,D128,D129,D130,D131,D132,
D133,D134,D135,D136,D137,D138,D139,D140,D141,D142
,D143,D144,D145,D146,D147,D148,D149,D150,D151,D152,
D153,D154,D155,D156,D157,D158,D159,D160,D161,D162,
D163,D164,D165,D166,D167,D168,D169,D170,D171,D172,
D173,D174,D175,D176,D177,D178,D179,D180,D181,D182,
D183,D184,D185,D186,D187,D188,D189,D190,D191,D192,
D193,D194,D195,D196
LED-RED LED CLEAR 5MM
Diodos 1 D197 B330A-13-F DIOM5226X230N
Miscelánea 1 BTN1 RST BUTTON SMD 2P
Miscelánea 1 J1 JACK USB 2 TIPO B JACK USB 2.0 TYPE B
Miscelánea 2 J2,J4 PWR_IN JACK POWER 12V V3
Miscelánea 1 J3 PINREX 733-72-04TB10 PINREX 733-72-04TB10
Miscelánea 2 J5,J6 HX30002-6A HX30002-6A
Miscelánea 1 X1 CRYSTAL SMD S OSCILADOR SMD CERAMIC RESONATORS
PARTES Y CONEXIONES EXTERNAS
CÓDIGO ARDUINO
int clockpin = 8; //Cuando ay que leer los bit      SH
int data     = 6;   //Envio datos                     DS
int latch    = 7;  //indica pin de salida en el chip ST

// no cambiar el const int
const int  left_sen  = 2;    // pin 2 como entrada para el sensor izquierdo
const int  right_sen = 3;    // pin 3 como entrada para el sensor derecho

//VARIABLES PARA EL CONTADOR ASCENDIENTE
// estas variables si puede ser cambiado
int contador             = 0;
int contadorU            = 0;
int contadorD            = 0;
int contadorC            = 0;
int contadorM            = 0;
int contadorUU           = 0;
int estado_left_sen      = 0;      // estado  del pulsado actual
int lastButtonState_left = 0;     // estado  del pulsado anterior

boolean start            = false;
boolean stopp            = false;

//VARIABLES PARA EL CONTADOR DESCENDIENTE
// estas variables si puede ser cambiado

int estado_right_sen      = 0;         // estado  del pulsado actual
int lastButtonState_right = 0;     // estado  del pulsado anterior

const int alrm = 12; // alrm

//Aqui esta el array que contiene todos los UNDs para nuestro display
//El display tiene las conexiones alcontrario ell pin 8 del 74hc595 es el primer dijito binario

const int NUM[] = { // display B
  63,    //Numero 0 en binario es : 11111100
  6,     //Numero 1 en binario es : 00000110
  91,    //Numero 2 en binario es : 11011010
  79,    //Numero 3 en binario es : 11110010
  102,   //Numero 4 en binario es : 01100110
  109,   //Numero 5 en binario es : 10110110
  125,   //Numero 6 en binario es : 10111110
  7,     //Numero 7 en binario es : 11100000
  127,   //Numero 8 en binario es : 11111110
  103,   //Numero 9 en binario es : 11110110
  63,    //Numero 0 en binario es : 11111100
};

void setup() {

  pinMode(left_sen, INPUT);
  pinMode(right_sen, INPUT);

  pinMode(latch, OUTPUT);
  pinMode(clockpin, OUTPUT);
  pinMode(data, OUTPUT);

  pinMode (alrm, OUTPUT);

  digitalWrite(latch, LOW);
  shiftOut(data, clockpin, MSBFIRST, NUM[contador]); // lee el arreglo y pasa cada NUM a lectura binaria
  shiftOut(data, clockpin, MSBFIRST, NUM[contador]); // lee el arreglo y pasa cada NUM a lectura binaria
  shiftOut(data, clockpin, MSBFIRST, NUM[contador]); // lee el arreglo y pasa cada NUM a lectura binaria
  shiftOut(data, clockpin, MSBFIRST, NUM[contador]); // lee el arreglo y pasa cada NUM a lectura binaria
  shiftOut(data, clockpin, MSBFIRST, NUM[contador]); // lee el arreglo y pasa cada NUM a lectura binaria
  digitalWrite(latch, HIGH);
}
void loop()
{
  estado_left_sen = digitalRead(left_sen);
  estado_right_sen = digitalRead(right_sen);

  if (estado_left_sen != lastButtonState_left) {
    if (estado_left_sen == LOW) {
      start = true;
    }
  }
  lastButtonState_left  = estado_left_sen;

  if (start == true) {
    if (contadorU >= 10) {
      contadorU = 0;
    }
    if (contadorU >= 9) {
      contadorD++;
    }
    if (contadorD >= 6) {
      contadorD = 0;
      contadorC++;
    }
    if (contadorC >= 10) {
      contadorC = 0;
      contadorM++;
    }
    if (contadorM >= 6) {
      contadorM = 0;
      contadorUU++;
    }
    if (contadorUU >= 10) {
      contadorUU = 0;

    }
    contador++;
    contadorU++;
    cont ();
    delay(1000);
  }

  if (estado_right_sen != lastButtonState_right ) {
    if (estado_right_sen == LOW) {
     start =false;
    }
  }
  lastButtonState_right  = estado_right_sen;
}
void cont() {
  digitalWrite(latch, LOW);
  shiftOut(data, clockpin, MSBFIRST, NUM[contadorU]); // lee el arreglo y pasa cada NUM a lectura binaria
  shiftOut(data, clockpin, MSBFIRST, NUM[contadorD]); // lee el arreglo y pasa cada NUM a lectura binaria
  shiftOut(data, clockpin, MSBFIRST, NUM[contadorC]); // lee el arreglo y pasa cada NUM a lectura binaria
  shiftOut(data, clockpin, MSBFIRST, NUM[contadorM]); // lee el arreglo y pasa cada NUM a lectura binaria
  shiftOut(data, clockpin, MSBFIRST, NUM[contadorUU]); // lee el arreglo y pasa cada NUM a lectura binaria
  digitalWrite(latch, HIGH);
}
VIDEO
Salir de la versión móvil