Comment construire une calculatrice?

15

Je suis un débutant en électronique. J'essaie de construire une calculatrice à partir de zéro comme un simple projet et un passe-temps pour me tenir occupé.

Mon objectif est de construire une calculatrice simple, pas une calculatrice scientifique ou graphique, même si cela ne me dérange pas de recevoir des informations sur la façon de le faire, juste pour les coups de pied.

Existe-t-il un bon tutoriel pour cela? Comment dois-je commencer?

Philoxophe
la source
2
Il y a un kit pour construire une calculatrice de base à 4 fonctions ici: spikenzielabs.com/Catalog/…
jwygralak67

Réponses:

26

Voici un exemple de calculatrice que vous pouvez construire sans trop de connaissances en électronique. Il est complet, bien que l'addition ne soit pas incluse.

Oui je plaisante, ne prends pas ça trop au sérieux

W5VO
la source
lol. Qu'est-ce que c'est? Je pense que je l'ai déjà vu, mais je ne suis pas sûr. Très curieux de voir si je peux mettre la main sur l'un d'eux. Avez-vous un nom ou un lien vers l'un d'eux?
Philoxopher
cela a inspiré ma question: electronics.stackexchange.com/questions/11263
markrages
@KerxPhilo - Hahahahahahahahahahah ...... oh comment les temps changent.
Connor Wolf
@markrages, bravo à votre question, très intéressant :)
Philoxopher
18

Ce n'est pas un projet trivial. Il y a de nombreux sous-projets éducatifs à se soucier. L'un est les boutons et les anti-rebonds. Un autre consiste à écrire des caractères sur un écran. Il y a la décision de la façon dont vous voulez mettre en œuvre cela vous intéresse de le faire à partir d'une grande boîte de nand gates ou voulez prendre un microcontrôleur ou un autre processeur et écrire un logiciel? Êtes-vous intéressé à utiliser un fpga et à faire tout le calcul en RTL? Vous devez décomposer le problème en ces composants et travailler / apprendre un composant à la fois, puis les assembler. Par exemple, si le moteur mathématique de base est en fait un logiciel sur un microcontrôleur, une tâche comprendra l'écriture de certaines fonctions C sur votre ordinateur de bureau pour alimenter les frappes et afficher les caractères qui seront finalement affichés. Une tâche non triviale si vous n'avez jamais programmé auparavant.

