¿Cómo construir una calculadora?

15

Soy un novato en electrónica. Estoy tratando de construir una calculadora desde cero como un proyecto simple y un pasatiempo para mantenerme ocupado.

Mi objetivo es construir una calculadora simple, no una calculadora científica o gráfica, aunque tampoco me importa recibir información sobre cómo hacerlo, solo por diversión.

¿Hay un buen tutorial para esto? ¿Cómo debo comenzar?

Philoxopher
fuente
2
Aquí hay un kit para construir una calculadora básica de 4 funciones: spikenzielabs.com/Catalog/…
jwygralak67

Respuestas:

26

Aquí hay un ejemplo de una calculadora que puede construir sin demasiados conocimientos de electrónica. Tiene todas las funciones, aunque la adición no está incluida.

Sí, estoy bromeando, no te lo tomes demasiado en serio

W5VO
fuente
jajaja ¿Que es eso? Creo que lo he visto antes, aunque no estoy seguro. Muy curioso por ver si puedo conseguir uno de esos. ¿Tienes un nombre o un enlace a uno de esos?
Philoxopher
esto inspiró mi pregunta: electronics.stackexchange.com/questions/11263
markrages
@KerxPhilo - Jajajajajajajajajaja ... oh, cómo cambian los tiempos.
Connor Wolf
@markrages, felicitaciones a tu pregunta, muy interesante :)
Philoxopher
18

Ese no es un proyecto trivial. Hay muchos subproyectos educativos de los que preocuparse. Uno es botones y rebote. Otro es escribir caracteres en una pantalla. Existe la decisión de cómo desea implementar esto, ¿está interesado en hacerlo desde una gran caja de puertas nand o si desea tomar un microcontrolador u otro procesador y escribir software? ¿Estás interesado en usar un fpga y hacer todas las matemáticas en RTL? Debe dividir el problema en esos componentes y trabajar / aprender un componente a la vez y luego unirlos. Por ejemplo, si el motor matemático central es en realidad un software en un microcontrolador, una tarea incluiría escribir algunas funciones C en su computadora de escritorio para que pueda alimentar pulsaciones de teclas y caracteres de salida que finalmente irán a la pantalla. Una tarea no trivial si nunca ha programado antes.

Como proyecto educativo, lo que haría es obtener unos cuantos lanzadores msp430, menos de 5 dólares cada uno o el descubrimiento de la línea de valor STM32 (el stm32 / arm one uno no el otro) por alrededor de 12 dólares cada uno. Varias personas lo conducirán hacia el arduino, y esa también es una buena plataforma, tiene sus pros y sus contras, no iría con ella como mi primer microcontrolador. Compre un panel lcd simple de dos líneas, la tierra lcd solía ser un buen lugar, tal vez solo vaya a sparkfun. Tome una placa de microcontrolador y conéctela al panel LCD y aprenda a colocar caracteres en la pantalla. Luego aprendería cómo usar el uart en el microcontrolador, que a menudo comienza con la voladura de bytes, luego recibe y hace eco. Use el receptor uart para recibir cosas para poner en la pantalla y luego use un terminal tonto (masilla, hiperterma, minicom) desde una computadora que introduce cosas y asegúrese de que funcione. Luego tome otro microcontrolador, use su experiencia de entrada y salida de uart y trabaje en el motor matemático central, desde su computadora alimente 0 - 9, +, -, = al principio, luego agregue multiplicar y dividir y luego coma flotante si es lo suficientemente valiente para eso (o tener una biblioteca que se ajuste). La salida del módulo matemático haría eco de los números de entrada e imprimirá los resultados cuando = se envíe, etc. Luego, descubra qué hacer con los botones, encuentre una matriz de botones, alimente de alguna manera esos en el tercer microcontrolador, elimine el rebote y haga que se convierta en uart fuera de 0 - 9, +, -, = al microcontrolador matemático. ENTONCES, reduzca todo esto en un solo microcontrolador sin las cosas uart en el medio. use su experiencia de entrada y salida de uart y trabaje en el motor matemático central, desde su computadora alimente 0 - 9, +, -, = al principio, luego agregue multiplicar y dividir y luego coma flotante si es lo suficientemente valiente para eso (o tiene una biblioteca que se ajuste) La salida del módulo matemático haría eco de los números de entrada e imprimirá los resultados cuando = se envíe, etc. Luego, descubra qué hacer con los botones, encuentre una matriz de botones, alimente de alguna manera esos en el tercer microcontrolador, elimine el rebote y haga que se convierta en uart fuera de 0 - 9, +, -, = al microcontrolador matemático. ENTONCES, reduzca todo esto en un solo microcontrolador sin las cosas uart en el medio. use su experiencia de entrada y salida de uart y trabaje en el motor matemático central, desde su computadora alimente 0 - 9, +, -, = al principio, luego agregue multiplicar y dividir y luego coma flotante si es lo suficientemente valiente para eso (o tiene una biblioteca que se ajuste) La salida del módulo matemático haría eco de los números de entrada e imprimirá los resultados cuando = se envíe, etc. Luego, descubra qué hacer con los botones, encuentre una matriz de botones, alimente de alguna manera esos en el tercer microcontrolador, elimine el rebote y haga que se convierta en uart fuera de 0 - 9, +, -, = al microcontrolador matemático. ENTONCES, reduzca todo esto en un solo microcontrolador sin las cosas uart en el medio. La salida del módulo matemático haría eco de los números de entrada e imprimirá los resultados cuando = se envíe, etc. Luego, descubra qué hacer con los botones, encuentre una matriz de botones, alimente de alguna manera esos en el tercer microcontrolador, elimine el rebote y haga que se convierta en uart fuera de 0 - 9, +, -, = al microcontrolador matemático. ENTONCES, reduzca todo esto en un solo microcontrolador sin las cosas uart en el medio. La salida del módulo matemático haría eco de los números de entrada e imprimirá los resultados cuando = se envíe, etc. Luego, descubra qué hacer con los botones, encuentre una matriz de botones, alimente de alguna manera esos en el tercer microcontrolador, elimine el rebote y haga que se convierta en uart fuera de 0 - 9, +, -, = al microcontrolador matemático. ENTONCES, reduzca todo esto en un solo microcontrolador sin las cosas uart en el medio.

