Kode for 3D

Sist oppdatert 23. oktober 2020 – Jon Hoem

Tinkercad har en funksjon de kaller "Codeblocks". Her jobber vi på noenlunde samme måte som i den ordinære versjonen av Tinkercad, men i stedet for å trekke og dra i de enkelte objektene kan vi i Codeblocks får en litt mer systematisk styring med dette.

En mulig fordel med Codeblocks er at denne lar oss kode 3D-modeller på en måte som minner om hvordan vi koder i Scratch, for roboter med ScratchX og blokkeditoren til BBC Micro:bit. Her er også beetleblocks.com et alternativ.

Med andre ord har de ulike oppgavene mulighet for å henge ganske godt sammen, med et programmeringsmiljø som elevene vil kunne kjenne seg litt igjen i, på tvers av de ulike kodeoppgavene.

Videoen gir en liten smakebit på hvordan en kan kode en enkel 3D-modell. Flere enkle former kan sett inn i hverandre, og danner til sammen ett objekt.

Begynn med en enkel arbeidstegning

Før en begynner å kode eller tegne en 3D-modell er det lurt å lage en prinsippskisse. Det gjør selve jobben enklere og ikke minst lar det deg tenke gjennom modellen på en ganske systematisk måte.

Når det er sagt, modellering handler også om å prøve og feile. Det kan godt hende du planlegger godt, men likevel ender opp med en fysisk modell som ikke fungerer optimalt. Da handler det om å finne ut hvor feilen ligger, justere og forsøke igjen.

For eksempel: i dette eksempelet oppdaget jeg behovet for en forsenkning etter at den første modellen var printet. Det hadde jeg ikke tenkt på da skissen ble laget, men jeg kunne enkelt legge det til i ettertid.

Skissen tar i dette tilfellet utgangspunkt i de fysiske målene på servoen som den endelige brakketten skal holde. Ikke veldig komplisert, men det er langt fra en triviell prosess å bestemme en tredimensjonal form som eksakt skal omslutte en annen.

Trinnvis forklaring

Samme objekt som vist i ovenfor. Kodeblokkene er her splittet slik at de fremstår som fem trinn. Koden er egentlig én blokk, slik som vist i videoen.

Pkt 1. Selve basen for braketten. Vi velger at denne skal være massiv, med målene 18X41X5 mm

    • Vi flytter ikke på dette objektet. Det betyr at det blir plassert med tyngdepunktet i origo. I praksis betyr det at grunnflaten blir liggende på -2,5 mm. Dette har ikke betydning for det videre designet, så lenge vi flytter de andre objektene i forhold til dette utgangspunktet.

    • Når vi eksporterer dette objektet vil vi ta med oss avviket på 2,5 mm. Dette gjelder imidlertid for hele modellen, og når denne plasseres inn i programmet som forbereder 3D-printing får vi et spørsmål om vi vil korrigere for dette avviket.

Pkt 2. Lage en forsenkning

Denne lager vi i form av en sylinder, men i stedet for å gjøre denne massiv lager vi den hul. Forsenkningen gis her en radius på 5mm, hvilket betyr at den kan romme en flathodet skrue der skruehodet kan ha en diameter opp til 10mm.

    • Legg merke til at det første som skjer er at også dette objektet plasseres i origo. Dvs midt inne i basen som vi tegnet i Pkt 1. Objektet er 2 mm høyt, plassert inne i basen som er 5 mm, noe som medfører en overdekning på hver side på 1,5 mm. For at forsenkningen skal bli synlig fra overflaten må vi flytte dette objektet 1,5 mm opp langs Z-aksen. Dermed blir det hule objektet i flukt med toppen av basen, og vi får effekten av en forsenkning på 2 mm. Dette er nok til å romme et flatt skruehode.

Pkt 3. Lage et skruehull (Merk: dette punktet er ikke med i videoen)

Her er prosessen omtrent den samme som for Pkt 2. Vi lager et hult objekt med radius 2 mm. Dette kan romme en ganske grov skrue, så dette bør reduseres dersom skruen som skal brukes er av mindre dimensjon. Vi setter her høyden til 5 mm og lar objektet bli værende i origo. Siden dette objektet har samme høyde som basen blir effekten et gjennomgående hull.

    • Vi kan fint skru treskruer direkte i PLA-plast (som er vanlig til bruk ved 3D-printing). Grunnen til at vi likevel lager et skruehull er at de programmene som forbereder modellen for 3D-printing lager en delvis åpen struktur inne i modellen. Dette for å spare materiale og vekt. Når vi printer hullet sikrer vi oss at skruen sitter som den skal.

Pkt 4. og 5. Fester for servoen

Her tegner vi to like objekter, men som plasseres i hver sin ende av modellen (i forhold til Y-aksen). Målene er 9X9 mm med en høyde på 16 mm. Her har vi også benyttet funksjonen for å runde av hjørnene.

    • Merk at disse objektene er 16 mm høye, men siden de ikke flyttes langs Z-aksen tangerer bunnen med bunn av basen. Dermed er det kun 11 mm som stikker oppover basen – jmf arbeidstegningen.

Ferdig resultat

Vi tar for oss 3D-printing i en annen modul, men for å sluttføre dette prosjektet. Slik ble brakketten med påmontert servo, dog uten at skruene er satt i.

Designet kan fortsatt optimaliseres noe, men delen fungerer utmerket til formålet.

Og til slutt, det hele skrudd fast på roboten, med tilhørende hjul, klar for koding av styringssystemet.

Her ser du et prosjekt hvor denne delen er brukt i praksis.