Skillnad mellan versioner av "Loftsäng"
Ramis (Diskussion | bidrag) (Skapade sidan med '= Introduktion = '''Maker:''' Matthias Palmér med assistans av familjen <br /> '''Kostnad:''' ca. 2000 kr. <br /> '''Status:''' Klart, ca. en veckas jobb Vi lovade dottern...') |
Ramis (Diskussion | bidrag) |
||
(4 mellanliggande versioner av samma användare visas inte) | |||
Rad 19: | Rad 19: | ||
Jag valde att rita loftsängen med hjälp av [http://www.openscad.org/ OpenSCAD]. Orsaken att jag valde OpenSCAD istället för någon annat ritprogram var att jag är mer bekväm med att scripta saker än att lära mig kontroller. Dessutom kunde jag med OpenSCAD parametrisera hela ritningen vilket gjorde det enkelt att experimentera med olika design. Framförallt experimerade jag en hel del med dimensionerna på virket. | Jag valde att rita loftsängen med hjälp av [http://www.openscad.org/ OpenSCAD]. Orsaken att jag valde OpenSCAD istället för någon annat ritprogram var att jag är mer bekväm med att scripta saker än att lära mig kontroller. Dessutom kunde jag med OpenSCAD parametrisera hela ritningen vilket gjorde det enkelt att experimentera med olika design. Framförallt experimerade jag en hel del med dimensionerna på virket. | ||
− | [[Fil:loftsaeng-skiss. | + | [[Fil:loftsaeng-skiss.png|800px]] |
Madrassen läggs på en ribbotten som i sin tur vilar på en trälist som är fastskruvad längst ner på ramen. I princip kan man lägga i en resårbotten istället för ribbotten, men de flesta resårbottnar är ganska höga, minst 23 cm. Det medför att sängen kommer rätt högt upp och i det fallet bör man låta fallskyddet vara högre för att det inte ska se konstigt ut. Jag valde att designa loftsängen utifrån att man har en vanlig madrass. | Madrassen läggs på en ribbotten som i sin tur vilar på en trälist som är fastskruvad längst ner på ramen. I princip kan man lägga i en resårbotten istället för ribbotten, men de flesta resårbottnar är ganska höga, minst 23 cm. Det medför att sängen kommer rätt högt upp och i det fallet bör man låta fallskyddet vara högre för att det inte ska se konstigt ut. Jag valde att designa loftsängen utifrån att man har en vanlig madrass. | ||
Rad 25: | Rad 25: | ||
Hålet i ena änden är en konsekvens av att jag låter loftsängen spänna från vägg till vägg. Tanken är att det ska kunna användas antingen för lösa plastlådor, alternativt för att bygga till en hylla för att ha böcker och dylikt på. Det har jag dock inte skissat på. Jag började med plastlådor från IKEA (Trofast back) som visade sig passa perfekt. | Hålet i ena änden är en konsekvens av att jag låter loftsängen spänna från vägg till vägg. Tanken är att det ska kunna användas antingen för lösa plastlådor, alternativt för att bygga till en hylla för att ha böcker och dylikt på. Det har jag dock inte skissat på. Jag började med plastlådor från IKEA (Trofast back) som visade sig passa perfekt. | ||
− | För den som är intresserad finns | + | För den som är intresserad finns ritningen i SCAD-format sist på denna sida. |
Min största oro var att det skulle vara svårt att få tag på virke som var någorlunda rakt, framförallt brädan som skulle vara utåt. Efter viss konsultation med expertis visade det sig att det finns olika klassningar, C16 och C24. C24 är rakare och har mindre kvistar. När man köper tjockare dimensioner (över 45x95) så finns C24 att välja på, iallafall på det byggvaruhus jag handlade på. | Min största oro var att det skulle vara svårt att få tag på virke som var någorlunda rakt, framförallt brädan som skulle vara utåt. Efter viss konsultation med expertis visade det sig att det finns olika klassningar, C16 och C24. C24 är rakare och har mindre kvistar. När man köper tjockare dimensioner (över 45x95) så finns C24 att välja på, iallafall på det byggvaruhus jag handlade på. | ||
Rad 41: | Rad 41: | ||
* Måla alla delar 2 ggr.- 1 1/2 dag (all cred till min fru här) | * Måla alla delar 2 ggr.- 1 1/2 dag (all cred till min fru här) | ||
* Bygga ihop på plats - 2 dagar | * Bygga ihop på plats - 2 dagar | ||
+ | |||
+ | = Ritning = | ||
+ | |||
+ | <pre> | ||
+ | rum_bredd = 2407; | ||
+ | vagg_planka_hojd = 195; | ||
+ | vagg_planka_bredd = 45; | ||
+ | barande_list_bredd = 25; | ||
+ | barande_list_hojd = 34; | ||
+ | sang_inre_bredd = 910; | ||
+ | sang_inre_langd = 2000; | ||
+ | sang_hojd = 150; | ||
+ | sang_yttre_bredd = sang_inre_bredd+2*vagg_planka_bredd; | ||
+ | echo("Sängens yttre bredd ",sang_yttre_bredd); | ||
+ | ben_hojd=1400; | ||
+ | ben_bredd=45; | ||
+ | ben_djup=45; | ||
+ | stolpe_bredd=45; | ||
+ | stolpe_djup=95; | ||
+ | stege_bredd=300; | ||
+ | steg_hojd=280; | ||
+ | steg_brada_hojd=28; | ||
+ | staket_hojd=300; | ||
+ | brada_hojd=95; | ||
+ | brada_mellanrum = 45; | ||
+ | brada_djup=28; | ||
+ | staket_mellanrum = 690; | ||
+ | f1 = "white"; | ||
+ | f2 = "white"; | ||
+ | f3 = "lightblue"; | ||
+ | bas_farg=f1; | ||
+ | lim_farg=f2; | ||
+ | spont_farg=f2; | ||
+ | madrass_farg=f3; | ||
+ | steg_farg= f2; | ||
+ | |||
+ | |||
+ | module vaggplanka(langd, inset) { | ||
+ | color(lim_farg) { | ||
+ | cube([langd, vagg_planka_bredd, vagg_planka_hojd]); | ||
+ | } | ||
+ | color(spont_farg) { | ||
+ | translate([inset,vagg_planka_bredd,0]) { | ||
+ | cube([langd-2*inset,barande_list_bredd,barande_list_hojd]); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | $fn=10; | ||
+ | |||
+ | module sang() { | ||
+ | color(madrass_farg) { | ||
+ | minkowski() { | ||
+ | cube([sang_inre_langd, sang_inre_bredd, sang_hojd]); | ||
+ | sphere(10); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | translate([-rum_bredd/2,-sang_yttre_bredd/2, ben_hojd/2-vagg_planka_hojd]) { | ||
+ | // Bärande plankor kring sängen | ||
+ | vaggplanka(rum_bredd, vagg_planka_bredd); | ||
+ | translate([0,2*vagg_planka_bredd+sang_inre_bredd,0]) { | ||
+ | mirror([0,1,0]) { | ||
+ | vaggplanka(rum_bredd, vagg_planka_bredd); | ||
+ | } | ||
+ | } | ||
+ | rotate(a=-90, v=[0,0,1]) { | ||
+ | translate([-vagg_planka_bredd-sang_inre_bredd, 0, 0]) { | ||
+ | vaggplanka(sang_inre_bredd, barande_list_bredd); | ||
+ | } | ||
+ | } | ||
+ | rotate(a=90, v=[0,0,1]) { | ||
+ | translate([vagg_planka_bredd,-rum_bredd, 0]) { | ||
+ | vaggplanka(sang_inre_bredd, barande_list_bredd); | ||
+ | } | ||
+ | } | ||
+ | echo("Inre måttet på utrymmet som blir över", rum_bredd-sang_inre_langd-3*vagg_planka_bredd); | ||
+ | rotate(a=-90, v=[0,0,1]) { | ||
+ | translate([-vagg_planka_bredd-sang_inre_bredd, rum_bredd-sang_inre_langd-(2*vagg_planka_bredd), 0]) { | ||
+ | vaggplanka(sang_inre_bredd, barande_list_bredd); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Sista sponten på andra sidan om avdelaren. | ||
+ | translate([rum_bredd-sang_inre_langd-2*vagg_planka_bredd-barande_list_bredd, vagg_planka_bredd+barande_list_bredd, 0]) { | ||
+ | color(spont_farg) { | ||
+ | cube([barande_list_bredd, sang_inre_bredd-2*barande_list_bredd, barande_list_hojd]); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | color(bas_farg) { | ||
+ | // Benen | ||
+ | translate([0,0,-ben_hojd]) { | ||
+ | translate([0, -stolpe_djup/2,0]) { | ||
+ | cube([stolpe_bredd, stolpe_djup, ben_hojd]); | ||
+ | } | ||
+ | translate([0, sang_yttre_bredd-ben_bredd,0]) { | ||
+ | cube([ben_djup, ben_bredd, ben_hojd]); | ||
+ | } | ||
+ | translate([rum_bredd-ben_djup, sang_yttre_bredd-ben_bredd,0]) { | ||
+ | cube([ben_djup, ben_bredd, ben_hojd]); | ||
+ | } | ||
+ | translate([rum_bredd-stolpe_bredd, -stolpe_djup/2,0]) { | ||
+ | cube([stolpe_bredd, stolpe_djup, ben_hojd]); | ||
+ | } | ||
+ | //Stegstolpen (ej hörn) | ||
+ | translate([rum_bredd-2*stolpe_bredd-stege_bredd, -stolpe_djup/2,0]) { | ||
+ | cube([stolpe_bredd, stolpe_djup, ben_hojd]); | ||
+ | } | ||
+ | } | ||
+ | // echo ("Total höjd på benen: ", ben_hojd+vagg_planka_hojd+staket_hojd); | ||
+ | |||
+ | //Staketstolparna från fotänden | ||
+ | for (i=[0:2]) { | ||
+ | translate([staket_mellanrum*i, -stolpe_djup/2,0]) { | ||
+ | cube([stolpe_bredd, stolpe_djup/2, vagg_planka_hojd+staket_hojd]); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | //Fortsättningen på stegen, huvudänden | ||
+ | translate([rum_bredd-stolpe_bredd, -stolpe_djup/2,0]) { | ||
+ | cube([stolpe_bredd, stolpe_djup/2, vagg_planka_hojd]); | ||
+ | } | ||
+ | |||
+ | //Fortsättningen på stegen + staket | ||
+ | translate([rum_bredd-2*stolpe_bredd-stege_bredd, -stolpe_djup/2,0]) { | ||
+ | cube([stolpe_bredd, stolpe_djup/2, vagg_planka_hojd+staket_hojd]); | ||
+ | } | ||
+ | |||
+ | echo("Staket längd: ", rum_bredd-stege_bredd-stolpe_bredd); | ||
+ | //Övre plankan i staketet | ||
+ | translate([0, 0, staket_hojd+vagg_planka_hojd-brada_hojd]) { | ||
+ | cube([rum_bredd-stege_bredd-stolpe_bredd, brada_djup, brada_hojd]); | ||
+ | } | ||
+ | //Undre plankan i staketet | ||
+ | translate([0, 0, staket_hojd+vagg_planka_hojd-2*brada_hojd - brada_mellanrum]) { | ||
+ | cube([rum_bredd-stege_bredd-stolpe_bredd, brada_djup, brada_hojd]); | ||
+ | } | ||
+ | } | ||
+ | color(steg_farg) { | ||
+ | translate([rum_bredd-stolpe_bredd-stege_bredd, -stolpe_djup/2, steg_hojd-ben_hojd]) { | ||
+ | cube([stege_bredd, stolpe_djup, steg_brada_hojd]); | ||
+ | } | ||
+ | translate([rum_bredd-stolpe_bredd-stege_bredd, -stolpe_djup/2, 2*steg_hojd+steg_brada_hojd-ben_hojd]) { | ||
+ | cube([stege_bredd, stolpe_djup, steg_brada_hojd]); | ||
+ | } | ||
+ | translate([rum_bredd-stolpe_bredd-stege_bredd, -stolpe_djup/2, 3*steg_hojd+2*steg_brada_hojd-ben_hojd]) { | ||
+ | cube([stege_bredd, stolpe_djup, steg_brada_hojd]); | ||
+ | } | ||
+ | translate([rum_bredd-stolpe_bredd-stege_bredd, -stolpe_djup/2, 4*steg_hojd+3*steg_brada_hojd-ben_hojd]) { | ||
+ | cube([stege_bredd, stolpe_djup, steg_brada_hojd]); | ||
+ | } | ||
+ | } | ||
+ | translate([rum_bredd-sang_inre_langd-vagg_planka_bredd, vagg_planka_bredd, barande_list_hojd]) { | ||
+ | sang(); | ||
+ | } | ||
+ | } | ||
+ | </pre> |
Nuvarande version från 13 december 2017 kl. 11.02
Innehåll
Introduktion
Maker: Matthias Palmér med assistans av familjen
Kostnad: ca. 2000 kr.
Status: Klart, ca. en veckas jobb
Vi lovade dottern att hon skulle få en loftsäng precis som storebror för ett bra tag sedan, så det var hög tid att fixa saken. IKEAs Tromsö var ett klart alternativ, men efter lite funderande kom vi fram till att det finns en mängd fördelar med en platsbyggd loftsäng:
- Bättre utnyttjande av rummet
- Stabilare än en lös säng
- Snyggare med en loftsäng som blir en del av rummet.
Efter lite sökande på nätet hittade vi en mängd erbjudande av snickare, i huvudsak i Stockholmsregionen, som platsbyggde loftsängar åt en. Majoriteten av dessa erbjudanden visade sig handla om en ganska standard loftsäng som exakt passade sängens storlek, vi var mer intresserade av att bygga in från vägg till vägg. Så, första steget blev helt enkelt att rita upp vad vi ville ha som kunde agera underlag i kommunikation med en snickare.
Men, när väl ritningen var klar kändes det helt realistiskt, roligare och billigare att bygga den själv. Sagt och gjort, efter nyår 2015 satte vi igång.
Genomförande
Jag valde att rita loftsängen med hjälp av OpenSCAD. Orsaken att jag valde OpenSCAD istället för någon annat ritprogram var att jag är mer bekväm med att scripta saker än att lära mig kontroller. Dessutom kunde jag med OpenSCAD parametrisera hela ritningen vilket gjorde det enkelt att experimentera med olika design. Framförallt experimerade jag en hel del med dimensionerna på virket.
Madrassen läggs på en ribbotten som i sin tur vilar på en trälist som är fastskruvad längst ner på ramen. I princip kan man lägga i en resårbotten istället för ribbotten, men de flesta resårbottnar är ganska höga, minst 23 cm. Det medför att sängen kommer rätt högt upp och i det fallet bör man låta fallskyddet vara högre för att det inte ska se konstigt ut. Jag valde att designa loftsängen utifrån att man har en vanlig madrass.
Hålet i ena änden är en konsekvens av att jag låter loftsängen spänna från vägg till vägg. Tanken är att det ska kunna användas antingen för lösa plastlådor, alternativt för att bygga till en hylla för att ha böcker och dylikt på. Det har jag dock inte skissat på. Jag började med plastlådor från IKEA (Trofast back) som visade sig passa perfekt.
För den som är intresserad finns ritningen i SCAD-format sist på denna sida.
Min största oro var att det skulle vara svårt att få tag på virke som var någorlunda rakt, framförallt brädan som skulle vara utåt. Efter viss konsultation med expertis visade det sig att det finns olika klassningar, C16 och C24. C24 är rakare och har mindre kvistar. När man köper tjockare dimensioner (över 45x95) så finns C24 att välja på, iallafall på det byggvaruhus jag handlade på.
Det som var svårast att få tag på var en tunn gummimatta att ha under ben och stege. Efter att ha letat i otaliga affärer var det tillslut en äldre man på Bauhaus som hade haft samma problem själv. Han plockade då fram några gummibitar som användes under pallar på lagret, dvs inte något som gick att köpa egentligen.
Resultat
Tidsåtgången såg ut så här:
- Planering, rita och experimentera - 1 dag
- Handla virke, skruvar, vinkeljärn, gipsskruv, ribbotten, etc. - 1 dag (fixa släp osv.)
- Mäta till och såga alla delar - 1 1/2 dag
- Måla alla delar 2 ggr.- 1 1/2 dag (all cred till min fru här)
- Bygga ihop på plats - 2 dagar
Ritning
rum_bredd = 2407; vagg_planka_hojd = 195; vagg_planka_bredd = 45; barande_list_bredd = 25; barande_list_hojd = 34; sang_inre_bredd = 910; sang_inre_langd = 2000; sang_hojd = 150; sang_yttre_bredd = sang_inre_bredd+2*vagg_planka_bredd; echo("Sängens yttre bredd ",sang_yttre_bredd); ben_hojd=1400; ben_bredd=45; ben_djup=45; stolpe_bredd=45; stolpe_djup=95; stege_bredd=300; steg_hojd=280; steg_brada_hojd=28; staket_hojd=300; brada_hojd=95; brada_mellanrum = 45; brada_djup=28; staket_mellanrum = 690; f1 = "white"; f2 = "white"; f3 = "lightblue"; bas_farg=f1; lim_farg=f2; spont_farg=f2; madrass_farg=f3; steg_farg= f2; module vaggplanka(langd, inset) { color(lim_farg) { cube([langd, vagg_planka_bredd, vagg_planka_hojd]); } color(spont_farg) { translate([inset,vagg_planka_bredd,0]) { cube([langd-2*inset,barande_list_bredd,barande_list_hojd]); } } } $fn=10; module sang() { color(madrass_farg) { minkowski() { cube([sang_inre_langd, sang_inre_bredd, sang_hojd]); sphere(10); } } } translate([-rum_bredd/2,-sang_yttre_bredd/2, ben_hojd/2-vagg_planka_hojd]) { // Bärande plankor kring sängen vaggplanka(rum_bredd, vagg_planka_bredd); translate([0,2*vagg_planka_bredd+sang_inre_bredd,0]) { mirror([0,1,0]) { vaggplanka(rum_bredd, vagg_planka_bredd); } } rotate(a=-90, v=[0,0,1]) { translate([-vagg_planka_bredd-sang_inre_bredd, 0, 0]) { vaggplanka(sang_inre_bredd, barande_list_bredd); } } rotate(a=90, v=[0,0,1]) { translate([vagg_planka_bredd,-rum_bredd, 0]) { vaggplanka(sang_inre_bredd, barande_list_bredd); } } echo("Inre måttet på utrymmet som blir över", rum_bredd-sang_inre_langd-3*vagg_planka_bredd); rotate(a=-90, v=[0,0,1]) { translate([-vagg_planka_bredd-sang_inre_bredd, rum_bredd-sang_inre_langd-(2*vagg_planka_bredd), 0]) { vaggplanka(sang_inre_bredd, barande_list_bredd); } } // Sista sponten på andra sidan om avdelaren. translate([rum_bredd-sang_inre_langd-2*vagg_planka_bredd-barande_list_bredd, vagg_planka_bredd+barande_list_bredd, 0]) { color(spont_farg) { cube([barande_list_bredd, sang_inre_bredd-2*barande_list_bredd, barande_list_hojd]); } } color(bas_farg) { // Benen translate([0,0,-ben_hojd]) { translate([0, -stolpe_djup/2,0]) { cube([stolpe_bredd, stolpe_djup, ben_hojd]); } translate([0, sang_yttre_bredd-ben_bredd,0]) { cube([ben_djup, ben_bredd, ben_hojd]); } translate([rum_bredd-ben_djup, sang_yttre_bredd-ben_bredd,0]) { cube([ben_djup, ben_bredd, ben_hojd]); } translate([rum_bredd-stolpe_bredd, -stolpe_djup/2,0]) { cube([stolpe_bredd, stolpe_djup, ben_hojd]); } //Stegstolpen (ej hörn) translate([rum_bredd-2*stolpe_bredd-stege_bredd, -stolpe_djup/2,0]) { cube([stolpe_bredd, stolpe_djup, ben_hojd]); } } // echo ("Total höjd på benen: ", ben_hojd+vagg_planka_hojd+staket_hojd); //Staketstolparna från fotänden for (i=[0:2]) { translate([staket_mellanrum*i, -stolpe_djup/2,0]) { cube([stolpe_bredd, stolpe_djup/2, vagg_planka_hojd+staket_hojd]); } } //Fortsättningen på stegen, huvudänden translate([rum_bredd-stolpe_bredd, -stolpe_djup/2,0]) { cube([stolpe_bredd, stolpe_djup/2, vagg_planka_hojd]); } //Fortsättningen på stegen + staket translate([rum_bredd-2*stolpe_bredd-stege_bredd, -stolpe_djup/2,0]) { cube([stolpe_bredd, stolpe_djup/2, vagg_planka_hojd+staket_hojd]); } echo("Staket längd: ", rum_bredd-stege_bredd-stolpe_bredd); //Övre plankan i staketet translate([0, 0, staket_hojd+vagg_planka_hojd-brada_hojd]) { cube([rum_bredd-stege_bredd-stolpe_bredd, brada_djup, brada_hojd]); } //Undre plankan i staketet translate([0, 0, staket_hojd+vagg_planka_hojd-2*brada_hojd - brada_mellanrum]) { cube([rum_bredd-stege_bredd-stolpe_bredd, brada_djup, brada_hojd]); } } color(steg_farg) { translate([rum_bredd-stolpe_bredd-stege_bredd, -stolpe_djup/2, steg_hojd-ben_hojd]) { cube([stege_bredd, stolpe_djup, steg_brada_hojd]); } translate([rum_bredd-stolpe_bredd-stege_bredd, -stolpe_djup/2, 2*steg_hojd+steg_brada_hojd-ben_hojd]) { cube([stege_bredd, stolpe_djup, steg_brada_hojd]); } translate([rum_bredd-stolpe_bredd-stege_bredd, -stolpe_djup/2, 3*steg_hojd+2*steg_brada_hojd-ben_hojd]) { cube([stege_bredd, stolpe_djup, steg_brada_hojd]); } translate([rum_bredd-stolpe_bredd-stege_bredd, -stolpe_djup/2, 4*steg_hojd+3*steg_brada_hojd-ben_hojd]) { cube([stege_bredd, stolpe_djup, steg_brada_hojd]); } } translate([rum_bredd-sang_inre_langd-vagg_planka_bredd, vagg_planka_bredd, barande_list_hojd]) { sang(); } }