Visualización de maqueta de inicio de avión con pregunta de zumbador

1

Estoy atrapado en medio de la construcción de un circuito para una maqueta que comienza con una aeronave que capacitará a nuestros estudiantes para que arranquen correctamente la aeronave sin volver a activar accidentalmente el motor de arranque y, por lo tanto, provocar acciones de mantenimiento muy costosas. El sistema es 12v.

Nos gustaría tener un interruptor de temporizador de retraso de 10 segundos que se encenderá cuando la secuencia de inicio se haya completado con éxito. Esta parte parece simple porque cuando el interruptor de encendido se gira hacia el inicio, cierra los contactos e inicia el temporizador de demora de 10 segundos que enciende la luz si se mantiene cerrado durante 10 segundos. Encontré uno de estos temporizadores en Amazon, pero no pude encontrar nada para la siguiente parte de la maqueta.

El componente complejo del circuito que no puedo entender es que me gustaría tener un timbre en el circuito. Si el estudiante suelta accidentalmente el interruptor de encendido, incluso por un momento, durante la secuencia de inicio de 10 segundos, este zumbador se disparará utilizando algo como un circuito de cierre que se enciende y mantiene un zumbador hasta que se reinicia.

Lo que me confunde es cómo crear este circuito para que el buzzer no se apague cuando:

  1. El sistema está inicialmente encendido.
  2. Los contactos se cierran cuando se enciende el interruptor de encendido para una secuencia de inicio
  3. La secuencia de inicio de 10 segundos se completa con éxito y se suelta la tecla de inicio, lo que abre los contactos del circuito de inicio.

Solo queremos que este timbre se apague si el alumno no mantiene los contactos de encendido cerrados durante la secuencia de inicio de 10 segundos.

¿Podría alguien ayudarme a diseñar este circuito y hacerme saber qué componentes necesito para construirlo?

    
pregunta Pilotman Ray

1 respuesta

0

Esta aplicación clama por un pequeño microcontrolador de $ 0.50. Tengo el código para el PIC10F200, el más sencillo que tienen. Requerirá un suministro de +5 voltios para su pin Vdd. Un regulador de voltaje de 3 clavijas 78L05 estará bien.
El interruptor de arranque baja cuando se presiona, y alto cuando se suelta. Como el microcontrolador solo permite entradas lógicas entre cero y + 5v, se requerirán algunas resistencias. Un diodo emisor de luz D1 indica éxito, y un zumbador pasivo tipo PIEZO indica falla.

simular este circuito : esquema creado usando CircuitLab Elcódigoparaelmicrocontroladorhaceunpocodeinicialización,luegoesperaqueelSW1baje.Despuésdeaproximadamentediezmilisegundos,otrochequeoparaunmínimodeSW1lograelrebote.UncontadormuylargoaumentahastaqueSW1seponealto.Luego,elcontadorsepruebaparaunvalorcorrespondienteaunperíododetiempodediezsegundos.Siesmayor,elLEDD1estáiluminado.Siesmenos,PIEZOcambiadealtaabajaaalta....frecuenciade1.95kHz.

;tenseconddelaystartswitch;LEDindicatoranodetoGPIO1,cathodetoVss;passivePIEZOsoundertoGPIO0,otherendtoVdd,ortoVss.;March2017#includep10f200.inc__config_WDT_OFF&_CP_OFF&_MCLRE_OFF#definestartswGPIO,2;startswitchinput.Pressedis"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
    
respondido por el glen_geek

Lea otras preguntas en las etiquetas