✍ diale.org

Webpage of Tiago Charters de Azevedo

Início/Start Arquivo/Archive AdNauseum Notas/Notes Contact me RSS


Wharfedale 15 woofer

... que tenho aqui em casa

2017/01/14-14:27:28

Finalmente consegui descobrir qual o altifalante que tinha aqui para casa (era do meu avô): um Wharfedale de 15 polegadas. Precisa de um restauro mas o cone e a spider parecem estar em boas condições!

Etiquetas/Tags: Wharfedale, 15'', woofer, W15/cs

Pavilhões acústicos: ideias e construções

... para alunos de design e outros mini engenheiros

2016/12/15-15:24:21

Espiral de Cornut

Paper horns

Impressão 3D

(em actualização)

Etiquetas/Tags: acústica, pavilhões, altifalantes

Vaso 3D

... obtido por rotação em torno de um eixo

2016/11/27-13:47:37

A visualização tridimensional é um ingrediente importante na comunicação e estudo da matemática. Figuras e modelos expressam ideias e antecipam o estabelecimento de um formalismo matemático mais rigoroso. Embora a imaginação visual não substitua o conceito de demonstração dá-nos uma prova visual convincente e permite construir uma intuição sobre os resultados a perseguir e ideias a aprofundar.

A figura seguinte mostra a modelação 3D de uma "jarra" construída através da rotação em torno de um eixo.

Ao contrário do que acontece com outros tipos de software, os softwares usados em matemática permitem de uma forma muito económica a modelação e construção de estruturas não triviais, especificando simplesmente a expressão que as definem.

phi=(1+sqrt(5))/2;

n=100;

r=40;
l=152;
mu=3;
mv=2;
a=.25;
b=a/phi;
lambda=1.5;

nu=.2;
[u,v]=meshgrid([linspace(0,2*pi,n) 2*pi/n],linspace(0,l,n));

x=r*cos(u).*abs(cos(u)).^nu.*(1+a*cos(mu*u+mv*pi*v/l).^5+b*cos(mv*2*pi*v/l));
y=r*sin(u).*abs(sin(u)).^nu.*(1+a*cos(mu*u+mv*phi*pi*v/l).^5+b*cos(mv*2*pi*v/l));
z=v;

simplef2stl("vase.stl",x,y,z)

Depois de impresso o resultado é muito apelativo!

... e não é uma curva.

Função para gerar STL em GNU/Octave

## Author: Tiago Charters de Azevedo 
## Maintainer: Tiago Charters de Azevedo 

## Copyright (c) - 2016 Tiago Charters de Azevedo

## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 3, or (at your option)
## any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin Street, Fifth Floor,
## Boston, MA 02110-1301, USA.

function simplef2stl(filename,x,y,z)
  fid=fopen(filename,'w');
  title_str=sprintf('%s',datestr(now));
  fprintf(fid,'solid %s\r\n',title_str);

  zmin=min(min(z));
  z=z-zmin;
  nfacets=0;
  nx=size(z,1);
  ny=size(z,2);
  for i=1:nx-1;
    for j=1:ny-1
      p1=[x(i,j) y(i,j) z(i,j)];
      p2=[x(i,j+1) y(i,j+1) z(i,j+1)];
      p3=[x(i+1,j+1) y(i+1,j+1) z(i+1,j+1)];
      writefacet(fid,p1,p2,p3);

      p1=[x(i+1,j+1) y(i+1,j+1) z(i+1,j+1)];
      p2=[x(i+1,j) y(i+1,j) z(i+1,j)];
      p3=[x(i,j) y(i,j) z(i,j)];        
      writefacet(fid,p1,p2,p3);
    end
  end
  fprintf(fid,'endsolid');
  fclose(fid);
end  
  
function num=writefacet(fid,p1,p2,p3)
    n=normal(p1,p2,p3);
    fprintf(fid,'facet normal %.7E %.7E %.7E\r\n',n(1),n(2),n(3));
    fprintf(fid,'outer loop\r\n');        
    fprintf(fid,'vertex %.7E %.7E %.7E\r\n',p1);
    fprintf(fid,'vertex %.7E %.7E %.7E\r\n',p2);
    fprintf(fid,'vertex %.7E %.7E %.7E\r\n',p3);
    fprintf(fid,'endloop\r\n');
    fprintf(fid,'endfacet\r\n');
end

function n=normal(p1,p2,p3)
  v1=p2-p1;
  v2=p3-p1;
  v3=cross(v1,v2);
  n=v3./sumsq(v3);
end

Etiquetas/Tags: 3d, print, reprap, GNU/Octave, STL

OD-11 Carlsson-cube

Omnidirectional, bass reflex type.

2016/11/21-11:53:44

