|
7 | 7 | "source": [ |
8 | 8 | "# Inheco Incubator (Shaker)\n", |
9 | 9 | "\n", |
10 | | - "<table style=\"width:100%; border-collapse:collapse;\">\n", |
11 | | - "<tr>\n", |
12 | | - "<td style=\"width:60%; font-size:15px; line-height:1.7; vertical-align:top; padding-right:15px;\">\n", |
13 | | - "\n", |
14 | | - "<ul style=\"margin-top:0;\">\n", |
15 | | - " <li><a href=\"https://www.inheco.com/incubator-shaker.html\" target=\"_blank\"><b>OEM Link</b></a></li>\n", |
16 | | - " <li><b>Communication Protocol / Hardware:</b> Serial (FTDI) / USB-A</li>\n", |
17 | | - " <li><b>Communication Level:</b> Firmware (documentation shared by OEM)</li>\n", |
18 | | - " <li>Same command set for:\n", |
19 | | - " <ul>\n", |
20 | | - " <li>Incubator “MP”</li>\n", |
21 | | - " <li>Incubator “DWP”</li>\n", |
22 | | - " <li>Incubator Shaker “MP”</li>\n", |
23 | | - " <li>Incubator Shaker “DWP”</li>\n", |
24 | | - " </ul>\n", |
25 | | - " </li>\n", |
26 | | - " <li><b>Incubator Shaker “MP”</b> VID:PID <code>0403:6001</code></li>\n", |
27 | | - " <li>Takes in a single plate via a loading tray, heats it to the set temperature, and shakes it to the set RPM.</li>\n", |
28 | | - "</ul>\n", |
29 | | - "\n", |
30 | | - "</td>\n", |
31 | | - "\n", |
32 | | - "<td style=\"width:40%; text-align:center; vertical-align:middle;\">\n", |
33 | | - " <img src=\"img/inheco_incubator_shaker_mp_dwp.png\" width=\"500\"/><br>\n", |
34 | | - " <i>Figure: Inheco Incubator Shaker MP & DWP models</i>\n", |
35 | | - "</td>\n", |
36 | | - "</tr>\n", |
37 | | - "</table>" |
| 10 | + "| Summary | Image |\n", |
| 11 | + "|------------|--------|\n", |
| 12 | + "| <ul style=\"font-size:15px; line-height:1.6; margin-top:0;\"> <li><a href=\"https://www.inheco.com/incubator-shaker.html\" target=\"_blank\"><b>OEM Link</b></a></li> <li><b>Communication Protocol / Hardware:</b> Serial / USB-A/B</li> <li><b>Communication Level:</b> Firmware (documentation shared by OEM)</li> <li>Same command set for: <ul> <li>Incubator “MP”</li> <li>Incubator “DWP”</li> <li>Incubator Shaker “MP”</li> <li>Incubator Shaker “DWP”</li> </ul></li> <li>VID:PID <code>0403:6001</code></li> <li>Takes in a single plate via a loading tray, heats it to the set temperature, and shakes it to the set RPM.</li> </ul> | <div style=\"width:320px; text-align:center;\">  <br><i>Figure: Inheco Incubator Shaker MP & DWP models</i> </div> |\n" |
38 | 13 | ] |
39 | 14 | }, |
40 | 15 | { |
|
76 | 51 | }, |
77 | 52 | { |
78 | 53 | "cell_type": "markdown", |
79 | | - "id": "95e39b36-c441-499d-bfaa-327d49d5cc04", |
| 54 | + "id": "38dcc34a", |
80 | 55 | "metadata": {}, |
81 | 56 | "source": [ |
82 | | - "<!--  -->\n", |
83 | | - "<table style=\"width:100%; border-collapse:collapse; margin-top:10px;\">\n", |
84 | | - "<tr>\n", |
85 | | - "<td style=\"text-align:center; vertical-align:middle;\">\n", |
86 | | - " <img src=\"img/inheco_incubator_shaker_physical_setup_overview.png\" width=\"950\" style=\"border-radius:8px;\"/>\n", |
87 | | - " <br>\n", |
88 | | - " <i>Figure: Physical setup overview of the Inheco Incubator Shaker system</i>\n", |
89 | | - "</td>\n", |
90 | | - "</tr>\n", |
91 | | - "</table>\n" |
| 57 | + "" |
92 | 58 | ] |
93 | 59 | }, |
94 | 60 | { |
|
123 | 89 | }, |
124 | 90 | { |
125 | 91 | "cell_type": "markdown", |
126 | | - "id": "40f8dcb4-7779-4c51-9bdf-bf8d05f46c46", |
| 92 | + "id": "69f8951f", |
127 | 93 | "metadata": {}, |
128 | 94 | "source": [ |
129 | | - "<table>\n", |
130 | | - "<tr>\n", |
131 | | - "<td style=\"font-size:15px; line-height:1.6; width:60%; vertical-align:top; padding-right:10px;\">\n", |
132 | | - "\n", |
133 | | - "To connect an <code>InhecoIncubatorShakerStackBackend</code> you have to specify the <b>DIP switch identifier</b>:\n", |
134 | | - "<ul style=\"margin-left: 20px;\">\n", |
135 | | - "<li>located on the back of the bottom machine,<br>\n", |
136 | | - "<li>it defines the DIP switch configuration for the entire stack above it.</li>\n", |
137 | | - "\n", |
138 | | - "</ul>\n", |
139 | | - "\n", |
140 | | - "<h3>Setting the DIP switch to generate a machine address</h3>\n", |
141 | | - "\n", |
142 | | - "The DIP switch at the back of each machine has to be set manually and consists of 4 pins that can be set into an <code>UP</code> / <code>0</code> or a <code>DOWN</code> / <code>1</code> position.\n", |
143 | | - "\n", |
144 | | - "(<i>Note:</b> There are two more pins to the left of the DIP switch pins. They are not involved in setting the DIP switch address, and should be left in their <code>DOWN</code> position.</i>)</li>\n", |
145 | | - "\n", |
146 | | - "This represents <i>binary encoding</i>:\n", |
147 | | - "<ul>\n", |
148 | | - "<li>All pins at <code>0</code> → DIP switch is set to address binary <code>0 0 0 0</code> -> decimal <code>0</code></li>\n", |
149 | | - "<li>All pins at <code>1</code> → DIP switch is set to address binary <code>1 1 1 1</code> -> decimal <code>15</code> (2<sup>4</sup>-1)</li>\n", |
150 | | - "</ul>\n", |
151 | | - "\n", |
152 | | - "This information is crucial for creating the correct commands to communicate with the machine stack.\n", |
153 | | - "\n", |
154 | | - "</td>\n", |
155 | | - "\n", |
156 | | - "<td style=\"width:40%; text-align:center; vertical-align:middle;\">\n", |
157 | | - "<img src=\"img/inheco_incubator_shaker_dip_switch_addressing.png\" width=\"500\"/><br>\n", |
158 | | - "<i>Figure: DIP switch layout to generate different identifiers/addresses</i>\n", |
159 | | - "</td>\n", |
160 | | - "</tr>\n", |
161 | | - "\n", |
162 | | - "</table>" |
| 95 | + "| Explanation | Image |\n", |
| 96 | + "|------------|--------|\n", |
| 97 | + "| <div style=\"font-size:15px; line-height:1.6; margin-top:0;\"> To connect an <code>InhecoIncubatorShakerStackBackend</code> you must set the <b>DIP switch identifier</b> on the back of the bottom machine: <ul style=\"margin-left:20px;\"> <li>located on the back of the bottom machine,</li> <li>defines the DIP switch configuration for the entire stack.</li> </ul> <h3>Setting the DIP switch to generate a machine address</h3> Each machine has a 4-pin DIP switch. Each pin can be <code>UP</code> (<code>0</code>) or <code>DOWN</code> (<code>1</code>). <br><br> <i>Note:</i> the two pins to the left of the DIP switch are not part of the addressing and should remain in the <code>DOWN</code> position. <br><br> This forms a <i>4-bit binary address</i>: <ul> <li>All pins at <code>0</code> → binary <code>0 0 0 0</code> → decimal <code>0</code></li> <li>All pins at <code>1</code> → binary <code>1 1 1 1</code> → decimal <code>15</code> (<code>2<sup>4</sup>-1</code>)</li> </ul> This address is crucial for generating valid communication commands for your Inheco stack. </div> | <div style=\"width:320px; text-align:center;\">  <br><i>Figure: DIP switch layout to generate different identifiers/addresses</i> </div> |\n" |
163 | 98 | ] |
164 | 99 | }, |
165 | 100 | { |
|
501 | 436 | "id": "438e19d7-714d-46f3-8a9e-f00798ca9893", |
502 | 437 | "metadata": {}, |
503 | 438 | "source": [ |
504 | | - "<table style=\"width:100%; border-collapse:collapse;\">\n", |
505 | | - " <tr>\n", |
506 | | - " <td style=\"width:60%; font-size:15px; line-height:1.7; vertical-align:top; padding-right:20px;\">\n", |
507 | | - " <p style=\"margin-top:0;\">The Inheco Incubator (Shaker) contains three independent temperature sensors:</p>\n", |
508 | | - " <ol style=\"margin-top:0; margin-bottom:10px; padding-left:20px;\">\n", |
509 | | - " <li>main sensor — close to the door/front, inside the machine</li>\n", |
510 | | - " <li>validation sensor — back, inside the machine</li>\n", |
511 | | - " <li>boost sensor — on heating foil, inside the machine</li>\n", |
512 | | - " </ol>\n", |
513 | | - " <p>\n", |
514 | | - " By default, <code>iis_stack[0].get_temperature()</code>’s argument is set to\n", |
515 | | - " <code>sensor=\"main\"</code>. \n", |
516 | | - " This can be changed to any of the following:\n", |
517 | | - " </p>\n", |
518 | | - " <ul style=\"margin-top:0; padding-left:20px;\">\n", |
519 | | - " <li><code>\"main\"</code></li>\n", |
520 | | - " <li><code>\"dif\"</code></li>\n", |
521 | | - " <li><code>\"boost\"</code></li>\n", |
522 | | - " <li><code>\"mean\"</code> - takes all three sensors’ measurements and returns their geometric mean</li>\n", |
523 | | - " </ul>\n", |
524 | | - " </td>\n", |
525 | | - " <td style=\"width:40%; text-align:center; vertical-align:middle;\">\n", |
526 | | - " <img src=\"img/inheco_incubator_shaker_t_sensor_positioning.png\"\n", |
527 | | - " alt=\"Inheco Incubator Shaker sensor positions\"\n", |
528 | | - " style=\"width:300px; border-radius:6px; margin-bottom:8px;\"/>\n", |
529 | | - " <br>\n", |
530 | | - " <i style=\"font-size:13px; color:#6c757d;\">\n", |
531 | | - " Figure: Inheco Incubator Shaker Temperature Sensor Positioning\n", |
532 | | - " </i>\n", |
533 | | - " </td>\n", |
534 | | - " </tr>\n", |
535 | | - "</table>\n" |
| 439 | + "| Explanation | Image |\n", |
| 440 | + "|------------|--------|\n", |
| 441 | + "| <div style=\"font-size:15px; line-height:1.7; margin-top:0; padding-right:20px;\"> <p>The Inheco Incubator (Shaker) contains three independent temperature sensors:</p> <ol style=\"margin-top:0; margin-bottom:10px; padding-left:20px;\"> <li>main sensor — close to the door/front, inside the machine</li> <li>validation sensor — back, inside the machine</li> <li>boost sensor — on heating foil, inside the machine</li> </ol> <p>By default, <code>iis_stack[0].get_temperature()</code>’s argument is set to <code>sensor=\"main\"</code>.<br> This can be changed to any of the following:</p> <ul style=\"margin-top:0; padding-left:20px;\"> <li><code>\"main\"</code></li> <li><code>\"dif\"</code></li> <li><code>\"boost\"</code></li> <li><code>\"mean\"</code> — takes all three sensors’ measurements and returns their geometric mean</li> </ul> </div> | <div style=\"width:280px; text-align:center;\">  <br><i style=\"font-size:13px; color:#6c757d;\">Figure: Inheco Incubator Shaker Temperature Sensor Positioning</i> </div> |\n" |
536 | 442 | ] |
537 | 443 | }, |
538 | 444 | { |
|
951 | 857 | { |
952 | 858 | "data": { |
953 | 859 | "text/plain": [ |
954 | | - "{\n", |
955 | | - " \"drawer_error\": False,\n", |
956 | | - " \"homogeneity_sensor_3_vs_1_error\": False,\n", |
957 | | - " \"homogeneity_sensor_2_vs_1_error\": False,\n", |
958 | | - " \"sensor_1_target_temp_error\": False,\n", |
959 | | - " \"y_amplitude_shaker_error\": False,\n", |
960 | | - " \"x_amplitude_shaker_error\": False,\n", |
961 | | - " \"phase_shift_shaker_error\": False,\n", |
962 | | - " \"y_frequency_shaker_error\": False,\n", |
963 | | - " \"x_frequency_shaker_error\": False,\n", |
964 | | - " \"line_boost_heater_broken\": False,\n", |
965 | | - " \"line_main_heater_broken\": False,\n", |
966 | | - "}\n" |
| 860 | + "{\n", |
| 861 | + " \"drawer_error\": False,\n", |
| 862 | + " \"homogeneity_sensor_3_vs_1_error\": False,\n", |
| 863 | + " \"homogeneity_sensor_2_vs_1_error\": False,\n", |
| 864 | + " \"sensor_1_target_temp_error\": False,\n", |
| 865 | + " \"y_amplitude_shaker_error\": False,\n", |
| 866 | + " \"x_amplitude_shaker_error\": False,\n", |
| 867 | + " \"phase_shift_shaker_error\": False,\n", |
| 868 | + " \"y_frequency_shaker_error\": False,\n", |
| 869 | + " \"x_frequency_shaker_error\": False,\n", |
| 870 | + " \"line_boost_heater_broken\": False,\n", |
| 871 | + " \"line_main_heater_broken\": False,\n", |
| 872 | + "}\n" |
967 | 873 | ] |
968 | 874 | }, |
969 | 875 | "execution_count": 19, |
|
1276 | 1182 | ], |
1277 | 1183 | "metadata": { |
1278 | 1184 | "kernelspec": { |
1279 | | - "display_name": "Python 3 (ipykernel)", |
| 1185 | + "display_name": "plr", |
1280 | 1186 | "language": "python", |
1281 | 1187 | "name": "python3" |
1282 | 1188 | }, |
|
0 commit comments