Otra alternativa es obtener uno de los tableros rs-232 fpga de knjn.com o el enrejado brevia (¿es lo suficientemente grande?) O varios otros, luego trabajar en cada uno de los bloques funcionales usando un lenguaje RTL. partes de ella serán mucho más fáciles que la solución de software equivalente, algunas partes serán un poco más difíciles que una solución de software.

Si puede proporcionar más información sobre lo que está pensando, una caja de compuertas nand o una solución basada en microcontrolador o ¿estaba pensando en otra cosa?

viejo contador de tiempo
fuente
7

La calculadora electrónica más simple que podría construir sería una calculadora binaria de cuatro funciones. Puede construirlo usando interruptores para ingresar números binarios, y los elementos lógicos básicos de la familia 7400 podrían manejar los sumadores que manejarían la suma. Puede usar LED individuales para representar cada número binario en la salida, o puede usar varias pantallas de siete segmentos para mostrar el número en hexadecimal. Construir una calculadora binaria le permitiría evitar construir un convertidor decimal a binario y le ayudaría a familiarizarse con el funcionamiento de la electrónica digital. Si planea ingresar a la electrónica digital como un pasatiempo, puede considerar adquirir Logisim , un programa gratuito que le permite simular sus circuitos antes de construirlos.

inventorM
fuente
2
Guau. En la era de System-on-Chip, ¿quieres que conecte veinte puertas por dígito solo para agregar ? Incluso la primera calculadora de mano no hizo eso. Las calculadoras de un solo chip han existido durante treinta años.
Ron
Bueno, podrías usar un 74181 para un segmento de 4 bits. Eso sería más fácil, si nada más.
W5VO
1
Sí, esto podría hacerse con uno o dos chips (usando un microprocesador como este ejemplo ), si quiere crear la calculadora en software. Quizás construir la calculadora completa usando componentes discretos tomaría demasiado tiempo, pero si quiere entrar en el hardware, una calculadora binaria podría ser un buen punto de partida.
inventorM
Esta es realmente una buena idea, para obtener una comprensión adecuada de las matemáticas de bits binarios. Hice un proyecto de medio sumador con mi hija de 12 años, mientras nos quedamos sin espacio en una placa de prueba: ella pasó a "construirla" virtualmente en Minecraft. Ella "entendió" el concepto de puertas y agregar bits, que era el punto central.
Ron J.
Por lo que vale, las calculadoras (generalmente) no funcionan internamente en binario y convierten, funcionan directamente en BCD. Un segmento de cuatro bits es suficiente de una ALU (de hecho, ese era el trabajo original del Intel 4004).
Spehro Pefhany
6

