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

- Tensión de alimentación……………………….…………12VDC
- Corriente de alimentación………………….……………2.5A
- Entadas digitales 0V……………………….……2
- Salida a transistor 12V – 1A…………………….1
- Entorno de programación………………………..………..Arduino IDE
- Condiciones ambientales min……………………….….-40°
- Condiciones ambientales max…………………..……….150°
- Dimensiones……………………………………………………….300x170mm
- Programación directa (PC-placa cronometro)……Sí
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 |
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); }