Número de horas transcurridas

1

Ha sido un largo , ya que desde que jugué con circuitos, agradecería un control de cordura del siguiente diseño; Estoy tratando de contar el número de horas desde que se presionó por última vez el botón de reinicio. Idealmente, duraría mucho tiempo solo con las baterías, pero si alguna vez lo hago funcionar, ¡seré feliz!

(Diagrama del circuito a continuación)

Calculé mis valores astables de NE555 forzando brutalmente la ecuación en Wikipedia para "valores comunes" de resistors y condensadores que fueron los más cercanos a 3600 segundos (he agregado el código ruby a continuación para aquellos interesados). ¿Parecen sensatos?

  • C: 100mF
  • R1: 51KΩ
  • R2: 470Ω
  • Condensador CTL: 10µF (sacó esto del aire ...)
  • Esto debería establecer el ciclo de trabajo en 1,00057 horas.

Estoy planeando usar los siguientes componentes. ¿Hay algo más que deba tener en cuenta?

  • 1x NE555 de baja potencia ( TLC555 )
  • 1x NAND de 2 entradas cuádruples ( SN7400N )
  • 1x contador dual de rizado binario ( 74HC393 )
  • 2x BCD a 7 decodificadores de segmento ( 4511 )
  • pantalla de 1 segmento de 2 dígitos y 7 dígitos ( Cátodo común )
  • Los condensadores y resistencias anteriores. Literalmente, no tengo idea de cuáles elegir entre la variedad ridículamente extensa que hay por ahí ...

(Me di cuenta de que la lógica NAND puede no estar clara. Me tomó un tiempo descubrir cómo implementar un combo AND + O con NANDs, así que lo saqué debajo del diagrama del circuito)

¡Gracias!

Diagrama del circuito

Restablecereldiseñodelapuertalógica

Código de Ruby para forzar con fuerza los valores del componente NE555 más cercanos:

require "pp"
capacitor = [1, 1.5, 2.2, 3.3, 4.7, 6.8]
resistor = [10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91]
powers = [0.001, 0.1, 1, 10, 100, 1_000, 10_000, 100_000, 1_000_000]

target = 3600
tolerance = 1

best = []

ln2 = Math.log(2)

powers.each do |c_p|
  capacitor.each do |c_v|
    c = c_v * c_p
    powers.each do |r1_p|
      resistor.each do |r1_v|
        r1 = r1_v * r1_p
        powers.each do |r2_p|
          resistor.each do |r2_v|
            r2 = r2_v * r2_p

            value = ln2 * c * (r1 + 2*r2)

            proximity = (target - value).abs

            if proximity <= tolerance
              best.push(
                proximity: proximity,
                value: value,
                c: c,
                r1: r1,
                r2: r2
              )
            end
          end
        end
      end
    end
  end
end

best.sort! do |a, b|
  a[:proximity] <=> b[:proximity]
end

pp best.take(5)
    
pregunta JP.

1 respuesta

2

Algunos comentarios para comenzar: -

  • El 4511 necesita entradas no utilizadas vinculadas a un nivel lógico apropiado
  • El 4511 necesita resistencias en serie en cada una de las salidas de segmento a la pantalla del cátodo común
  • Está utilizando un TTL de calidad de museo, por lo que debe tener un pull-up en la entrada RESET y tirar a tierra con el interruptor.
  • Un día (Edición: o una hora) es no un período razonable para obtener un 555 (incluso uno CMOS). Mantenlo en 1-10 segundos. La fuga en un condensador de 0.1F sería una burla de sus cálculos precisos. Puedes contar una frecuencia más alta si quieres. Un preescalador 74HC4040 permitiría un reloj de ~ 1 segundo.
  • Nunca obtendrás mejores resultados que el 5% sin ajuste en un 555, e incluso si lo recortas, décimas de porcentaje. Puede que eso no te moleste, pero el recuento puede estar desactivado en una o diez horas, sin recortar. ¡Piense en cuántas semanas (Edición: días) tomaría recortar un temporizador con un ciclo de 1 día (Edición: o una hora)!
  • No sé qué es un 7469 ... ¿algo así como un contador de década doble 74390 tal vez?
  • 10uF es innecesariamente alto para el bypass de control, 100nF es más que suficiente.
  • No revisé tu lógica (el semi-pictórico es un poco doloroso de leer) pero parece plausible como un punto de inicio del tablero de mandos.
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas