Inhoudsopgave:

Q-Bot - de Open Source Rubik's Cube Solver - Ajarnpa
Q-Bot - de Open Source Rubik's Cube Solver - Ajarnpa

Video: Q-Bot - de Open Source Rubik's Cube Solver - Ajarnpa

Video: Q-Bot - de Open Source Rubik's Cube Solver - Ajarnpa
Video: Can You spot the Fake Rubik’s Cube? 🤔 2024, Juli-
Anonim
Image
Image
Afbeelding
Afbeelding

Stel je voor dat je een door elkaar gegooide Rubik's Cube hebt, je kent die puzzel uit de jaren 80 die iedereen heeft, maar niemand weet echt hoe je hem moet oplossen, en je wilt hem terugbrengen in zijn oorspronkelijke patroon. Gelukkig is het tegenwoordig heel gemakkelijk om instructies voor het oplossen te vinden. Dus, ga online, bekijk een video en leer hoe je de zijkanten kunt draaien om je vreugde te brengen. Na het een paar keer te hebben gedaan, zul je je echter realiseren dat er iets ontbreekt. Een gat van binnen dat niet gevuld kan worden. De ingenieurs/maker/hacker in jou kunnen gewoon niet tevreden zijn met het oplossen van zoiets geweldigs op zo'n simpele manier. Zou het niet veel poëtischer zijn als je een machine had die al het oplossen voor je deed? Als je iets had gebouwd, zouden al je vrienden versteld staan? Ik kan je garanderen dat het niet veel beter wordt dan te zien hoe je creatie wonderen doet en een Rubik's Cube oplost. Dus kom en ga met me mee op de prachtige reis van het bouwen van Q-Bot, de open source Rubik's Cube Solver die zeker geen wereldrecord zal verslaan, maar je urenlang plezier zal bezorgen (na natuurlijk alle frustraties te hebben doorstaan tijdens het bouwproces).

Stap 1: De hardware ontwerpen

De complete solver is ontworpen met CAD in Catia. Op deze manier konden de meeste ontwerpfouten worden gevonden en gecorrigeerd voordat fysieke componenten werden vervaardigd. Het grootste deel van de oplosser was 3D-geprint in PLA met behulp van een prusa MK3-printer. Daarnaast is gebruik gemaakt van de volgende hardware:

  • 8 stuks 8 mm aluminium staaf (10cm lengte)
  • 8 lineaire kogellagers (LM8UU)
  • iets minder dan 2 m GT2 6 mm distributieriem + enkele poelies
  • 6 NEMA 17 bipolaire stappenmotoren
  • 6 Polulu 4988 stappenmotoren
  • een Arudino Mega als controller voor het project
  • een 12 V 3A voeding
  • een step-down converter om de arduino veilig van stroom te voorzien
  • sommige schroeven en connectoren
  • wat triplex voor de basis

Hardwarebeschrijving:

In deze sectie wordt kort beschreven hoe de Q-Bot zelfs functioneert en waar de bovengenoemde componenten worden gebruikt. Hieronder ziet u een weergave van het volledig geassembleerde CAD-model.

De Q-bot werkt door vier motoren direct aan de Rubik's Cube te bevestigen met 3D-geprinte grijpers. Dit betekent dat links, rechts, voor en achter direct kunnen worden gedraaid. Als de boven- of onderkant moet worden gedraaid, moet de hele kubus worden gedraaid en moeten dus twee van de motoren worden verplaatst. Dit wordt gedaan door elk van de grijpmotoren te bevestigen op sleden die worden aangedreven door een andere stappenmotor en een distributieriem langs een lineair railsysteem. Het railsysteem bestaat uit twee 8 kogellagers die in holtes in de slee zijn gemonteerd en de hele slee rijdt op twee 8 mm aluminium assen. Hieronder ziet u de subassemblage van één as van de solver.

De x- en de y-as zijn in principe identiek ze verschillen alleen in de hoogte van het bevestigingspunt van de riem, dit is zodat er geen botsingen zijn tussen de twee riemen wanneer ze volledig gemonteerd zijn.

Afbeelding
Afbeelding

Stap 2: De juiste motoren kiezen

Uiteraard is hierbij het selecteren van de juiste motoren erg belangrijk. Het belangrijkste is dat ze sterk genoeg moeten zijn om een Rubiks kubus te kunnen draaien. Het enige probleem hier is dat geen enkele fabrikant van Rubik's kubussen een koppel geeft. Dus moest ik improviseren en mijn eigen metingen doen.

Over het algemeen wordt koppel gedefinieerd door de kracht die loodrecht op de positie van het rotatiepunt op de afstand r is gericht:

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Dus als ik op de een of andere manier de kracht zou kunnen meten die op de kubus wordt uitgeoefend, zou ik het koppel kunnen berekenen. Dat is precies wat ik deed. Ik klemde mijn kubus zo op een plank dat slechts één kant kon bewegen. Dat er een touwtje om de kubus werd gebonden en een zak aan de onderkant. Nu hoefde ik alleen nog maar langzaam het gewicht in de zak te verhogen totdat de kubus draaide. Bij gebrek aan nauwkeurige gewichten heb ik aardappelen gebruikt en daarna gemeten. Niet de meest wetenschappelijke methode, maar omdat ik niet probeer het minimale koppel te vinden, is het voldoende.

Afbeelding
Afbeelding

