Výroba termostatu

Sem pište, pokud pracujete na projektu a hledáte společníka.
Odpovědět
Venda
Příspěvky: 12
Registrován: 05 pro 2018, 17:59
Reputation: 0

Výroba termostatu

Příspěvek od Venda » 30 pro 2023, 20:23

Zdravím Vás, našel by se někdo pro spolupráci na výrobě prototypu termostatu? Stručný popis zařízení umístěné v krabici KPZ11, teplotní čidlo DS18B20 s volitelně dlouhým přívodem (1,2,3m), připojení do zdířky na krabici stereo Jack 3,5mm. Na krabici osazen hodinový display a otočný knoflík potenciometru pro nastavení teploty 0-99°C. První dvě číslovky displeje zobrazují skutečnou teplotu z čidla a druhé dvě nastavenou potenciometrem. Toto je moje prvotní představa, samozřejmě se nebráním lepším nápadům. S hardwarem si poradím, ale potřebuju někoho kdo napíše program. Třeba bychom pak mohli pokračovat na dalších projektech.
z27-kpz-11.jpg
z27-kpz-11.jpg
Přílohy
DisplayTM1637.jpg

Uživatelský avatar
kiRRow
Příspěvky: 1170
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Výroba termostatu

Příspěvek od kiRRow » 31 pro 2023, 08:43

Něco takového mám u kotle. Akorát ta věc co se strká do zásuvky má rádiový přijímač místo 3,5 jacku a displej a regulační kolečko je na krabičce s vysílačem. Je tam i teplotní senzor, takže to hodíš někde v místnosti, kde chceš regulovat teplotu někam na zeď a ono to vysílá do sklepa signály, které zapínají a vypínají kotel. Jo a ta krabička v zásuvce přímo neodpojuje 230V, ale má na sobě výstupní relé přes který ten kotel ovládá ... :) takže kotel je trvale připojen na 230V a dostává signál on/off...

Venda
Příspěvky: 12
Registrován: 05 pro 2018, 17:59
Reputation: 0

Re: Výroba termostatu

Příspěvek od Venda » 31 pro 2023, 16:24

Takový termostat jsem už taky k elektrokotli připojoval, tohle je takový univerzálnější. Taky by se do toho dalo umístit čidlo DT11 a když nebude připojeno DS18B20, tak to pojede podle něj. Jsem schopen tak nějak poskládat program až na to, že nedokážu donutit displej zobrazovat vedle sebe ty dvě teploty.

AstroMiK
Příspěvky: 593
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Výroba termostatu

Příspěvek od AstroMiK » 31 pro 2023, 18:32

Na základě ukázkového příkladu z knihovny toho displeje by se dvě teploty mohly zobrazit třeba takhle:
( https://github.com/avishorp/TM1637/blob ... 37Test.ino )

Kód: Vybrat vše

.
.
.

teplota1 = 25;   // vlevo
teplota2 = 48;   // vpravo
int zobrazeni = (teplota1 * 100) + teplota2;        // = 2548
display.showNumberDec(zobrazeni, true);     // zobrazeni cisla s uvodnimi nulami

.
.
.
.

Venda
Příspěvky: 12
Registrován: 05 pro 2018, 17:59
Reputation: 0

Re: Výroba termostatu

Příspěvek od Venda » 02 led 2024, 18:19

Myslel jsem, že se třeba někdo ozve, že by se mu to hodilo taky a společně bychom to dali dohromady.
Děkuji za kód vyzkouším, zatím pouze zobrazuji teplotu z čidla:
Termostat.ino
(915 bajtů) Staženo 35 x

Venda
Příspěvky: 12
Registrován: 05 pro 2018, 17:59
Reputation: 0

Re: Výroba termostatu

Příspěvek od Venda » 15 led 2024, 17:39

Tak jsem to zkusil, ale narazil jsem na nulové znalosti... mohl by se mi na to prosím někdo podívat, tady je program. Velice Vám děkuji, už nevím jak dál.

Kód: Vybrat vše

#define  Potak 1 // Nastaveni teploty potenciometrem
float  NastTep; // Nastavena teplota
#define pinOUT 6 // buzení tranzistoru pro výkonové relé
#define pinLED 13 // led svítí při sepnutém relé
#include <TM1637Display.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// Module connection pins (Digital Pins)
#define CLK 4
#define DIO 3
#define ONE_WIRE_BUS 2

const uint8_t SEG_ERR[] = {
  SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, // E
  SEG_E | SEG_G,                         // r
  SEG_E | SEG_G,                         // r
  0,                                     // space
};

TM1637Display display(CLK, DIO);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  pinMode(pinOUT, OUTPUT); //výstup
  pinMode(pinLED, OUTPUT); //výstup
  Serial.begin(9600);
  display.setBrightness(15);
  sensors.begin();
  if (sensors.getDS18Count() == 0)
    display.setSegments(SEG_ERR);
  else
    sensors.setResolution(12);
    
}

void loop() {

  NastTep = analogRead(Potak);  
  NastTep = NastTep * 20 / 205 ; // Přepočet na 0-100°C


  if (sensors.getDS18Count() != 0) {
    sensors.requestTemperatures();
    double temp = sensors.getTempCByIndex(0);
    display.showNumberDecEx(temp * 100, 0b01000000, false);
delay(20);
}
temp = 25;   // vlevo
NastTep = 48;   // vpravo
int zobrazeni = (temp * 100) + NastTep;        // = 2548
display.showNumberDec(zobrazeni, true);     // zobrazeni cisla s uvodnimi nulami


if(NastTep>temp){
      digitalWrite(pinOUT, HIGH);  
      digitalWrite(pinLED, HIGH);
    delay(3000);
Serial.println(NastTep);
    
   }

  }
  
}

Venda
Příspěvky: 12
Registrován: 05 pro 2018, 17:59
Reputation: 0

Re: Výroba termostatu

Příspěvek od Venda » 15 led 2024, 19:42

Tohle mě napsala AI, je to funkční termostat, ale skutečná a zvolená teplota se na displeji neustále přepínají, spíše jsem chtěl aby se tam zobrazily obě teploty vedle sebe, první dvě číslovky - skutečná teplota z čidla a druhé dvě číslovky nastavená teplota z potenciometru, jinak je to ale bomba pomocník.

Kód: Vybrat vše

#include <OneWire.h>
#include <DallasTemperature.h>
#include <TM1637Display.h>

// Piny pro teplotní senzor DS18B20 a potenciometr
#define ONE_WIRE_BUS 2
#define POTENTIOMETER_PIN A0

// Piny pro TM1637 displej
#define CLK_PIN 3
#define DIO_PIN 4

// Objekty pro teplotní senzor, TM1637 displej a potenciometr
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
TM1637Display display(CLK_PIN, DIO_PIN);
int potValue = 0;
int setTemperature = 0;

void setup() {
  sensors.begin();
  display.setBrightness(0x0a);  // Nastaví jas displeje (0x00 - 0x0f)
}

void loop() {
  // Načtení hodnoty teploty z DS18B20
  sensors.requestTemperatures();
  float temperature = sensors.getTempCByIndex(0);

  // Načtení hodnoty nastavené teploty z potenciometru
  potValue = analogRead(POTENTIOMETER_PIN);
  setTemperature = map(potValue, 0, 1023, 0, 100);

  // Zobrazení skutečné a nastavené teploty na displeji
  display.showNumberDec(temperature, false);
  delay(1000);  // Zpoždění pro čitelnost
  display.showNumberDec(setTemperature, false);
  delay(1000);  // Zpoždění pro čitelnost
}

Uživatelský avatar
kiRRow
Příspěvky: 1170
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Výroba termostatu

Příspěvek od kiRRow » 17 led 2024, 16:01

Já píše: // Zobrazení skutečné a nastavené teploty na displeji
display.showNumberDec(temperature, false);
delay(1000); // Zpoždění pro čitelnost
display.showNumberDec(setTemperature, false);
delay(1000); // Zpoždění pro čitelnost
Tento kod přepíná dvě obrazovky displeje a na jedné ukazuje hodnotu temperature a na druhé hodnotu setTemperature, chtěl bych přepsat ten kód tak, aby byla jen jedna obrazovka co se nebude přepínat a na ní zobrazené obě hodnoty
ChatGPT píše: Pro zobrazení obou hodnot teplot na jedné obrazovce můžete použít například funkci display.showString a spojit obě hodnoty do jednoho řetězce. Zde je příklad kódu pro Arduino, který můžete použít:

Kód: Vybrat vše

// Zobrazení skutečné a nastavené teploty na displeji
String displayText = String(temperature) + " / " + String(setTemperature);
display.showString(displayText.c_str());
delay(2000);  // Zpoždění pro čitelnost
V tomto příkladu String(temperature) a String(setTemperature) převede hodnoty teplot na řetězce a pak jsou spojeny do jednoho řetězce displayText. Funkce display.showString pak zobrazí tento řetězec na displeji. Přidejte vhodné zpoždění (v tomto případě 2000 ms) pro čitelnost.

Můžete také přidat další formátování, podle potřeby.
Jo jo je s tím legrace :-)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Google [Bot] a 29 hostů