

Placa usb plantilla
Programador USB que usamos en el club
- Size
- 97.4 × 97.4 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 140
- Nets
- 26
- Pads
- 432
- Tracks, vias
- 584, 8
- Pours
- 8
- Routed
- Yes
- KiCad
- KiCad 4
- Created
- 7 Jun 2015
- Updated
- 6 Jul 2024
Overview
Placa usb plantilla is an open-source printed circuit board by cdrfiuba, from the cdrfiuba/programador repository on GitHub. It is a 2-layer board of 97.4 × 97.4 mm with 140 parts on 26 nets, routed with 584 tracks and 8 vias.
It is built around the 74HC125N-HX. Its parts include 36 resistors, 20 capacitors, 16 diodes, 12 connectors and 8 ICs. It belongs with the AVR (ATmega, ATtiny) boards of this library.
Main components
1README
README.mdProgramador del Club de Robótica
El club cuenta con varios programadores ISP.
Cada programador cuenta con dos conexiones:
- Target (targ)
- La conexión más usada. Sirve para programar un microcontrolador externo.
- ISP
- Sirve para programar el programador (usualmente usando otro programador del club). De esta forma un programador sirve para crear más programadores.
Conexiones
Cada puerto cuenta con 6 pines conectados a un cable plano:
- VCC (usualmente +5V que vienen de la conexión USB)
- GND
- SCK Señal de clock.
- RESET Permite "apagar" el microcontrolador y programarlo por SPI. De esa forma los demás pines pueden ser usados para otras tareas cuando el microcontrolador no está siendo programado.
- MISO (master-in slave-out)1 Datos del microcontrolador al programador.
- MOSI (master-out slave-in)1 Datos del programador al microcontrolador.
1 Nota: SIMO y SOMI suelen ser nombres más simpáticos pero menos usados.
La ubicación de cada pin en el puerto se muestra a continuación
Wiki
En la Wiki de este repositorio se detalla la construcción de un programador como su uso.
- Programador del Club de Robótica
- Windows necesita un driver
- Fabricantes
- Introducción súper básica a los microcontroladores
- Quemar un bootloader de Arduino
Pequeña guía para programar un microcontrolador externo
Se utiliza el microcontrolador ATMEGA168A a modo de ejemplo (ya que el club cuenta con varios).
La siguiente guía asume el uso de un oscilador externo, si bien el microcontrolador puede ser programador utilizando su oscilador interno.
Se conecta al microcontrolador como muestra la siguiente figura. El valor ideal de los capacitores conectados al cristal se detalla en la hoja de datos del microcontrolador. Para este microcontrolador los capacitores recomendados son de 12pF a 22pF. El capacitor de desacople no es requerido pero es siempre una buena idea agregar uno.
Asumiendo que se utiliza un cristal de 16 MHz se crea un archivo main.c con el siguiente código:
#include <avr/io.h>
#define F_CPU 16000000UL // Corresponde a 16 MHz
#include <util/delay.h>
int main (void) {
DDRC |= _BV(DDC3); // Se setea el pin 26 como salida
while(1) {
PORTC |= _BV(PC3); // Se prende el pin 26
_delay_ms(1); // Se espera un milisegundo
PORTC &= ~_BV(PC3); // Se apaga el pin 26
_delay_ms(1); // Se espera otro milisegundo
}
return 1;
}Este código produce una onda cuadrada de 500Hz a la salida del pin 26.
Para programadorlo se crea el siguiente script programar.sh
#!/usr/bin/env sh
# Compilación del programa
avr-gcc -Os -mmcu=atmega168a -c -o main.o main.c
avr-gcc -Os -mmcu=atmega168a -o main.elf main.o
avr-objcopy -O ihex -R .eeprom main.elf main.hex
# Cargar el programa en el microcontrolador
avrdude -v -p m168 -c usbtiny -U flash:w:main.hex
# Limpieza de los archivos generados
rm main.o main.hex main.elfA su vez se crea un script fusibles.sh para setear los fuses del microcontrolador
Si bien se puede obtener el valor de los fusibles a mano, existen páginas que ya hacen este trabajo.
Una posible página es https://www.engbedded.com/fusecalc
Esta página además posee la ventaja de darnos los flags para el comando de avrdude.
#!/usr/bin/env bash
avrdude -v -p m168 -c usbtiny -U lfuse:w:0xce:m -U hfuse:w:0xdf:m -U efuse:w:0xf9:mSe da permiso de ejecución a ambos scripts por única vez
$ chmod +x programar.sh
$ chmod +x fusibles.shSe setean los fusibles por única vez. Puede correrse también en el futuro si, por ejemplo, se desea dividir la cuenta del clock por 8, o utilizar el oscilador interno u otras razones. Pero ha de tenerse en cuenta que se debe modificar el script.
$ ./fusibles.shSe programa el microcontrolador
$ ./programar.shAhora puede corroborarse que a la salida del pin 26 hay una onda cuadrada de 500Hz.
Parts
140| Qty | Value | Footprint | References |
|---|---|---|---|
| 40 | VAL** | Connect:1pin | 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin, 1pin +24 |
| 20 | 1.5K | R1 | R1, R1, R1, R1, R2, R2, R2, R2, R3, R3, R3, R3, R4, R4, R4, R4 +4 |
| 8 | 100n | C1 | C1, C1, C1, C1, C5, C5, C5, C5 |
| 8 | 22p | C1 | C3, C3, C3, C3, C4, C4, C4, C4 |
| 8 | 27 | R1 | R7, R7, R7, R7, R8, R8, R8, R8 |
| 8 | 3.6V | D3 | D1, D1, D1, D1, D2, D2, D2, D2 |
| 4 | 100u | C1V5 | C2, C2, C2, C2 |
| 4 | 10K | R1 | R6, R6, R6, R6 |
| 4 | 12MHz | HC-18UV | X1, X1, X1, X1 |
| 4 | 470k | R1 | R9, R9, R9, R9 |
| 4 | 74HC125N | 14DIP-ELL300 | U1, U1, U1, U1 |
| 4 | ATTINY2313DIP/SO | DIP-20__300_ELL | U2, U2, U2, U2 |
| 4 | ISP | pin_array_3x2 | P6, P6, P6, P6 |
| 4 | LED_ROJO | LEDV | D4, D4, D4, D4 |
| 4 | LED_VERDE | LEDV | D3, D3, D3, D3 |
| 4 | Targ. | pin_array_3x2 | P7, P7, P7, P7 |
| 4 | USB_A | USB_A_custom | P5, P5, P5, P5 |
| 4 | VCC | SIL-2 | JP1, JP1, JP1, JP1 |
More from cdrfiuba/programador
2- 2 layers84.6 × 25.4 mm

