1.Получил фен, все собрал (на коленках) но не могу догнать как поменять скетч (что удалить, и что добавить), чтобы корректно переходил знак ">", вы выше комментировали, но я не программист и всякие переменные для меня "темный лем", помогите, напиши код как должно быть и куда это поставить
2.Не нашел в коде строчку которая отвечает за вывод таймеров, хотел указать координаты вывода для 1602 в конец дисплея
3. Так как мне названия не нужны, решил удалить раздел SET LCD DESING, но при этом среда программирования при компиляции ругается, вывод надписей удалил, но две строчки пока оставил чтобы не ругался!?
4. Вход IN ТС - это датчик температуры для фена?, на фото вижу что у вас к этому входу в минус заходит ДВА ПРОВОДА черный и синий, почему?
как поменять скетч (что удалить, и что добавить), чтобы корректно переходил знак ">"
Тут не сложно. Посмотрите сообщение 66 - вывод осуществляется в два приёма - "зачистка" места, куда выводим и сам вывод. Как у меня, в цикле, у вас подчистить не получится, поэтому делаем "в лоб", для каждой координаты, куда выводится знак ">" -
lcd.setCursor(X, Y); //X и Y - координаты заданного символа
lcd.print(" ");
lcd.setCursor(X1, Y1); //X1 и Y1 - координаты заданного символа
lcd.print(" ");
lcd.setCursor(X2, Y2); //X2 и Y2 - координаты заданного символа
lcd.print(" ");
затем вывод "стрелки", взависимости от выбранного режима -
switch (selectedMode) {
case modeSolder:
lcd.setCursor(X, Y);// ставим курсор в нужное место
break;
case modeHotAir:
lcd.setCursor(X1, Y1);
break;
case modeFanPWM:
lcd.setCursor(X2, Y2);
break;
}
lcd.print(">");// и выводим символ
Цитата:
2.Не нашел в коде строчку которая отвечает за вывод таймеров
Там же, в процедуре вывода DisplayUpdate
if (HotAirProtect) {
lcd.print("[!]");
} else if (HotAirON) {
lcd.print(HAcountdown);
}
Переменная HAcountdown (фен) или Scountdoun (паяльник). Т.е. по сути - в эту позицию у меня не выводится ничего, если канал выключен или выводится "!", если сработала защита или выводится значение таймера, если канал включен.
Цитата:
среда программирования при компиляции ругается, вывод надписей удалил
Как ругается? Если удаляете тело процедуры initDisplay(), то нужно и удалить её вызов из setup()
Цитата:
4. Вход IN ТС - это датчик температуры для фена?, на фото вижу что у вас к этому входу в минус заходит ДВА ПРОВОДА черный и синий, почему?
Да, ТС = ThermoCouple = термопара (фена).
А два провода заходит - не обращайте внимания, это выведена земля к разъёму датчика подставки паяльника (туда же и + питания подведён), ибо планировалось оптику городить в подставке. Но я вовремя одумался и сделал проще и вполне надёжно работающе "через жестянку".
Добавлю общую рекомендацию по запуску или проверке станции.
1. Проверка платы питания. Ничего к ней не подключаем, кроме источника питания - проверяем
величины питающих напряжений (особенно 5 вольт, для контроллера) и их наличие на требуемых пинах.
Если всё в норме, можно, подавая +5В, через резистор 470-510 Ом на соответствующие пины разъёма, к которому подключается плата MCU, убедиться, что срабатывают реле и открываются силовые ключи (можно вместо нагрузки повесить, к примеру, лампочки или фен/паяльник, но в последнем случае открыть ключи кратковременно, на неск. секунд.).
2. Далее подключаем все платы, смотрим, правильно ли выводится индикация (если применялся отличный от моего дисплей и в коде что-то менялось) и корректно ли происходит ли выбор параметров и их регулирование.
3. Настройка усилителя термодатчиков (самое гиморное занятие).
Потребуется мультметр или от дельный термометр с термопарой. У меня такой - TM-902C
Подстроечником "Начало" выставляется начальное смещение ОУ, соответствующее температуре окружающей среды (рядом можно положить термометр). Далее, нужно привязать термопару от мультиметра к жалу паяльника и установив НЕБОЛЬШУЮ (градусов 100), заданную температуру, ждём, когда устаканится и смотрим на показания дисплея и образцового термометра. Подстроечником "Шкала" устанавливаем текущие показания по образцовому термометру. Затем, можно поднять заданную температуру до 300 град и проверить соответствие её с "эталоном". При необходимости - подстроить. После этого, даём паяльнику полностью остыть и проверяем показания при комнатной температуре. В заключение, можно "прогнать" вышеуказанное ещё разок и убедиться, что диапазон разогнан верно.
Для канала фена настройка происходит аналогично, но с учётом того, что расстояние от сопла фена до образцовой термопары выбирается взависимости от расстояния, при котором планируется работать с феном. У себя я настроил соответствие с образцовым термометром на расстоянии 10мм.
По ОУ. Если применён "обычный" ОУ (LM358), то показания АЦП напрямую соответствуют
измеренной температуре, для Rail-To-Rail ОУ (AD8552) показания АЦП нужно делить пополам.
Применённый способ измерения, при его достаточно неудобной настройке, позволяет диагностировать аварийное состояние цепей термодатчиков - если показания ниже 10 градусов - короткое замыкание в цепи датчика а при показаниях 500 и выше - обрыв.
Важно!!!
Первое включение всегда контролируйте термометром - пока усилитель термодатчиков не "разогнан" по диапазону, он может сильно занижать считываемую температуру и, соответственно, станция будет сильно разогревать нагрузку. Особенно это относится к фену, т.к. он раскаляется очень быстро и его можно сжечь. Скорость вентилятора фена, при настройке, лучше устанавливать максимальную.
SS_5.ino: In function 'void DisplayUpdate()':
SS_5.ino:759:16: error: a function-definition is not allowed here before '{' token
SS_5.ino:820:1: error: expected '}' at end of input
Ошибка компиляции.
Дык ошибки компилятора читайте - в 820 строке он надеется найти закрывающую скобку для процедуры DisplayUpdate, но её (скобки) там нет )) Это я сужу по куску кода, что в предыдущем сообщении. Процедура обрывается на строке lcd.print(">");
Правильно.
100-килоомники включены в цепи обратной связи ОУ - это растяжка диапазона или "Шкала"
Остальные (100 Ом и 50КОм) - начальное смещение или "Начало"
Подстроечники лучше применить многооборотные - точнее настройка и дальнейшая стабильность устновленных режимов.
Здравствуйте, у меня проблема с бипером, невнятно хрипит, пищать отказывается, что можно поправить? Замена бипера не помогла.
Так-же я в шоке от качества деталей, пришлось пол проекта снова перебирать...
Блок питания с али на 24в и 2 ампера при подсоединениии паяльника тупо сгорел.. выбило транзистор и все диоды... заменил все на более мощное, греется но тянет.. нужно думать о замене..
Полевик один неисправен оказался, открывался импульсами, пока понял что к чему еще помучался(
Один оптрон оказался паленым...
На зато есть преимущество, я заказал паяльник хакку и тот оказался сильно похожим на оригинал, и греется настолько быстро что при проверке я его чуть не расплавил))) не привык что паяльник так быстро разогревается.
Еще вопрос по проекту, как добавить контроль того что в термофене первым включается вентилятор и уже после нагреватель и соответственно при выключении вентилятор последний, у меня какой-то глюк с этим.
И еще один глюк, станция не всегда стартует с первого раза(на дисплее просто вспыхивает подсветка), иногда приходится выключать и включать ее, интересно что это может быть?
Выложу еще раз код посмотрите может я где ошибся, извините за такое количество вопросов,спасибо.
#include <EEPROM.h>
#include <CyberLib.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Bounce2.h>
/* LCD */
LiquidCrystal_I2C lcd(0x3F, 20, 4);
//Degree symbol
uint8_t degree[8] = {140, 146, 146, 140, 128, 128, 128, 128};
/* Variables & definitions */
uint16_t HA_sleeptime = 10;
uint16_t S_sleeptime = 10;
boolean need_HA_countdown = false;
boolean need_S_countdown = false;
byte selectedMode = 1; //solder selected
uint16_t HAcountdown = 1;
uint16_t Scountdown = 1;
uint32_t prevDisplayMillis = 0;
uint32_t prevWorkMillis = 0;
uint32_t UPbuttonPressTime = 0;
uint32_t DWNbuttonPressTime = 0;
uint32_t prevHAmillis = 0;
uint32_t prevSmillis = 0;
uint16_t Graph_count = 0;
//if you need to create themperature diagramm then set true
boolean need_log = false;
boolean UPbuttonState, DWNbuttonState;
#define pinBuzzer 12
char bspace[ ] = " ";
#define min_solder_temp 100
#define max_solder_temp 350
#define min_hotair_temp 50
#define max_hotair_temp 450
#define min_rpm 20
#define max_rpm 100
#define default_temp 250
#define default_rpm 50
/* Definitions for mode selector */
#define modeSolder 1
#define modeHotAir 2
#define modeFanPWM 3
/* Definitions for buttons */
#define sw_HA 10
#define sw_S 9
#define bt_SON 13
#define bt_HAON 14
#define bt_Sel 15
#define bt_Up 16
#define bt_Dwn 17
/* Bounce killers */
Bounce swHotAir = Bounce();
Bounce swSolder = Bounce();
Bounce SolderOnButton = Bounce();
Bounce HotAirOnButton = Bounce();
Bounce SelButton = Bounce();
Bounce UpButton = Bounce();
Bounce DwnButton = Bounce();
/* Hot Air definitions*/
volatile uint16_t ots = 9990;
volatile boolean HotAirON = false;
volatile boolean HotAirProtect = false;
uint16_t GetHotAirT = 0;
uint16_t SetHotAirT = 100;
byte SetHotAirRPM = 100;
byte HAgood = 0;
boolean HAneedBeep = true;
boolean needCool = true;
boolean HA_gerkon = false;
#define pinFanPwm 6
#define Kp 1.0
#define Ki 0.005 //0.008 //0.0035
int integral = 0;
float HAPower = 0.0;
boolean HA_PROT = false;
/* Solder definitions */
uint16_t GetSolderT = 0;
uint16_t SetSolderT = 100;
byte Sgood = 0;
boolean SneedBeep = true;
boolean SolderON = false;
boolean SolderProtect = false;
boolean S_PROT = false;
#define pinSolderPwm 5
#define sKp 50
void setup() {
pinMode(3,INPUT_PULLUP); //Zero cross pin
D5_Out; //pinSolder
D5_Low;
D4_Out; //pinSolderProt
D4_Low;
D7_Out; //pinHotAirProt
D7_Low;
D8_Out; //pinHotAir
D8_Low;
D12_Out; //pinBuzzer
D12_Low;
ButtonsSetup();
if (need_log) {
Serial.begin(115200);
}
lcd.init();
lcd.backlight();
lcd.createChar(0, degree);
Splash();
MemRead();
delay_ms(2000);
initDisplay();
attachInterrupt(1, ZC, FALLING);
}
void loop() {
ScanButtons();
/* Off-timer for HotAir, countdown with 1 min */
if (need_HA_countdown) {
unsigned long currHAmillis = millis();
if (currHAmillis - prevHAmillis > 60000) {
if (HAcountdown > 1) {
HAcountdown--;
if (HAcountdown == 1) {
Beep(20); //Beep, if 1 minute left
}
} else {
HAcountdown = 1;
prevHAmillis = 0;
MemHotAir();
need_HA_countdown = false;
HotAirON = false;
Beep(100);
}
prevHAmillis = currHAmillis;
}
}
/* Off-timer for Solder, countdown with 1 min */
if (need_S_countdown) {
unsigned long currSmillis = millis();
if (currSmillis - prevSmillis > 60000) {
if (Scountdown > 1) {
Scountdown--;
if (Scountdown == 1) {
Beep(20); //Beep, if 1 minute left
}
} else {
Scountdown = 1;
prevSmillis = 0;
MemSolder();
need_S_countdown = false;
SolderON = false;
Beep(100);
}
prevSmillis = currSmillis;
}
}
/* Update LCD with 500ms interval */
uint32_t currDisplayMillis = millis();
if (currDisplayMillis - prevDisplayMillis > 500) {
prevDisplayMillis = currDisplayMillis;
DisplayUpdate();
//if you need to create themperature diagramm
/* Send data to Serial port */
if (need_log) {
if (SolderON || HotAirON) {
Graph_count++;
Serial.print(Graph_count);
Serial.print(";");
} else {
Graph_count = 0;
}
if (SolderON && !HotAirON) {
Serial.println(GetSolderT);
} else if (!SolderON && HotAirON) {
Serial.println(GetHotAirT);
}
}
}
/* Main work with 50ms interval */
uint32_t currWorkMillis = millis();
if (currWorkMillis - prevWorkMillis > 50) {
prevWorkMillis = currWorkMillis;
WorkWithHotAir();
WorkWithSolder();
}
}
/* HotAir working procedure */
void WorkWithHotAir() {
/* Read the thermocouple value */
//GetHotAirT = A7_Read >> 1;
GetHotAirT = getOversampled(A7_Read);
if (HotAirON) {
/* Set the cooler rpm (convert from 30-100% to 80-255 PWM) */
analogWrite(pinFanPwm, map(SetHotAirRPM, 30, 100, 80, 255));
/* Overheat protection, or if thermocouple value is not valid */
if (GetHotAirT > SetHotAirT + 50 || GetHotAirT < 10) {
goto HotAirProtectOut;
}
/* Turn ON relay */
D7_High;
/* themperature PI regulator */
HA_PI();
/* If themperature was stable for 20 times (+/- 2 degrees) then signalize it*/
if (HAneedBeep) {
int delta = GetHotAirT - SetHotAirT;
if (delta > -3 && delta < 3) {
HAgood++;
if (HAgood == 20) {
Beep(20);
delay_ms(200);
Beep(20);
HAgood = 0;
HAneedBeep = false;
}
} else {
HAgood = 0;
HAneedBeep = true;
}
}
} else { /* if HotAir Off */
HotAirOff();
/* Cooling the heater until the temperature is below 50 degrees */
if (GetHotAirT >= 50 && needCool) {
analogWrite(pinFanPwm, 255);
} else {
analogWrite(pinFanPwm, 0);
needCool = false;
}
need_HA_countdown = false;
HAcountdown = 1;
}
return;
/* Protection out */
HotAirProtectOut:
analogWrite(pinFanPwm, 255);
HotAirProtect = true;
HA_PROT = true;
HotAirON = false;
HotAirOff();
}
/* Solder working procedure */
void WorkWithSolder() {
/* Read the thermoresistor value */
//GetSolderT = A6_Read >> 1;
GetSolderT = getOversampled(A6_Read);
if ( SolderON ) {
/* Overheat protection, or if thermoresistor value is not valid */
if (GetSolderT > SetSolderT + 50 || GetSolderT < 10) {
goto SolderProtectOut;
}
/* Turn ON relay */
D4_High;
/* themperature P regulator */
S_P();
/* If themperature was stable for 20 times loop (+/- 2 degrees) then signalize about it*/
if (SneedBeep) {
int delta = SetSolderT - GetSolderT;
if (delta > -3 && delta < 3) {
Sgood++;
if (Sgood == 20) {
Beep(20);
delay_ms(200);
Beep(20);
Sgood = 0;
SneedBeep = false;
}
} else {
Sgood = 0;
SneedBeep = true;
}
}
} else {
SolderOff();
need_S_countdown = false;
Scountdown = 1;
}
return;
/* Protection out */
SolderProtectOut:
SolderProtect = true;
S_PROT = true;
SolderON = false;
SolderOff();
}
/****************************************** OTHER ROUTINES ******************************************/
/* Read integer value */
int EEPROM_int_read(int addr) {
byte raw[2];
for (byte i = 0; i < 2; i++) {
raw[i] = EEPROM.read(addr + i);
}
int &num = (int&)raw;
return num;
}
/* Write integer value */
void EEPROM_int_write(int addr, int num) {
byte raw[2];
(int&)raw = num;
for (byte i = 0; i < 2; i++) {
EEPROM.write(addr + i, raw[i]);
}
}
/* Reset HotAir countdown */
void ResetHAcountdown() {
if (HAcountdown != 1) {
HAcountdown = HA_sleeptime;
}
}
/* Reset Solder countdown */
void ResetScountdown() {
if (Scountdown != 1) {
Scountdown = S_sleeptime;
}
}
/* Activate HotAir countdown */
void ActivateHAcountdown() {
need_HA_countdown = true;
HAcountdown = HA_sleeptime;
}
/* Activate Solder countdown */
void ActivateScountdown() {
need_S_countdown = true;
Scountdown = S_sleeptime;
}
/* Solder full off */
void SolderOff() {
analogWrite(pinSolderPwm, 0);
D5_Low;
delay_ms(10);
D4_Low;
if (SolderProtect && S_PROT) {
S_PROT = false;
Beep(1000);
}
}
/* HotAir full off */
void HotAirOff() {
D8_Low;
delay_ms(30);
D7_Low;
if (HotAirProtect && HA_PROT) {
HA_PROT = false;
Beep(1000);
}
}
/* Zero cross INT1 */
void ZC() {
StartTimer1(HeaterOn, ots);
RestartTimer1();
}
/* Triac open impulse */
void HeaterOn() {
if (HotAirON && !HotAirProtect) {
if (HAPower > 0.0) {
D8_High;
delay_us(100);
D8_Low;
} else {
D8_Low;
}
}
StopTimer1();
}
/* Scan buttons */
void ScanButtons() {
boolean changed = false;
byte value = 0;
changed = swHotAir.update();
if (changed && HotAirON) {
ResetHAcountdown();
Beep(50);
}
changed = swSolder.update();
if (changed && SolderON) {
ResetScountdown();
Beep(50);
}
SolderOnButton.update();
if ( SolderOnButton.fell() ) {
Beep(20);
SneedBeep = true;
if (!SolderON) {
SolderON = true;
SolderProtect = false;
prevSmillis = millis();
ActivateScountdown();
Graph_count = 0;
} else {
SolderON = false;
MemSolder();
}
}
HotAirOnButton.update();
if ( HotAirOnButton.fell() ) {
Beep(20);
HAneedBeep = true;
needCool = true;
if (!HotAirON) {
HotAirON = true;
HotAirProtect = false;
prevHAmillis = millis();
ActivateHAcountdown();
Graph_count = 0;
integral = 0;
} else {
HotAirON = false;
MemHotAir();
}
}
SelButton.update();
if ( SelButton.fell() ) {
Beep(20);
(selectedMode < 3) ? (selectedMode++) : (selectedMode = 1);
ResetScountdown();
ResetHAcountdown();
}
changed = UpButton.update();
if ( changed ) {
value = UpButton.read();
if (value) {
UPbuttonState = false;
} else {
switch (selectedMode) {
case modeSolder:
if (SetSolderT < max_solder_temp) {
SetSolderT += 5;
}
SneedBeep = true;
ResetScountdown();
break;
case modeHotAir:
if (SetHotAirT < max_hotair_temp) {
SetHotAirT += 5;
}
HAneedBeep = true;
ResetHAcountdown();
break;
case modeFanPWM:
if (SetHotAirRPM < max_rpm) {
SetHotAirRPM += 5;
}
HAneedBeep = true;
ResetHAcountdown();
break;
}
UPbuttonState = true;
UPbuttonPressTime = millis();
Beep(20);
}
}
if (UPbuttonState) {
if ( millis() - UPbuttonPressTime >= 500 ) {
UPbuttonPressTime = millis();
switch (selectedMode) {
case modeSolder:
if (SetSolderT < max_solder_temp) {
SetSolderT += 10;
}
if (SetSolderT > max_solder_temp) {
SetSolderT = max_solder_temp;
}
SneedBeep = true;
ResetScountdown();
break;
case modeHotAir:
if (SetHotAirT < max_hotair_temp) {
SetHotAirT += 10;
}
if (SetHotAirT > max_hotair_temp) {
SetHotAirT = max_hotair_temp;
}
HAneedBeep = true;
ResetHAcountdown();
break;
case modeFanPWM:
if (SetHotAirRPM < max_rpm) {
SetHotAirRPM += 10;
}
if (SetHotAirRPM > max_rpm) {
SetHotAirRPM = max_rpm;
}
HAneedBeep = true;
ResetHAcountdown();
break;
}
}
}
changed = DwnButton.update();
if ( changed ) {
value = DwnButton.read();
if (value) {
DWNbuttonState = false;
} else {
switch (selectedMode) {
case modeSolder:
if (SetSolderT > min_solder_temp) {
SetSolderT -= 5;
}
SneedBeep = true;
ResetScountdown();
break;
case modeHotAir:
if (SetHotAirT > min_hotair_temp) {
SetHotAirT -= 5;
}
HAneedBeep = true;
ResetHAcountdown();
break;
case modeFanPWM:
if (SetHotAirRPM > min_rpm) {
SetHotAirRPM -= 5;
}
HAneedBeep = true;
ResetHAcountdown();
break;
}
DWNbuttonState = true;
DWNbuttonPressTime = millis();
Beep(20);
}
}
if (DWNbuttonState) {
if ( millis() - DWNbuttonPressTime >= 500 ) {
DWNbuttonPressTime = millis();
switch (selectedMode) {
case modeSolder:
if (SetSolderT > min_solder_temp) {
SetSolderT -= 10;
}
if (SetSolderT < min_solder_temp) {
SetSolderT = min_solder_temp;
}
SneedBeep = true;
ResetScountdown();
break;
case modeHotAir:
if (SetHotAirT > min_hotair_temp) {
SetHotAirT -= 10;
}
if (SetHotAirT < min_hotair_temp) {
SetHotAirT = min_hotair_temp;
}
HAneedBeep = true;
ResetHAcountdown();
break;
case modeFanPWM:
if (SetHotAirRPM > min_rpm) {
SetHotAirRPM -= 10;
}
if (SetHotAirRPM < min_rpm) {
SetHotAirRPM = min_rpm;
}
HAneedBeep = true;
ResetHAcountdown();
break;
}
}
}
}
/* "Hello" screen */
void Splash() {
lcd.clear();
lcd.setCursor(2, 1);
lcd.print("Soldering Station");
lcd.setCursor(7, 2);
lcd.print("v 1.0");
//if you need to create themperature diagramm
if (need_log) {
lcd.setCursor(1, 4);
lcd.print("log is enabled");
}
}
/* Buttons initialise */
void ButtonsSetup() {
pinMode(sw_HA,INPUT_PULLUP);
swHotAir.attach(sw_HA);
pinMode(sw_S,INPUT_PULLUP);
swSolder.attach(sw_S);
pinMode(bt_SON,INPUT_PULLUP);
SolderOnButton.attach(bt_SON);
SolderOnButton.interval(5);
pinMode(bt_HAON,INPUT_PULLUP);
HotAirOnButton.attach(bt_HAON);
HotAirOnButton.interval(5);
pinMode(bt_Sel,INPUT_PULLUP);
SelButton.attach(bt_Sel);
SelButton.interval(5);
pinMode(bt_Up,INPUT_PULLUP);
UpButton.attach(bt_Up);
UpButton.interval(5);
pinMode(bt_Dwn,INPUT_PULLUP);
DwnButton.attach(bt_Dwn);
DwnButton.interval(5);
}
/* Set LCD design */
void initDisplay() {
lcd.clear();
lcd.setCursor(11, 0);
lcd.print("Set");
lcd.setCursor(16, 0);
lcd.print("Act");
lcd.setCursor(0, 1);
lcd.print("Solder");
lcd.setCursor(0, 2);
lcd.print("HotAir");
lcd.setCursor(0, 3);
lcd.print("FanRPM");
}
/* Update LCD */
void DisplayUpdate() {
lcd.setCursor(2, 0);
lcd.print(bspace);
lcd.setCursor(3, 0); //было 7.1
if (SolderProtect) {
lcd.print("[!]");
} else if (SolderON) {
lcd.print(Scountdown);
}
lcd.setCursor(2, 0);
lcd.print(bspace);
lcd.setCursor(3, 0);
lcd.print(SetSolderT);
lcd.write((byte)0);
lcd.setCursor(7, 0);
lcd.print(bspace);
lcd.setCursor(8, 0);
if (GetSolderT > 505 && !SolderON) {
lcd.print("---");
} else {
lcd.print(GetSolderT);
}
lcd.write((byte)0);
lcd.setCursor(2, 1);
lcd.print(bspace);
lcd.setCursor(3, 1);
if (HotAirProtect) {
lcd.print("[!]");
} else if (HotAirON) {
lcd.print(HAcountdown);
}
lcd.setCursor(2, 1);
lcd.print(bspace);
lcd.setCursor(3, 1);
lcd.print(SetHotAirT);
lcd.write((byte)0);
lcd.setCursor(8, 1);
lcd.print(bspace);
lcd.setCursor(8, 1);
if (GetHotAirT > 505 && !HotAirON) {
lcd.print("---");
} else {
lcd.print(GetHotAirT);
}
lcd.write((byte)0);
lcd.setCursor(13, 1);
lcd.print(bspace);
lcd.setCursor(13, 1);
if (needCool && !HotAirON) {
lcd.print("99%");
} else {
lcd.print(SetHotAirRPM);
lcd.print("%");
}
for (byte z = 1; z < 4; z++) {
lcd.setCursor(2, z);
lcd.print(" ");
}
lcd.setCursor(2, selectedMode);
lcd.print(">");
}
/* Read last parameters from memory */
void MemRead() {
SetSolderT = EEPROM_int_read(0);
if (SetSolderT < min_solder_temp || SetSolderT > max_solder_temp) {
SetSolderT = default_temp;
}
SetHotAirT = EEPROM_int_read(4);
if (SetHotAirT < min_hotair_temp || SetHotAirT > max_hotair_temp) {
SetHotAirT = default_temp;
}
SetHotAirRPM = EEPROM_int_read(8);
if (SetHotAirRPM < min_rpm || SetHotAirRPM > max_rpm) {
SetHotAirRPM = default_rpm;
}
}
/* Write last used solder themperature to memory */
void MemSolder() {
EEPROM_int_write(0, SetSolderT);
}
/* Write last used HotAir themperature and Fan r.p.m. to memory */
void MemHotAir() {
EEPROM_int_write(4, SetHotAirT);
EEPROM_int_write(8, SetHotAirRPM);
}
/* HotAir PI regulator */
void HA_PI() {
int err = SetHotAirT - GetHotAirT;
float TempPower = ((Kp * err) + (Ki * integral));
if (TempPower < 100.0 && TempPower > 0.0) integral += err;
HAPower = constrain(TempPower, 0.0, 100.0);
CalctImpulseControl();
}
/* Calculate delay for triac */
void CalctImpulseControl() {
ots = (uint16_t)(acos(HAPower / 50.0 - 1.0 ) * 9900.0 / pi);
}
/* Solder P regulator */
void S_P() {
int err = SetSolderT - GetSolderT;
int TempPower = sKp * err;
uint16_t SPower = constrain(TempPower, 0, 255);
analogWrite(pinSolderPwm, SPower);
}
void Beep(uint16_t duration) {
D12_High;
delay_ms(duration);
D12_Low;
}
uint16_t getOversampled(uint16_t ADC_value) {
unsigned long int result = 0;
for (byte z = 0; z < 64; z++) {
result += ADC_value;
}
return result >> 6;
}
Здравствуйте, у меня проблема с бипером, невнятно хрипит, пищать отказывается, что можно поправить? Замена бипера не помогла.
Приветствую. Скорее всего, вы поставили пассивный бипер (без встроенного генератора), а у меня установлен активный на 5 вольт (с генератором), который умеет пищать сам, при подаче питания. Наверное, я забыл об этом указать - дичайше ай эм сори ))
Цитата:
Блок питания с али на 24в и 2 ампера при подсоединениии паяльника тупо сгорел.
Такой БП - слабоват. Учтите, что сопротивление нагревателя паяльника в холодном состоянии около 5 Ом, что при 24 вольтовом питании даст более 4,5А потребляемого тока при старте. Потом он, конечно же, станет меньше, но БП и этого может хватить, если он импульсный (уйдёт в защиту или сгорит).
Цитата:
Еще вопрос по проекту, как добавить контроль того что в термофене первым включается вентилятор и уже после нагреватель и соответственно при выключении вентилятор последний, у меня какой-то глюк с этим.
В чём глюк проявляется?
По идее, в скетче, вентилятор включается первым, и, даже если он по какой-либо причине остановится, то сработает защита по превышению на 50 град. текущей температуры, относительно установленной. Контроль работы вентилятора - это нужно реализовывать как-то достаточно хитро, т.к. проверка наличия на нём напряжения не гарантирует его (вентилятора) работоспособности, его просто может заклинить, или оборвётся провод. Т.е. тут нужен тахометрический контроль, что, ПМСМ, лишнее, по указанной выше причине.
А выключается фен не просто последним - после отключения нагревателя, он включается на максимальные обороты (не важно, какие обороты были до этого) и "сбивает" температуру до 50 градусов.
Цитата:
И еще один глюк, станция не всегда стартует с первого раза
При первом включение в сеть? Думается, что из-за питания - померяйте напряжение питания контроллера.
И ещё. На вашей печатке (я про рисунок) электролит на выходе 5-вольтового стаба включен не правильной полярностью. Проверьте, как оно на плате обстоит...
А как сделать активным бипер?)) Схемка есть? Я почитал вкратце, вроде как можно самой ардуинкой реализовать?
Блок питания я умщнил))) теперь эта зараза спокойно держит около 5 ампер) С защитой там китаезы что-то намудриили и она получилась простым предохранителем)
По поводу питания жала паяльника... может стоит реализовать это импульсами? Типа шим? Чтобы уменьшить потребляемую мощность, ну пусть увеличится чуть время разогрева..
Про фен идея такова, нужно реализовать контроль подачи напряжения на моторчик фена и только после этого запускать нагреватель(может у вас так и реализованно?) У меня траблы с прошивкой и нагреватель запустился без вентилятора..
А как сделать активным бипер?)) Схемка есть? Я почитал вкратце, вроде как можно самой ардуинкой реализовать?
Попробуйте через функцию tone() сделать. Или на паре лог. элементов собрать (гугл - "пищалка на микросхеме")
Цитата:
По поводу питания жала паяльника... может стоит реализовать это импульсами? Типа шим?
Там и так ШИМ. Можно попробовать ограничение выходного сигнала регулирования ввести, но паяльник будет дольше греться.
Цитата:
Про фен идея такова, нужно реализовать контроль подачи напряжения на моторчик фена и только после этого запускать нагреватель(может у вас так и реализованно?) У меня траблы с прошивкой и нагреватель запустился без вентилятора..
У меня кулер не отслеживается никак и всегда уверенно запускается, даже, если выставлено 10% оборотов.
Обороты мотора регулируются с пом. ШИМ - ну отследите вы наличие импульсов на моторчике и что? Мотор не стартует, зато импульсы будут регистрироваться )) Надо выяснять, почему не стартует или неуверенно стартует. Для этого лучше отключить на время нагреватель фена и поэкспериментить без него...
Как вариант - воткнуть код раскрутки кулера "на полную" в место кода, где происходит включение канала фена кнопкой. Т.е. нажали-врубили кулер-небольшая задержка в пару сек.-включаем канал фена, где обороты кулера уставливаются заданными.
Всё правильно - большинство аналоговых пинов могут работать так же, как и цифровые.
И если 13 (цифровой пин) является для "наны" "последним", то 14, 15, 16, 17 продолжают нумерацию, распростараняясь на аналоговые... Можно "обзывать" их и как A0, A1, и.т.д., если так привычнее.
ЗЫ. А, понял про что вы... На плате перепутаны надписи Sel и Down. Это некритично, главное, что бы соединение с нужной кнопкой соответствовало объявленному пину для этой кнопки. Т.е. ориентируйтесь на скетч - это проще. Самое страшное, что тут может произойти - это какая-то кнопка будет выполнять неправильное действие, что легко вылечить, перепаяв проводки местами для "неправильных" кнопок.
OlegK, по поводу ШИМ, а как это самое ограничение выходного сигнала регулирования ввести? Это будет полезно тем у кого слабые блоки питания, ведь самое большое потребление тока идет именно в момент нагрева, думаю это важное решение!
А ведь фен отключится при перегреве если моторчик не сработает, верно?
Тут получается, что если температура паяла меньше 100 град (включили из холодного состояния), то
ограничиваем максимальный ШИМ на уровне 100. Градусы и величину ШИМ можете сами подобрать.
А если паяльник горячий, то не ограничиваем ничего...
Цитата:
А ведь фен отключится при перегреве если моторчик не сработает, верно?
Ну по коду посмотрите -
/* Overheat protection, or if thermocouple value is not valid */
if (GetHotAirT > SetHotAirT + 50 || GetHotAirT < 10) {
goto HotAirProtectOut;
}
При превышении текущей, относительно заданной на 50 град (обрыв или перегрев) или при текущей ниже 10 град (к.з) - врубаем защиту.
А вообще, вы сперва настройте усилители сигнала термодатчика, что бы температура измерялась более-менее верно. Кстати, для фена, на этапе настройки тоже можно ввести ограничение на уровне 30%. Фену этого хватить должно, но он не расплавится, если какой косяк где вылезет...
Т.е. в процедуре HA_PI()
HAPower = constrain(TempPower, 0.0, 30.0); // было 100.0
Здраствуйте. Собрал паяльную станцию пока без концевиков.
При включении, зараборал вентилятор. На экране отображаются данные, но не регулируются обороты фена всегда 100%.
Усилитель собрал по схеме Input_amp.jpg для термопары. Вращая подстроичники нечего не меняется, всегда прыгают цифры, что у фена и паяльника, в пределах 250 градусов. Плату рисовал в DIPTRACE.
Разобрался. Перепутал питание усилителя. + и -. поменял местами все заработало.
Пытаюсь отрегулировать температуру. установил начальное значение. ставлю 100 градусов. Включаю идет нагрев доходит до 150 по дисплею и отключается, выводит [!].
Включаю идет нагрев доходит до 150 по дисплею и отключается, выводит [!].
Отключается, похоже, защитой.
Две версии -
1. Перерегулирование (большой выброс при наборе температуры) на величину, превышающую 50 град. относительно заданной. Можно попробовать увеличить "уставку" с 50 град. до 100. Если, к примеру, при заданной температуре 100 град. подскочит выше 150, но ниже 200 и при этом не отключится и снизит температуру, то нужно смотреть коэффициенты регулирования. Если так же отключится, но при 200 град., значит см. пункт 2.
2. Не работает ФИ-регулирование и симистор распахнут. Можно скидать простецкий скетч, в котором это проверить (можно на лампочке). У меня где-то есть такой, там я выводил текущую температуру и мощность в %, которую дискретно, через 1% можно было менять от 0 до макс. Его можно использовать также и для проверки и для настройки канала измерения фена.
Пока разбираюсь с паяльником. А не должен ли при достижении температуры он отключаться. Стоит 100 градусов. Но он всеравно включен поэтому температура и растет. И отключается при 150 в защиту.
Добрый день, не могу отрегулировать начальную температуру... на фене 1-2 градуса, провода уже все проверил... Вопрос пины А6 это OUT1, A7 это OUT2 ? Разъем на MSU, INTC это паяльник, INTR это фен верно или я все перепутал?
Значит смотрите полевик (может он пробит) на паяльник или монтаж.
Я выше писал, как поэтапно проверить, подав на управляющий провод через резистор + 5 вольт. Если он открывается-закрывается нормально, то проверить, соответствует ли выведенный пин, объявленному в коде.
Вы что-либо меняли в плате-скетче?
Русл@н пишет:
Разъем на MSU, INTC это паяльник, INTR это фен верно или я все перепутал?
TC - это ТЕРМОПАРА фена и она имеет полярность подключения.
R - это ТЕРМОРЕЗИСТОР паяльника
В коде скетча поменял только параметр который вы говорили для lm358.
(Изменений всего ничего -
1
GetHotAirT = getOversampled(A7_Read) >> 1;
заменить на
1
GetHotAirT = getOversampled(A7_Read);
И аналогично в канале паяльника.
Просто AD8552 - rail-to-rail ОУ, поэтому макс. выходное напряжение у него практически равно питающему. Поэтому и делим на 2. Ну и дрейф нуля очень малый, не уплывают параметры - потому и заменил на него.)
Больше нечего не трогал.
P.s. Все полевики, реле и симистор перед включением проверил как вы говорили, подавать через резистор 5 вольт на оптопары. Все работало.
Ну, значит ключ работает. Проверьте, нет ли "сопли" между ножками разъёмо Solder и Sprot, на обоих платах (ну и дальше - до дуины) - иначе, при включении реле будет распахиваться полевик, если где-то есть соединение.
-ардуина стартует только со второго раза, вернее включил питание -загорелся дисплей, передернул тумблер появилась надпись SOLDER и доступ к меню.
-проблема с паяльником, не стартует, при нажатии кнопки паяльника моргает светодиод на плате дуины,если вешать лампочку и подавать питание на оптрон цепь рабочая.
-проблема с феном, вентилятор стартует, нагреватель нет, подавая питание на оптрон нагреватель стартует температура меняется и фен после продувки отключается.
-нашел код для бипера, тональность подобрал, не знаю как сделать одиночный сигнал и куда сунуть код в программу станции.
/*
Пьезо
Данный пример показывает управление Пьезо на 9 ножке Arduino,
используя функцию analogWrite()
При запуске издается 3 коротких звуковых сигнала, затем пауза в 1 сек,
а затем продолжительный звуковой сигнал
int p = 12; //объявляем переменную с номером пина, на который мы
//подключили пьезоэлемент
void setup() //процедура setup
{
pinMode(p, OUTPUT); //объявляем пин как выход
}
void loop() //процедура loop
{
tone (p, 0,001); //включаем на 500 Гц
delay(1500); //пауза 100 Мс
tone(p,1500); //включаем на 1000 Гц
delay(20); //длительность 100 Мс
}
Если не включать станцию в сеть, а только питать от USB или от отдельного источника 5 вольт - сразу стартует или нет?
На ваших фото я видел, что дуина запаяна в плату - не очень удачное решение, я их пихаю в панельку, потом проще, если нужно заменить - китайская продукция может преподносить сюрпризы...
При питании от вашего БП может быть такое - первый раз вы включаете и разряженный электролит на плате своим током заряда вгоняет контроллер в ступор (какой ёмкости этот электролит?) и он виснет от помехи по питанию. Можно попробовать включить, но питание не передёргивать, а нажать резет на плате дуины. Неплохо до нажатия резета и величину питания мультиметром посмотреть.
Вообще, я не случайно применил раздельные цепи питания силовухи и контроллера, а также оптронную развязку цепей управления - гораздо меньше потом всяких сюрпризов вылазит...
Цитата:
-нашел код для бипера
Думаю, с этим пока можно подождать, пока не разрешатся остальные проблемы...
С паяльником кажется разобрался, в нем стоит термопара.. если я правильно понимаю, то на стержне металлический поясок и на плате подписана полярность контактов - это и есть термопара.
Какие изменения нужно внести в прошивку? Плату сенсоров я перепаял таким образом:
резистор многооборотный на 100 Ом убрал, вместо него запаял 1,5кОм
резисторы на 3,3 кОм оба убрал
впаял цепочку из резисторов на 2 и 10кОм
Все верно?
Со стартом ардуинки, уменьшил конденсатор до 100мкф, стоял 470, зависания стали реже но все еще есть, питающее напряжение платы 5,4в.
С паяльником кажется разобрался, в нем стоит термопара
Возможно, бывают и такие паяльники. Убедиться точнее можно
1. прозвонив сопротивление термодатчика (у термопары - пара ом, у термосопротивления около 50 Ом).
2. подключить вольтметр, в режиме измерения постоянки (милливольты) и погреть зажигалкой жало - термпара будет "вырабатывать" напряжение при нагреве, а термосопротивление - в режиме омметра (будет увеличиваться сопротивление).
Цитата:
Какие изменения нужно внести в прошивку?
В прошивке менять ничего не нужно, а схема входного усилителя должна соответствовать каналу фена.
Цитата:
Плату сенсоров я перепаял таким образом:
Да, вроде правильно, схемы сейчас нет под рукой.
Цитата:
Со стартом ардуинки, уменьшил конденсатор до 100мкф, стоял 470, зависания стали реже но все еще есть, питающее напряжение платы 5,4в.
То есть проблема проявляется только при питании от сети, а при питании от ЮСБ - всё нормально. Значит питание нужно смотреть - зависаний не должно быть вообще. Представьте, что контроллер зависнет при работе фена в открытом состоянии симистора - смерть фена, практически, гарантирована...
Всё же я больше люблю классические БП, нежели импульсники ))
Насколько я помню, у вас сперва идёт импульсный питальник на 24В, а контроллер питается тоже от импульсного преобразователя? Посмотреть бы осциллографом пульсации питания контроллера - вы мультиметром намерили 5.4В (почти впритык к вернему пределу 5.5В - см. даташит), а что там на самом деле происходит - хз...
Взял ручку другого паяльника с терморезистором, выставил подстроечным резистором начало 26 градусов, нагреваю жало зажигалкой и температура взлетает... если включать паяльник кнопкой станции то сразу растет температура больше 400 градусов, а паяльник чуть теплый. Питание на ардуинку беру с компового бп=5в). Что я снова не так делаю? Выручайте)
выставил подстроечным резистором начало 26 градусов, нагреваю жало зажигалкой и температура взлетает... если включать паяльник кнопкой станции то сразу растет температура больше 400 градусов, а паяльник чуть теплый.
Значит нужно регулировать подстроечник "Шкала", который стоит в обратной связи ОУ (уменьшать сопротивление), иначе, слишком велика чувствительность получилась и шкала уже, чем нужно...
Я выше расписывал, как настроить усилители.
Олег доброго дня, дособрал свою станцию пока только с феном, как надо не работает:
Основная проблема в том что при нажатии запуска старта Hot Air сразу вылезает знак "!" также на solder но он не подключен, все кнопки работают знак ">" перемещается Up Down и селект работает
1. На плате Power по питанию все хорошо, все реле при запуске разово щелкают, с помощью резистора на 480 Ом сперва HAprot стартуется затем при присоединения резистра к HotAir фен нагревается (чтобы не спалить подключил FAN напрямую к 24 вольт) отпускаешь остывает. Также проверил питание на Solder и на FAN при контактировании резистора, все стартует. Получается что Power работает.
2. Дисплей работает, ардуин пробывал несколько, скетчи ставил и родной и свой исправленный под 1602 (понятно что дисплей 1602 с родным скетчем не корректно отображает но на функционал это не должно было влиять) одинаковая ситуация.
3. Никак не реагирует дисплей на подстройку резисторов на плате Sensors, все крутил ничего не происходит, текущее "0" как на фото
Подскажите где искать проблему, самый первый раз шлейф на 8 пинов подсоединил наоборот но полагаю это не должно было убить усилитель на LM-ке
У меня такая-же проблема, проверил все ручками, акромя кода... в коде я не шарю.
Итак по порядку, фен стартует но нагреватель не включается... если сделать напрямую работает режим продувки как положено и вентилятор отключается.
Паяльник... нагревается только когда тыкаешь кнопку, на плате с LMкой не регулируется диапазон нагрева паяльника, всегда выше 300, лмки пробовал разные, одну убитую отбраковал.
Отдельно плату ардуинки проверял, каждый вывод задействовал отдельно, все выводы функционируют.
Монтаж проверил несколько раз, в том числе по разным концам шлейфа. С какой стороны подойти? Еще вижу один огромный минус проекта, огромное количество проводов, у меня по крайней мере, в идеале нужно переработать так чтобы платы втыкались одна в другую посредством разъема..
Основная проблема в том что при нажатии запуска старта Hot Air сразу вылезает знак "!" также на solder но он не подключен
А что вы хотели - это защита срабатывает, ибо температура не в норме...
Цитата:
все реле при запуске разово щелкают
Вот тут поподробнее - при включении питания щёлкают реле? Если так, то это не нормально, защитное реле канала должно включаться только после нажатия кнопки включения этого канала. В setup() все выходы на реле и ключи, после объявления сразу притягиваются к лог. 0 и срабатывать ничего не должно...
Цитата:
Никак не реагирует дисплей на подстройку резисторов на плате Sensors
Посмотрите ваш рисунок платы MCU и скажите, как у вас там запитывается разъём усилителя термодатчиков? Я вижу, что на него не может поступать питание , чисто физически, потому и нули показывает и не реагирует ни на что...
Выложите свой скетч и текущие рисунки плат, гляну.
Цитата:
Итак по порядку, фен стартует но нагреватель не включается...
Вы думаете, что это по порядку и мне всё сразу понятно? ))
Фен стартует, но не греется в каком случае? После нажатия кнопки включения фена?
Реле при этом включается? Если нет, то и нагрева не будет.
Цитата:
если сделать напрямую работает режим продувки как положено и вентилятор отключается.
Что значит напрямую?
Цитата:
Паяльник... нагревается только когда тыкаешь кнопку
Какую кнопку-то? Кнопку включения паяльника?
Цитата:
на плате с LMкой не регулируется диапазон нагрева паяльника, всегда выше 300
Номиналы резисторы в цепи ОС ОУ какие? В смысле подстроечник и постоянный, с ним последовательно. Если показания не уменьшаются при выведенном в минимум подстроечнике, то можно уменьшить включенный с ним последовательно постоянный, к примеру до 47 кОм.
Цитата:
Еще вижу один огромный минус проекта, огромное количество проводов
Кому как. У меня платы MCU и дисплея скручены вместе и соединены коротким проводком и тут же короткий шлейф на кнопки. От MCU к силовой плате идёт также один шлейф. Всё модульно - разбирается быстро и при необходимости можно переделать отдельный модуль...
После нажатия кнопки включения фена стартует моторчик, нагреватель не срабатывает. Цепь нагревателя проверял подавая напряжение 2,5 прямо на 1-пин мос3023. Два реле включаются при подаче 24в на плату.
Плата с Лмкой точно скопирована из вашего проекта без изменения номиналов деталей. Кстати по самим Лм большой разброс, из 10 штук чуть больше половины похожи по параметрам, одну забраковал. Про обратную связь понял, буду загонять показания в норму резистором.
С кучей проводов это у меня минус))) Нужно все переделать, и скомпоновать как-то по другому, а то одни провода)) А из чего вы делаете шлейфы? На штырьках?
Такого точно быть не должно. Что-то не так.
Если после включения в сеть сразу срабатывают реле, то померяйте мультиметром напряжение на пинах, которые управляют реле. Если там 1, то, возможно, проблема на стороне дуины, если 0, то проверять транзисторы-оптроны-монтаж цепей управления реле.
Реле должны включаться только ПРИ ВКЛЮЧЕНИИ кнопкой соответствующего канала и выключаться при отключении кнопкой этого канала или защитой.
Цитата:
нагреватель не срабатывает
Не работать ФИ-управление может ещё и по причине неработоспособности узла контроля перехода через 0 сети.
При включенной в сеть станции он должен генерировать короткие импульсы. Если их нет, то прерывание не срабатывает и управляющие импулься не будут формироваться, а значит, фен не будет нагреваться...
Цитата:
Про обратную связь понял, буду загонять показания в норму резистором.
Да, я тоже подбирал под свой ОУ номиналы. Схема была взята где-то тут на форуме, я только изменил номинал ограничительного резистра по выходу ОУ - "родной" был слишком велик. Можно для удобства вынести на проводках цепи подстроечников и после их грубого подбора установить в плату, где уже подстроить точнее.
Цитата:
С кучей проводов это у меня минус))) Нужно все переделать, и скомпоновать как-то по другому, а то одни провода))
Платы, если что, можно и на одну перенести (все или часть), если так удобнее. Вы же пока можете запустить на столе, без корпуса, то, что имеется - проверить, настроить и прикинуть, как и что потом переделать.
Цитата:
А из чего вы делаете шлейфы? На штырьках?
Разъёмы покупаю.
Ещё добавлю. Руслан, тот бипер, судя по последнему рисунку платы, что вы установили (AC1205G) - вы зря избавились от "лишнего" ключевого транзистора, подключив бипер напрямую к пину. Если откроете даташит на бипер, то увидите, что средний потребляемый ток у него - 50 мА, а при активном сопротивлении ~40 Ом и подаче на него лог.1 и все 125 мА.
Отсюда вопрос - как долго проживёт пин дуины в таком режиме, если максимально допустимый ток через пин - 40мА?
Поправил я плату MTU, усилитель видимо заработал, смог выставить температуру начало на фене (паяльника пока нет, там прочерки, при отключении фена тоже прочерки), при нажатии запуска фена ничего не происходит ...
Отключил силовую плату от остальных систем и логикой (резистор от 5 воль) поигрался с пинами, при это fan запускается, Haprot не стартует реле как было вчера, а при касании контакта HOtAir нагрев идет.
Проверил вольтаж на реле (без ардуины) сразу замкнуто на реле Паялника 16 вольт, на реле Фене 23 вольта, так и должно быть?
У меня стоит диодный мост RS207 (с плюсом на стороне скоса) у вас на плате скос со стороны минуса может в этом проблема (не тот диодный мост), подскажите в каком направлении искать проблему!?
Вопрос про бипер. Как вы писали, что необходим бипер со встроенным генератором. Выпаял обычный и впаял с генератором. При работе станции пока только паяльник (у фена отсутствует оптотиристор), бипера неслышно. Иногда чтото пискнет и все. Сильнее слышно шим регулирование. Может необходимо увеличить длительность излучения.
паяльника пока нет, там прочерки, при отключении фена тоже прочерки
Так и должно быть - прочерки, если не подключено. В коде это видно.
Цитата:
Haprot не стартует реле как было вчера, а при касании контакта HOtAir нагрев идет.
1. Вы выяснили, почему у вас при подаче питания сразу включаются защитные реле?
2. Схема контроля нуля вырабатывает импульсы, если станция включена в сеть?
Цитата:
на реле Паялника 16 вольт, на реле Фене 23 вольта, так и должно быть?
Ключи одинаковые, реле одинаковые, питаете одним и тем же напряжением - почему же должна быть разница?
Цитата:
У меня стоит диодный мост RS207 (с плюсом на стороне скоса) у вас на плате скос со стороны минуса может в этом проблема
А перевернуть мост на 180 град. нельзя, что ли? Вы на "скосы" не смотрите, смотрите на распиновку - две средние ноги - вход переменки, по краям - плюс и минус, что мешает его перевернуть?
По прочеркам я понимаю их назначение, просто отписываюсь что скетч отрабатывает корректно.
Диодный мост у меня установлен правильно плюс к плюсу, спросил на случай если другой должен быть по номиналу т.к. на плате уазания на это нет.
Так и не понял из ответа, то что сразу подается питание на реле это нормально на голой плате Power? (То что напряжение разное это плохой сигнал я понял проверю...)
то что сразу подается питание на реле это нормально на голой плате Power?
Нет, не нормально. У Руслана похожая проблема. Я ему в сообщении 141 писал, что проверить.
Какие у вас в ключах реле транзисторы стоят?
Цитата:
Как можно проверить схему контроля нуля?
Если есть осциллограф, то при включенной в сеть станции, на выводе ZC должны наблюдаться импульсы, как на картинке -
Если осциллограф недоступен, то можно попробовать мультиметром, в режиме измерения постоянного напряжения - на выводе ZC должно быть примерно 3,9-4 вольт. Если будет около 0 или 5 вольт, то узел не работает. Но лучше бы осциллом глянуть, конечно.
Можно и частотомером - импульсы имеют частоту 100 Гц.
Если мерять на выводе ZC при отключенной плате MCU, то нужно подтянуть его к +5В резистором килоом на 10, иначе померять не получится. В контроллере то он подтягивается внутренним резистором...
Цитата:
Диодный мост у меня установлен правильно плюс к плюсу, спросил на случай если другой должен быть по номиналу т.к. на плате уазания на это нет.
Диодный мост - любой маломощный, с напряжением не ниже 400 вольт.
Доброго времени суток всем.
Сержант, поверьте транзисторы кт, скорее всего, там где реле срабатывает кт неверно включён. Я у двух кт ноги выгнул не в ту сторону и поэтому реле открывались сразу при включении питания.
Алгоритм на плате питания такой- подали 24 в и плата ждёт команд на пины с ардуины, реле открыты. Ардуина даёт команды на два пина, одно реле замыкается и дальше переключается симистор.(на примере канала фена)
Олег, с реле разобрался, неправильно распаял два кт-шки. Лм победил перепайкой проводов, все укоротил и аккуратно уложил, показания пришли в норму. Фен и паяльник так и не смог победить... Буду ещё раз проверять плату питания и провода.
Осталась проблема с зависанием ардуинки, виснет только при питании от бп, виснет именно при старте.
Бипер подсоединю через резистор и проблема с деградацией выхода ардуинки будет решена.
На всякий случай - если применены не такие реле, как у меня, и под свои менялась плата, то проверьте силовые контакты обоих реле, правильно ли разведены. Включённый в цепь нагревателя контакт должен быть нормально разомкнут при отсутствии напряжения на катушке и должен замыкаться при запитывании катушки.
Итак, силовая плата работает вся, акромя детектора нуля, его пока проверить нечем. Подпалил себе клаву паяльником(
Вопрос по питанию ардуинки, а что если мне питание подать на другой вход, у меня блок питания дает стабильные 5.3в. Еще вопрос по назначению дроселей, и емкостей, т.к. ардуинка виснет подозреваю что дело в этих элементах.
В переделанном блоке питания как оказалось нет защиты от кз.. но он теперь зараза не сгорает, он плавит все что к нему попадает меж контактов)))
Олег добрго дня требуется ваша помощь
1.Получил фен, все собрал (на коленках) но не могу догнать как поменять скетч (что удалить, и что добавить), чтобы корректно переходил знак ">", вы выше комментировали, но я не программист и всякие переменные для меня "темный лем", помогите, напиши код как должно быть и куда это поставить
2.Не нашел в коде строчку которая отвечает за вывод таймеров, хотел указать координаты вывода для 1602 в конец дисплея
3. Так как мне названия не нужны, решил удалить раздел SET LCD DESING, но при этом среда программирования при компиляции ругается, вывод надписей удалил, но две строчки пока оставил чтобы не ругался!?
4. Вход IN ТС - это датчик температуры для фена?, на фото вижу что у вас к этому входу в минус заходит ДВА ПРОВОДА черный и синий, почему?
5. выдоды A6=out1 и A7=out2, верно я понимаю?
Тут не сложно. Посмотрите сообщение 66 - вывод осуществляется в два приёма - "зачистка" места, куда выводим и сам вывод. Как у меня, в цикле, у вас подчистить не получится, поэтому делаем "в лоб", для каждой координаты, куда выводится знак ">" -
затем вывод "стрелки", взависимости от выбранного режима -
Там же, в процедуре вывода DisplayUpdate
Переменная HAcountdown (фен) или Scountdoun (паяльник). Т.е. по сути - в эту позицию у меня не выводится ничего, если канал выключен или выводится "!", если сработала защита или выводится значение таймера, если канал включен.
Как ругается? Если удаляете тело процедуры initDisplay(), то нужно и удалить её вызов из setup()
Да, ТС = ThermoCouple = термопара (фена).
А два провода заходит - не обращайте внимания, это выведена земля к разъёму датчика подставки паяльника (туда же и + питания подведён), ибо планировалось оптику городить в подставке. Но я вовремя одумался и сделал проще и вполне надёжно работающе "через жестянку".
Да, всё верно.
Добавлю общую рекомендацию по запуску или проверке станции.
1. Проверка платы питания. Ничего к ней не подключаем, кроме источника питания - проверяем
величины питающих напряжений (особенно 5 вольт, для контроллера) и их наличие на требуемых пинах.
Если всё в норме, можно, подавая +5В, через резистор 470-510 Ом на соответствующие пины разъёма, к которому подключается плата MCU, убедиться, что срабатывают реле и открываются силовые ключи (можно вместо нагрузки повесить, к примеру, лампочки или фен/паяльник, но в последнем случае открыть ключи кратковременно, на неск. секунд.).
2. Далее подключаем все платы, смотрим, правильно ли выводится индикация (если применялся отличный от моего дисплей и в коде что-то менялось) и корректно ли происходит ли выбор параметров и их регулирование.
3. Настройка усилителя термодатчиков (самое гиморное занятие).
Потребуется мультметр или от дельный термометр с термопарой. У меня такой - TM-902C
Подстроечником "Начало" выставляется начальное смещение ОУ, соответствующее температуре окружающей среды (рядом можно положить термометр). Далее, нужно привязать термопару от мультиметра к жалу паяльника и установив НЕБОЛЬШУЮ (градусов 100), заданную температуру, ждём, когда устаканится и смотрим на показания дисплея и образцового термометра. Подстроечником "Шкала" устанавливаем текущие показания по образцовому термометру. Затем, можно поднять заданную температуру до 300 град и проверить соответствие её с "эталоном". При необходимости - подстроить. После этого, даём паяльнику полностью остыть и проверяем показания при комнатной температуре. В заключение, можно "прогнать" вышеуказанное ещё разок и убедиться, что диапазон разогнан верно.
Для канала фена настройка происходит аналогично, но с учётом того, что расстояние от сопла фена до образцовой термопары выбирается взависимости от расстояния, при котором планируется работать с феном. У себя я настроил соответствие с образцовым термометром на расстоянии 10мм.
По ОУ. Если применён "обычный" ОУ (LM358), то показания АЦП напрямую соответствуют
измеренной температуре, для Rail-To-Rail ОУ (AD8552) показания АЦП нужно делить пополам.
Применённый способ измерения, при его достаточно неудобной настройке, позволяет диагностировать аварийное состояние цепей термодатчиков - если показания ниже 10 градусов - короткое замыкание в цепи датчика а при показаниях 500 и выше - обрыв.
Важно!!!
Первое включение всегда контролируйте термометром - пока усилитель термодатчиков не "разогнан" по диапазону, он может сильно занижать считываемую температуру и, соответственно, станция будет сильно разогревать нагрузку. Особенно это относится к фену, т.к. он раскаляется очень быстро и его можно сжечь. Скорость вентилятора фена, при настройке, лучше устанавливать максимальную.
Что то делаю не так, компиляция выдает ошибку
И сам код здесь:
Скобка перед Switch лишняя (строка 73)
После удаления скобки, Новая ошибка компиляции
Дык ошибки компилятора читайте - в 820 строке он надеется найти закрывающую скобку для процедуры DisplayUpdate, но её (скобки) там нет )) Это я сужу по куску кода, что в предыдущем сообщении. Процедура обрывается на строке lcd.print(">");
Нужно небольшое пояснение. Правильно я понимаю на плате усилителя переменник на 10к - установка "начала", а на 100к - установка "шкалы". Или наоборот.
Правильно.
100-килоомники включены в цепи обратной связи ОУ - это растяжка диапазона или "Шкала"
Остальные (100 Ом и 50КОм) - начальное смещение или "Начало"
Подстроечники лучше применить многооборотные - точнее настройка и дальнейшая стабильность устновленных режимов.
Здравствуйте, у меня проблема с бипером, невнятно хрипит, пищать отказывается, что можно поправить? Замена бипера не помогла.
Так-же я в шоке от качества деталей, пришлось пол проекта снова перебирать...
Блок питания с али на 24в и 2 ампера при подсоединениии паяльника тупо сгорел.. выбило транзистор и все диоды... заменил все на более мощное, греется но тянет.. нужно думать о замене..
Полевик один неисправен оказался, открывался импульсами, пока понял что к чему еще помучался(
Один оптрон оказался паленым...
На зато есть преимущество, я заказал паяльник хакку и тот оказался сильно похожим на оригинал, и греется настолько быстро что при проверке я его чуть не расплавил))) не привык что паяльник так быстро разогревается.
Еще вопрос по проекту, как добавить контроль того что в термофене первым включается вентилятор и уже после нагреватель и соответственно при выключении вентилятор последний, у меня какой-то глюк с этим.
И еще один глюк, станция не всегда стартует с первого раза(на дисплее просто вспыхивает подсветка), иногда приходится выключать и включать ее, интересно что это может быть?
Выложу еще раз код посмотрите может я где ошибся, извините за такое количество вопросов,спасибо.
Приветствую. Скорее всего, вы поставили пассивный бипер (без встроенного генератора), а у меня установлен активный на 5 вольт (с генератором), который умеет пищать сам, при подаче питания. Наверное, я забыл об этом указать - дичайше ай эм сори ))
Такой БП - слабоват. Учтите, что сопротивление нагревателя паяльника в холодном состоянии около 5 Ом, что при 24 вольтовом питании даст более 4,5А потребляемого тока при старте. Потом он, конечно же, станет меньше, но БП и этого может хватить, если он импульсный (уйдёт в защиту или сгорит).
В чём глюк проявляется?
По идее, в скетче, вентилятор включается первым, и, даже если он по какой-либо причине остановится, то сработает защита по превышению на 50 град. текущей температуры, относительно установленной. Контроль работы вентилятора - это нужно реализовывать как-то достаточно хитро, т.к. проверка наличия на нём напряжения не гарантирует его (вентилятора) работоспособности, его просто может заклинить, или оборвётся провод. Т.е. тут нужен тахометрический контроль, что, ПМСМ, лишнее, по указанной выше причине.
А выключается фен не просто последним - после отключения нагревателя, он включается на максимальные обороты (не важно, какие обороты были до этого) и "сбивает" температуру до 50 градусов.
При первом включение в сеть? Думается, что из-за питания - померяйте напряжение питания контроллера.
И ещё. На вашей печатке (я про рисунок) электролит на выходе 5-вольтового стаба включен не правильной полярностью. Проверьте, как оно на плате обстоит...
А как сделать активным бипер?)) Схемка есть? Я почитал вкратце, вроде как можно самой ардуинкой реализовать?
Блок питания я умщнил))) теперь эта зараза спокойно держит около 5 ампер) С защитой там китаезы что-то намудриили и она получилась простым предохранителем)
По поводу питания жала паяльника... может стоит реализовать это импульсами? Типа шим? Чтобы уменьшить потребляемую мощность, ну пусть увеличится чуть время разогрева..
Про фен идея такова, нужно реализовать контроль подачи напряжения на моторчик фена и только после этого запускать нагреватель(может у вас так и реализованно?) У меня траблы с прошивкой и нагреватель запустился без вентилятора..
Электролит пперепаяю сейчас. Спасибо)
Попробуйте через функцию tone() сделать. Или на паре лог. элементов собрать (гугл - "пищалка на микросхеме")
Там и так ШИМ. Можно попробовать ограничение выходного сигнала регулирования ввести, но паяльник будет дольше греться.
У меня кулер не отслеживается никак и всегда уверенно запускается, даже, если выставлено 10% оборотов.
Обороты мотора регулируются с пом. ШИМ - ну отследите вы наличие импульсов на моторчике и что? Мотор не стартует, зато импульсы будут регистрироваться )) Надо выяснять, почему не стартует или неуверенно стартует. Для этого лучше отключить на время нагреватель фена и поэкспериментить без него...
Как вариант - воткнуть код раскрутки кулера "на полную" в место кода, где происходит включение канала фена кнопкой. Т.е. нажали-врубили кулер-небольшая задержка в пару сек.-включаем канал фена, где обороты кулера уставливаются заданными.
Здраствуйте. Вопрос про кнопки.
На плате SolderStation.lay6 кнопки подписаны: SON-d13, HAon-A0, Dwn-A1, UP-A2, SEL-A3.
В скетче прописано: SON-D13, HAon-14(A0), SEL-15(A1), UP-16(A2), DWN - 17(A3).
Так где правильно. Спасибо за ответы.
Всё правильно - большинство аналоговых пинов могут работать так же, как и цифровые.
И если 13 (цифровой пин) является для "наны" "последним", то 14, 15, 16, 17 продолжают нумерацию, распростараняясь на аналоговые... Можно "обзывать" их и как A0, A1, и.т.д., если так привычнее.
ЗЫ. А, понял про что вы... На плате перепутаны надписи Sel и Down. Это некритично, главное, что бы соединение с нужной кнопкой соответствовало объявленному пину для этой кнопки. Т.е. ориентируйтесь на скетч - это проще. Самое страшное, что тут может произойти - это какая-то кнопка будет выполнять неправильное действие, что легко вылечить, перепаяв проводки местами для "неправильных" кнопок.
OlegK, по поводу ШИМ, а как это самое ограничение выходного сигнала регулирования ввести? Это будет полезно тем у кого слабые блоки питания, ведь самое большое потребление тока идет именно в момент нагрева, думаю это важное решение!
А ведь фен отключится при перегреве если моторчик не сработает, верно?
Да, думается, несложно, немного измените процедуру регулирования для паяльника -
Тут получается, что если температура паяла меньше 100 град (включили из холодного состояния), то
ограничиваем максимальный ШИМ на уровне 100. Градусы и величину ШИМ можете сами подобрать.
А если паяльник горячий, то не ограничиваем ничего...
Ну по коду посмотрите -
При превышении текущей, относительно заданной на 50 град (обрыв или перегрев) или при текущей ниже 10 град (к.з) - врубаем защиту.
А вообще, вы сперва настройте усилители сигнала термодатчика, что бы температура измерялась более-менее верно. Кстати, для фена, на этапе настройки тоже можно ввести ограничение на уровне 30%. Фену этого хватить должно, но он не расплавится, если какой косяк где вылезет...
Т.е. в процедуре HA_PI()
Здраствуйте. Собрал паяльную станцию пока без концевиков.
При включении, зараборал вентилятор. На экране отображаются данные, но не регулируются обороты фена всегда 100%.
Усилитель собрал по схеме Input_amp.jpg для термопары. Вращая подстроичники нечего не меняется, всегда прыгают цифры, что у фена и паяльника, в пределах 250 градусов. Плату рисовал в DIPTRACE.
Может что не так понял.
нарисована со стороны деталей.
Разобрался. Перепутал питание усилителя. + и -. поменял местами все заработало.
Пытаюсь отрегулировать температуру. установил начальное значение. ставлю 100 градусов. Включаю идет нагрев доходит до 150 по дисплею и отключается, выводит [!].
Отключается, похоже, защитой.
Две версии -
1. Перерегулирование (большой выброс при наборе температуры) на величину, превышающую 50 град. относительно заданной. Можно попробовать увеличить "уставку" с 50 град. до 100. Если, к примеру, при заданной температуре 100 град. подскочит выше 150, но ниже 200 и при этом не отключится и снизит температуру, то нужно смотреть коэффициенты регулирования. Если так же отключится, но при 200 град., значит см. пункт 2.
2. Не работает ФИ-регулирование и симистор распахнут. Можно скидать простецкий скетч, в котором это проверить (можно на лампочке). У меня где-то есть такой, там я выводил текущую температуру и мощность в %, которую дискретно, через 1% можно было менять от 0 до макс. Его можно использовать также и для проверки и для настройки канала измерения фена.
Пока разбираюсь с паяльником. А не должен ли при достижении температуры он отключаться. Стоит 100 градусов. Но он всеравно включен поэтому температура и растет. И отключается при 150 в защиту.
Добрый день, не могу отрегулировать начальную температуру... на фене 1-2 градуса, провода уже все проверил... Вопрос пины А6 это OUT1, A7 это OUT2 ? Разъем на MSU, INTC это паяльник, INTR это фен верно или я все перепутал?
AleksBAM
Значит смотрите полевик (может он пробит) на паяльник или монтаж.
Я выше писал, как поэтапно проверить, подав на управляющий провод через резистор + 5 вольт. Если он открывается-закрывается нормально, то проверить, соответствует ли выведенный пин, объявленному в коде.
Вы что-либо меняли в плате-скетче?
TC - это ТЕРМОПАРА фена и она имеет полярность подключения.
R - это ТЕРМОРЕЗИСТОР паяльника
Добрый вечер.
В коде скетча поменял только параметр который вы говорили для lm358.
(Изменений всего ничего -
1
GetHotAirT = getOversampled(A7_Read) >> 1;
заменить на
1
GetHotAirT = getOversampled(A7_Read);
И аналогично в канале паяльника.
Просто AD8552 - rail-to-rail ОУ, поэтому макс. выходное напряжение у него практически равно питающему. Поэтому и делим на 2. Ну и дрейф нуля очень малый, не уплывают параметры - потому и заменил на него.)
Больше нечего не трогал.
P.s. Все полевики, реле и симистор перед включением проверил как вы говорили, подавать через резистор 5 вольт на оптопары. Все работало.
Ну, значит ключ работает. Проверьте, нет ли "сопли" между ножками разъёмо Solder и Sprot, на обоих платах (ну и дальше - до дуины) - иначе, при включении реле будет распахиваться полевик, если где-то есть соединение.
Есть некоторые проблемы
-ардуина стартует только со второго раза, вернее включил питание -загорелся дисплей, передернул тумблер появилась надпись SOLDER и доступ к меню.
-проблема с паяльником, не стартует, при нажатии кнопки паяльника моргает светодиод на плате дуины,если вешать лампочку и подавать питание на оптрон цепь рабочая.
-проблема с феном, вентилятор стартует, нагреватель нет, подавая питание на оптрон нагреватель стартует температура меняется и фен после продувки отключается.
-нашел код для бипера, тональность подобрал, не знаю как сделать одиночный сигнал и куда сунуть код в программу станции.
С паяльником разобрался и отрегулировал. Оказался пробитым транзистор в оптопаре паяльника. Заменил работает.
Теперь разбираюсь с феном.
Вот такой вопрос если через сигнальный провод на светодиод тиристорной оптопары не подавать сигнал, то силовой тиристор открывается или будет закрыт.
Перечитал форум с начала и понял, что поставил МОС3063, а надо другую. Посоветуйте какую лучше.
MOC3052 подойдет?
Ну вот )) Оказывается, если работало раньше, то не факт, что так оно и есть на данный момент...
Симистор будет закрыт.
Да, должОн - он не имеет схемы контроля нуля сети, распиновку, только сравните.
Если не включать станцию в сеть, а только питать от USB или от отдельного источника 5 вольт - сразу стартует или нет?
На ваших фото я видел, что дуина запаяна в плату - не очень удачное решение, я их пихаю в панельку, потом проще, если нужно заменить - китайская продукция может преподносить сюрпризы...
При питании от вашего БП может быть такое - первый раз вы включаете и разряженный электролит на плате своим током заряда вгоняет контроллер в ступор (какой ёмкости этот электролит?) и он виснет от помехи по питанию. Можно попробовать включить, но питание не передёргивать, а нажать резет на плате дуины. Неплохо до нажатия резета и величину питания мультиметром посмотреть.
Вообще, я не случайно применил раздельные цепи питания силовухи и контроллера, а также оптронную развязку цепей управления - гораздо меньше потом всяких сюрпризов вылазит...
Думаю, с этим пока можно подождать, пока не разрешатся остальные проблемы...
С паяльником кажется разобрался, в нем стоит термопара.. если я правильно понимаю, то на стержне металлический поясок и на плате подписана полярность контактов - это и есть термопара.
Какие изменения нужно внести в прошивку? Плату сенсоров я перепаял таким образом:
резистор многооборотный на 100 Ом убрал, вместо него запаял 1,5кОм
резисторы на 3,3 кОм оба убрал
впаял цепочку из резисторов на 2 и 10кОм
Все верно?
Со стартом ардуинки, уменьшил конденсатор до 100мкф, стоял 470, зависания стали реже но все еще есть, питающее напряжение платы 5,4в.
Возможно, бывают и такие паяльники. Убедиться точнее можно
1. прозвонив сопротивление термодатчика (у термопары - пара ом, у термосопротивления около 50 Ом).
2. подключить вольтметр, в режиме измерения постоянки (милливольты) и погреть зажигалкой жало - термпара будет "вырабатывать" напряжение при нагреве, а термосопротивление - в режиме омметра (будет увеличиваться сопротивление).
В прошивке менять ничего не нужно, а схема входного усилителя должна соответствовать каналу фена.
Да, вроде правильно, схемы сейчас нет под рукой.
То есть проблема проявляется только при питании от сети, а при питании от ЮСБ - всё нормально. Значит питание нужно смотреть - зависаний не должно быть вообще. Представьте, что контроллер зависнет при работе фена в открытом состоянии симистора - смерть фена, практически, гарантирована...
Всё же я больше люблю классические БП, нежели импульсники ))
Насколько я помню, у вас сперва идёт импульсный питальник на 24В, а контроллер питается тоже от импульсного преобразователя? Посмотреть бы осциллографом пульсации питания контроллера - вы мультиметром намерили 5.4В (почти впритык к вернему пределу 5.5В - см. даташит), а что там на самом деле происходит - хз...
Взял ручку другого паяльника с терморезистором, выставил подстроечным резистором начало 26 градусов, нагреваю жало зажигалкой и температура взлетает... если включать паяльник кнопкой станции то сразу растет температура больше 400 градусов, а паяльник чуть теплый. Питание на ардуинку беру с компового бп=5в). Что я снова не так делаю? Выручайте)
Значит нужно регулировать подстроечник "Шкала", который стоит в обратной связи ОУ (уменьшать сопротивление), иначе, слишком велика чувствительность получилась и шкала уже, чем нужно...
Я выше расписывал, как настроить усилители.
Олег доброго дня, дособрал свою станцию пока только с феном, как надо не работает:
Основная проблема в том что при нажатии запуска старта Hot Air сразу вылезает знак "!" также на solder но он не подключен, все кнопки работают знак ">" перемещается Up Down и селект работает
1. На плате Power по питанию все хорошо, все реле при запуске разово щелкают, с помощью резистора на 480 Ом сперва HAprot стартуется затем при присоединения резистра к HotAir фен нагревается (чтобы не спалить подключил FAN напрямую к 24 вольт) отпускаешь остывает. Также проверил питание на Solder и на FAN при контактировании резистора, все стартует. Получается что Power работает.
2. Дисплей работает, ардуин пробывал несколько, скетчи ставил и родной и свой исправленный под 1602 (понятно что дисплей 1602 с родным скетчем не корректно отображает но на функционал это не должно было влиять) одинаковая ситуация.
3. Никак не реагирует дисплей на подстройку резисторов на плате Sensors, все крутил ничего не происходит, текущее "0" как на фото
Подскажите где искать проблему, самый первый раз шлейф на 8 пинов подсоединил наоборот но полагаю это не должно было убить усилитель на LM-ке
Фото модулей дисплеем здесь - ФОТО
У меня такая-же проблема, проверил все ручками, акромя кода... в коде я не шарю.
Итак по порядку, фен стартует но нагреватель не включается... если сделать напрямую работает режим продувки как положено и вентилятор отключается.
Паяльник... нагревается только когда тыкаешь кнопку, на плате с LMкой не регулируется диапазон нагрева паяльника, всегда выше 300, лмки пробовал разные, одну убитую отбраковал.
Отдельно плату ардуинки проверял, каждый вывод задействовал отдельно, все выводы функционируют.
Монтаж проверил несколько раз, в том числе по разным концам шлейфа. С какой стороны подойти? Еще вижу один огромный минус проекта, огромное количество проводов, у меня по крайней мере, в идеале нужно переработать так чтобы платы втыкались одна в другую посредством разъема..
Олег помогайте!)
А что вы хотели - это защита срабатывает, ибо температура не в норме...
Вот тут поподробнее - при включении питания щёлкают реле? Если так, то это не нормально, защитное реле канала должно включаться только после нажатия кнопки включения этого канала. В setup() все выходы на реле и ключи, после объявления сразу притягиваются к лог. 0 и срабатывать ничего не должно...
Посмотрите ваш рисунок платы MCU и скажите, как у вас там запитывается разъём усилителя термодатчиков? Я вижу, что на него не может поступать питание , чисто физически, потому и нули показывает и не реагирует ни на что...
Выложите свой скетч и текущие рисунки плат, гляну.
Вы думаете, что это по порядку и мне всё сразу понятно? ))
Фен стартует, но не греется в каком случае? После нажатия кнопки включения фена?
Реле при этом включается? Если нет, то и нагрева не будет.
Что значит напрямую?
Какую кнопку-то? Кнопку включения паяльника?
Номиналы резисторы в цепи ОС ОУ какие? В смысле подстроечник и постоянный, с ним последовательно. Если показания не уменьшаются при выведенном в минимум подстроечнике, то можно уменьшить включенный с ним последовательно постоянный, к примеру до 47 кОм.
Кому как. У меня платы MCU и дисплея скручены вместе и соединены коротким проводком и тут же короткий шлейф на кнопки. От MCU к силовой плате идёт также один шлейф. Всё модульно - разбирается быстро и при необходимости можно переделать отдельный модуль...
Посмотрите ваш рисунок платы MCU и скажите, как у вас там запитывается разъём усилителя термодатчиков?
Спасибо, перепроверил плату, напортачил я на MCU с конденсатором, ночью делал, видимо устал :)
После нажатия кнопки включения фена стартует моторчик, нагреватель не срабатывает. Цепь нагревателя проверял подавая напряжение 2,5 прямо на 1-пин мос3023. Два реле включаются при подаче 24в на плату.
Плата с Лмкой точно скопирована из вашего проекта без изменения номиналов деталей. Кстати по самим Лм большой разброс, из 10 штук чуть больше половины похожи по параметрам, одну забраковал. Про обратную связь понял, буду загонять показания в норму резистором.
С кучей проводов это у меня минус))) Нужно все переделать, и скомпоновать как-то по другому, а то одни провода)) А из чего вы делаете шлейфы? На штырьках?
Вот скетч и текущие рисунки плат.
Такого точно быть не должно. Что-то не так.
Если после включения в сеть сразу срабатывают реле, то померяйте мультиметром напряжение на пинах, которые управляют реле. Если там 1, то, возможно, проблема на стороне дуины, если 0, то проверять транзисторы-оптроны-монтаж цепей управления реле.
Реле должны включаться только ПРИ ВКЛЮЧЕНИИ кнопкой соответствующего канала и выключаться при отключении кнопкой этого канала или защитой.
Не работать ФИ-управление может ещё и по причине неработоспособности узла контроля перехода через 0 сети.
При включенной в сеть станции он должен генерировать короткие импульсы. Если их нет, то прерывание не срабатывает и управляющие импулься не будут формироваться, а значит, фен не будет нагреваться...
Да, я тоже подбирал под свой ОУ номиналы. Схема была взята где-то тут на форуме, я только изменил номинал ограничительного резистра по выходу ОУ - "родной" был слишком велик. Можно для удобства вынести на проводках цепи подстроечников и после их грубого подбора установить в плату, где уже подстроить точнее.
Платы, если что, можно и на одну перенести (все или часть), если так удобнее. Вы же пока можете запустить на столе, без корпуса, то, что имеется - проверить, настроить и прикинуть, как и что потом переделать.
Разъёмы покупаю.
Ещё добавлю.
Руслан, тот бипер, судя по последнему рисунку платы, что вы установили (AC1205G) - вы зря избавились от "лишнего" ключевого транзистора, подключив бипер напрямую к пину. Если откроете даташит на бипер, то увидите, что средний потребляемый ток у него - 50 мА, а при активном сопротивлении ~40 Ом и подаче на него лог.1 и все 125 мА.
Отсюда вопрос - как долго проживёт пин дуины в таком режиме, если максимально допустимый ток через пин - 40мА?
Поправил я плату MTU, усилитель видимо заработал, смог выставить температуру начало на фене (паяльника пока нет, там прочерки, при отключении фена тоже прочерки), при нажатии запуска фена ничего не происходит ...
Отключил силовую плату от остальных систем и логикой (резистор от 5 воль) поигрался с пинами, при это fan запускается, Haprot не стартует реле как было вчера, а при касании контакта HOtAir нагрев идет.
Проверил вольтаж на реле (без ардуины) сразу замкнуто на реле Паялника 16 вольт, на реле Фене 23 вольта, так и должно быть?
У меня стоит диодный мост RS207 (с плюсом на стороне скоса) у вас на плате скос со стороны минуса может в этом проблема (не тот диодный мост), подскажите в каком направлении искать проблему!?
Здравствуйте.
Вопрос про бипер. Как вы писали, что необходим бипер со встроенным генератором. Выпаял обычный и впаял с генератором. При работе станции пока только паяльник (у фена отсутствует оптотиристор), бипера неслышно. Иногда чтото пискнет и все. Сильнее слышно шим регулирование. Может необходимо увеличить длительность излучения.
Если бипер новый, с наклеенной сверху бумажкой - оторвите её, будет существенно громче.
И ещё. Бипер пятивольтовый?
Попробуйте поиграть с параметром duration процедуры Beep. Я настраивал под себя, что бы не раздражало излишним пиликанием...
Так и должно быть - прочерки, если не подключено. В коде это видно.
1. Вы выяснили, почему у вас при подаче питания сразу включаются защитные реле?
2. Схема контроля нуля вырабатывает импульсы, если станция включена в сеть?
Ключи одинаковые, реле одинаковые, питаете одним и тем же напряжением - почему же должна быть разница?
А перевернуть мост на 180 град. нельзя, что ли? Вы на "скосы" не смотрите, смотрите на распиновку - две средние ноги - вход переменки, по краям - плюс и минус, что мешает его перевернуть?
По прочеркам я понимаю их назначение, просто отписываюсь что скетч отрабатывает корректно.
Диодный мост у меня установлен правильно плюс к плюсу, спросил на случай если другой должен быть по номиналу т.к. на плате уазания на это нет.
Так и не понял из ответа, то что сразу подается питание на реле это нормально на голой плате Power? (То что напряжение разное это плохой сигнал я понял проверю...)
Как можно проверить схему контроля нуля?
Нет, не нормально. У Руслана похожая проблема. Я ему в сообщении 141 писал, что проверить.
Какие у вас в ключах реле транзисторы стоят?
Если есть осциллограф, то при включенной в сеть станции, на выводе ZC должны наблюдаться импульсы, как на картинке -
Если осциллограф недоступен, то можно попробовать мультиметром, в режиме измерения постоянного напряжения - на выводе ZC должно быть примерно 3,9-4 вольт. Если будет около 0 или 5 вольт, то узел не работает. Но лучше бы осциллом глянуть, конечно.
Можно и частотомером - импульсы имеют частоту 100 Гц.
Если мерять на выводе ZC при отключенной плате MCU, то нужно подтянуть его к +5В резистором килоом на 10, иначе померять не получится. В контроллере то он подтягивается внутренним резистором...
Диодный мост - любой маломощный, с напряжением не ниже 400 вольт.
Доброго времени суток всем.
Сержант, поверьте транзисторы кт, скорее всего, там где реле срабатывает кт неверно включён. Я у двух кт ноги выгнул не в ту сторону и поэтому реле открывались сразу при включении питания.
Алгоритм на плате питания такой- подали 24 в и плата ждёт команд на пины с ардуины, реле открыты. Ардуина даёт команды на два пина, одно реле замыкается и дальше переключается симистор.(на примере канала фена)
Олег, с реле разобрался, неправильно распаял два кт-шки. Лм победил перепайкой проводов, все укоротил и аккуратно уложил, показания пришли в норму. Фен и паяльник так и не смог победить... Буду ещё раз проверять плату питания и провода.
Осталась проблема с зависанием ардуинки, виснет только при питании от бп, виснет именно при старте.
Бипер подсоединю через резистор и проблема с деградацией выхода ардуинки будет решена.
Бывает ))
На всякий случай - если применены не такие реле, как у меня, и под свои менялась плата, то проверьте силовые контакты обоих реле, правильно ли разведены. Включённый в цепь нагревателя контакт должен быть нормально разомкнут при отсутствии напряжения на катушке и должен замыкаться при запитывании катушки.
Итак, силовая плата работает вся, акромя детектора нуля, его пока проверить нечем. Подпалил себе клаву паяльником(
Вопрос по питанию ардуинки, а что если мне питание подать на другой вход, у меня блок питания дает стабильные 5.3в. Еще вопрос по назначению дроселей, и емкостей, т.к. ардуинка виснет подозреваю что дело в этих элементах.
В переделанном блоке питания как оказалось нет защиты от кз.. но он теперь зараза не сгорает, он плавит все что к нему попадает меж контактов)))