Aproximadamente en el año 2018 trabajé en la parte de mantenimiento en un empresa de juegos electrónicos, ahí aprendí muchas cosas de electrónica, y hoy les compartiré y les enseñaré a como desarrollar parte electrónica de una mesa de juego de futbol. Prácticamente veremos desde el principio de funcionamiento, el esquemático electrónico, la creación de una tarjeta PCB y finalmente seremos testigos del funcionamiento del proyecto completo.
ESPECIFICACIONES TÉCNICAS
- Tensión de alimentación……………………….…………12VDC
- Corriente de alimentación………………….……………150mA
- Entadas digitales nivel bajo……………….……………….4
- Programación directa(PC – main board)………………………..Sí
- Salida RELAY………………………………………………………4
- Tensión salida AC…………………………..….……220V
- Corriente AC………………………………………….8A
- Tensión DC……………………………………………30V
- Corriente DC…………………………………………8A
- Salida TRANSISTOR………………………………………….4
- Tensión salida DC…………………………….……12V
- Corriente DC……………………….……………….5A
- Condiciones ambientales min……………………….….-10°
- Condiciones ambientales max…………………..……….85°
- Empotrable…………………………………………………………Sí
LISTA DE MATERIALES
Categoría | Cantidad | Referencias | Valor | PCB Package | DATASHEET |
Condensadores | 8 | C1,C2,C3,C5,C6,C7,C11,C12 | 100nF | 0603_CAP | (see & buy) |
Condensadores | 1 | C4 | 470uF | CAP SMD 10.5X10MM ALUMINUM 470UF/35V | (see & buy) |
Condensadores | 1 | C8 | 220uF | CAP SMD 6.3X7.7MM ALUMINUM 220UF/16V | (see & buy) |
Condensadores | 1 | C9 | 100nF | 1206_CAP | (see & buy) |
Condensadores | 1 | C10 | 1000uF | ELEC-RAD25 | |
Resistencias | 10 | R1,R7,R8,R10,R12,R14,R16,R18,R22,R23 | 10k | 0603_RES | (see & buy) |
Resistencias | 8 | R2,R3,R9,R11,R13,R15,R17,R38 | 1k | 0603_RES | (see & buy) |
Resistencias | 1 | R4 | 1M | 0603_RES | (see & buy) |
Resistencias | 4 | R5,R6,R20,R21 | 10k | 1206_RES | (see & buy) |
Resistencias | 1 | R19 | 4.7k | 0603_RES | (see & buy) |
Resistencias | 14 | R24,R25,R26,R27,R28,R29,R30,R31,R32,R33,R34,R35,R36,R37 | 220 | 0603_RES | (see & buy) |
Integrados | 1 | U1 | ATMEGA328P | QFP80P900X900X120-32 | (see & buy) |
Integrados | 1 | U2 | CH340C | SO16 | (see & buy) |
Integrados | 2 | U3,U4 | ILD207T | SO8 | (see & buy) |
Integrados | 2 | U5,U6 | 74HC595 | SO16 | (see & buy) |
Integrados | 1 | U7 | 7805 | P1 | (see & buy) |
Transistores | 4 | Q1,Q2,Q3,Q4 | MJD112-001 | TO228P1003X238-3 | (see & buy) |
Transistores | 1 | Q5 | PMBT3904,215 | SOT23-3 | (see & buy) |
Diodos | 1 | D1 | B330A-13-F | DIOM5336X240 | (see & buy) |
Diodos | 1 | D2 | RR1VWM6STFTR | SOD2614X116 | (see & buy) |
Diodos | 2 | D3,D4 | LED-RED | LEDC2012X120 | (see & buy) |
Miscelánea | 2 | 1,2 | DISPLAY 7SEG | Común | |
Miscelánea | 1 | BTN1 | RST | BUTTON SMD 2P | (see & buy) |
Miscelánea | 1 | J1 | MICRO USB B | MICRO USB B | (see & buy) |
Miscelánea | 4 | J2,J5,J6,J7 | TBLOCK-M3 | T-BLOCK 3PIN BLUE | (see & buy) |
Miscelánea | 2 | J3,J4 | TBLOCK-M2 | T-BLOCK 2PIN BLUE | (see & buy) |
Miscelánea | 1 | RL1 | 12V | RL12V NORMAL | Común |
Miscelánea | 1 | X1 | CRYSTAL SMD S | OSCILADOR SMD CERAMIC RESONATORS | (see & buy) |
CONEXIONES EXTERNOS
COMO SUBIR BOOTLOADER
PROPÓSITO GENERAL
CODIGO
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 int clockpin1 = 9; //Cuando ay que leer los bit SH int data1 = 11; //Envio datos DS int latch1 = 10; //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 const int coin = 4; // pin 4 como entrada para el coin //VARIABLES PARA EL CONTADOR ASCENDIENTE // estas variables si puede ser cambiado int contador = 0; int contador1 = 0; int total = 0; boolean go = false; int estado_coin = 0; // estado actual del pulsador int lastButtonState_coin = 0; // estado del pulsado anterior int estado_left_sen = 0; // estado del pulsado actual int lastButtonState_left = 0; // estado del pulsado anterior //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 relay = 12; // relay //Aqui esta el array que contiene todos los numeros para nuestro display //El display tiene las conexiones alcontrario ell pin 8 del 74hc595 es el primer dijito binario const int numero[] = { // 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 }; const int numero1[] = { // display A 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(latch1, OUTPUT); pinMode(clockpin1, OUTPUT); pinMode(data1, OUTPUT); pinMode (relay, OUTPUT); contador1 = 0; digitalWrite(latch1, LOW); shiftOut(data1, clockpin1, MSBFIRST, numero1[contador1]); // lee el arreglo y pasa cada numero a lectura binaria digitalWrite(latch1, HIGH); contador = 0; digitalWrite(latch, LOW); shiftOut(data, clockpin, MSBFIRST, numero[contador]); // lee el arreglo y pasa cada numero a lectura binaria digitalWrite(latch, HIGH); } void loop() { // almacenamos la lectura de la entrada de pin 2 estado_left_sen = digitalRead(left_sen); estado_right_sen = digitalRead(right_sen); estado_coin = digitalRead(coin); if (go == false) { if (estado_coin != lastButtonState_coin) { // si el estado fue cambiado, incremente el conteo if (estado_coin == LOW) { go = true; if (go == true) { digitalWrite(relay, 1); delay(3000); digitalWrite(relay, 0); } } } } lastButtonState_coin = estado_coin; if (go == true) { // comparar el estado del botón a su estado anterior if (estado_left_sen != lastButtonState_left) { // si el estado fue cambiado, incremente el conteo if (estado_left_sen == LOW) { // si el estado actual es alto, entonces // que pase de off a on: if (contador >= 10) { contador = 0; } contador++; digitalWrite(latch, LOW); shiftOut(data, clockpin, MSBFIRST, numero[contador]); // lee el arreglo y pasa cada numero a lectura binaria digitalWrite(latch, HIGH); delay(200); } } lastButtonState_left = estado_left_sen; // comparar el estado del botón a su estado anterior if (estado_right_sen != lastButtonState_right ) { // si el estado fue cambiado, decrementa el conteo if (estado_right_sen == LOW) { // si el estado actual es alto, entonces // que pase de off a on: if (contador1 >= 10) { contador1 = 0; } contador1++; digitalWrite(latch1, LOW); shiftOut(data1, clockpin1, MSBFIRST, numero1[contador1]); // lee el arreglo y pasa cada numero a lectura binaria digitalWrite(latch1, HIGH); delay(200); } } //guarda el último estado actual como el ultimo estado //para el proximo bucle lastButtonState_right = estado_right_sen; } total = contador + contador1; if (total == 9) { go = false; delay(2000); contador1 = 0; digitalWrite(latch1, LOW); shiftOut(data1, clockpin1, MSBFIRST, numero1[contador1]); // lee el arreglo y pasa cada numero a lectura binaria digitalWrite(latch1, HIGH); contador = 0; digitalWrite(latch, LOW); shiftOut(data, clockpin, MSBFIRST, numero[contador]); // lee el arreglo y pasa cada numero a lectura binaria digitalWrite(latch, HIGH); total = 0; } }