|
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 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 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 ) I le ruban Une machine sans ruban n'est pas une machine En vrai on en a deux (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 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. 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é position de repos 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) Tiens un petit illegal build (qu'on n'a renommé dans le groupe en "Pytagore je t'emm***" ) 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 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 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é Des fils sont accrochés sur le parti à l'avant ou à l'arrière des parallélogramme 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) 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 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 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 On retient l'état interne de la machine tout simplement avec un piston 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 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 Sur lequel on met des picots, et le cylindre en tournant va activer des leviers Oui c'est inspiré de Ah, au fait, il y a un autre poe (vous savez, Pythagore...) Bref voilà, c'est petit moc drôle à faire. Une notice? 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 On a ça Mais on préfère ça 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.
|
|
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 ! |
|
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
|
|
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 |
|
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... |
|
J'ai encore besoin de relire une seconde fois ton post pour mieux assimiler...mais quel projet!
Incroyable, je ne m' imaginais jamais une machine de ce genre! 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 |
|
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à |
|
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 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 ) Au fait, normalement on l'exposera aussi à la cité des sciences (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à. |
|
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
Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 11 invités