En tant que projet éducatif, je voudrais obtenir quelques launchapads msp430, moins de 5 dollars chacun ou la découverte de la ligne de valeur STM32 (la base stm32 / bras pas l'autre) pour environ 12 dollars chacun. Un certain nombre de personnes vous guideront vers l'arduino, et c'est une belle plate-forme également, elle a ses avantages et ses inconvénients, je ne l'accompagnerais pas comme mon premier microcontrôleur. Achetez un simple panneau lcd à deux lignes, la terre lcd était un bon endroit, peut-être allez-vous simplement chez sparkfun. Prenez une carte de microcontrôleur, connectez-la au panneau lcd et apprenez à mettre des caractères à l'écran. J'apprendrais alors comment utiliser l'uart sur le microcontrôleur qui commence souvent par des octets de dynamitage, puis par la suite en réception et en écho. Utilisez le récepteur uart pour recevoir des objets à afficher, puis utilisez un terminal stupide (mastic, hyperterm, minicom) à partir d'un flux informatique et assurez-vous que cela fonctionne. Ensuite, prenez un autre microcontrôleur, utilisez votre expérience uart in and out et travaillez sur le moteur mathématique de base, depuis votre ordinateur, alimentez-le 0 - 9, +, -, = au début, puis ajoutez multiplier et diviser, puis virgule flottante si vous êtes assez courageux pour cela (ou avoir une bibliothèque qui convient). La sortie du module mathématique ferait écho aux nombres d'entrée et imprimerait les résultats lorsque = est envoyé, etc. Ensuite, déterminez quoi faire avec les boutons, trouvez un tableau de boutons, introduisez-les d'une manière ou d'une autre dans le troisième microcontrôleur, rebondissez et transformez-les en uart sur 0 - 9, +, -, = vers le microcontrôleur mathématique. ALORS, réduisez tout cela en un seul microcontrôleur sans le truc uart au milieu. utilisez votre expérience uart in and out et travaillez sur le moteur mathématique de base, à partir de votre ordinateur, alimentez-le 0 - 9, +, -, = au début, puis ajoutez multiplier et diviser, puis virgule flottante si vous êtes assez courageux pour cela (ou avez une bibliothèque qui convient). La sortie du module mathématique ferait écho aux nombres d'entrée et imprimerait les résultats lorsque = est envoyé, etc. Ensuite, déterminez quoi faire avec les boutons, trouvez un tableau de boutons, introduisez-les d'une manière ou d'une autre dans le troisième microcontrôleur, rebondissez et transformez-les en uart sur 0 - 9, +, -, = vers le microcontrôleur mathématique. ALORS, réduisez tout cela en un seul microcontrôleur sans le truc uart au milieu. utilisez votre expérience uart in and out et travaillez sur le moteur mathématique de base, depuis votre ordinateur, alimentez-le 0 - 9, +, -, = au début, puis ajoutez multiplier et diviser, puis virgule flottante si vous êtes assez courageux pour cela (ou avez une bibliothèque qui convient). La sortie du module mathématique ferait écho aux nombres saisis et imprimerait les résultats lorsque = est envoyé, etc. Ensuite, déterminez quoi faire avec les boutons, trouvez un tableau de boutons, introduisez-les d'une manière ou d'une autre dans le troisième microcontrôleur, rebondissez et transformez-les en uart sur 0 - 9, +, -, = vers le microcontrôleur mathématique. ALORS, réduisez tout cela en un seul microcontrôleur sans le truc uart au milieu. La sortie du module mathématique ferait écho aux nombres saisis et imprimerait les résultats lorsque = est envoyé, etc. Ensuite, déterminez quoi faire avec les boutons, trouvez un tableau de boutons, introduisez-les d'une manière ou d'une autre dans le troisième microcontrôleur, rebondissez et transformez-les en uart sur 0 - 9, +, -, = vers le microcontrôleur mathématique. ALORS, réduisez tout cela en un seul microcontrôleur sans le truc uart au milieu. La sortie du module mathématique ferait écho aux nombres saisis et imprimerait les résultats lorsque = est envoyé, etc. Ensuite, déterminez quoi faire avec les boutons, trouvez un tableau de boutons, introduisez-les d'une manière ou d'une autre dans le troisième microcontrôleur, rebondissez et transformez-les en uart sur 0 - 9, +, -, = vers le microcontrôleur mathématique. ALORS, réduisez tout cela en un seul microcontrôleur sans le truc uart au milieu.

Une autre alternative consiste à obtenir l'une des cartes FPGA RS-232 sur knjn.com ou le brevia treillis (est-ce assez grand?) Ou un certain nombre d'autres, puis de travailler sur chacun des blocs fonctionnels en utilisant un langage RTL. certaines parties seront beaucoup plus faciles que la solution logicielle équivalente, certaines parties seront un peu plus dures qu'une solution logicielle.

Si vous pouvez fournir plus d'informations sur ce que vous pensez, une boîte de nand gates ou une solution basée sur un microcontrôleur ou pensiez-vous à autre chose?

old_timer
la source
7

La calculatrice électronique la plus simple que vous pourriez construire serait une calculatrice binaire à quatre fonctions. Vous pouvez le créer à l'aide de commutateurs pour entrer des nombres binaires, et les éléments logiques de base de la famille 7400 pourraient gérer les additionneurs qui géreraient l'addition. Vous pouvez utiliser des LED individuelles pour représenter chaque nombre binaire dans la sortie, ou vous pouvez utiliser plusieurs affichages à sept segments pour afficher le nombre en hexadécimal. La construction d'une calculatrice binaire vous permettrait d'éviter de construire un convertisseur décimal-binaire et vous aiderait à vous familiariser avec le fonctionnement de l'électronique numérique. Si vous envisagez de vous lancer dans l'électronique numérique comme passe-temps, vous voudrez peut-être envisager d'obtenir Logisim , un programme gratuit qui vous permet de simuler vos circuits avant de les construire.

inventeur
la source
2
Sensationnel. À l'ère de System-on-Chip, vous voulez qu'il connecte vingt portes par chiffre juste pour ajouter ? Même la première calculatrice de poche ne l'a pas fait. Les calculateurs à puce unique existent depuis trente ans.
Ron
Eh bien, vous pouvez utiliser un 74181 pour une tranche de 4 bits. Ce serait plus facile, si rien d'autre.
W5VO
1
Oui, cela pourrait se faire avec une ou deux puces (en utilisant un microprocesseur comme cet exemple ), s'il veut créer la calculatrice en logiciel. Peut-être que construire la calculatrice entière en utilisant des composants discrets prendrait trop de temps, mais s'il veut entrer dans le matériel, une calculatrice binaire pourrait être un bon point de départ.
inventorM
C'est en fait une bonne idée, pour bien comprendre les mathématiques des bits binaires. J'ai fait un projet à moitié additionnel avec ma fille de 12 ans, alors que nous manquions de place sur une planche à pain - elle a ensuite "construit" virtuellement dans Minecraft. Elle a «compris» le concept des portes et de l'ajout de bits, ce qui était tout l'intérêt.
Ron J.28
Pour ce que ça vaut, les calculatrices (généralement) ne fonctionnent pas en interne en binaire et convertissent, elles fonctionnent directement en BCD. Une tranche de quatre bits suffit pour une ALU (en fait, c'était le travail d'origine de l'Intel 4004).
Spehro Pefhany
6

Voici comment je l'ai fait.

Choisissez les composants:

Input Device(Clavier 4x4 dans mon cas. 10 touches pour les chiffres, 4 pour les opérateurs, une pour «=» et une pour «réinitialiser / rafraîchir»)

Processor(AVR 8 bits)

Output device(LCD 16x2)

Power supply(Régulateur LM7805 avec batterie 9 volts)

BreadBoard(faire du PCB après qu'il commence à fonctionner)

J'ai choisi de programmer en montage (apprendre), question de choix personnel. J'ai utilisé AVR Studio 4 comme IDE et un programmeur ISP maison basé sur lpt pour flasher hex en AVR.

puis j'ai écrit des pilotes pour LCD et clavier. Une fois capable de prendre des entrées et de produire des sorties, j'ai commencé à analyser les nombres décimaux et les opérateurs, puis j'ai analysé les expressions et lu les méthodes Infix, Postfix et Prefix . J'ai fait mon travail d'assemblage, donc il n'y avait pas de `` prise en charge du type de données FLOAT '' et j'ai fini par implémenter mon type de données personnalisé (le type de données basé sur BCD pour maintenir une précision décimale à 15 chiffres, c'était un énorme gaspillage de RAM cependant!).

Tout cela fait et Voila .. ma calculatrice était prête (je l'ai nommée BUB!).

Le mien a fonctionné à 1 MHz et a pu battre casio_991MS (en termes de précision décimale et de multiplication et division).

J'espère que cela aide les autres.

vvy
la source
5

Vous pouvez utiliser un kit de développement avec tout ce qui est déjà sur la carte pour vous permettre de vous concentrer sur le logiciel. Par exemple http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024858&part=DM240001 ce kit a PIC, LCD et quelques boutons. Il existe de nombreux en-têtes pour ajouter des boutons supplémentaires. Le seul inconvénient est que l'écran LCD est plus grand que vous voudrez peut-être l'utiliser au début, mais il vous aidera certainement à démarrer.

Si vous cherchez autour de vous, vous pourrez peut-être en trouver de plus petits (et moins chers) que vous pouvez commencer.

L'utilisation d'un kit comme celui-ci facilitera l'écriture de votre code, car il s'agira d'exemples et supprimera le problème des problèmes matériels car il est correctement configuré. Un autre inconvénient est que ce kit utilise les photos haut de gamme, ce qui est exagéré pour un projet de calculatrice, mais il vous donne de la place pour grandir et le modifier à l'avenir pour effectuer d'autres tâches. Il vous donnera également des schémas à utiliser comme point de départ pour créer vos propres planches à l'avenir.

smashtastic
la source
5

Sur mon étagère, j'ai "Electronic Calculators" de H. Edward Roberts, édité par Forrest M. Mims III. 1974.

C'est assez instructif sur la façon dont les gens ont utilisé pour construire des calculatrices en 1974. De nombreuses photos sont du cycle de vie d'un MITS produit de masse calculateur - les photos du prototype (un grand mess spaghetti de fils), la conception de PCB (pose Rubylith sur une table à dessin), des pièces individuelles, une chaîne de montage, une machine à souder à la vague et un dépannage.

Ah, beaucoup de choses ont changé depuis. Les livres d'aujourd'hui évitent généralement de montrer de gros désordre de spaghetti de fils. Les calculatrices d'aujourd'hui évitent d'appliquer la tension secteur directement sur le PCB de la calculatrice.

Beaucoup de choses sont toujours les mêmes. Les gens font toujours un gros gâchis de spaghetti de fils pendant le prototypage.

davidcary
la source
3

Eh bien pour commencer, vous devriez penser aux principaux composants dont vous aurez besoin. Vous aurez probablement besoin d'un microcontrôleur, d'un clavier et d'un écran LCD. Une fois que vous avez sélectionné ces composants, cela devrait être aussi simple que de développer le firmware.

Ryan
la source
Pour plus de détails, n'oubliez pas que je suis un novice en matière de construction électronique, et je veux relever ce défi comme mon premier. Avec les informations que vous avez fournies ci-dessus, c'est un bon début, mais je ne sais pas de quel microcontrôleur j'aurais besoin. Aussi, comment développer un firmware? Écrivez-vous le firmware en C et téléchargez-le dans le firmware, ou devez-vous l'écrire en ASM?
Philoxopher
pourriez-vous également fournir un bon site Web qui vend du matériel électronique à un prix très bon marché pour les amateurs? Appréciez votre soutien!
Philoxopher
Les deux principaux microcontrôleurs amateurs sont le PIC et l'AVR. Il existe des compilateurs C pour ces deux appareils. Un simple microcontrôleur fonctionnera pour votre projet, tant qu'il dispose de suffisamment de broches d'entrée / sortie pour s'interfacer avec votre clavier et votre écran LCD. Un bon site Web pour l'électronique amateur serait SparkFun
Ryan
2
@KerxPhilo: Oui, la majorité des gens du système embarqué écrivent le firmware en C. Ladyada a de bons tutoriels sur la façon d'écrire le firmware en C et de le télécharger sur un microcontrôleur ainsi que des tutoriels sur la connexion d'un LCD et l'affichage de choses dessus .
davidcary
3

Je pense que cela peut être un bon premier projet d'apprentissage, mais il n'est pas anodin, et vous devrez en apprendre un peu en cours de route, tout en étant patient car le projet comprend un certain nombre de sous-projets à aborder tout au long de la façon.

Le premier obstacle de conception que vous devez décider est à quel niveau technologique souhaitez-vous procéder? Avec ou sans microcontrôleur (un microprocesseur largement autosuffisant), logique discrète (par exemple portes ET, OU, NOR et bascules) avec / sans unités arithmétiques (ALU), logique programmable (CPLD, FPGA), autre chose que je n'ai pas pas mentionné ou considéré. Cela devrait être d'abord la technologie utilisée pour faire les calculs, les contrôles d'entrée / sortie sont des décisions secondaires (écrans LED à sept segments, panneau LCD) principalement influencés par l'esthétique ou le coût.

Le livre très accessible How Computers Do Math (ISBN: 0471732788) de l'excentrique Clive Maxfield est un bon point de départ pour apprendre le calcul numérique . Ceci est écrit au niveau "soft" - programmation ou logique, que vous devrez comprendre afin de faire les calculs.

Quelqu'un d'autre a mentionné le projet uWatch (- micro-Watch ) à titre d'exemple, et il y a des références sur Internet à des ingénieurs électriciens (ou étudiants EE) qui ont construit leur propre calculatrice dans les années 1970. Il y a aussi quelques détails sur la construction d'une calculatrice basée sur FPGA (dispositif logique programmable) .

Pour un novice total en électronique (ou électronique numérique), je suggère d'utiliser un microcontrôleur comme point de départ dans votre conception, consultez le site Web du livre mentionné pour avoir une idée de la complexité de la programmation (pas grand-chose si vous avez une expérience en programmation) pour le microcontrôleur et partez de là.

mctylr
la source
0

Exigences matérielles

  • Un clavier pour l'entrée utilisateur
  • Un écran LCD pour afficher les entrées et leurs résultats
    Dans une vraie calculatrice, vous avez besoin d'un écran LCD personnalisé pour afficher les caractères spéciaux comme les signes =, -et M(pour les opérations MC , MR et MS ). Un écran LCD personnalisé coûte jusqu'à 3000 $, mais les écrans LCD conçus sur mesure deviennent plus économiques que les autres écrans à usage général. Puisque votre projet est juste pour le hobby, je vous suggère d'utiliser un LCD à usage général, avec un contrôleur KS0108.
  • Un microcontrôleur très bon marché et sans fonctionnalités
    Vous avez besoin d'un contrôleur très basique car vous ferez des tâches très simples. Vous pouvez utiliser un microcontrôleur PIC bon marché.

Étapes de conception

  • Conduisez votre écran LCD
    Gérez la conduite de votre écran LCD. Écrivez quelques chiffres dessus. Écrivez une interface logicielle pour cela.
  • Testez votre clavier
    Suivez les mêmes étapes que vous avez faites avec l'écran LCD. Assurez-vous que vous avez le contrôle logiciel sur votre clavier.
  • Écrivez les algorithmes qui effectuent les opérations arithmétiques
    Si vous utilisez un microcontrôleur qui peut se multiplier et se diviser, vous n'avez pas besoin de faire ces opérations vous-même; mais vous devez payer plus pour le microcontrôleur, d'autre part, vous apprenez moins et gagnez moins d'expérience pendant votre projet.

Si vous souhaitez ajouter des fonctionnalités arithmétiques plus avancées (comme l'enracinement carré, le calcul sinus / cosinus, etc.), vous devez implémenter des algorithmes de calcul pertinents à l'aide de la méthode de Newton ou de l' expansion de la série Taylor .

Sinon, ce sera un projet simple. Votre principal défi sera de conduire votre écran LCD et votre clavier, si vous n'avez pas beaucoup d'expérience auparavant.

hkBattousai
la source
Selon son niveau d'ambition, on pourrait utiliser quelques registres à décalage et une petite logique discrète, ainsi qu'une "ROM" (probablement EPROM ou flash parallèle), pour construire un microcontrôleur très grossier. Une calculatrice simple pourrait être possible en utilisant 20 jetons ou moins, en particulier. si l'on utilise une ROM assez grande. Une instruction typique serait "sortie X sur le registre à décalage 1, Y sur le registre à décalage 2, régler le stroboscope de sortie sur Z, puis extraire l'instruction suivante de l'adresse formée en concaténant les valeurs de certains registres sur la constante A".
supercat
Il ne serait pas nécessaire d'avoir des circuits pour effectuer l'ajout de BCD - qui pourraient tous être traités dans le code. Si l'un a deux registres à décalage contrôlables séparément, avancez-les selon les besoins afin que les opérandes source et de destination soient alignés, puis utilisez quatre instructions pour placer le processeur dans l'un des 20 états en fonction des valeurs de quatre bits prises à partir de chaque valeur; les quatre instructions suivantes peuvent prendre les quatre bits suivants de chaque registre à décalage tout en écrasant l'un d'eux avec les quatre premiers bits du résultat calculé.
supercat
Je conteste l'exigence de "LCD personnalisé". Les écrans LCD de la calculatrice donnent chaque apparence d'être des articles de base avec seulement quelques variations - pas du pad, simple vs scientifique (ce qui implique généralement 8 vs 10 chiffres). Dans une sélection donnée de ce qui précède, il y aura des dizaines sinon des centaines d'éléments qui sont fonctionnellement équivalents, même s'ils diffèrent légèrement dans les dimensions ou le style de police.
Chris Stratton
@ChrisStratton: Si l'on veut un affichage à 8 chiffres sans annonciateurs, des pièces standard sont disponibles qui répondraient à cette description. Je ne pense pas avoir vu d'affichages standard qui seraient fonctionnellement équivalents à ceux d'une calculatrice typique. Notez que les calculatrices sont susceptibles d'utiliser des connexions à bandes zébrées, qui sont moins chères que les broches à fabriquer, mais plus difficiles à travailler dans un projet de bricolage.
supercat
@supercat - les écrans LCD utilisés dans les calculatrices bon marché ont tendance à utiliser un ruban avec un adhésif activé par la chaleur, pas une bande de zèbre. Et ce sont en grande partie des articles standard qui peuvent être échangés entre les cycles de fabrication.
Chris Stratton
0

La façon la plus simple d'implémenter une calculatrice serait probablement d'utiliser un microcontrôleur. Si vous décidez de suivre cette voie, la première étape serait de trouver un code pour effectuer le calcul. Vous avez besoin d'un programme qui accepte les opérandes et les opérateurs et crache le résultat. Ce module de calcul relativement simple écrit en cdevrait vous donner une idée de ce qui est nécessaire. Il peut ajouter, soustraire, multiplier et diviser ainsi que certaines opérations au niveau du bit et, si vous utilisez la notation polonaise inversée comme dans les calculatrices scientifiques, il peut résoudre des sous-expressions entre parenthèses. Ainsi, vous lirez quels boutons ont été enfoncés, collectez chaque "jeton" dans un tampon convertissant tous les chiffres en valeurs numériques réelles, puis lorsque vous obtenez le bouton "=", vous alimentez la liste des jetons en ce code d'évaluation qui réduit et résout le expression résultant en une seule valeur.

squarewav
la source
0

Pour les débutants, voici ma nomenclature suggérée pour votre projet:

  • 1x carte Arduino Uno ou Leonardo, qui contient le microcontrôleur requis
  • HD44780LCD à base 1x , comme les 16x2 omniprésents
  • 1x clavier matriciel 4x4

Cela permettra de construire une calculatrice de base.

À des fins plus avancées, voici ma nomenclature suggérée:

  • 1x Arduino Mega 2560 ou Arduino Due (le programme sera gros dans ce cas)
  • ST7920LCD à matrice 1x , qui prend en charge les caractères et les graphiques
  • 1x bouclier hôte Arduino USB (Mega 2560 uniquement, en raison de la fonction hôte USB natif) pour le clavier

Cela vous permettra de construire une calculatrice graphique élaborée comme celles de la série TI-83 Plus ou TI-nSpire.

Maxthon Chan
la source