1
\$\begingroup\$

I am stuck in the middle of building a circuit for an aircraft starting mockup that will train our students to correctly start the aircraft without accidentally re-engaging the starter and thus causing very costly maintenance actions.The system is 12v.

We would like to have a 10 second delay timer switch that will turn on a light when the start sequence has been successfully completed. This part seems simple because when the ignition switch is turned to start, it closes the contacts and starts the 10 second delay timer that turns on the light if held closed for 10 seconds. I found one of these timers on amazon but could not find anything for the next part of the mock up.

The complex component of the circuit I can’t figure out is that I would like to have a buzzer in the circuit. If the student accidentally releases the ignition switch even for a moment during the 10 second starting sequence then this buzzer would go off using something like a latch circuit that turns on and keeps a buzzer on until it is reset.

What is confounding me is how to create this circuit so that the buzzer is not going off when:

  1. The system is initially powered up.
  2. The contacts are closed when the ignition switch is turned on for a start sequence
  3. The 10 second starting sequence is completed successfully and the starting key is released thus opening the starting circuit contacts.

We only want this buzzer to go off if the student fails to hold the ignition contacts closed during the 10 second starting sequence.

Could someone please help me design this circuit and let me know what components I need to in order to build it?

\$\endgroup\$
  • \$\begingroup\$ can you define "a moment" with more precision "...releases the ignition switch even for a moment". Ignition switch must be carefully de-bounced, which requires some time (perhaps 10 milliseconds). \$\endgroup\$ – glen_geek Mar 6 '17 at 18:30
  • \$\begingroup\$ Thank you for asking for this clarification. The "Moment" that is desired would be similar to what you had guessed of approximately 10 milliseconds. My apologies but I was not familiar with switch de-bouncing and had to look that up. This is another complication I had not considered and don't know how to fix. Thank you for pointing this out. \$\endgroup\$ – Pilotman Ray Mar 7 '17 at 21:23
0
\$\begingroup\$

This application cries out for a small $0.50 microcontroller. I have code for the PIC10F200, the most simple they have. It will require a +5 volt supply for its Vdd pin. A 78L05 3-pin voltage regulator will be OK.
Start switch goes low when pressed, and high when released. Since the microcontroller only allows logical inputs between zero and +5v, some resistors will be required. A light-emitting diode D1 indicates success, and a passive PIEZO-type buzzer indicates failure.

schematic

simulate this circuit – Schematic created using CircuitLab passive two-wire piezo transducer The code for the microcontroller does some initializing, then waits for SW1 to go low. After about ten milliseconds, another check for a low of SW1 accomplishes de-bouncing. A very long counter increments until SW1 goes high. Then the counter is tested for a value corresponding to a time period of ten seconds. If it is greater, LED D1 is illuminated. If it is less, PIEZO switches high-to-low-to-high....frequency of 1.95 kHz.

;ten second delay start switch
;LED indicator anode to GPIO 1, cathode to Vss
;passive PIEZO sounder to GPIO 0, other end to Vdd, or to Vss.
;March 2017
#include p10f200.inc
    __config _WDT_OFF&_CP_OFF&_MCLRE_OFF
#define startsw GPIO,2      ;start switch input. Pressed is "low".

;------------------------------------
cnt equ 0x10
;------------------------------------
    Org 0               ;power-on reset starts from here
    movlw b'00001100'   ;two outputs: LED, buzzer
    tris GPIO
    movlw b'11001000'   ;enable TMR0, 1MHz clock
    OPTION
    clrf cnt+2          ;zero the counter
    clrf cnt+1
    clrf GPIO           ;turn off LED

;wait until start switch is pressed, logic level goes from high-to-low
wtsgl:
    btfsc startsw
    b wtsgl
;now it has gone low, de-bounce by waiting 10 ms.
;that requires 10000 counts of TMR0
    movlw .39
    movwf cnt
debounce:
    btfss TMR0,7
    b $-1
    btfsc TMR0,7
    b $-1
    decfsz cnt,f        ;wait till cnt=0
    b debounce

tstagn:
    btfsc startsw       ;still low?
    b errortst          ;no - has gone high
    btfss TMR0,7
    b $-1
    btfsc TMR0,7
    b $-1
    incfsz cnt,f        ;increment every 256 us.
    b tstagn
    incfsz cnt+1,f      ;increments every 65536 us.
    b tstagn
    incf cnt+2,f        ;increments every 16777216 us.
    b tstagn

errortst:
;get here when startsw has gone high. If 24-bit "cnt" is less than
;10000, then that's an error condition (too soon). If 24-bit "cnt"
;is greater than 10000, then that's OK, turn on the LED light.
    movf cnt+2,w        ;if this is zero, might be too soon.
    skpz                ;if greater than zero, that's a long time.
    b allOK
    movlw .153          ;153 or greater is OK (longer than ten seconds)
    subwf cnt+1,w
    bnc errorbuzz       ;too soon!
allOK:
    bsf GPIO,1          ;Turn on LED
    b $                 ;loop forever
;
errorbuzz:              ;buzz forever at 1.95 kHz
    btfss TMR0,7
    b $-1
    btfsc TMR0,7
    b $-1
    incf GPIO,w         ;toggle buzzer
    andlw b'00000001'
    movwf GPIO
    b errorbuzz 
;------------------------------------
    END
\$\endgroup\$
  • \$\begingroup\$ Interesting. I'd go for arduino, probably. \$\endgroup\$ – Tom O'Connor Mar 9 '17 at 17:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.