Machine de Turing

Présentez-nous vos créations...
phi
Level 6
Level 6
 
Messages: 245
Localisation: Lyon

Messagepar phi » Jeu Jan 05, 2012 7:52 pm

Avertissement1: Post long
Avertissement2: la qualité legotique de cette création est pour ainsi dire inexistant, donc amateur d'élégance, fermez les yeux et appuyez sur ctrl+w :lol:
Avertissement3: Post long
Avertissement4: post technique, donc n'hésitez pas à poser des questions si vous ne comprenez pas
Avertissement5: Post très long

Projet fait pour le département d'informatique de l'ENS Lyon pour le centenaire de la naissance de Allan Turing
Nom de code : rubens
http://graal.ens-lyon.fr/rubens
Image
Image
Image



pour faire vite: machine de turing = modélisation simple d'un ordinateur



Bon, comme dit dans ma présentation, j'ai participé dans le cadre d'un projet d'informatique (sic) à la réalisation d'une machine de Turing entièrement mécanique; y a déjà eu des gens qui ont fait une machine de Turing, mais ils ont utilisé un NxT (pff)




Nous trouvions que c'était trop simple, et donc nous avons tenté la machine en tout mécanique.


Elle ne marche pas encore, mais elle doit marcher pour juillet
En fait aujourd'hui jour de présentation du projet, elle marchait avec assistance humaine (l'homme au service de la machine :lol: )

I le ruban

Une machine sans ruban n'est pas une machine

En vrai on en a deux
Image
(Pour vous donner une idée de la taille, ils font chacun 100bits de long soit 300tenons. Pour des raisons de coût, on n'a pas fait de ruban infini... Je vous mettrais une photo quand j'en aurais une)




L'idée, c'est qu'on a des brick 2x2 qu'on peut faire coulisser
Image
Le codage est le suivant:
1 = XO
0 = OX
blanc 1 = OO
blanc 2 = XX
où X indique la présence d'un bloc, et 0 l'absence
On remarque qu'on peut passer de 0 à 1 et de 1 à 0 aisément, mais il est hors de question de faire une autre transition.




