Inhoudsopgave:
- Stap 1: De hardware ontwerpen
- Stap 2: De juiste motoren kiezen
- Stap 3: De basis construeren
- Stap 4: De hardware monteren
- Stap 5: Elektronica
- Stap 6: Software en seriële interface
- Stap 7: Conclusie
Video: Q-Bot - de Open Source Rubik's Cube Solver - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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.
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:
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.
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.
De versnelling is in dit geval de zwaartekrachtversnelling. Dus het vereiste koppel wordt gegeven door
Door alle waarden in te voeren, inclusief de helft van de diagonaal van de Rubiks kubus, wordt uiteindelijk het vereiste koppel onthuld.
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.
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.
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.
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.
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.
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:
Arduino Learner Kit (Open Source): 7 stappen (met afbeeldingen)
Arduino Learner Kit (Open Source): als je een beginner bent in Arduino World en Arduino gaat leren met wat praktische ervaring, dan is deze Instructables en deze Kit iets voor jou. Deze Kit is ook een goede keuze voor de leraren die graag op een gemakkelijke manier Arduino leren aan hun leerlingen
Open source 3/4/5S lithium BMS: 4 stappen
Open-source 3/4/5S Lithium BMS: In deze Instructable wordt het ontwerp van de BMS345 uitgelegd. Het ontwerp is volledig open source, de ontwerpbestanden zijn te vinden in de GitHub-link in de laatste stap. Ook is er een beperkte voorraad beschikbaar op Tindie.De BMS345 is een BatteryManagement
Open Source Data Logger (OPENSDL): 5 stappen (met afbeeldingen)
Open Source Data Logger (OPENSDL): Het doel van dit project is het ontwerpen, bouwen en testen van een goedkoop meetsysteem voor de evaluatie van gebouwprestaties, dat ten minste temperatuur, relatieve vochtigheid, verlichtingssterkte omvat en uitbreidbaar is naar extra sensoren, en te ontwikkelen
Versiebeheer voor open source hardware: 10 stappen
Versiebeheer voor open source-hardware: het team van Brainbow heeft een aantal elektronicaprojecten onder onze riem en we wilden ons proces delen voor het gebruik van versiebeheer om onze workflow voor elektronicaontwerp te beheren. Deze workflow is gebruikt voor grote en kleine projecten, van eenvoudige
GTP USB PIC PROGRAMMER (Open Source): 5 stappen (met afbeeldingen)
GTP USB PIC PROGRAMMER (Open Source): Dit werk omvat GTP USB (niet plus of lite). Het schema, de foto's en de PCB zijn ontwikkeld door PICMASTERS op basis van een aantal waardevolle werken die eerder zijn gedaan. Deze programmeur ondersteunt pic10F, 12F, 16C, 16F, 18F, 24Cxx Eeprom. Helaas, het w