Ik deed de metingen drie keer en nam voor de zekerheid de hoogste waarde. Het resulterende gewicht was 0,52 kg. Dankzij Sir Isaac Newton weten we dat kracht gelijk is aan massa maal versnelling.

Afbeelding
Afbeelding

De versnelling is in dit geval de zwaartekrachtversnelling. Dus het vereiste koppel wordt gegeven door

Afbeelding
Afbeelding

Door alle waarden in te voeren, inclusief de helft van de diagonaal van de Rubiks kubus, wordt uiteindelijk het vereiste koppel onthuld.

Afbeelding
Afbeelding

Ik ging met stappenmotoren die tot 0,4 Nm kunnen toepassen, wat waarschijnlijk een overkill is, maar ik wilde veilig zijn.

Stap 3: De basis construeren

De basis bestaat uit een zeer eenvoudige houten kist en bevat alle benodigde elektronica. Het beschikt over een stekker om de machine aan en uit te zetten, een LED om aan te geven of deze is ingeschakeld, een USB B-poort en een stopcontact voor de voeding. Het werd geconstrueerd met behulp van 15 mm multiplex, enkele schroeven en een beetje lijm.

Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding

Stap 4: De hardware monteren

Nu met alle benodigde onderdelen, inclusief de basis, was de Q-bot klaar om te monteren. De custom onderdelen zijn 3D geprint en waar nodig aangepast. Aan het einde van dit bestand kunt u alle CAD-bestanden downloaden. De montage omvatte het monteren van alle 3D-geprinte onderdelen met de gekochte onderdelen, het verlengen van de motorkabels en het vastschroeven van alle onderdelen aan de basis. Daarnaast heb ik hulzen om de motorkabels gestoken, om het er wat netter uit te laten zien, en aan de uiteinden JST-connectoren toegevoegd.

Om het belang van de basis die ik heb gebouwd te benadrukken, is hier een voor- en na-opname van hoe de montage eruit zag. Alles een beetje opruimen kan een enorm verschil maken.

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Stap 5: Elektronica

Wat betreft de elektronica is het project vrij eenvoudig. Er is een hoofdvoeding van 12V, die tot 3A stroom kan leveren, die de motoren aandrijft. Een step-down-module wordt gebruikt om de Arduino veilig van stroom te voorzien en er is een aangepast schild voor de Arduino ontworpen dat alle stappenmotorstuurprogramma's herbergt. De drivers maken het besturen van de motoren veel gemakkelijker. Het aansturen van een stappenmotor vereist een specifieke regelvolgorde, maar door gebruik te maken van motordrivers hoeven we alleen een hoge puls te genereren voor elke stap die de motor moet draaien. Daarnaast zijn er enkele jst-connectoren aan het schild toegevoegd om het aansluiten van de motoren te vergemakkelijken. Het schild voor de Arduino werd eerst gebouwd op een stuk perfboard en nadat hij ervoor had gezorgd dat alles werkte zoals het moest, werd het vervaardigd door jlc pcb.

Hier is het voor en na van het prototype en de vervaardigde printplaat.

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Stap 6: Software en seriële interface

De Q-Bot is verdeeld in twee delen. Enerzijds is er de hardware die wordt aangestuurd door de Arduino, anderzijds is er een stukje software dat het oplospad voor de kubus berekent op basis van de huidige scramble. De firmware die op de Arduino draait, is door mijzelf geschreven, maar om deze handleiding kort te houden, zal ik er hier niet op ingaan. Als je ernaar wilt kijken en ermee wilt spelen, zal de link naar mijn git-repository aan het einde van dit document worden gegeven. De software die de oplossing berekent draait op een Windows machine en is geschreven door een collega van mij, nogmaals links naar zijn broncode zijn te vinden aan het einde van deze ible. De twee delen communiceren via een eenvoudige seriële interface. Het berekent de oplossing op basis van Kociemba's tweefasenalgoritme. De oplossingssoftware stuurt een opdracht bestaande uit twee bytes naar de oplosser en wacht tot deze een 'ACK' retourneert. Op deze manier kan de solver worden getest en debuggen met behulp van een eenvoudige seriële monitor. De volledige instructieset vindt u hieronder.

Afbeelding
Afbeelding

De opdrachten om elke motor één stap te laten draaien, zijn een tijdelijke oplossing voor een probleem waarbij sommige steppers willekeurig kleine sprongen zouden maken bij het opstarten. Om dit te compenseren kunnen de motoren voorafgaand aan het oplossen in hun uitgangspositie worden afgesteld.

Stap 7: Conclusie

Na acht maanden van ontwikkelen, vloeken, op het toetsenbord slaan en dansen was de Q-bot eindelijk op een punt waar zijn eerste Rubik's Cube met succes is opgelost. De scramble van de kubus moest handmatig in de besturingssoftware worden ingevoerd, maar alles werkte goed.

Ik voegde een paar weken later een houder voor een webcam toe en mijn universiteit paste de software aan om de kubus automatisch af te lezen van de gemaakte foto's. Dit is echter nog niet goed getest en behoeft nog wat verbeteringen.

Afbeelding
Afbeelding

Als dit instructable uw interesse heeft gewekt, aarzel dan niet en begin met het bouwen van uw eigen versie van de Q-bot. In het begin lijkt het misschien ontmoedigend, maar het is zeer de moeite waard en als ik het kan, kunt u het ook.

Bronnen:

Broncode van de firmware:

github.com/Axodarap/QBot_firmware

Broncode van de besturingssoftware

github.com/waldhube16/Qbot_SW

Aanbevolen: