Howto:C172P Cockpit Project/Prototypes: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
Line 1: Line 1:
=== Prototypes ===  
=== Prototypes ===  
There are two types of prototypes: Working and Planned.    Each working prototype should have its own page, following the template. (TBD- determine how to name the prototype page.  Prototypes are not limited to usage for C172P.)
Prototypes for the [[ Howto:C172P Panel Project]] will be listed here and in the main prototype list in [[Howto:Build your own Panel or Cockpit - Prototyping]]
Prototypes completed will be marked green in the Working prototype list.  Those in progress will be marked in yellow or if tests are actually failing, in red.
Prototype sub-projects created for the C172P Panel Project will use the templates in [[ Howto:Build your own Panel or Cockpit - Prototype Project Template ]]


=== {PrototypeName} Template: ===
=== Working Template List ===
''' {PrototypeName} Prototyping Goals '''
''' {PrototypeName} Parts List '''
{| class="wikitable"
| align=center | 1
| Raspberry Pi
|-
| align=center | 1
| Raspberry Pi Breadboard Connector
|-
| align=center | 1
| Breadboard & Jumper Wires
|-
| align=center | qty
| description
|}
 
''' {PrototypeName} Software '''
* NodeJS
* MCP23S17Test
 
''' {PrototypeName} Construction '''
''' {PrototypeName} Tests & Results '''
{| class="wikitable"
|-
| align=center style="background: green;"| 
| Description of test that passes
|-
| align=center style="background: red;"| 
| Description of test that does not pass
|-
| align=center style="background: Yellow;"| 
| Description of test that has yet to be done
|}
 
=== Switch Bank ===
''' Switch Bank Prototyping Goals '''
* Show that the Microchip MCP23S17 can be used the construct 16 banks of 16 switches each with software to sense the position of each switch. 
* Test the switch bank
 
''' Switch Bank Software '''
* NodeJS
* MCP23S17Test.js
** The test routine sets up the two MCP23S17 chips. 
*** Chip Address 000 will be used for the 16 inputs, which will contain the data from each switch in a single bank at any given time. 
*** Chip Address 001 will initially have each of its pins set as inputs, with a pull up resistance set. 
** One at a time, the pins on Chip Address will be set as an output with the value 1. All the remaining pins will remain as inputs with the pull up set.
** Chip Address 000 will be read, giving the values of the switch settings in the 16 switches in the bank corresponding to the current output line on Chip Address 001
 
 
''' Switch Bank Parts List '''
 
{| class="wikitable"
|-
| align=center | 2
| Microchip MCP23S17
|-
| align=center | 1
| Raspberry Pi
|-
| align=center | 1
| Raspberry Pi Breadboard Connector
|-
| align=center | 1
| Breadboard & Jumper Wires
|-
| align=center  | several
| Rotary switches, spdt switches
|-
|}