Box volume: 10 litres
Measures: B x W x D: 26 x 26 x 26 cm
Weight: 6 Kg
Principle: Omnidirectional, bass reflex type. Diagonally facing speaker-
elements for frontfacing wall or bookshelf placement or upwardsfacing floor-position
Impedance: 8 ohms
Frequency range: 45-18.000 Hz
Frequency response: 52-15.000 Hz ± 4dB
Crossover frequency: 1800 Hz
Mid-bass: 1pc 6.5 inch 8 ohms Peerless SC165.
Tweeters: 1 pc 5 cm 8 ohms Peerless MT20HFC 

Ref.: http://www.carlssonplanet.com/od11.php

Etiquetas/Tags: hifi, od-11, Carlsson, cube

RepRap Printing on Fabric

testing...

2016/10/25-12:17:49

After seeing the post RepRap Printing on Fabric, I had to try it out.

It works nicely!

Etiquetas/Tags: 3d printing, 3dp, cloth, fabric, reprap

All work and no play...

with Arduino and TVout

2016/07/23-00:01:49

So I've been playing with Arduino and the TVout library... fun, fun, fun!

#include <TVout.h>
#include <TVoutfonts/fontALL.h>
#include "TVOlogo.h"

TVout TV;

void setup(){
  TV.begin(_PAL); // for PAL system
  TV.clear_screen();
}

void loop(){
  TV.select_font(font4x6);
  
  TV.set_cursor(0,0);
  TV.print("All work");

  TV.set_cursor(0,7);
  TV.print("and no play");
  
  TV.set_cursor(0,14);
  TV.print("makes Jack a dull boy...");

  TV.bitmap(0,21,TVOlogo);
}

Refs.:

Happy hacking!

Etiquetas/Tags: Arduino, TVout

Doing a drawbot...

using servos and arduino

2016/06/30-12:53:08

First the results... it really does not work.

Lots of vibrations and errors... but a lot of fun.

Here's the GNU/Octave code to generate the .ino file.

Happy hacking!

clear all

l1=18.5;
l2=20;
d=-15;
n=200;
t=linspace(0,20*pi,n);
x=d+5*cos(t).*exp(-.05*t);
y=5*sin(t).*exp(-.05*t);
alpha(1)=   -4.5980
beta(1)=   4.3070

for i=1:n-1
  aux= newtonsys([alpha(i) beta(i)],[x(i+1) y(i+1)],1e-3,l1,l2);
  
  alpha(i+1)=aux(1);
  beta(i+1)=aux(2);
end


theta1=-alpha*180/pi-180;
theta2=beta*180/pi-180;


## Write to INO
filename="~/Arduino/examples/servo/servo.ino"

comment_str="This is a comment on the begining of the .ino file ;)";
fid=fopen(filename,'w');
fprintf(fid,'/* %s */\n',comment_str);

header_str="\n#include <Servo.h>\n\nServo Servo1;\nServo Servo2;\n\n";
preamble_str="\nvoid setup()\{\n    Servo2.attach(10);\n    Servo1.attach(9);\}\n\nvoid loop(){\n";

fprintf(fid,'%s',header_str);
fprintf(fid,'%s',preamble_str);

for i=1:n
  fprintf(fid,'%s%f%s',"Servo1.write(",theta1(i),");\n");
  fprintf(fid,'%s%f%s',"Servo2.write(",theta2(i),");\n");
  fprintf(fid,'%s',"delay(100);\n");


end
fprintf(fid,'%s',"}");
fclose(fid);

############################################################
figure(1)
clf
hold on
plot(x,y)
u=l1*cos(alpha)+l2*cos(beta);
v=l1*sin(alpha)+l2*sin(beta);
plot(u,v,'r-')

############################################################
figure(2)
clf
hold on
plot(l1*cos(theta1)+l2*cos(theta2),l1*sin(theta2)+l2*cos(theta2),'-')
plot(l2*cos(beta),l2*sin(beta),'r-')
plot(l1*cos(alpha(1)),l1*sin(alpha(1)),'o')

