Spaces:
Sleeping
Sleeping
Update calculate.html
Browse files- calculate.html +96 -90
calculate.html
CHANGED
@@ -15,98 +15,104 @@
|
|
15 |
<h1>Расчёт удобрений для смешивания с азотом</h1>
|
16 |
|
17 |
<div>
|
18 |
-
<h3>Введите состав
|
19 |
-
<label
|
20 |
-
<input type="number" id="ca_content" value="19"
|
21 |
-
|
22 |
-
<
|
23 |
-
<
|
24 |
-
|
25 |
-
<label
|
26 |
-
<input type="number" id="
|
27 |
-
|
28 |
-
<
|
29 |
-
<
|
30 |
-
|
31 |
-
|
32 |
-
<
|
33 |
-
|
34 |
-
<label
|
35 |
-
<input type="number" id="
|
36 |
-
|
37 |
-
<
|
38 |
-
<label
|
39 |
-
|
40 |
-
|
41 |
-
<label
|
42 |
-
<input type="number" id="p" placeholder="например, 50"><br>
|
43 |
-
|
44 |
-
<label for="k">Калий (K) (мг/л):</label>
|
45 |
-
<input type="number" id="k" placeholder="например, 100"><br>
|
46 |
-
|
47 |
-
<label for="mg">Магний (Mg) (мг/л):</label>
|
48 |
-
<input type="number" id="mg" placeholder="например, 25"><br>
|
49 |
-
|
50 |
-
<label for="s">Сера (S) (мг/л):</label>
|
51 |
-
<input type="number" id="s" placeholder="например, 20"><br>
|
52 |
-
|
53 |
-
<h3>Введите азот (N) (мг/л):</h3>
|
54 |
-
<label for="nitrogen">Азот (N):</label>
|
55 |
-
<input type="number" id="nitrogen" value="50" placeholder="например, 50"><br>
|
56 |
-
|
57 |
-
<h3>Регулировка соотношения азотных удобрений:</h3>
|
58 |
-
<label for="n_ratio">Соотношение азота в аммиачной селитре:</label>
|
59 |
<input type="range" id="n_ratio" min="0" max="100" value="50">
|
60 |
-
<span id="n_ratio_value">50%</span
|
61 |
|
62 |
-
<button onclick="calculate()"
|
63 |
</div>
|
64 |
|
65 |
-
<div class="result" id="result">
|
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 |
</body>
|
112 |
-
</html>
|
|
|
15 |
<h1>Расчёт удобрений для смешивания с азотом</h1>
|
16 |
|
17 |
<div>
|
18 |
+
<h3>Введите состав удобрений (%):</h3>
|
19 |
+
<label>Ca в Ca(NO₃)₂·4H₂O:</label>
|
20 |
+
<input type="number" id="ca_content" value="19.3" step="0.1"><br>
|
21 |
+
<label>P в KH₂PO₄:</label>
|
22 |
+
<input type="number" id="p_content" value="21.8" step="0.1"><br>
|
23 |
+
<label>K в KH₂PO₄:</label>
|
24 |
+
<input type="number" id="k_content_kh2po4" value="27.4" step="0.1"><br>
|
25 |
+
<label>K в KNO₃:</label>
|
26 |
+
<input type="number" id="k_content_kno3" value="38" step="0.1"><br>
|
27 |
+
<label>Mg в MgSO₄·7H₂O:</label>
|
28 |
+
<input type="number" id="mg_content" value="10.14" step="0.1"><br>
|
29 |
+
<label>S в K₂SO₄:</label>
|
30 |
+
<input type="number" id="s_content" value="18" step="0.1"><br>
|
31 |
+
|
32 |
+
<h3>Требуемые концентрации (мг/л):</h3>
|
33 |
+
<label>Ca:</label><input type="number" id="ca" placeholder="50" step="0.1"><br>
|
34 |
+
<label>P:</label><input type="number" id="p" placeholder="50" step="0.1"><br>
|
35 |
+
<label>K:</label><input type="number" id="k" placeholder="100" step="0.1"><br>
|
36 |
+
<label>Mg:</label><input type="number" id="mg" placeholder="25" step="0.1"><br>
|
37 |
+
<label>S:</label><input type="number" id="s" placeholder="20" step="0.1"><br>
|
38 |
+
<label>N:</label><input type="number" id="nitrogen" value="50" step="0.1"><br>
|
39 |
+
|
40 |
+
<h3>Соотношение N (NH₄NO₃):</h3>
|
41 |
+
<label>NH₄NO₃ (%):</label>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
<input type="range" id="n_ratio" min="0" max="100" value="50">
|
43 |
+
<span id="n_ratio_value">50%</span><br>
|
44 |
|
45 |
+
<button onclick="calculate()">Рассчитать</button>
|
46 |
</div>
|
47 |
|
48 |
+
<div class="result" id="result"></div>
|
49 |
+
|
50 |
+
<script>
|
51 |
+
document.getElementById('n_ratio').addEventListener('input', function() {
|
52 |
+
document.getElementById('n_ratio_value').textContent = this.value + '%';
|
53 |
+
});
|
54 |
+
|
55 |
+
function calculate() {
|
56 |
+
// Состав удобрений (% → доли)
|
57 |
+
const caContent = parseFloat(document.getElementById("ca_content").value) / 100;
|
58 |
+
const pContent = parseFloat(document.getElementById("p_content").value) / 100;
|
59 |
+
const kContentKH2PO4 = parseFloat(document.getElementById("k_content_kh2po4").value) / 100;
|
60 |
+
const kContentKNO3 = parseFloat(document.getElementById("k_content_kno3").value) / 100;
|
61 |
+
const mgContent = parseFloat(document.getElementById("mg_content").value) / 100;
|
62 |
+
const sContent = parseFloat(document.getElementById("s_content").value) / 100;
|
63 |
+
const nContentCaNO3 = 0.149; // N в Ca(NO₃)₂·4H₂O
|
64 |
+
const nContentNH4NO3 = 0.34; // N в NH₄NO₃
|
65 |
+
const nContentKNO3 = 0.135; // N в KNO₃
|
66 |
+
|
67 |
+
// Требуемые концентрации (мг/л)
|
68 |
+
const ca = parseFloat(document.getElementById("ca").value) || 0;
|
69 |
+
const p = parseFloat(document.getElementById("p").value) || 0;
|
70 |
+
const k = parseFloat(document.getElementById("k").value) || 0;
|
71 |
+
const mg = parseFloat(document.getElementById("mg").value) || 0;
|
72 |
+
const s = parseFloat(document.getElementById("s").value) || 0;
|
73 |
+
const nitrogen = parseFloat(document.getElementById("nitrogen").value) || 0;
|
74 |
+
const nRatio = parseFloat(document.getElementById("n_ratio").value) / 100;
|
75 |
+
|
76 |
+
// Проверка ввода
|
77 |
+
if ([ca, p, k, mg, s, nitrogen].some(v => isNaN(v))) {
|
78 |
+
document.getElementById("result").innerHTML = "Введите все значения!";
|
79 |
+
return;
|
80 |
+
}
|
81 |
+
|
82 |
+
// Расчёт массы удобрений (г/1000 л)
|
83 |
+
const caNO3FromCa = ca / caContent; // Ca(NO₃)₂ от Ca
|
84 |
+
const nFromCaNO3Min = caNO3FromCa * nContentCaNO3; // Минимальный N от Ca(NO₃)₂
|
85 |
+
const nRemaining = nitrogen - nFromCaNO3Min; // Остаток N
|
86 |
+
const nNH4NO3 = nRemaining * nRatio; // N от NH₄NO₃
|
87 |
+
const nCaNO3Extra = nRemaining * (1 - nRatio); // Дополнительный N от Ca(NO₃)₂
|
88 |
+
const nh4no3 = nNH4NO3 / nContentNH4NO3; // Масса NH₄NO₃
|
89 |
+
const caNO3Total = caNO3FromCa + (nCaNO3Extra / nContentCaNO3); // Итоговая масса Ca(NO₃)₂
|
90 |
+
const kh2po4 = p / pContent; // KH₂PO₄ от P
|
91 |
+
const kFromKH2PO4 = kh2po4 * kContentKH2PO4; // K от KH₂PO₄
|
92 |
+
const kRemaining = k - kFromKH2PO4; // Остаток K
|
93 |
+
const kno3 = kRemaining > 0 ? kRemaining / kContentKNO3 : 0; // KNO₃
|
94 |
+
const nFromKNO3 = kno3 * nContentKNO3; // N от KNO₃
|
95 |
+
const mgso4 = mg / mgContent; // MgSO₄
|
96 |
+
const k2so4 = s / sContent; // K₂SO₄ (S)
|
97 |
+
|
98 |
+
// Итоговые концентрации для проверки
|
99 |
+
const totalN = (caNO3Total * nContentCaNO3 + nh4no3 * nContentNH4NO3 + kno3 * nContentKNO3).toFixed(2);
|
100 |
+
const totalK = (kh2po4 * kContentKH2PO4 + kno3 * kContentKNO3).toFixed(2);
|
101 |
+
|
102 |
+
// Вывод результата
|
103 |
+
const resultText = `
|
104 |
+
<h3>Необходимые удобрения (г/1000 л):</h3>
|
105 |
+
<p>Ca(NO₃)₂·4H₂O: ${caNO3Total.toFixed(2)} (N: ${(caNO3Total * nContentCaNO3).toFixed(2)}, Ca: ${ca})</p>
|
106 |
+
<p>NH₄NO₃: ${nh4no3.toFixed(2)} (N: ${(nh4no3 * nContentNH4NO3).toFixed(2)})</p>
|
107 |
+
<p>KH₂PO₄: ${kh2po4.toFixed(2)} (P: ${p}, K: ${kFromKH2PO4.toFixed(2)})</p>
|
108 |
+
<p>KNO₃: ${kno3.toFixed(2)} (N: ${nFromKNO3.toFixed(2)}, K: ${(kno3 * kContentKNO3).toFixed(2)})</p>
|
109 |
+
<p>MgSO₄·7H₂O: ${mgso4.toFixed(2)} (Mg: ${mg})</p>
|
110 |
+
<p>K₂SO₄: ${k2so4.toFixed(2)} (S: ${s})</p>
|
111 |
+
<h3>Итоговые концентрации (мг/л):</h3>
|
112 |
+
<p>N: ${totalN}, P: ${p}, K: ${totalK}, Ca: ${ca}, Mg: ${mg}, S: ${s}</p>
|
113 |
+
`;
|
114 |
+
document.getElementById("result").innerHTML = resultText;
|
115 |
+
}
|
116 |
+
</script>
|
117 |
</body>
|
118 |
+
</html>
|