Así es como lo hice.

Elige componentes:

Input Device(Teclado 4x4 en mi caso. 10 teclas para números, 4 para operadores, una para '=' y una para 'restablecer / actualizar')

Processor(AVR de 8 bits)

Output device(LCD 16x2)

Power supply(Regulador LM7805 con batería de 9 voltios)

BreadBoard(hacer PCB después de que comience a funcionar)

Elegí programar en asamblea (para aprender), cuestión de elección personal. Usé AVR Studio 4 como IDE y un programador 'ISP' basado en lpt casero para flashear hexadecimal en AVR.

Luego escribí controladores para LCD y teclado. Cuando pude tomar entrada y producir salida, comencé a analizar en números decimales y operadores, luego analicé expresiones y leí sobre los métodos Infix, Postfix y Prefix . Hice mi trabajo en el ensamblaje, por lo que no había 'soporte de tipo de datos FLOAT' y terminé implementando mi tipo de datos personalizado (¡el tipo de datos basado en BCD para mantener una precisión decimal de 15 dígitos fue un gran desperdicio de RAM!).

Todo esto hecho y listo ... mi calculadora estaba lista (¡la llamé BUB!).

La mía corrió a 1MHz y fue capaz de vencer a casio_991MS (en términos de precisión decimal y multiplicación y división).

Espero que esto ayude a otros.

vvy
fuente
5

Podrías usar un kit de desarrollo con todo lo que ya está en el tablero para que puedas concentrarte en el software. Por ejemplo, http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024858&part=DM240001 este kit tiene PIC, LCD y algunos botones. Hay muchos encabezados para agregar botones adicionales. El único inconveniente es que la pantalla LCD es más grande de lo que es posible que desee usar inicialmente, pero sin duda lo ayudará a comenzar.

Si busca a su alrededor, puede encontrar pequeños (y más baratos) en los que puede comenzar.

El uso de un kit como este hará que sea más fácil comenzar a escribir su código, ya que serán algunos ejemplos y eliminará la cuestión de los problemas de hardware, ya que todo está configurado correctamente. Otro inconveniente es que este kit utiliza las imágenes de gama alta, que es excesivo para un proyecto de calculadora, pero le da espacio para crecer y modificarlo en el futuro para realizar otras tareas. También le dará esquemas para usar como punto de partida para hacer sus propios tableros en el futuro.

aplastante
fuente
5

En mi estante tengo "Calculadoras electrónicas" de H. Edward Roberts, editado por Forrest M. Mims III. 1974.

Es bastante educativo acerca de cómo las personas solían construir calculadoras en 1974. Muchas fotos son del ciclo de vida completo de una calculadora MITS producida en masa: fotos de la creación de prototipos (un gran desorden de cables de espagueti), el diseño de PCB (colocando Rubylith en una mesa de dibujo), piezas individuales, línea de montaje, máquina de soldadura por ola y solución de problemas.

Ah, muchas cosas han cambiado desde entonces. Los libros de hoy por lo general evitan mostrar grandes líos de espagueti. Las calculadoras de hoy evitan aplicar voltaje de red directamente a la PCB de la calculadora.

Muchas cosas siguen igual. La gente aún suele hacer un gran lío de espaguetis con los cables mientras realiza prototipos.

davidcary
fuente
3

Bueno, para empezar, debes pensar en los componentes principales que vas a necesitar. Probablemente necesitará un microcontrolador, un teclado y una pantalla LCD. Una vez que elija esos componentes, debería ser tan simple como desarrollar el firmware.