''' Switch Bank Construction '''
{| class="wikitable" border="1"
* On the breadboard connect the four SPI lines from the Raspberry Pi to the corresponding inputs on the MCP23S17s
! Prototype Project Page !! Description !! Status
* Wire the addresses of the MCP23S17s as binary 000 and 001.  MCP23S17 000 will be used to sense the state of the 16 switches in a bank as the banks are pulsed one at a time by one of the outputs on a MCP23S17 001.
* Wire the IO Pins of MCP23S17 Wire to 16 220 ohm resistors on the breadboard.
* Wire the "high" side of 16 switches in each bank to a common point for that bank.
* Wire common points for each of the 16 banks to the corresponding output resistor connected to the corresponding IO pin on MCP23S17 001
* Wire the "low" side of each of the 16 switches in each bank to the "low" side of the corresponding switch in all the other banks.
* Wire the "low" side of each of the 16 switches in 'one' of the banks to the correspond IO pins of MCP23S17 000
* Get ready to throw some switches.
 
''' Switch Bank Tests & Results '''
{| class="wikitable"
|-
|-
| align=center style="background: green;"|
| [[Howto:Build your own Panel or Cockpit - Prototype for Switch Banks using Microchip MCP23S17 ]] ||A Switch Bank supporting 256 on/off switches can be constructed using two  Microchip MCP23S17 devices and 16 resistors.||align=center style="background: yellow;"| Started
| Show that switches in more than one bank are correctly supported
|-
|-
| align=center style="background: green;"|
|[[Howto:Build your own Panel or Cockpit - Prototype for Numeric Displays using Maxim MAX7219]] || Numeric displays are used in radios to display Frequency and in DME equipment to display distance or time.  This prototype project demonstrates the use of the Maxim Max7219 chip to display numeric data and explore power reqirements for these displays.||align=center style="background: yellow;"|Started
| Show that switch bouncing is eliminated using software and hardware
|-
|-
| align=center style="background: green;"|
| Prototype for Alphabetic Displays  || A couple of radios include alphabetic displays integrated with led's illuminating single letters or codes.  The letters are 1/4" and its difficult to find sixteen segment displays in that size.  A custom led segment display may be needed.  This prototype project would examine methods to produce such displays using CNC machinery.||align=center style="background: none;"|Proposed
| Show correct behavior and reasonable total current draw when
|}
 
{| class="wikitable"
|-
|-
| align=center style="background: green;"|
| Prototype for Air Cores ||Air cores can provide continuous motion through and beyond 360 degrees.  This prototype will examine alternative sources of air cores including purchased and hand built.  It will explore driving circuits for them.||align=center style="background: none;"|Proposed
|all switches are off
|-
|-
| align=center style="background: green;"|
| Prototype for Stepper Motors ||Stepper motors can provide rotary motion in small increments.  This prototype will examine alternative sources of stepper motors and  explore driving circuits for them \.||align=center style="background: none;"|Proposed
| all switches are on
|}
|-
|-
| align=center style="background: yellow;"|
| Prototype for ADC Circuits || A number of Analog to digital conversions will be needed to support Volume controls and Engine controls such as the throttle.||align=center style="background: none;"|Proposed
| Show correct behavior when
{| class="wikitable"
|-
|-
| align=center style="background: yellow;"|  
| Prototype for DAC Circuits || A number of Digital to Analog conversions will be needed to support meter movements used for engine gauges and Course Deviation Indicators.||align=center style="background: none;"|Proposed
|Rotary switches are manually turned as fast as you can
|-
|-
| align=center style="background: yellow;"|  
| Prototype for Air Core driven Instrument Cards  || A number instruments include a rotating cards representing a compass, barometric pressure or Attitude.  Air Cores are one solution to making the needle move. If air Cores are used, an Air Core providing more torque may be required.||align=center style="background: none;"|Proposed
|all switches in a bank are turned on or off simultaneously
|-
|-
| align=center style="background: yellow;"|  
| Prototype for Stepper driven Instrument Cards  || A number instruments include a rotating cards representing a compass or barometric pressure or Attitude.  Stepper motors are one solution to making the cards rotate or otherwise move.||align=center style="background: none;"|Proposed
|switches in multiple banks are turned on or off simultaneously
|}
{| class="wikitable"
|-
|-
| align=center style="background: green;"|
| Prototype for Instrument Rotation  || An Attitude Indicator includes an element that rotates the entire display independently of the inner card representing the forward and back pitch of the aircraft. This prototype would examine Air Cores Steppers and other motors as a means of powering the rotation.||align=center style="background: none;"|Proposed
| Description of test that passes
|-
| align=center style="background: red;"|  
| Description of test that does not pass
|-
| align=center style="background: Yellow;"|
| Description of test that has yet to be done
|}
 
 
==== 5 Digit Numeric Display using Maxim MAX7219 ====
''' 5 Digit Numeric Display Prototyping Goals '''
* Confirm the suitability of modules containing 4 MAX7219 chips
* Stress test 4 5 digit numeric displays of varying sizes
* Determine power requirements for various quantities of modules, display types and digits
''' 5 Digit Numeric Display Parts List '''
{| class="wikitable"
| align=center | 1
| Raspberry Pi
|-
|-
| align=center | 1
| Prototype for Rotary Encoders || A number radios have dual tuning knobs.  Detented Rotary Encoders are ideal for this purpose. ||align=center style="background: none;"|Proposed
| Raspberry Pi Breadboard Connector
|-
|-
| align=center | 1
| Prototype for Magnetic Encoders || A number instruments have adjusting knobs and a need to accurately determine the actual position of a rotating card.  Magnetic encoders provide enough resolution to report position accurate to less than 1 degree.||align=center style="background: none;"|Proposed
| Breadboard & Jumper Wires
|-
|-
| align=center | 3
| Prototype for GPIO Expanders for Outputs || A number elements of instruments or radios elements have two states, on or off. An IO expander can provide a signal to drive the element directly or if needed, through an amplification circuit to provide more current. Most of these are LEDs, some may be solenoids moving a flag in an instrument||align=center style="background: none;"|Proposed
| 4 module boards, each module containing 4 MAX7219 chips
|-
|-
| align=center | 8
| Prototype for Gears in the Altimiter.||An altimiter has three hands like a clock.  Unlike a clock, the gear ratios are 10:1.  We will need a way to smoothly move the three hands of the alitmiter using a stepper or Air Core.  This prototype project examines options for producing or selecting gears and whether an air core can provide the necessary power.||align=center style="background: none;"|Proposed
| 5 digit 7 segment displays with decimal points
|-
|-
| align=center | additional
| Prototype for Arduino to PI or Beagle Bone communication.||In order to increase the number of available IO pins and to provide better real time processing, some functions will be handled by arduinos.  This prototype will address how the communication of data between the PI and an arduino can be accomplished.||align=center style="background: none;"|Proposed
| 4 digit 7 segment displays with decimal points
|}
 
''' 5 Digit Numeric Display Software '''
* NodeJS
* Max7219Test
** Initialize 8 Maxim MAX7219 modules
** Drive 8 Cascaded MAX7219 modules with 5 digit displays each
** Test Routines
 
''' 5 Digit Numeric Display Construction '''
I purchased a module on AliExpress containing 4 MAX7219 modules
''' 5 Digit Numeric Display Tests & Results '''
{| class="wikitable"
|-
|-
| align=center style="background: green;"|
| Prototype for Acquiring and delivering data to Flightgear.||This prototype will use the PHI interface to communicate data between a Node process running on a PI or Beagle Bone and Flightgear.  Testing will include cataloging the Flightgear Properties and addressing any that cannot be handled using a publish/subscribe model.  ||align=center style="background: none;"|Proposed
| 5 digit display of numbers 0-9 in each digit in each of 8 banks of digits
|-
|-
| align=center style="background: green;"|
| Prototype for Acquiring and Delivering data to Prepar3d.||This prototype will use commercial software as an interface to Prepar3d||align=center style="background: none;"|Proposed
| Power Supply - Will Raspberry Pi Power Not be enough?
|-
|-
| align=center style="background: Yellow;"|
| Prototype for Acquiring and Delivering data to X-Plane.||This prototype may or may not use commercial software as an interface to X-Plane.  an open Source Solution will be preferred||align=center style="background: none;"|Proposed
| * All digits the same cycling through 0-9
|-
|-
| align=center style="background: Yellow;"|
| Prototype for Acquiring and Delivering data from attached external peripherals of a Pi or Beagle Bone.||The prototype will address control of communication between the Node Process and external peripherals and controllers.  There may be sub-projects for prototyping specific options for the communication path||align=center style="background: none;"|Proposed
| * All digits 0-9 in order with using all digits
|-
|-
| align=center style="background: Yellow;"|
| Prototype for Solenoids||Solenoids may be used to move flags in specific instruments.  This prototyping project will address selection or construction of solenoids an how to drive one.||align=center style="background: none;"|Proposed
| * All digits 0-9 in order using all digits cycle decimal point on each digit.
|-
|-
| align=center style="background: Yellow;"|
| Prototype for Data Events||This prototype will examine represenitng changes in data and responses to such changes.  It is expected that there will be events triggering transmission of data between the hardware and the simulation program. Additionally there may be a need to feed data from the simulation hardware back to another part of the hardware. ||align=center style="background: none;"|Proposed
| * Power Requirements for All Digits 8 with decimal points turned on for each digit.
|}
 


=== Switch Bank ===
''' Switch Bank Prototyping Goals '''
* Show that the Microchip MCP23S17 can be used the construct 16 banks of 16 switches each with software to sense the position of each switch. 
* Test the switch bank
''' Switch Bank Software '''
* NodeJS
* MCP23S17Test.js
** The test routine sets up the two MCP23S17 chips. 
*** Chip Address 000 will be used for the 16 inputs, which will contain the data from each switch in a single bank at any given time. 
*** Chip Address 001 will initially have each of its pins set as inputs, with a pull up resistance set. 
** One at a time, the pins on Chip Address will be set as an output with the value 1. All the remaining pins will remain as inputs with the pull up set.
** Chip Address 000 will be read, giving the values of the switch settings in the 16 switches in the bank corresponding to the current output line on Chip Address 001
''' Switch Bank Parts List '''
{| class="wikitable"
|-
| align=center | 2
| Microchip MCP23S17
|-
| align=center | 1
| Raspberry Pi
|-
| align=center | 1
| Raspberry Pi Breadboard Connector
|-
| align=center | 1
| Breadboard & Jumper Wires
|-
| align=center  | several
| Rotary switches, spdt switches
|-
|}
|}


''' Switch Bank Construction '''
[[Category:Cockpit building]]
* On the breadboard connect the four SPI lines from the Raspberry Pi to the corresponding inputs on the MCP23S17s
* Wire the addresses of the MCP23S17s as binary 000 and 001.  MCP23S17 000 will be used to sense the state of the 16 switches in a bank as the banks are pulsed one at a time by one of the outputs on a MCP23S17 001.
* Wire the IO Pins of MCP23S17 Wire to 16 220 ohm resistors on the breadboard.
* Wire the "high" side of 16 switches in each bank to a common point for that bank.
* Wire common points for each of the 16 banks to the corresponding output resistor connected to the corresponding IO pin on MCP23S17 001
* Wire the "low" side of each of the 16 switches in each bank to the "low" side of the corresponding switch in all the other banks.
* Wire the "low" side of each of the 16 switches in 'one' of the banks to the correspond IO pins of MCP23S17 000
* Get ready to throw some switches.
 
''' Switch Bank Tests & Results '''
{| class="wikitable"
|-
| align=center style="background: green;"| 
| Show that switches in more than one bank are correctly supported
|-
| align=center style="background: green;"| 
| Show that switch bouncing is eliminated using software and hardware
|-
| align=center style="background: green;"| 
| Show correct behavior and reasonable total current draw when
 
{| class="wikitable"
|-
| align=center style="background: green;"| 
|all switches are off
|-
| align=center style="background: green;"| 
| all switches are on
|}
|-
| align=center style="background: yellow;"| 
| Show correct behavior when
{| class="wikitable"
|-
| align=center style="background: yellow;"|
|Rotary switches are manually turned as fast as you can
|-
| align=center style="background: yellow;"|
|all switches in a bank are turned on or off simultaneously
|-
| align=center style="background: yellow;"|
|switches in multiple banks are turned on or off simultaneously
|}
980

edits

Navigation menu