[t' alpha' beta' theta1' theta2']

function Fv=Ffun(x,xpos,l1,l2)
  Fv(1,1)=xpos(1)-l1*cos(x(1))-l2*cos(x(2));
  Fv(2,1)=xpos(2)-l1*sin(x(1))-l2*sin(x(2));
end
function Jv=Jfun(x,l1,l2)
  Jv(1,1)=l1*sin(x(1));
  Jv(1,2)=l2*sin(x(2));
  Jv(2,1)=-l1*cos(x(1));
  Jv(2,2)=-l2*cos(x(2));
end
function x=newtonsys(xo,xpos,tol,l1,l2)
  Niter=1000;
  x=xo';
  delta=eye(length(xo),1);

  i=0;
  while or(i<=Niter, abs(max(delta))>tol)
      Jv=Jfun(x,l1,l2);
      Fv=Ffun(x,xpos,l1,l2);
      delta=-Jv\Fv;
      x=x+delta;
      i=i+1;
  endwhile
end

Etiquetas/Tags: arduino, draw bot, Octave, ino

"Now, a tricolumn - build this efficiente column speaker" by R. N.Baldock.

... simple idea for using a CNC.

2016/06/16-14:55:56

Here is a simple idea for building a tricolumn with a F88 Fountek speaker.

And the final construction:

Etiquetas/Tags: CNC, tricolumn, speaker, audio

Prusa i3 pro B

... a wood frame version

2016/06/16-10:12:21

So instead of this fragile wood frame

this

It's a hybrid version, between a Prusa i3 Pro B and a Mendel 90. Works nicely!

P.S.

In you are wandering it as a GT2560 board:

[#define MOTHERBOARD BOARD_ULTIMAKER]

board nr. 7. 

Etiquetas/Tags: diy, 3d printer, prusa i3 pro b

Speaker enclosure resistance vent

3D printed

2016/06/15-17:02:27

This a simple hack of a resistor vent (https://www.youmagine.com/tca/).The basic idea is to build a small speaker enclosure and use a resistance vent to minimize the boomimg effect that the small box imposes on the final frequency response.

More details here: http://diyaudioprojects.com/Technical/Aperiodic/

Typically these resistors have 10cm diameter. The default STL's are for a 8cm hole, but you can tailor it using the SCAD file attached (see end of page).

Happy hacking!

Notes:

Printer Brand: RepRap

Printer: Prusa i3

Rafts: No

Supports: No

Resolution: .2mm

Infill: 20%

Here's de OpenSCAD code

// Author: Tiago Charters de Azevedo 
// Maintainer: Tiago Charters de Azevedo 

// Copyright (c) - 2016 Tiago Charters de Azevedo (tca@diale.org)

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor,
// Boston, MA 02110-1301, USA.

$fn=64;
h=7.5;
R=40;
eps=.2;
n=4;
thickness=2;
screw=3;

module top(){
    translate([0,0,thickness/2]){
        difference(){
            difference(){
                cylinder(thickness,R+3*screw,R+3*screw,center=true);
                cylinder(2*thickness,R-eps-thickness,R-eps-thickness,center=true);}
                for(i=[0:2]){
                    rotate([0,0,i*360/3]){
                        translate([0,R+2*screw/3,0]){
                            cylinder(10,screw/2+eps,screw/2+eps,center=true);}}}}}
    
    
 translate([0,0,(h+thickness)/2]){
        difference(){
            cylinder(h+thickness,R-eps-thickness,R-eps-thickness,center=true);
            cylinder(10*h,R-eps-2*thickness,R-eps-2*thickness,center=true);}}
    
    intersection(){
        union(){
            for(i=[-n:n]){
                translate([i*R/n,0,1]){
                    cube([2,2*R,2],center=true);}}
            
            rotate([0,0,90]){
                for(i=[-n:n]){
                    translate([i*R/n,0,1]){
                        cube([2,2*R,2],center=true);}}}}
        
        cylinder(50,R-eps-thickness,R-eps-thickness,center=true);}}

////////////////////////////////////////////////////////////

module bottom(){
    rotate([0,0,0]){
        translate([0,0,0]){
            translate([0,0,h/2]){
                difference(){
                    cylinder(h+thickness,R,R,center=true);
                    cylinder(5*h,R-thickness,R-thickness,center=true);}}
            
            intersection(){
                union(){
                    for(i=[-n:n]){
                        translate([i*(R)/n,0,0]){
                            cube([2,2*(R-eps),2],center=true);}}
                    
                    rotate([0,0,90]){
                        for(i=[-n:n]){
                            translate([i*(R)/n,0,0]){
                                cube([2,2*(R-eps),2],center=true);}}}}
                cylinder(50,R-eps,R-eps,center=true);}}}}



//!top();
//!bottom();

!alltosee();

module alltosee(){
    top();
    rotate([0,180,0]){
        translate([0,0,-4*h,]){
            bottom();
        }}}

Added some handles and feet;)

Etiquetas/Tags: audio, speaker enclosure, vent, variovent

Palavras chave/keywords: página pessoal, blog

Criado/Created: NaN

Última actualização/Last updated: 14-01-2017 [14:29]


GNU/Emacs

1999-2016 (ç) Tiago Charters de Azevedo

São permitidas cópias textuais parciais/integrais em qualquer meio com/sem alterações desde que se mantenha este aviso.

Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.