Ryan
fuente
Cualquier otro detalle que pueda proporcionar, recuerde que soy un novato en lo que respecta a la construcción de productos electrónicos, y quiero tomar este desafío como el primero. Con la información que proporcionó anteriormente, es un gran comienzo, sin embargo, no sé qué microcontrolador necesitaría. Además, ¿cómo desarrollar un firmware? ¿Escribe el firmware en C y lo carga en el firmware, o tiene que escribirlo en ASM?
Philoxopher
¿también podría proporcionar un buen sitio web que venda equipos electrónicos a un precio muy económico para los aficionados? ¡Agradezco tu apoyo!
Philoxopher
Los dos principales microcontroladores aficionados son el PIC y el AVR. Hay compiladores de C para ambos dispositivos. Un microcontrolador simple funcionará para su proyecto, siempre que tenga suficientes pines de entrada / salida para interactuar con su teclado y LCD. Un buen sitio web para la electrónica de aficionados sería SparkFun
Ryan
2
@KerxPhilo: Sí, la mayoría de las personas con sistemas integrados escriben el firmware en C. Ladyada tiene buenos tutoriales sobre cómo escribir firmware en C y subirlo a un microcontrolador , así como tutoriales sobre cómo conectar un LCD y mostrar cosas en él .
davidcary
3

Creo que este puede ser un buen primer proyecto de aprendizaje, pero no es trivial, y tendrás que aprender bastante en el camino, así como ser paciente ya que el proyecto incluye una gran cantidad de subproyectos para abordar camino.

El primer obstáculo de diseño que debe decidir es en qué nivel de tecnología desea hacer esto. Con o sin un microcontrolador (un microprocesador en gran medida autosuficiente), lógica discreta (por ejemplo, compuertas AND, OR, NOR y flip-flops) con / sin unidades aritméticas (ALU), lógica programable (CPLD, FPGA), algo más que no tengo No mencionado o considerado. Esto debería ser primero acerca de la tecnología utilizada para hacer los cálculos, los controles de entrada / salida son decisiones secundarias (pantallas LED de siete segmentos, panel LCD) influenciadas principalmente por la estética o el costo.

Un punto de partida potencialmente útil para aprender sobre computación digital es el libro muy accesible How Computers Do Math (ISBN: 0471732788) del peculiar Clive Maxfield. Esto está escrito en el nivel "lógico" de programación o lógico, que deberá comprender para hacer los cálculos.

Alguien más mencionó el proyecto uWatch (- micro-Watch ) como un ejemplo, y hay referencias en Internet a ingenieros eléctricos (o estudiantes de EE) que construyeron su propia calculadora en la década de 1970. También hay algunos detalles sobre la construcción de una calculadora basada en FPGA (dispositivo lógico programable) .

Para un novato total en electrónica (o electrónica digital) sugeriría usar un micrcontrolador como punto de partida en su diseño, revise el sitio web del libro mencionado para tener una idea de la complejidad en la programación (no mucho si tiene alguna experiencia en programación) para el microcontrolador e ir desde allí.

mctylr
fuente
0

Requisitos de hardware

  • Un teclado para la entrada del usuario.
  • Una pantalla LCD para la visualización de entrada y su resultado
    en un producto calculadora real, se necesita un LCD personalizada para mostrar caracteres especiales como el =, -y M(por MC , MR y MS signos operaciones). Un diseño de LCD personalizado cuesta hasta 3000 $, pero luego los LCD de diseño personalizado se vuelven más económicos que los otros de uso general. Dado que su proyecto es solo para hobby, le sugiero que use una pantalla LCD de uso general, con un controlador KS0108.
  • Un microcontrolador muy barato y sin funciones
    Necesita un controlador muy básico ya que realizará tareas muy simples. Puede usar un microcontrolador PIC barato.

Pasos de diseño

  • Conduzca su LCD
    Administre la conducción de su LCD. Escribe algunos dígitos en él. Escriba una interfaz de software para ello.
  • Pruebe su teclado
    Realice los mismos pasos que hizo con la pantalla LCD. Asegúrese de tener control de software en su teclado.
  • Escriba los algoritmos que realizan las operaciones aritméticas.
    Si utiliza un microcontrolador que puede multiplicarse y dividirse, no necesita realizar esas operaciones usted mismo; pero tiene que pagar más por el microcontrolador, por otro lado, aprende menos y gana menos experiencia durante su proyecto.

Si desea agregar características aritméticas más avanzadas (como el enraizamiento cuadrado, el cálculo seno / coseno, etc.) debe implementar algoritmos de cálculo relevantes utilizando el Método de Newton o la Expansión de la Serie Taylor .

