Re: Терморегулятор MAX6675 (Arduino)
все работает,
А теперь с ТМ1637, подключение кнопок и МАХ, оставьте такими же
Просто с одного индикатора на другой переключаться геморойно,
(переделывать нужно всю схему)
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Тестирование скетчей → Терморегулятор MAX6675 (Arduino)
все работает,
А теперь с ТМ1637, подключение кнопок и МАХ, оставьте такими же
Просто с одного индикатора на другой переключаться геморойно,
(переделывать нужно всю схему)
образцовый калибратор МС-6
на таких температурах такая погрешность нормально я так считаю
все работает,
А теперь с ТМ1637, подключение кнопок и МАХ, оставьте такими жеПросто с одного индикатора на другой переключаться геморойно,
(переделывать нужно всю схему)
жду с ТМ1637. прогоню выложу
терморегулятор уже собран на LCD 16x2, работает хорошо и с кнопками и с энкодером.
Скетч протестирован.
Осталось протестить на индикаторе ТМ1637
спасибо за примеры, собрал на ТМ1637, все хорошо работает, мне показалось, что при регулировке температуры отключения большеватые задержки и на экранчике кракозябры в этот момент. думаю это поправимо. запустил на атмеге 8, на этом же сайте есть как привязать этот контроллер к ардуине. для мелких устройств самое то. может и на LCD получится, посмотреть что там с памятью выйдет. возник вопрос по ходу экспериментов, если памяти впритык, можно же код сбрасывать в hex без загрузчика и записаться каким либо программатором с учетом фьюзов?
при регулировке на ТМ1637 что вверх что вниз все показаня были четкие.
никаких кракозябров не было это что-то у вас какойто бок
TM1637 + MAX6675 кнопочное управление
#include <Wire.h>
#include <EEPROM.h>
#include <STM32_TM1637.h> // http://rcl-radio.ru/wp-content/uploads/2021/01/STM32_TM1637.zip
#include <max6675.h> // http://rcl-radio.ru/wp-content/uploads/2018/07/max6675.zip
STM32_TM1637 tm(2,3);// CLK, DIO
int thermoDO = 6; // SO
int thermoCS = 5; // CS
int thermoCLK = 4;// SCK
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
unsigned long time;
double t_c,t_sum,t_iz;
int menu,w,reg,gis,reg_h,reg_l,i;
void setup() {
Wire.begin();Serial.begin(9600);
tm.brig(7); // ЯРКОСТЬ 0...7
pinMode(13,OUTPUT); // реле
pinMode(12,OUTPUT); // индикатор нагрева
pinMode(7,INPUT_PULLUP); // menu (нажатие кнопки - замыкание на gnd)
pinMode(8,INPUT_PULLUP); // up (нажатие кнопки - замыкание на gnd)
pinMode(9,INPUT_PULLUP); // down (нажатие кнопки - замыкание на gnd)
reg_h = EEPROM.read(0);reg_l = EEPROM.read(1);gis = EEPROM.read(2);
reg = reg_h*100+reg_l;
}
void loop() {
//// измерение температуры
i++;
t_c=thermocouple.readCelsius();t_sum=t_sum+t_c;
if(i>4){i=0;t_iz=t_sum/5;t_sum=0;}
/////////////////////////////////////////////
if(digitalRead(7)==LOW){menu++;if(menu>2){menu=0;}delay(1);}
///////// регулирование
if(menu==1){
if(digitalRead(8)==LOW){reg++;time=millis();w=1;if(reg>999){reg=999;}delay(1);}
if(digitalRead(9)==LOW){reg--;time=millis();w=1;if(reg<0){reg=0;}delay(1);}
tm.print_float(reg,0, 0b01010000,0,0,0);
Serial.println(reg);
}
///////// гистерезис
if(menu==2){
if(digitalRead(8)==LOW){gis++;time=millis();w=1;if(gis>10){gis=10;}delay(1);}
if(digitalRead(9)==LOW){gis--;time=millis();w=1;if(gis<0){gis=0;}delay(1);}
tm.print_float(gis,0, 0b00111101,0,0,0);
Serial.println(gis);
}
////////////////////////////////////////////////////////
if(menu==0){
tm.print_float(t_iz,1, 0,0,0,0);
}
////////////////////////////////////////////////////////
if(millis()-time>5000 && w==1){
reg_h = reg/100;reg_l = reg-reg_h*100;
EEPROM.update(0,reg_h);EEPROM.update(1,reg_l);EEPROM.update(2,gis);
menu=0;w=0;}
if(reg >= t_iz + gis){digitalWrite(13,HIGH);digitalWrite(12,LOW);}
if(reg <= t_iz - gis){digitalWrite(13,LOW);digitalWrite(12,HIGH);}
delay(200);
Serial.println(menu);
}// loop
TM1637Display display(4, 5);// CLK,DIO-раньше было так написано
STM32_TM1637 tm(2,3);// CLK, DIO - сейчас так в новом скече
что значит - STM32. Как я понял это собирается на STM32F103C8T6
Библиотека написана под stm32, но отлично работает под Arduino. Мне удобней работать с этой библиотекой.
вот такие странные показания
индикатор заточен под часы поэтому нет точки ?
мне кажется что погрешность растет с ростом температуры
убрать 4 знак и сделать например знак градуса
что нужно изменить в скетче
Найдите строку
tm.print_float(t_iz,1, 0,0,0,0);
замените на
tm.print_float(t_iz,1, 0,0,0,0b01100011);
В младшем разряде должен быть отображен градус
Найдите строку
tm.print_float(t_iz,1, 0,0,0,0);
замените на
tm.print_float(t_iz,1, 0,0,0,0b01100011);В младшем разряде должен быть отображен градус
Исправил, получилось
по сравнению с LCD, измерение врет с большой погрешностью +- 30гр
измерение врет с большой погрешностью +- 30гр
Напряжение подаете прямо с калибратора?
перепроверю, напишу
регулировка температуры и гистерезиса.
гистерезис мах. 10
с ростом температуры погрешность растет.
но на таких температурах для меня это неважно
если возможна коррекция то напишите где исправить
if(i>4){i=0;t_iz=t_sum/5;t_sum=0;}
укажите коэффициент коррекции
if(i>4){i=0;t_iz=t_sum/5*0.98;t_sum=0;}
100-102
200-199
300-297
400-397
500-498
600-599
700-700
800-799
900-897
я думаю что погрешность может давать монтаж на макетной плате и недостаток емкостей.
а в общем я считаю все просто отлично! тест закончен!
я вам задал вопрос в теме STM32 — осциллограф (Arduino IDE)
вот такая шайтан - машин получились.
терморегулятор просто бомба!
Не спеша доделываю терморегулятор. как и хотел, сделал на атмеге 8, индикатор 2002, потому что просто есть. Нагреватель силиконовый 12 в на 25 ватт. Для большей скорости нагрева желательно 15 вольтовый источник питания, у меня импульсник установлен в самом корпусе терморегулятора. Вместо кнопок применил джойстик, потому что валялся. Есть свободная изолированная пара силовых контактов на случай внешнего нагревателя. Плату не делал, все на макетке. Спасибо за полезный проект.
Повторил схему с TM1637 и управление энкодером. При включении на несколько секунд загорается 1000 а потом уже реальная температура. При повороте энкодера в любую сторону загорается 1000 и ничего не регулируется. Энкодеры пробовал разные то же самое. куда копать?
forum.rcl-radio.ru → Тестирование скетчей → Терморегулятор MAX6675 (Arduino)
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|