Howto:Build your own procedure trainer: Difference between revisions

Circuit and Firmware
(Basic description of the USB HID controller)
(Circuit and Firmware)
Line 46: Line 46:
<br clear="all"/>
<br clear="all"/>
=== Circuit Board ===
=== Circuit Board ===
[[Image:Pmpt-ControllerCircuit.jpg|thumb|250px|The USB HID controller's cirtuic diagram]]
This is the basic circuit diagram for the USB HID controller based on [http://www.atmel.com/ ATMEL's] ATMega8. It runs on an 12MHz clock, so be sure to get the 16MHz version. The 27pF capacitors are of ceramic disc type. The 100nF capacitor should be close to the controller with short wires to the supply voltage. The two Z-diodes limit the USB bus voltage and the 1k5Ohm Resistor tells the USB host that this is a low speed device. Check [http://www.obdev.at/products/vusb/ obdev.at's site] for details. Their reference projects contains tons of information and further readings.
The circuit is so simple, it can easily be built on a prototype board.
[[Image:Pmpt-ControllerBack.jpg|thumb|250px|The USB HID controller's back side]]
[[Image:Pmpt-ControllerBack.jpg|thumb|250px|The USB HID controller's back side]]
=== Firmware ===
=== Firmware ===
The ATMega8 itself needs a firmware before it is usable for our PMPT and to be recognized as a USB HID device. The source code for the firmware is mostly written in C and can be compiled with the avr-gcc toolchain. To get the resulting binary into the controller, no special programmer hardware is needed as long as you have a computer with a [http://en.wikipedia.org/wiki/Parallel_port parallel port]. [http://www.captain.at/electronics/atmel-programmer/ Here] is a description of the required interface - just two resistors and five wires between your computer and the controller do the trick.
Your best friend for programming the ATMega is a dude called [http://www.nongnu.org/avrdude/ avrdude].
==== Panel Controller ====
==== Panel Controller ====
[[Image:Pmpt-RotaryWiring.jpg|thumb|250px|Basic wiring of the encoders]]
[[Image:Pmpt-RotaryWiring.jpg|thumb|250px|Basic wiring of the encoders]]
==== Yoke Controller ====
==== Yoke Controller ====
[[Category:Howto|Build your own procedure trainer]]
[[Category:Howto|Build your own procedure trainer]]