Justement, pour "écrire" (comprendre changer l'état du bit du ruban à 0 ou à 1), on a juste un piston de chaque côté qui peut pousser les 2x2.
Image



Ah oui, on a utilisé massivement du pneumatique (environ 30 pistons et 30 leviers...)



Pour lire, on n'a pas de détecteur de contact, donc on doit le faire mécaniquement.
Il n'est pas encore fonctionnel, mais il en donne l'idée

On a un piston par doigt de lecture (deux doigts par tête) qui pousse le doigt vers le ruban. On fixe un levier au doigt.
Deux cas:
- Il y a un 2x2 et il est arrêté avant. Le levier n'est pas activé
- Il n'y a pas de 2x2, et le doigt va en buté, le levier est activé

Image
position de repos

Image
position de lecture, avec le doigt du premier plan qui arrive en butée sur un 2x2 (bon vous l'imaginez, car j'ai pas de photo sous la main avec le ruban en dessous, mais ça marche (en fait j'ai pas encore réussi à connecter les leviers))






Au fait, tout ceci est fixé à un portique fixé à une planche, portique un "peu" renforcé.
(le premier qui me dit que j'ai fait un trou dans les legos pour mettre une vis, je le tape. Je ne perce PAS les legos... pfff)

Image
Image




Tiens un petit illegal build (qu'on n'a renommé dans le groupe en "Pytagore je t'emm***" :lol: )
Image
Image
Mais c'est fait exprès, ça permet de limiter le jeu dû au piston.






Pour déplacer les rubans, on a un portique roulant qui est déplacer avec quatre pistons, et on a deux griffes qui descendent qui s'enclenchent entre les pin noirs du ruban.
Pour déplacer à droite, on
-pousse le portique à gauche
-descend les griffes
-pousse le portique à droite
-remonte les griffes
Image






Bon le ruban est fini.

Passons à la table de transition

Grosso modo, c'est elle qui va donner les ordres en fonction de l'environnement et du contexte.




Un bref aperçu
Image
Pour information, c'est équivalent à une mémoire de 360bits = 45octets = 0,000043Mo



Commençons:
En entrée de la mémoire, on a des parallélogrammes déformables, qui suivant les bits est serré ou desserré
Image

Des fils sont accrochés sur le parti à l'avant ou à l'arrière des parallélogramme
Image
Suivant l'entrée, des fils seront tirés quand on met le parallélogramme en position 0, et d'autre en position 1

Ces fils sont accrochés à d'autres parallélogramme (qu'on appellera ligne mémoire)
Image
Image


D'énormes axes traversent la table de part et d'autres (suivant le sens des colonnes), axes qu'on appellera bus

Deux cas
-ou une roue folle (fixé sur un pin lisse, oui c'est un illegal build) solidarise le bus d'alimentation au bus de sortie
-ou une roue fixe bloque le bus de sortie
Image


Au bout des colonnes, le bus d'alimentation est alimenté en vitesse double, et on calcule la différence du bus de sortie par rapport à la vitesse normale avec un différentiel.
Donc roue folle => bus de sortie en vitesse double => sens de rotation du différentiel positif
roue fixe => bus de sortie bloqué => sens de rotation négatif
Le différentiel fait tourner ensuite un levier
Image
Image
Oui l'axe avec les roues dentées en couronne est en carton, et oui ça marche pas, et oui le clutch fatigue à force. C'est pour ça que ça marchera en juillet^^ (pour info, on va passer le système à clutch en système type autovalve de sariel, et on va renforcer convenablement l'axe d'alimentation)



Bon pour ceux qui suivent, on a en sortie de la table une direction de déplacement d, et on doit déplacer d'abord le portique en direction non(d) puis en direction d. On fait comment pour différencier droite/gauche?
Avec une porte Xor

d ---\ \
r ---//

(où r est la commande direction opposé direction similaire)

La voilà en brut de démoulage
Image
Image




On retient l'état interne de la machine tout simplement avec un piston
Image





Mais au fait, la machine est alimentée comment?
Elle est alimenter en air comprimé

Mais mais... la mémoire elle a besoin d'une rotation?
Bah on met un moteur
Image
design à peine inspiré de


D'ailleurs, parallèlement à la mémoire, le moteur après une réduction 8t/16t 8t/16t 16t/16t/16t/16t 8t/40t, on fait tourner un cylindre
Image
Image
Sur lequel on met des picots, et le cylindre en tournant va activer des leviers
Image
Image

Oui c'est inspiré de

Ah, au fait, il y a un autre poe (vous savez, Pythagore...)
Image






Bref voilà, c'est petit moc drôle à faire. Une notice? :lol:


Projet pas évident, d'autant plus que je suis le seul à avoir massivement fait des legos jeunes, et en studfull, d'où la qualité legotic pas géniale

Mais c'est drôle par contre









Bon annexe:
C'est pratique
Image




On a ça
Image


Mais on préfère ça
Image
avec un (petit) airtank


Edit:

Je rajoute la vidéo prise lors de la présentation de notre machine

Ce n'est pas une réelle video de MOC, mais je n'ai pas mieux pour l'instant.

J'espère ne pas être trop lourd avec les annotations, que vous pouvez de toute façons désactiver

Présentation (malheureusement) faite à l'arrachée :/



Plus de détails dans la partie présentation de la vidéo




Bon question à 1 pin noir, quelle pointure de pied fais-je?
Dernière édition par phi le Lun Jan 16, 2012 12:01 am, édité 4 fois au total.
Veuillez regarder ailleurs

Avatar de l’utilisateur
Nico71
Level 14
Level 14
 
Messages: 9618
Âge: 35 ans
expertgbbexpertsoft3dexperttrialtruckmoceurtechnicexpertvainqueurconcours3

Messagepar Nico71 » Jeu Jan 05, 2012 9:06 pm

fiou j'ai rien compris, pas faute d'essayer !

Tu aurais de la documentation (français anglais comme tu veux) sur la machine originale ?

En tout cas ça a l'air d'être un beau projet !

Seraphin495
Level 4
Level 4
 
Messages: 53
Localisation: Caen
Âge: 42 ans

Messagepar Seraphin495 » Jeu Jan 05, 2012 9:37 pm

C'est censé être un calculateur mécanique ? Si c'est le cas je n'est pas suivi le fonctionnement général de la machine...Je ne saisie pas ce qu'il calcul et ce qu'il en ressort. Pourtant j'aime bien quand c'est bourré de mécanique comme ça :)
Seraphin495

phi
Level 6
Level 6
 
Messages: 245
Localisation: Lyon

Messagepar phi » Ven Jan 06, 2012 1:36 am

Bon, cours express sur les machines de Turing:

Une machine de turing est une machine à calculer

elle a
- un état interne (qui peut prendre comme valeur par exemple A,B,C...)
- un ruban (ici deux, mais c'est pas grave)

sur le ruban, il y a des symboles (appelons les 0,1,2..)

Il y a une tête de lecture/écriture, qui pointe sur une case du ruban
Une tête peut
-lire le symbole qui est dans la case qu'elle pointe
-écrire un symbole dans cette case
-se déplacer d'un cran d'un côté ou de l'autre


idée
1 on lit la case pointée par la tête (la valeur est représentée par la lettre X par exemple)
2 on lit son état interne (représenté par y)
3 on consulte une table, qui à partir de la combinaison X,y va donner des ordres
4 on exécute l'ordre


Dans 3 on parle d'ordre:
un ordre est constitué d'un état, d'un symbole et d'une direction
A,3,-> veut dire "remplace ton état interne par A, écrit 3 sur le ruban, et déplace toi à droite.

La table va associer à toute combinaison d'état/symbole un ordre
ex:
symbole 0,1
état A,B

A,0 => B,1,->
B,0 => B,0,<-
A,1 => B,1,<-
B,1 => A,0 <-

Ici, si je lis 0 et que je suis dans l'état A, je devrais me mettre dans l'état B, écrire 1 et décaler la tête à droite






Pour résumer, et donner un peu plus de sens au paragraphe précédent:
La machine ne sait faire aucune opération: elle ne sait ni additionner, ni multiplier. Elle ne sait faire que des opérations élémentaires.
elle a des oeillières, et ne peut regarder le ruban que case par case
elle n'a quasiment aucune mémoire (ici, elle peut retenir 3bits ie un chiffre de 0 à 7; c'est l'état interne)

C'est la table qui va donner tout son sens à la machine
C'est elle qui va implémenter la multiplication:
on pourra écrire le multiplicande sur le premier ruban, le multiplicateur sur le deuxième, laisser tourner la machine 10h (à peu près) et voir sur le deuxième ruban le résultat, pour une table qui va bien



Pour les très vieux, c'est comme les ordinateurs à cassette
Veuillez regarder ailleurs

Avatar de l’utilisateur
twinsen
Level 4
Level 4
 
Messages: 54
Âge: 46 ans

Messagepar twinsen » Mer Jan 11, 2012 11:12 pm

Bonsoir Phi,

Waouw ! Quand j'ai vu le titre du MOC, je me suis dit : "ce n'est pas possible !? une machine de Turing en Lego ?!" ! Le projet est impressionnant (la taille du MOC aussi), j'espère que toi et tes coéquipiers nous concocteront une belle vidéo d'explication pour pouvoir mesurer plus facilement la performance accomplie ! Bon courage pour la fin du projet... :)

phi
Level 6
Level 6
 
Messages: 245
Localisation: Lyon

Messagepar phi » Jeu Jan 12, 2012 6:20 am

Merci bien,

on est en train de finir le rapport de projet, ce sera plus facile pour les explications
Veuillez regarder ailleurs

fraisse
Level 5
Level 5
 
Messages: 128

Messagepar fraisse » Jeu Jan 12, 2012 7:32 pm

Avec quelles pièces est fait le cylindre à picots? Sur quoi sont enclenché les barres de15 ?

phi
Level 6
Level 6
 
Messages: 245
Localisation: Lyon

Messagepar phi » Jeu Jan 12, 2012 7:49 pm

c'est une idée géniale que j'ai vue dans une video sur internet



Ce sont juste des 10 maillons de chenilles enroulés autour d'un moyeu

Des pin 3/4 fixent les poutres
Veuillez regarder ailleurs

fraisse
Level 5
Level 5
 
Messages: 128

Messagepar fraisse » Jeu Jan 12, 2012 8:16 pm

Quelles sont les roues sur lesquelles est enroulé la chaine? et combien de maillons sont nécessaire ?

Avatar de l’utilisateur
chrismoi59
Level 6
Level 6
 
Messages: 457
Localisation: Nord
Âge: 39 ans
moceurtechnicjunior

Messagepar chrismoi59 » Jeu Jan 12, 2012 8:31 pm

J'ai encore besoin de relire une seconde fois ton post pour mieux assimiler...mais quel projet! :jok:
Incroyable, je ne m' imaginais jamais une machine de ce genre! :muh?:
Vivement la vidéo et bon courage! Que la force soit avec vous! :)
« L’imagination est plus importante que le savoir. » Albert Einstein

ma galerie Brickset http://www.brickset.com/search/?OwnedBy=chrismoi59

phi
Level 6
Level 6
 
Messages: 245
Localisation: Lyon

Messagepar phi » Jeu Jan 12, 2012 8:36 pm

@fraisse Ce sont des moyeux de chenilles, comme sur la 8043

57519 Image

@chrismoi

On aura finit le rapport demain, ce sera plus compréhensible, parce que là c'est un peu brute de démoulage :D
Veuillez regarder ailleurs

phi
Level 6
Level 6
 
Messages: 245
Localisation: Lyon

Messagepar phi » Ven Jan 13, 2012 6:16 pm

Pour ceux qui sont intéressés, voilà le rapport

Il est lourd (54 Mo), toutes les images sont à la fin, mais c'est notre rapport

Il va être effacé sous 31 jours.

Si des gens sont intéressés, je pourrais le mettre autre part


http://mercure.ens-lyon.fr/get?k=fOtHPhxdGGjRy25lJIB

Voilà
Veuillez regarder ailleurs

fraisse
Level 5
Level 5
 
Messages: 128

Messagepar fraisse » Dim Jan 15, 2012 5:23 pm

Cette machine sera visible où et quand? Y aura t il une personne pour en faire la démonstration?

phi
Level 6
Level 6
 
Messages: 245
Localisation: Lyon

Messagepar phi » Dim Jan 15, 2012 11:59 pm

Bon je réponds à quelques questions:

Tout d'abord, la machine n'est pas décemment visible pour l'instant (stockée dans le bureau du pauvre thésard qui nous aide)
Mais elle le sera normalement en juillet au cours d'une semaine de conférence à l'ENS de Lyon avec les plus grandes pontes de l'informatiques 8)

Bref, il y aura une exposition avec des explications données par de gentilles personnes. Y aura par exemple démonstration d'une multiplication de deux entiers (compter environ 8h de calcul à 2bars :tare: )




Au fait, normalement on l'exposera aussi à la cité des sciences 8) (ils ont dit qu'ils étaient motivés, mais bon, ça veut rien dire^^)



J'ai rajouté la vidéo de présentation de notre projet, mais c'est un peu ennuyant, et peu de choses marchent :/

Je suis bien sûr toujours disponible pour toutes les questions, c'est très enrichissant d'avoir un point de vue extérieur notamment de ce type là.
Veuillez regarder ailleurs

fraisse
Level 5
Level 5
 
Messages: 128

Messagepar fraisse » Lun Jan 16, 2012 9:10 am

idée
1 on lit la case pointée par la tête (la valeur est représentée par la lettre X par exemple)
2 on lit son état interne (représenté par y)
3 on consulte une table, qui à partir de la combinaison X,y va donner des ordres
4 on exécute l'ordre


Je ne comprends pas ce que représente x et y : x est il le numéro de la case ? La table est contenue dans le cylindre à picots?


Retourner vers Vos MOCs Technic

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 7 invités