Skip to the content
PCBKitNew board
2 layers52.5 × 17 mmPlaca usb, the printed circuit board in 3D

Programador USB que usamos en el club

Size
52.5 × 17 mm
Copper layers
2
Thickness
1.6 mm
Parts
22
Nets
29
Pads
113
Tracks, vias
193, 10
Pours
2
Routed
Yes
KiCad
KiCad 4
Created
7 Jun 2015
Updated
6 Jul 2024

Overview

Placa usb is an open-source printed circuit board by cdrfiuba, from the cdrfiuba/programador repository on GitHub. It is a 2-layer board of 52.5 × 17 mm with 22 parts on 29 nets, routed with 193 tracks and 10 vias.

It is built around the ATMEGA16U2-MU, LD1117S33TR(MS) and TXB0106PW, with the JUMPER3 among its other parts. Its parts include 7 capacitors, 5 resistors, 3 ICs, 3 connectors and 2 diodes. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

4

README

README.md

Programador 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

Ubicación de cada pin en el puerto.

Wiki

En la Wiki de este repositorio se detalla la construcción de un programador como su uso.

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.

Diagrama de la conexión en un protoboard

Asumiendo que se utiliza un cristal de 16 MHz se crea un archivo main.c con el siguiente código:

C
#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

bash
#!/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.elf

A 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.

bash
#!/usr/bin/env bash

avrdude -v -p m168 -c usbtiny -U lfuse:w:0xce:m -U hfuse:w:0xdf:m -U efuse:w:0xf9:m

Se da permiso de ejecución a ambos scripts por única vez

console
$ chmod +x programar.sh
$ chmod +x fusibles.sh

Se 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.

console
$ ./fusibles.sh

Se programa el microcontrolador

console
$ ./programar.sh

Ahora puede corroborarse que a la salida del pin 26 hay una onda cuadrada de 500Hz.

Parts

22
QtyValueFootprintReferences
3100nSMD_Packages:SMD-0805C4, C5, C6
21.5KSMD_Packages:SMD-0805R1, R2
222SMD_Packages:SMD-0805R4, R5
222pSMD_Packages:SMD-0805C1, C3
110KSMD_Packages:SMD-0805R3
11uSMD_Packages:SMD-0805C2
133uSMD_Packages:SMD-0805C7
18MHzCrystals:Crystal_SMD_0603_2Pads_obsoleteX1
1ATMEGA16U2SMD_Packages:TQFP-32IC1
1CONN_01X06Popurri_CDR:Socket_Strip_smd_1x06P3
1CONN_02X05Socket_Strips:Socket_Strip_Straight_2x05P2
1JUMPER3Socket_Strips:Socket_Strip_Straight_1x03JP1
1LD1117S33TRSMD_Packages:SOT-223U1
1LED_ROJOLEDs:LED-0805D1
1LED_VERDELEDs:LED-0805D2
1TXB0106Housings_SSOP:TSSOP-16_4.4x5mm_Pitch0.65mmU2
1USB_APopurri_CDR:USB_A_customP1

Questions

How big is the Placa usb PCB?

It measures 52.5 × 17 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Placa usb use?

22 parts, built around the ATMEGA16U2-MU, LD1117S33TR(MS), TXB0106PW and JUMPER3. 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 KiCad files?

From the cdrfiuba/programador repository on GitHub, at the commit this page was made from: the board is placa/placa_usb.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Placa usb design in my own project?

Its repository states no licence, so its author keeps all rights: ask cdrfiuba before reusing the design.

More from cdrfiuba/programador

2
  • 2 layers97.4 × 97.4 mmPlaca usb plantilla, the printed circuit board in 3D

    Placa usb plantilla

    cdrfiuba/programador

    Programador USB que usamos en el club

    140 parts4
  • 2 layers84.6 × 25.4 mmPlaca usb non pth, the printed circuit board in 3D

    Placa usb non pth

    cdrfiuba/programador

    Programador USB que usamos en el club

    23 parts4

Similar boards

  • 2 layers15.7 × 67.1 mmRudy, the printed circuit board in 3D

    Rudy

    sgreg/rudy

    RUDY - the Random USB Device and generic ATmega328 development board

    26 parts7
  • 4 layers68.6 × 53.3 mmIcezum, the printed circuit board in 3D

    Icezum

    FPGAwars/icezum

    :star2: IceZUM Alhambra: an Arduino-like Open FPGA electronic board

    218 parts357GPL-3.0
  • 6 layers30 × 48 mmHolter, the printed circuit board in 3D

    Holter

    peterisza/mobilecg

    MobilECG II is an open source clinical grade Holter ECG. For more information, please visit http://mobilecg.hu.

    231 parts66
  • 2 layers152.4 × 73.7 mmEightoduino, the printed circuit board in 3D

    Eightoduino

    inaxeon/eightoduino

    119 parts21GPL-2.0
  • 4 layers239.4 × 100 mmTrain locs board, the printed circuit board in 3D

    Train locs board

    devramsean0/train-locs-board

    A LED train location board, meant to show the trains on platform at any station

    149 parts
  • 4 layers79.6 × 92.5 mmWCS1700-Calibrator, the printed circuit board in 3D

    WCS1700-Calibrator

    ekatynski/WCS1700-Calibrator

    A board designed to aid in calibrating six Winson WCS1700 hall effect sensors a the same time.

    120 parts
  • 4 layers68.6 × 53.3 mmIcezum, the printed circuit board in 3D

    Icezum

    nicolasarcila-eng/Alhambra-II

    The project documentation is located in the wiki

    226 partsGPL-3.0
  • 4 layers127.3 × 73 mmSpeed controller, the printed circuit board in 3D

    Speed controller

    rkleva/Low-Power-Inverter-STM32

    179 parts