Although it is now quite easy to burn AVR programs in an Arduino, this has the disadvantage that only one type of controller from the AVR family can be programmed, usually an ATMega 328P. If you use other AVR types in your project, for example because you have to skimp on the available space or the power consumption, you have to build small programming circuits discretely or at least ensure the connection to an ISP burner. Additional components such as LCDs, buttons, etc. are also required to test the function of the circuit. This is an annoying additional amount of work that is annoying if you have to run it regularly. To avoid that, I developed a small programming device that contains all commonly used components. This means that almost all common AVRs can be burned in the PDIP version. In addition to the AVR programmer described here, you need an ISP burner to operate the circuit, such as those offered by various online retailers. The picture on the left shows the example I used. Back to the programmer. The AVR programmer consists of several IC sockets whose contacts of the SCK, MISO, MOSI, Reset, +5V and GND connections are connected in parallel. Essentially, it is about bringing the connections of the external ISP burner and the power supply to the correct pins of the IC socket. To burn the AVRs, all you have to do is plug the desired AVR into its socket and you're good to go. There is also a 16-pin IC socket for free wiring. Furthermore, ten LEDs with series resistors, as well as five buttons and three 10 kOhm trimmers are installed. Each IC socket is connected to several sockets so that you can immediately check the success of your efforts after firing. All components can therefore be connected to one another using wire bridges. The buttons and LEDs can be connected to ground with wire bridges, but other connection variants are also possible. A free connection of the potentiometers is also conceivable. Finally, there is the power supply, which allows it to be supplied from different sources: such as a 9V plug-in power supply and the 5V from the ISP burner. An Arduino Uno R3 takes over the function of a USB to RS232 converter and signals can be sent to the sound card of a PC, for example, via a voltage divider and visualized by a sound card oscilloscope. Also worth mentioning is the LCD display that is in the front panel is installed. The IC socket U3 can optionally be equipped with 8-pin AVRs, such as the ATTiny 45, or 20-pin AVRs, such as the ATTiny 2313. The different ground connection must be taken into account. The two pictures above make this clear. The 16-pin IC socket U4 can be freely wired. An ATTiny 44 can be plugged in here, for example. However, you then have to take care of the correct connections to the power supply and the ISP connections yourself. You simply pick them up from another IC socket, e.g. the 20-pin socket U3 above it. An 8MHz quartz generator on this socket can also be very practical, which you need if you want to save a "fusty" AVR, for example. The circuit diagram: A miniature relay is switched via the 5V supply of the ISP burner. When the relay is activated, a changeover switch of this relay switches the power supply of the ISP burner to fuse F1. In the de-energized state of the relay, the current is taken over by the Arduino Uno R3. The electrolytic capacitor and the 270 ohm resistor connected in parallel reduce the holding current of the relay, with the electrolytic capacitor providing the required pick-up current. The green LED D4 above switch S1 generally signals an active power supply. The red LED D2 next to it burns in addition to the green one when power is supplied via the ISP burner. The ATMega 328P-PU must be removed from the Arduino Uno R3. An Arduino with a 28-pin PDIP controller must therefore be used. Today's computers no longer have an RS232 interface, so we use the Arduino as an interface converter. The serial interface is always useful, since almost every AVR has one and with its help debugging is made considerably easier by reading out the relevant values ​​via a terminal emulation. If your AVRs have a bootloader, then you can even burn the AVR via the serial port. The board layouts: The entire circuit is housed on two boards. The Gerber files can be downloaded here. The IC sockets, as well as the accessible components and connections are on the large board in European format, the power supply is tapped in an Arduino shield. In addition, GND as well as Rx and Tx are used. The audio output and the LCD display are located outside of the two circuit boards. The audio output is installed on the narrow side of the housing wall, next to the Arduino connections. The LCD display is built into the front panel, which is plugged into the housing. The large circuit board holds the front panel in place. Wire strands are used to connect to and between the components. The socket strips: For cost reasons, I use 64-pin socket strips, which I cut to size. In addition, it is not always possible to get socket strips in the desired length. From a 64 bar you get several bars in the desired lengths. It is advisable not to simply break through the strips. They then often break at the contacts. It is better to separate the strips with a pocket knife. Start with the curved part of the blade. A certain amount of force is required to separate. Care must be taken to ensure that the separated pieces do not fly around by covering the strip with the hand that exerts pressure on the blade. If you are willing to lose two to three contacts per piece, you can also saw through the strip and grind off the rest. The same applies if you simply break the pieces. In any case, the machined ends should be reworked, i.e. ground down. For the strips that have the length of the base, there is the alternative of cutting the precision base. The SMD resistors: As you can see from the parts list, size 805 SMD components are used for the resistors on the large circuit board. Soldering these resistors is a bit fiddly, but you can do it if you press the components onto the footprint with a toothpick that you've sanded off a tip. With the other hand hold the soldering iron. At the PCB manufacturer JLCPCB, the footprints are tinned if they choose the cheapest version and the contact points of the 805 resistors are also tinned. So fix the resistor with the soldering iron on one side. Then you can solder the other side with solder and finally treat the fixed side to a drop of tin. The housing: The housing was created with a 3D printer. If you don't have a 3D printer yourself, you can also use a 3D printer in your nearest FabLab. The filament I use is PLA. The layer height should be 0.2 mm, the filling density 30%. You can download the STL files here. The case contains cut-outs for the connections of the Arduino and the audio output. There are matching holes in the bottom to screw on the Arduino board with M3 screws. The large circuit board is screwed to the housing with four M3 screws. Please only tighten the screws "hand warm", otherwise the plastic will tear out. 4 rubber feet are glued under the floor so that the programmer has a secure footing. The LCD display is screwed to the front wall with four 2 mm cylinder head screws. You may have to rework the holes and recesses a bit. I recommend using washers. Getting Started: Do not connect your ISP burner and power supply yet. First of all, please check all connections to ground with an ohmmeter to make sure there are no short circuits in your circuit. If so, these must of course first be found and eliminated. Of course, the same also applies to line breaks and unwanted contacts between the conductor tracks. Your device is now ready for use. You can now connect your ISP burner and switch on the device. The red and green LEDs are lit when the ISP torch is connected and accepting the 5V power supply, which some torches can do. Measure the operating voltage. It must be around 5V. If, contrary to expectations, the green LED does not light up, this is an indication that fuse F1 has blown and must be replaced (after the cause has been eliminated). Parts list: Arduino shield: R1 = 2k7 wired R2 = 220R wired R3 = 270R wired R4, R5 = 1k5 wired C1 = 100µF/35V wired D1 = 1N4001 wired d1 = small relay FRT 5 DC 5V F1 = fuse holder, microfuses 5x20mm, open with fine-wire fuse 100mA 5x20mm board shield large board: X1 = box connector, 10-pin, straight X2 = pin headers 2.54 mm, 2X03, straight U1 = precision socket 40-pin. U2 = precision socket 28 pole. U3 = precision socket 20 pole. U4 = precision socket 16 pole. R7 ... R16 = 1k5 SMD 805 P1, P2, P3 = adjustment potentiometer, horizontal, 10 kOhm, 6 mm D2, D5 ... D9 = low-current LED 5mm red D4, D10 ... D14 = low-current LED 5mm green S2. .. S7 = Print button, THT, 2.45 N, 6 x 6 x 7 mm 12 socket strips 64 pole. 2.54mm, straight (see text) circuit board: large circuit board other: ISP burner plug-in power supply 9V DC Arduino Uno R3 (or compatible) with 328P in PDIP design LCD display, 16x2, HD44780- compatible, contacts top left 10 m stranded wire 0.5 mm² S1 = miniature toggle switch, 1x, on-on 3.5 mm jack socket 4 rubber feet 3 screws M3 x 15 4 screws M2 x 15 4 screws M3 x 10 7 washers 3.5 mm 8 washers 2.2 mm Housing = 3D Print Wire bridges: Connections on the programming device are made with wire bridges. In the picture on the left you can see a jumper wire that I use for the ground connections of the LEDs and buttons. They are 1/10 inch (2.54mm) wide. I bend them from 0.5 mm jumper wire. The right picture shows a commercial jumper wire that I use to connect the AVRs to the components. They can be obtained quite cheaply on the internet. In the picture below you can see a standard assignment, which I leave in place almost all the time because I need it again and again. And one more thing... It goes without saying, but I'd rather say it anyway. Even though you have multiple IC sockets on the big board, you can only burn ONE AVR at a time! Another tip: socket your AVRs before plugging them into the programmer. This protects the legs of your AVRs and ensures a secure contact.