- 2 layers52.5 × 17 mm

Similar boards
- 2 layers252.5 × 168.8 mm

- 2 layers100 × 150 mm

I2c moist sensor pannel
Miceuz/i2c-moisture-sensor
I2C based soil moisture sensor
140 parts258Apache-2.0 - 2 layers132.3 × 79.7 mm

10x breakout printout
CRImier/MyKiCad
My KiCad boards. Can't be bothered uploading individually anymore, so here you go.
140 parts253GPL-3.0 - 2 layers67.3 × 74.9 mm

- 2 layers149.9 × 55.9 mm

- 2 layers271.2 × 93.4 mm

Zerowriter Keyboard
zerowriter/zerowriter_ink
General repo for all things Zerowriter Ink
140 parts46GPL-3.0 - 2 layers173.4 × 161.4 mm

ExtraDox Right
blastrock/ExtraDox
An ergonomic custom keyboard design inspired by the ErgoDox
140 parts45 - 2 layers526 × 20 mm

Multibus mainboard
coriolisinstruments/EurorackModules
Open-source eurorack synthesizer modules and related stuff.
140 parts33
Questions
How big is the Placa usb plantilla PCB?
It measures 97.4 × 97.4 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Placa usb plantilla use?
140 parts, built around the 74HC125N-HX. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Placa usb plantilla KiCad files?
From the cdrfiuba/programador repository on GitHub, at the commit this page was made from: the board is placa/placa_usb_plantilla.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Placa usb plantilla design in my own project?
Its repository states no licence, so its author keeps all rights: ask cdrfiuba before reusing the design.