matekogon napisał(a):
Kolego ja bym zrobił to tak: różnica miedzy temperaturami to 65 stopni według założeń temp min 30 max 95 Następnie tą różnice podzielił bym przez 1024 wyjdzie ci że wartość jeden z przetwornika to 0,063476563 temperatury . a temperature wyliczył bym sobie tak temp= 30+(0,063476563* wartośc z przetwornika) Np Przy wartości przetwornika 500 temperatura wychodzi np 61,73828125 Oczywiście musisz ją odpowiednio sformatować
Witam kolegę. Wpadłem na dość ciekawy pomysł rozwiązania mojego problemu ale widzę, że Twoje rozwiązanie jest dość proste i spełniające moje oczekiwania. Jak przeczytałem sposób jaki proponujesz to normalnie spaliłem się ze wstydu bo nie pomyślałem o takim właśnie sposobie i to na dodatek bardzo prostym i spełniającym moje założenia. Dziękuje za pomoc i mam nadzieję, że ja kiedyś też się odwdzięczę. Temat uznaje za zamknięty. A pro po sformatowania wyniku a dokładnie części po przecinku nie będzie takiej operacji bo będę operował na liczbach całkowitych a nie zmiennoprzecinkowych np:
void termostat (uint8_t x){
uint16_t adc = ADCW;
if (cel >=(30+(0.063476563*adc)+hist)) PK1_ON;
if (PK1_ON == 1){
if (cel <= (30+(0.063476563*adc)-hist)) PK1_OFF;
}
}
Chyba mniej więcej ma to tak działać prosta regulacja z histerezą. Jeśli coś nie tak proszę o korekte