Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Temperatuurgestuurde houtskoolroker

Componenten en benodigdheden

Arduino MKR1000
× 1
5V borstelloze blazer
× 1
MOSFET IRF520N-stuurprogrammamodule
× 1
100K ohm NTC-thermistors
× 1
Broodplank (algemeen)
× 1
Jumperdraden (algemeen)
× 1
3.7V Lipo-batterij>=700mAh
× 1

Apps en online services

Arduino IDE
Microsoft Visual Studio 2015

Over dit project

Het achtergrondverhaal

De meeste serieuze BBQ-rokers weten dat de beste smaak komt van het gebruik van houtskool om hun rokers te verwarmen. Propaan- en elektrische rokers hebben een betere temperatuurregeling, maar verliezen die houtskoolsmaak. Als warmtebron kan houtskool lastig zijn. Je moet constant de temperatuur in de gaten houden, de ventilatieopeningen aanpassen om te proberen de juiste temperatuur te krijgen en er een paar keer mee spelen om het precies goed te krijgen. Dan moet je dat elk half uur blijven doen als het houtskoolniveau in de roker verandert. Zou het niet geweldig zijn om gewoon achterover te leunen op uw bank, genietend van uw favoriete koude drankje en sportevenement op de tv terwijl u de roker zijn ding laat doen?

Het project

Creëer een controller die de temperatuur in de roker bewaakt en de luchtstroom naar de houtskool aanpast om de juiste temperatuur te behouden. Bied ook een manier om de temperaturen van zowel de roker- als de vleessonde op afstand te bewaken. Deze is gebaseerd op de binnenkort uit te brengen Arduino MKR1000 met ingebouwde Wi-Fi en ondersteuning voor het opladen van een LiPo-batterij.

De hardware

De temperatuur in de rook wordt bewaakt met behulp van een 100K NTC-thermistor in een spanningsdeler die is aangesloten op een van de analoge ingangen van de MKR. Deze thermistor is gekozen omdat deze wordt gebruikt voor Prusa RepRab hot-ends in 3D-printers, dus ze zijn overal verkrijgbaar en goedkoop. Het kan al gesoldeerd worden gekocht met siliconen geïsoleerde draad voor hoge temperaturen om de ideale temperatuursonde te maken. De thermistor wordt voor fysieke bescherming in een lange dunne (1/4 inch of kleiner) roestvrijstalen buis geplaatst, waarbij het ene uiteinde is afgekrompen om het te sluiten en de draden aan het andere uiteinde zijn vastgezet met krimpkous.

De spanningsdeler gebruikt een weerstand van 10K als de andere helft van de spanningsdeler. Deze waarde is gekozen omdat deze dicht bij de weerstand van de 100K NTC-thermistor ligt bij typische rokerstemperaturen (225 F). Dit geeft een goed bereik voor temperatuurmeting, met metingen van ongeveer 50 F tot meer dan 300 F met een redelijke granulariteit.

A0 wordt gebruikt om de temperatuur te bewaken. Het maakt gebruik van een kortere sonde die op het rooster in de roker wordt geplaatst. De andere analoge pinnen kunnen worden gebruikt om meer thermistorsondes en spanningsverdelers te maken die in het vlees dat wordt gerookt, kunnen worden gestoken om de interne temperatuur van het vlees te controleren om te weten wanneer het gaar is.

Aan de andere kant is een kleine blazer bevestigd aan de ventilatieopening op de roker. Een kleine roestvrijstalen hondenvoerschaal is bevestigd over de ventilatieopening op de roker en de blazer is bevestigd aan het gat in de bodem van de schaal. Dit heeft twee functies:ten eerste om de ventilatieopening volledig te bedekken en ten tweede om enige thermische isolatie te bieden tussen het lichaam van de roker en de blazer. De ventilator wordt aangestuurd met een N-kanaals MOSFET. Dit kon direct worden bedraad, maar voor het gemak van de constructie werd een MOSFET-model gebruikt. De poort op de MOSFET is verbonden met de digitale pin van de Arduino

De bouw

Voor de eerste implementatie gebeurt alles op een breadboard om het simpel te houden. De thermistorbrug(s) zijn eenvoudig te bedraden, de 10K weerstand van Vcc (3,3V voor de MKR) naar de ene kant van de thermistor en de andere kant gaat naar aarde. Sluit een jumper aan tussen het midden van de brug en een analoge pin op de MKR. Knip een stuk slang af om voor de sonde te gebruiken, krimp het ene uiteinde in een bankschroef om het af te dichten. Een tang wordt vervolgens gebruikt om de hoeken van de gekrompen buis te vouwen om een ​​scherpere punt te maken. schuif de thermistor in de slang totdat deze het einde bereikt. Schuif een stuk krimpfolie over het andere uiteinde en de draden. Breng warmte aan om het te laten krimpen en zet de draden vast.

De ventilatorzijde is bijna net zo eenvoudig. Bevestig de kabels naar de ventilator aan het uitgangsklemmenblok op de MOSFET-module en let daarbij op de polariteit. Sluit uw LiPo-batterijpak en de draden van een JST-stekker aan op het stroomaansluitblok op de MOSFET-module, waarbij u opnieuw de polariteit in acht neemt. Steek de JST-stekker in de JST-aansluiting voor de batterijlader op de MKR. Voer drie jumpers uit voor Vcc, aarde en de besturingsdraad van de pinnen op het MOSFET-bord naar de MKR. Er werd een batterij van 10.000 mAh gebruikt om de batterij voldoende lang mee te laten gaan.

Op het breadboard zijn een aantal items toegevoegd die niet in het schema staan. Er is een variabele weerstand van 10K die kan worden gebruikt om spanningen te genereren om de schets te testen door een van de jumpers van een thermistor naar de schuifregelaar op de variabele weerstand te schakelen (de uiteinden van de weerstand zijn verbonden met Vcc en aarde). Er is ook een LED met een stroombegrenzingsweerstand van 330 Ohm aangesloten op uitgangspin 0 om aan te geven wanneer de schets de ventilator in- en uitschakelt.

De software

Er zijn twee stukjes software bij betrokken. Een daarvan is de schets om de Arduino te bedienen en de andere is een universele Windows-app, zodat de roker op afstand kan worden gecontroleerd op elk Windows 10-apparaat.

De schets is grotendeels gebaseerd op een Wi-Fi-serverschets in het boek van Simon Monks "Programming Arduino Next Steps:Going Further with Sketches" (http://www.amazon.com/Programming-Arduino-Next-Steps-Sketches/dp /0071830251/ref=sr_1_6?ie=UTF8&qid=1459448622&sr=8-6).

Het creëert in feite een eenvoudige webserver die één pagina toont met de gemeten temperaturen en waarmee de doeltemperatuur voor de roker kan worden ingesteld. Initialisatie bestaat uit het instellen van de Wi-Fi-adapter en het toewijzen van een vast IP-adres om te weten waarmee u verbinding moet maken als u niet op een computer bent aangesloten om een ​​door DHCP toegewezen adres te zien. Pin 0 is ingesteld op uitgang. In de loop controleert het of er een client is die verbinding probeert te maken, en zo ja, dan wordt de webpagina weergegeven. Als er een verzoek is, controleert het ook of het de parameter in de url bevat om de doeltemperatuur in te stellen. Het controleert vervolgens de temperatuur van de roker en zet de ventilator aan als deze onder de doeltemperatuur is en uit als deze erboven is.

Het meten van temperatuur met behulp van een thermistor in de spanningsdeler is relatief eenvoudig. Eerst uit de analoge ingangswaarde kunnen we de spanningsval over de vaste weerstand bepalen (de meting als de vaste weerstand is verbonden met aarde, Vcc - de meting als deze is verbonden met Vcc) We gebruiken dan de wet van Ohm (V =IR) om de stroom (I) door de weerstand te berekenen (I =V/R) Aangezien dezelfde stroom door de thermistor vloeit, gebruiken we de wet van Ohm opnieuw om de weerstand van de thermistor te berekenen. R =V/I waarbij V de spanningsval van de thermistor is (de analoge ingangswaarde of Vcc - de waarde afhankelijk van aan welke kant van de verdeler deze zich bevindt) en I de stroom is die we zojuist hebben berekend. Met R kunnen we het in de Thermistor Beta-vergelijking pluggen:

1/T =1/T0 + 1/Bèta * ln(R/R0)

Waarbij R0 de weerstand is van de thermistor bij T0

(Let op, alle temperaturen zijn in Kelvin, dus houd daar rekening mee)

Het serveren van de eenvoudige HTML-webpagina houdt in feite in dat de HTML-headerblokken en HTML-opmaakcodes rond de gemeten temperaturen worden verzonden. Het bevat ook een invoer voor de doeltemperatuur en een knop om deze op te nemen in een verzoek aan de server.

De universele Windows-app

Dit is het stuk waarmee je achterover kunt leunen en ontspannen, wetende dat je roker een van de beste gerookte runderborst aan het maken is ten westen van de Pecos (of welke rivier dan ook naar keuze). Het laadt periodiek de webpagina van de roker, analyseert de temperaturen en geeft deze weer. Hiermee kunt u ook de doeltemperatuur voor de roker instellen.

Code voor zowel de sketch als de Universal-app is beschikbaar in de GitHub-repository die hieronder wordt vermeld.

Code

  • Schets van rookcontroller
Smoker Controller SketchArduino
// sketch_12_04_server_wifi#include #include char ssid[] ="BeeBar2"; // uw netwerk-SSID (naam) char pass [] ="9254582716"; // uw netwerkwachtwoordWiFiServer-server (80);WiFiClient-client;const int numPins =10;int pins[] ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9};int pinState[] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0};char line1[100];char buffer[100];IPAddress server_IP(192,168,123,90);float targetTemperature =225;float smokerTemperature =225;float v0;void setup(){Serial.begin(9600); terwijl (!Serial) {}; // Leonardo heeft dit nodig voor (int i =0; i "); sendAnalogReadings(); client.println("
"); client.print("\n

Doeltemperatuur:


"); client.println("\n
\n");}void sendAnalogReadings(){ client.println("

Temperaturen

\n"); Serial.print("Pin(");Serial.print(0);Serial.print("):V=");Serial.print(v0);Serial.print(" Temperature="); Serial.println(rokerTemperatuur); client.print(""); for (int i =1; i <7; i++) {int lezen =analogRead(i); if (lezing> 0) { float v =(float) lezing / 1241,0; vlotter T =ThermisterTemp (v, 100000, 10000, 3950, 25); Serial.print("Pin(");Serial.print(i);Serial.print("):");Serial.print(lezen);Serial.print("V=");Serial.print(v);Serial.print("Temperatuur="); Serieel.println(T); client.print(""); } } client.println("
Roker "); cliënt.print(""); cliënt.afdruk(rokerTemperatuur); cliënt.println(" F
Probe "); klant.print(i); cliënt.print(""); klant.print(T); cliënt.println(" F
");}void readHeader(){ readRequestLine(line1); while (readRequestLine(buffer)> 1 &&buffer[0] !='\n') {}}int readRequestLine(char *line){ char ch; int ik =0; while (ch !='\n' &&i <100 &&client.available()) { if (client.available()) { ch =client.read(); lijn[i] =ch; ik ++; } } lijn[i] ='\0'; return i;}boolean pageNameIs(char* name){ // paginanaam begint bij char pos 4 // eindigt met spatie int i =4; char ch =lijn1[i]; while (ch !=' ' &&ch !='\n' &&ch !='?') { if (name[i - 4] !=line1[i]) { return false; } ik++; ch =lijn1[i]; } return true;}float readTargetTempParam(){ //Serial.print("parsing targetTemperature");Serial.println(line1); int len ​​=strlen(regel1); for (int i =0; i
Smoker Controller Sketch &Universele app
https://github.com/DuncanBarbee/SmokerController

Schema's

De Mrkr1000 wordt vertegenwoordigd door een Arduino Nano Smoker.fzzDe Mrkr1000 wordt vertegenwoordigd door een Arduino Nano
De Fritzing-tool had het onderdeel niet.

Productieproces

  1. Arduino digitale dobbelstenen
  2. Temperatuur- en vochtigheidsdatalogger
  3. Iron Man
  4. Vind mij
  5. Arduino 3D-geprinte robotarm
  6. Arduino-luchtbevochtigerbediening
  7. Contactloze temperatuurbewakingspoort
  8. NeoMatrix Arduino Pong
  9. Arduino-joystick
  10. Arduino TEA5767 FM-radio-ontvanger
  11. Stappenteller (Arduino 101)