Skip to content

Commit

Permalink
added stl
Browse files Browse the repository at this point in the history
  • Loading branch information
GhostDog98 committed Feb 4, 2024
1 parent 8d7ad47 commit d0f9c8f
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 0 deletions.
40 changes: 40 additions & 0 deletions make-blog/source/_posts/Reverse-engineering-the-NEFF-Meatprobe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
title: Reverse engineering the NEFF Meatprobe
date: 2023-09-22 02:53:45
tags:
---
I want to get into brewing my own beer, so naturally, i needed a thermometer to moniter the temperature.
I already had a food safe thermometer laying around though... the NEFF Meatprobe, which i got with my oven, but don't use since i'm vegan.

At first, i simply tried to search "Neff meatprobe pinout", but to no avail.
Additionally, i tried searching for any patents, but that also turned up nothing... time to put in actual work!
I knew it wasen't a PT100 nor a thermocouple, as neither of those modes picked up a rational temperature on my multimeter.

This left only the NTC Thermistor as an option, as when measuring the resistance between pins, it decreased with temperature increase (thus Negative Temperature Coefficient).

Next, I simply took measurements of the resistance at 3 different temperatures, as such:
Temperature |Resistance (kΩ)
---|---
30°C|60
15.8°C|132
7°C|235

Plugging these into the Steinhart-Hart formula, we get the following β model coefficient of 4863.74K.
To be completely transparent, however, i cheated, i used a [nice calculator](https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html) developed by the Standford Research systems.
This also gives us a very nice visualisation of how accurate we were, comparing the β model coefficient to our observed results:
![Graph of accuracy](/images/Accuracy.png)

From here, I needed to determine two things, particularly:
- How does each ring corrospond to the three measurement spots?
- What the hell is this plug?

Let's first determine what plug this uses, having a simple look at it, it's reminicent to a 6.5mm audio jack (to be more specific, a 6.5mm TRS jack, as pointed out by Vdekje):
![Photograph of the plug, no dimensions](/images/non-dimensioned.png)

Let's take some measurements first, however:
![Same photograph of the plug, but with dimensions](/images/dimensioned.png)

Here, we can see that it isn't a 6.5mm TRS for a few reasons, namely:
- It isn't as "pointy" at the tip
- It is 6.5mm diameter
That second one might seem counterintuitive, however, it turns out that 6.5mm is a bit of a misnomer, as it's just 6.35mm (converted in europeon countries), which is actually 1/4" in the USA. Totally not confusing at all!
Binary file added make-blog/source/images/Accuracy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added make-blog/source/images/dimensioned.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added make-blog/source/images/non-dimensioned.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
99 changes: 99 additions & 0 deletions stl2desmos.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>STL Processor</title>
</head>
<body>
<input type="file" id="fileInput" accept=".stl" />
<button onclick="processUploadedFile()">Process STL</button>

<script>
function formatScientificNotation(number) {
if (!number.includes("e")) {
return number;
}
if (number === "0.0") {
return number;
}

number = number.replace(/e/g, "*10^{");
number = number.replace(/{-0/g, "{-");
number = number.replace(/{0/g, "{");
number = number.replace(/}\*10{/g, "}*10^");
number += "}";

return number;
}

function trimLeadingSpaces(str) {
return str.trimLeft();
}

function processSTL(stl, outputFileName) {
const lines = stl.split('\n');
let outputFile = "";
let faceDimensionsAdded = false;

for (let i = 0; i < lines.length; i++) {
const trimmedLine = trimLeadingSpaces(lines[i]);

if (trimmedLine[0] === 'v') {
const match = trimmedLine.match(/vertex\s+(\S+)\s+(\S+)\s+(\S+)/);
if (match) {
if (faceDimensionsAdded) {
outputFile += ", ";
}

const [_, x, y, z] = match;
outputFile += `(${formatScientificNotation(x)}, ${formatScientificNotation(y)}, ${formatScientificNotation(z)})`;
faceDimensionsAdded = true;
}
} else if (trimmedLine === 'endloop') {
outputFile += "\\right)\n";
faceDimensionsAdded = false;
} else if (trimmedLine[0] === 'f') {
outputFile += "\\triangle\\left(";
} else if (trimmedLine[0] === '') {
outputFile += "\n";
}
}
outputFile += "\n";

// Create a Blob with the processed content
const blob = new Blob([outputFile], { type: 'text/plain' });

// Create a download link
const downloadLink = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(blob);
downloadLink.download = outputFileName;

// Append the link to the body and trigger a click
document.body.appendChild(downloadLink);
downloadLink.click();

// Remove the link from the body
document.body.removeChild(downloadLink);
}

function processUploadedFile() {
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];

if (!file) {
alert('Please select an STL file.');
return;
}

const reader = new FileReader();
reader.onload = function (event) {
const stlData = event.target.result;
processSTL(stlData, 'output.txt');
};

reader.readAsText(file);
}
</script>
</body>
</html>

0 comments on commit d0f9c8f

Please sign in to comment.