De lo contrario, será un proyecto simple. Su principal desafío será manejar su LCD y teclado, si no tiene mucha experiencia con antes.

hkBattousai
fuente
Dependiendo del nivel de ambición de uno, uno podría usar algunos registros de desplazamiento y una pequeña lógica discreta, junto con una "ROM" (probablemente EPROM o flash paralelo), para construir un microcontrolador muy crudo. Una calculadora simple podría ser posible usando 20 chips o menos, especialmente. si uno usa una ROM bastante grande. Una instrucción típica sería "salida X en el registro de desplazamiento 1, Y en el registro de desplazamiento 2, establecer la luz estroboscópica de salida en Z y luego buscar la siguiente instrucción de la dirección formada mediante la concatenación de los valores de algunos registros en la constante A".
supercat
Uno no necesitaría tener ningún circuito para realizar la adición de BCD, todo eso podría manejarse dentro del código. Si uno tiene dos registros de desplazamiento controlables por separado, avance según sea necesario para que los operandos de origen y destino estén alineados, y luego use cuatro instrucciones para colocar la CPU en uno de los 20 estados en función de los valores de cuatro bits tomados de cada valor; Las siguientes cuatro instrucciones pueden tomar los siguientes cuatro bits de cada registro de desplazamiento mientras se sobrescribe uno de ellos con los primeros cuatro bits del resultado calculado.
supercat
Discutiría el requisito de "LCD personalizado". Las pantallas LCD de la calculadora dan la apariencia de ser productos básicos con solo algunas variaciones: tono de almohadilla, simple versus científico (que generalmente implica 8 vs 10 dígitos). Dentro de una selección dada de lo anterior, habrá docenas, si no cientos de elementos que son funcionalmente equivalentes, incluso si difieren ligeramente en dimensiones o estilo de fuente.
Chris Stratton
@ChrisStratton: si uno quiere una pantalla de 8 dígitos sin anunciadores, hay disponibles piezas disponibles que cumplirían con esa descripción. No creo haber visto ninguna pantalla estándar que sea funcionalmente equivalente a las de una calculadora típica. Tenga en cuenta que las calculadoras son aptas para usar conexiones de tira de cebra, que son más baratas que los pines para fabricar, pero más difíciles de trabajar en un proyecto de bricolaje.
supercat
@supercat: las pantallas LCD utilizadas en calculadoras baratas tienden a usar una cinta con adhesivo activado por calor, no una tira de cebra. Y son, en gran medida, artículos estándar que se pueden intercambiar entre las ejecuciones de fabricación.
Chris Stratton
0

La forma más fácil de implementar una calculadora probablemente sería usar un microcontrolador. Si decide seguir esa ruta, el primer paso sería encontrar un código para hacer el cálculo. Necesita un programa que acepte los operandos y operadores y escupe el resultado. Este módulo de calculadora relativamente simple escrito en cdebería darle una idea de lo que es necesario. Puede sumar, restar, multiplicar y dividir, así como algunas operaciones bit a bit y, si usa la notación polaca inversa como en las calculadoras científicas, puede resolver subexpresiones entre paréntesis. Entonces, debería leer qué botones se presionaron, recopilar cada "token" en un búfer convirtiendo cualquier dígito en valores numéricos reales y luego, cuando obtiene el botón "=", alimenta la lista de tokens a este código de evaluación que reduce y resuelve el expresión que resulta en un solo valor.

squarewav
fuente
0

Para principiantes, aquí está mi lista de materiales sugerida para su proyecto:

  • 1x placa Arduino Uno o Leonardo, que tienen el microcontrolador requerido
  • HD44780LCD basado en 1x , como los omnipresentes 16x2
  • 1x teclado matricial 4x4

Esto permitirá construir una calculadora básica.

Para propósitos más avanzados, aquí está mi lista de materiales sugerida:

  • 1x Arduino Mega 2560 o Arduino Due (el programa será grande en este caso)
  • ST7920Matriz LCD basada en 1x , que admite caracteres y gráficos
  • 1x Arduino USB Host Shield (solo Mega 2560, debido a que tiene una función de host USB nativa) para teclado

Esto le permitirá construir una calculadora gráfica elaborada como las series TI-83 Plus o TI-nSpire.

Maxthon Chan
fuente