-
Notifications
You must be signed in to change notification settings - Fork 0
/
source.m
342 lines (286 loc) · 17.8 KB
/
source.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% DIMENSIONADOR DE MOINHOS DE BARRAS E MOINHOS DE BOLAS %%%%
%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%
%%%%%%%%% Autor: %%%%%%%%%%
%%%%%%%%%%%%%%%%% Daniel Vieira Azevedo %%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%% FEUP-DEM %%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%% v0.2a22.11.16 %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% $$$$$$$$\ $$$$$$$$\ $$\ $$\ $$$$$$$\
% $$ _____|$$ _____|$$ | $$ |$$ __$$\
% $$ | $$ | $$ | $$ |$$ | $$ |
% $$$$$\ $$$$$\ $$ | $$ |$$$$$$$ |
% $$ __| $$ __| $$ | $$ |$$ ____/
% $$ | $$ | $$ | $$ |$$ |
% $$ | $$$$$$$$\ \$$$$$$ |$$ |
% \__| \________| \______/ \__|
% % % %
% % % `.:+so/-`
% % % -hdNMMMNdmmMNy/`
% % % :MMMMMMhdNhdsymNy:
% % % .m+MMMhmMMMyNdyhNs
% % % mo/ymhdmhmys:odh`
% % % mo- :h+` yho :dy
% % % -m+/shNds+hds -do
% % % .NMosMNNmNNhdmyomy
% % % .NMNNMMMNhdhhdhMNNo
% % % .yMmomMm:mMdhyyddd
% % % oMy-dMm`mMyyyomd/
% % % yd+ydNy-hmdyhomd`
% % % +h+dNNM:sNMh+yhdy.
% % % shoms-hN.dMMhys/yy.
% % % sh+oNhsmy-dMMhohyNh.
% % % `sh+.:MNMM/sMMMhsyoyy.
% % % `yhs+/sMNMN`oymMdhs/yh.
% % % `yNNMMMNMNNy-mhshd+hhmm.
% % % `yys:/shdMNN/+MMMMdoy+oy.
% % % `yo+. /Mdm.ydyyhds/-yh-
% % % .hs+` :Mmy-mddmNdoyydd:
% % % .ho+` :MM/oMNMMMd/sssy:
% % % -h++` :MN.yNNmdddso/yy:
% % % `y//` :My:sdyosyds/.oy:
% % % :M/sdMmdMdm:dmmh:
% % % ` `.`..--`--oosmNMMMMN:o++o:
% % % ..`..```` `+ .yyyysmo/:ym:
% % % `o `+yoy+ho:-+m:
% % % `s `/shyod- `.y+:`
% % % `s ....-:o- shh:/--`
% % % s `----.. s+o. :+`
% % % + `..-.--` y` s
% % % ` `--/ y-/:. /
% % % `- . y .-
% % % -
% % % Feito no âmbito da disciplina Tratamento de Matérias Primas e Resíduos I
% % % do curso de Licenciatura em Ciências de Engenharia - Engenharia de Minas de Geo-Ambiente
% % % Função do programa: Dimensionamento de um moinho de barras ou de bolas para máxima eficiência.
% % % Código actualizado em www.moinhos.tk
% % % ou
% % % Github: https://raw.githubusercontent.com/3rdvision/moinhos/master/source.m
clear ; clc
muro=sprintf ( '_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|\n___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__\n_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|\n___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__\n_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|\n___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__\n');
% /\ muro visual de separação
%%%%%%%%%%%%%%%%%%%%%%%
% Variáveis tabeladas %
%%%%%%%%%%%%%%%%%%%%%%%
MWi=[17.9000000000000 12.2000000000000;27.4000000000000 11.4000000000000;10.8000000000000 12.5000000000000;19.6000000000000 7;10.1000000000000 13.4000000000000;5.80000000000000 5.70000000000000;14.5000000000000 10.8000000000000;9.90000000000000 13.7000000000000;11 -1;15.4000000000000 9.80000000000000;18 15.9000000000000;15.1000000000000 17.6000000000000;13.6000000000000 12.1000000000000;33.5000000000000 16.9000000000000;11.6000000000000 17.5000000000000;13.9000000000000 14.2000000000000;17.2000000000000 16;18.3000000000000 10.1000000000000;12.7000000000000 11;11.7000000000000 11;20.4000000000000 8.40000000000000;7.20000000000000 -1;7.90000000000000 7.60000000000000;17.9000000000000 7.10000000000000;16.5000000000000 -1;9.90000000000000 16.3000000000000;11.1000000000000 12.5000000000000;9 9.30000000000000;14.5000000000000 15.9000000000000;13.2000000000000 11.4000000000000;10.2000000000000 10.6000000000000;10 12.3000000000000;10.3000000000000 12.6000000000000;12.5000000000000 12.4000000000000;12.8000000000000 14.3000000000000;15.5000000000000 19.2000000000000;9.80000000000000 11;13.4000000000000 7.90000000000000;11.8000000000000 14.1000000000000;12.4000000000000 11.3000000000000;13.9000000000000 10.9000000000000;11.6000000000000 11.8000000000000;12.5000000000000 14.9000000000000;14.6000000000000 15.2000000000000;17 17.5000000000000;11.4000000000000 10.9000000000000;11 12.8000000000000;14.6000000000000 13.3000000000000;10.9000000000000 12.9000000000000;27.4000000000000 18.1000000000000;10.1000000000000 8.70000000000000;11.2000000000000 12.3000000000000;14.4000000000000 14.4000000000000;14 -1;28.4000000000000 9.80000000000000;14.3000000000000 8.90000000000000;13.6000000000000 12.8000000000000;10.4000000000000 -1;23.8000000000000 13;22.1000000000000 -1;12 19.3000000000000;15.3000000000000 -1;38.2000000000000 27];
% /\ Work Index p/ bolas e barras; nota: os valores -1 significam que não há dados técnicos
MICIRPbar=[0.910000000000000 0.760000000000000 6 1.07000000000000;1.22000000000000 1.07000000000000 19 1.68000000000000;1.52000000000000 1.37000000000000 45 2.29000000000000;1.83000000000000 1.68000000000000 91 2.90000000000000;2.13000000000000 1.98000000000000 145 3.20000000000000;2.44000000000000 2.29000000000000 220 3.51000000000000;2.59000000000000 2.44000000000000 254 3.51000000000000;2.74000000000000 2.55000000000000 275 3.51000000000000;2.89000000000000 2.70000000000000 332 3.81000000000000;3.05000000000000 2.85000000000000 405 4.11000000000000;3.20000000000000 3 486 4.42000000000000;3.35000000000000 3.15000000000000 587 4.72000000000000;3.51000000000000 3.31000000000000 654 4.72000000000000;346 3.46000000000000 724 4.72000000000000;3.81000000000000 3.61000000000000 874 5.34000000000000;3.96000000000000 3.76000000000000 1010 5.64000000000000;4.12000000000000 3.92000000000000 1107 5.64000000000000;4.27000000000000 4.07000000000000 1263 5.94000000000000;4.42000000000000 4.22000000000000 1371 5.94000000000000;4.57000000000000 4.37000000000000 1481 5.94000000000000];
MICIRPbol=[0.910000000000000 0.910000000000000 5;1.22000000000000 1.22000000000000 15;1.52000000000000 1.52000000000000 34;1.83000000000000 1.83000000000000 63;2.13000000000000 2.13000000000000 108;2.44000000000000 2.44000000000000 170;2.59000000000000 2.44000000000000 198;2.74000000000000 2.74000000000000 255;2.89000000000000 2.74000000000000 291;3.05000000000000 3.05000000000000 366;3.20000000000000 3.05000000000000 411;3.35000000000000 3.35000000000000 484;3.51000000000000 3.35000000000000 535;3.66000000000000 3.66000000000000 644;3.81000000000000 3.66000000000000 711;3.96000000000000 3.96000000000000 842;4.12000000000000 3.96000000000000 943;4.27000000000000 4.27000000000000 1090;4.42000000000000 4.27000000000000 1183;4.57000000000000 4.57000000000000 1354;4.72000000000000 4.57000000000000 1457;4.88000000000000 4.88000000000000 1652;5.03000000000000 4.88000000000000 1766;5.18000000000000 5.18000000000000 2059;5.33000000000000 5.18000000000000 2182;5.49000000000000 5.49000000000000 2441];
s_MICIRPbar=length(MICIRPbar); % alocamento de dimensão
s_MICIRPbol=length(MICIRPbol); % alocamento de dimensão
% \/ listagem dos factores de correcção e respectivas descrições
EFs=['EF1';'EF2';'EF3';'EF4';'EF5';'EF6';'EF7';'EF8'];
Descricao={'Ambiente húmido ou seco';'Circuito aberto ou fechado';'Diâmetro';'Oversize';'Apenas para calibres muito finos';'Apenas para monhos de barras';'Apenas para baixa RR';'Apenas para moinhos de barras'};
% \/ listagem de materiais
Material={'Alumina';'Arenito';'Argila';'Argila calcinada';'Argilito';'Barita';'Bauxita';'Calcário';'Calcário queimado';'Carvão';'Cascalho';'Cascos de ostras';'Clínquer';'Coque';'Diorito';'Dolomita';'Escória';'Escória forno';'Espatoflúor';'Feldspato';'Ferro-cromo';'Ferro-magnésio';'Ferro-manganês';'Ferro-sílica';'Fosfatos fertilizantes';'Granito';'Hematita';'Limonita';'Magnesita';'Magnetita concentrada';'Marga';'Matéria-prima para cimento';'Minério de chumbo';'Minério de chumbo-zinco';'Minério de cobre';'Minério de cobre-níquel';'Minério de cobre-zinco';'Minério de cromo';'Minério de estanho';'Minério de ferro';'Minério de manganês';'Minério de molibdênio';'Minério de níquel';'Minério de ouro';'Minério de prata';'Minério de titânio';'Minério de tungstênio';'Minério de urânio';'Minério de zinco';'Pederneira';'Pirita';'Quartzito';'Quartzo';'Rejeitos';'Resíduo de níquel';'Rocha sílica';'Rochas fosfáticas';'Siderita';'Sílica';'Sucata de aço';'Taconita';'Talco';'Xisto oleoso'};
n=[1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63];
%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Inicio do programa %
%%%%%$$$$$$$$$$%%%%%%%%%%%%%%%%%%%
% \/ Ciclo p/ o dimensionamento %
% \/ de moinhos até interrupção %
% \/ dada pelo utilizador com %
% \/ Ctrl + C %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
while 1
%%% \/ esquema visual de inicio do programa
disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
disp('~~~~~~~Dimensionador de moinhos de barras e de bolas~~~~~~~~');
disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
disp(' \/');
disp('');
disp('Introduza todos valores no formato numérico ou decimal.');
disp(' ');
%%% /\ esquema visual inicio do programa
% \/ inputs do utilizador
moinho=input('Deseja um moinho com barras (1) ou com bolas (2)? ');
Q=input('Introduza a capacidade desejada em ton/h: ');
Feed=input('Introduza o valor em micron do calibre k80 à alimentação: ');
PF=input('Introduza o valor em micron do calibre k80 desejado para o produto final: ');
RR=Feed/PF; % Calcular relação redução pelos inputs feed e PF
tabelamat=table(n,Material);disp(tabelamat) % Mostrar tabela dos materiais
id=input('Consultando a tabela acima, introduza o nr. para o material desejado: ');
if moinho==1 %se barras
fprintf('\nWork index do respetivo material no moinho de barras:\n');
disp(MWi(id,2));
else %se bolas
fprintf('\nWork index do respetivo material no moinho de bolas:\n');
disp(MWi(id,1));
end
seco=input('Moagem a seco (1) ou moagem a húmido (2)? ');
circuito=input('Circuito aberto (1) ou fechado (2)? ');
if moinho==1 %se barras
pcircuito=input('A alimentação do moinho é proveniente de um circuito de britagem em circuito aberto (1) ou em circuito fechado (2)? '); % circuito que antecede - para o cálculo do fator de correcção
end
% /\ fim dos inputs pelo utilizador
disp(muro); % separar com muro para inicio das iterações
% 1- ir à tabela e escolher Wi baseado no id do material selecionado pelo
% utilizador
if moinho==2 % bolas
Wi=MWi(id,1);
else % barras
if MWi(id,2)<0 % caso não existam dados na experiência
disp('Não há dados registados deste material no moinho de barras.'); input('O programa não pode proseguir. Pressione enter para terminar.'); return;
else
Wi=MWi(id,1);
end
end
% 2- aplicar a fórmula de bond e calcular W
Wb=10*(Wi/0.907)*((1/sqrt(PF))-(1/sqrt(Feed))) ;
disp('Wb=');disp(Wb);
% 3 - Cálculo da potência P - necessária para garantir a capac desejada
P=Q*Wb;
disp('Potênca necessária para garantir a capacidade desejada:');disp(P)
% 4 - Pré seleção do moinho - um que tenha a potência mais baixa mas que seja pelo menos > 3.2
flag=0; idm=1;
while flag~=1
if moinho==1 % barras
if MICIRPbar(idm,3)>=(P/2)
flag=1;
else
idm=idm+1;
end
else %bolas
if MICIRPbol(idm,3)>=(P/2)
flag=1;
else
idm=idm+1;
end
end
end
disp('Pré-selecção do moinho, tendo em conta o fator P/2:');fprintf('\n Diâmetro Compr. Potência \n');;if moinho==1;disp(MICIRPbar(idm,:));else;disp(MICIRPbol(idm,:));end;
flag=0;
while flag~=1
% \/ 5 - calcular vetor fatores de correcção EF1,EF2,EF3...
EF=[];
% EF(1) - Fator correcção para a húmidade
if seco==1
EF=[EF,1.3];
else
EF=[EF,1];
end
% EF(2) - Fator correcção para o tipo de circuito no moinho de bolas - aberto ou fechado
if moinho~=1 %bolas
if circuito==1 % aberto
EF=[EF,1.20];
else % fechado
EF=[EF,1];
end
else %barras
EF=[EF,1];
end
% EF(3) - Fator correccao para o diametro
if moinho==1
D=MICIRPbar(idm,1);
else
D=MICIRPbol(idm,1);
end
if D<=3.81
EF=[EF,(2.44/D)^0.2];
else
EF=[EF,0.914];
end
% EF(4) - Fator correcção oversize
if moinho==1 % barras
F0=16000*((13/Wi)^0.5);
EF4=(RR+(Wi-7)*((Feed-F0)/F0))/RR;
EF=[EF,EF4];
else % bolas
F0=4000*((13/Wi)^0.5);
EF4=(RR+(Wi-7)*((Feed-F0)/F0))/RR;
EF=[EF,EF4];
end
% EF(5) - Fator correcção para material fino
if PF<74
EF5=(PF+10.3)/(1.145*P);
EF=[EF,EF5];
else
EF=[EF,1];
end
% EF(6) - Fator correcção para barras
if moinho==1 % barrras
%%% calcular o RR0 perto do RR em cima e ver onde está estipulado o
%%% comprimento das barras
L=MICIRPbar(idm,4); % comprimento das barras
RR0=8+(5*L)/D;
if (RR0-2)<=RR && (RR0+2)>=RR % barras dentro do intervalo
EF6=1+((RR-RR0)^2)/150;
EF=[EF,EF6];
else % barras fora do intervalo
EF=[EF,1];
end
else % bolas
EF=[EF,1];
end
% EF(7) - Fator correcção para baixa relação redução
if RR<7
EF6=(2*(RR-1.35)+0.26)/(2*(RR-1.35));
EF=[EF,EF6];
else
EF=[EF,1];
end
% EF(8) - Fator correcção para moagem em moinho de barras
% Fazer de acordo com as condições pag 31
if moinho==1 % barras
if circuito==1 % aberto
if pcircuito==1
EF=[EF,1.4];
else
EF=[EF,1.2];
end
else % fechado
if pcircuito==1
EF=[EF,1.2];
else
EF=[EF,1];
end
end
else % bolas
EF=[EF,1];
end
EFn=EF';
fprintf('\nFactores de correcção para o moinho acima selecionado:\n')
tabelaEF=table(EFs,EFn,Descricao);disp(tabelaEF);
% /\ Fim da aplicação dos factores de correcção
% \/ Recalculando nova potência necessária com novos EFs
disp('Feito. Aplicando os factores de correcção, a potência (W) necessária para garantir a fragmentação dessa quantidade de material é de: ');
Pc=P*prod(EF); % multiplicar por todos os EF(i)
disp(Pc);
% 6 - Determinar comprimento L
if moinho==1
L=Pc/(MICIRPbar(idm,3)/MICIRPbar(idm,1));
else
L=Pc/(MICIRPbol(idm,3)/MICIRPbol(idm,1));
end
disp('L/D= '); disp(L/D)
% \/ se exceder limite de iterações mostrar erro
if idm>s_MICIRPbar && moinho==1 || idm>s_MICIRPbol && moinho~=1
disp('Erro de ciclo infinito - dados errados e/ou não concordantes.');
return
end
% /\ se exceder limite de iterações mostrar erro
%7- Verificação da aceitação da relação L/D < 1.5 -- se não verificar, selecionar
% próximo moinho (potência seguinte) e voltar ao passo 5
if L/D<1.5 % se verificar
flag=1; %aceitar moinho
else % se não verificar
if idm>s_MICIRPbar && moinho==1 || idm>s_MICIRPbol && moinho~=1 % se exceder limite de iterações mostrar erro
disp('Final do Ciclo - Moinho na relação L/D<1.5 não encontrado para os dados fornecidos');
return
end
idm=idm+1; % escolher próximo moinho (id do anterior + 1)
disp('L/D é maior que 1.5, escolhendo o próximo moinho e reaplicando os cálculos...');
disp('Próximo moinho selecionado:');fprintf('\n Diâmetro Compr. Potência \n\n');;if moinho==1;disp(MICIRPbar(idm,:));else;disp(MICIRPbol(idm,:));end;
end
end
% Fim do ciclo de iterações, mostrar muro
disp(muro);
% 8 - FIM! Anunciar a solução
fprintf(2,'SOLUÇÃO ENCONTADA!\n');
disp('Moinho ideal:');fprintf('\n Diâmetro Compr. Potência \n');;if moinho==1;disp(MICIRPbar(idm,:));else;disp(MICIRPbol(idm,:));end;
fprintf('Sendo que o comprimento deste moinho terá de ser ajustado para %g metros.\n',L);
input('Pressione enter para dimensionar outro moinho ou aperte as teclas Ctrl+C para sair.'); %%% em vez disto meter enter para repetir e Ctrl+C para sair
end