Авторизация
Регистрация

Напомнить пароль

OLED 1.3" с интерфейсом I2C или точечная сварка - версия Плюс (часть 2: схема, софт)

Прошлый мой обзор про изготовление аппарата точечной сварки вызвал немалый интерес. У людей осталось много вопросов: про детальки, схему, софт… И я решил сделать еще один обзор, в котором опишу все, что вызвало интерес. Любителей самоделок, программирования и схем приглашаю под кат…

К сожалению, сейчас очень плотный график и мне не удалось внести существенных правок в программу, но зато удалось выкроить время на описание (данный обзор).

Предмет обзора приехал в таком пакетике:

Внутри сам экранчик, защищенный предохранительной транспортировочной пленкой:

Обратная сторона:

Размеры:


Для связи с внешним миром экранчик имеет 4 контакта: SDA, SCL, GND, VCC. Соответственно, GND следует соединить с землей, на VCC подать +5 вольт, SDA и SCL — следует подключить к шине I2C. Пример подключения к Arduino UNO:


Для работы с экранчиком я попытался использовать библиотеки от Adafruit (Adafruit GFX Adafruit GFX и Adafruit SSD1306 Adafruit SSD1306) — экранчик показывал шум. Ранее такой же экранчик 0.96" с этими библиотеками отлично работал, требовалось только при инициализации заменить
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

на
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);


С экранчиком заработала библиотека u8glib. Единственное, изображение было со смещением на пару пикселей. Поковырявшись с библиотекой, поправил файлик u8g_dev_ssd1306_128x64.c и стало все хорошо.

У меня в коде оно используется так:

#include <U8glib.h>

// display 
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Show current display
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void drawScreen() {
 u8g.firstPage();
 do {
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 10, 20, "spot welding");  
  u8g.drawStr( 30, 40, " control");
  u8g.drawStr( 35, 60, " from yurok");
 } while( u8g.nextPage() );
}


Теперь к применению. Схема платы сварки выглядит следующим образом:

Рисовал быстро, без художеств, времени к сожалению сейчас на красоту не хватает. Зато постарался изобразить все понятно.

На схеме показано как управляется включение трансформатора, реле, вентилятора. Указано питание контроллера и описанная ранее схема синхронизации с нулевым напряжением.

Для контроля температуры в этот раз я решил использовать термистор на 100 КОм:


Лучше всего конечно составить таблицу и производить многократные измерения, но для простого варианта, когда не нужна большая точность, можно использовать приведенный подход. Уравнение Стейнхарта-Харта и основанная на нем модель нам вполне подойдут. Снимаем 3 точки сопротивления и температуры, собрав нехитрую конструкцию:

Составляем базу данных показаний :):

Для получнния разных температур я использовал паяльник с жалом Т12, контролируя показания термопарой мультиметра.
Рассчитать параметры A, B, C можно с помощью калькулятора, по трем точкам. Вот мои:

Итог в виде кода:

const byte thermistorPin = A1; // thermistor
// current temperature
double currentTemp = 0;

void setup() {
  Serial.begin(9600);
  Serial.println(F("Start init"));
}

void loop() {
  get_temp();
  Serial.print("Temp:");
  Serial.println(currentTemp);
  delay(1000);
}

////////////////////////////////////
// get temperature from thermister
////////////////////////////////////
void get_temp(){
  int RawADC = analogRead(thermistorPin);
  long Resistance;
  // Assuming a 100k Thermistor.  Calculation is actually: Resistance = (1024/ADC)
  Resistance=((102400000/RawADC) - 100000);
  /******************************************************************/
  /* Utilizes the Steinhart-Hart Thermistor Equation:               */
  /* Temperature in Kelvin = 1 / {A + B[ln®] + C[ln®]^3}        */
  /* where:                                                         */
  /* A = 0,008968616293, B = -0,001212423355 and C = 0,000005416095 */
  /******************************************************************/
  currentTemp = log(Resistance);
  currentTemp = 1 / (0.008968616293 + (-0.001212423355 * currentTemp) + (0.000005416095 * currentTemp * currentTemp * currentTemp));
  // convert Kelvin to Celsius
  currentTemp = currentTemp - 273.15;
}

Проверяем:

Конечно погрешность есть, но нам не требуется точно — так, что вполне норм.

Термистор подключен так:


Следующий интересный элемент нашей сварки — энкодер. Я использовал самый распространенный KY-040:


Размеры:




Я не буду писать кучу теории по нему и прочего… Сугубо практическая информация. В программе нам потребуется распознать вращение влево или вправо, длинное и короткое нажатие на регулятор энкодера. Для этого нам нужно выход CLK и DT подключить к выводом контроллера поддерживающим прерывания (D2 и D3 для Arduino). Выход сигнала нажатия SW — можно подключить на любой цифровой вход контроллера.
Вот так обрабатывается:


// encoder pin and interrupt
const byte encoder_A_Pin = 3;
const byte encoder_B_Pin = 2;
const byte encoderButtonPin = 4;
const byte interruptA = 1;
const byte interruptB = 0;

boolean encoder_rotate = false;
// last state encoder A pin
boolean currentA = false;              
// last state encoder B pin
boolean currentB = false;

// Timeout for different long and short button on
const unsigned long timoutHoldButton = 9000; // 9 sec
// Timeout for bounce protect encoder button
const unsigned long debounceEncButton = 20; // 20 ms
// Time on encoder button
unsigned long timeOnEncButton = 0;
// Time off encoder button
unsigned long timeOffEncButton = 0;
unsigned int buttonEncCurrentVal = HIGH;
unsigned int buttonEncLastVal = HIGH;
boolean ignoreEncOff = false; 

void setup() {
  // encoder init
  pinMode(encoder_A_Pin, INPUT);
  digitalWrite(encoder_A_Pin, HIGH); 
  pinMode(encoder_B_Pin, INPUT); 
  digitalWrite(encoder_B_Pin, HIGH); 
  pinMode(encoderButtonPin, INPUT);
  digitalWrite(encoderButtonPin, HIGH);
  // enable encoder change interrupt
  attachInterrupt(interruptA, onA, CHANGE);
  attachInterrupt(interruptB, onB, CHANGE);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// increment rotate
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void onA(){
  if (encoder_rotate) delay (1);
  if (digitalRead(encoder_A_Pin) != currentA ) {
    currentA = !currentA;
    if ( currentA && !currentB ) {
         Serial.println("+ encoder");
    }
    encoder_rotate = false;
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// decrement rotate
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void onB(){
  if ( encoder_rotate ) delay (1);
  if( digitalRead(encoder_B_Pin) != currentB ) {
    currentB = !currentB;
    if( currentB && !currentA ){
          Serial.println("- encoder");
    }
    encoder_rotate = false;
 }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// main loop
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  CurrentTime = millis();

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ENCODER BUTTON
  encoder_rotate = true;
  buttonEncCurrentVal = digitalRead(encoderButtonPin);

  // Test for button pressed and store the down time
  if (buttonEncCurrentVal == LOW && buttonEncLastVal == HIGH && (CurrentTime - timeOffEncButton) > long(debounceEncButton)){
    timeOnEncButton = CurrentTime;
  }
  // Test for button release and store the up time
  if (buttonEncCurrentVal == HIGH && buttonEncLastVal == LOW && (CurrentTime - timeOnEncButton) > long(debounceEncButton)){
    if (ignoreEncOff == false){
        Serial.println(F("short enc"));
    }else{
      ignoreEncOff = false;
    }
    timeOffEncButton = CurrentTime;
  }
  // Test for button held down for longer than the hold time
  if (buttonEncCurrentVal == LOW && (CurrentTime - timeOnEncButton) > long(timoutHoldButton)){
    Serial.println(F("long enc"));
    ignoreEncOff = true;
    timeOnEncButton = CurrentTime;
  }
  buttonEncLastVal = buttonEncCurrentVal;
}

Как видно из кода, предусмотрено распознавание поворота влево и вправо, путем вызова функции по прерыванию. Также реализовано распознавание короткого и длинного нажатия на на энкодер, причем с защитой от дребезга контактов.

Остальные моменты можно будет глянуть в тексте самой программы, я основное старался комментировать.

Напомню, что в итоге у меня получилось так:


Я заказал платы для сварочного аппарата в Китае (много людей обратились с просьбой изготовить, прошить и выслать им такую), пока еще не все разобрали, желающие пишите в личку.

Спасибо всем, кто дочитал этот обзор до конца, надеюсь кому-то данная информация окажется полезной. всем крепких соединений и добра!

Желающие скачать программу могут взять этот файл. Конечно, это только черновик и позже программа станет существенно лучше. Желающие скачать плату также могут это проделать. Раздача печенюшек :).

Продолжение обзора устройства сварки — тут.
Планирую купить +81 Добавить в избранное
+61 +131
свернутьразвернуть
Комментарии (125)
RSS
+
avatar
0
  • Mplus
  • 11 сентября 2016, 13:03
Можно попросить скрин платы, с телефона не могу открыть, а глянуть хочется
+
avatar
+2
  • dia
  • 11 сентября 2016, 13:07
+
avatar
+1
  • Mplus
  • 11 сентября 2016, 13:14
Спасибо
+
avatar
0
  • yurok
  • 11 сентября 2016, 13:07
+
avatar
0
  • wormster
  • 11 сентября 2016, 13:12
дисплей хороший, но не мелковат?
+
avatar
+2
  • yurok
  • 11 сентября 2016, 13:13
он яркий — с 7-10 метров текст в 2 строчки читается хорошо, углы обзора отличные
+
avatar
0
  • Kartus
  • 11 сентября 2016, 14:34
На счет углов обзора, это пять — вдруг придется варить батарейки для Теслы)))
+
avatar
0
  • kalobyte
  • 12 сентября 2016, 08:11
сантиметров ты хотел сказать?
с 7 метров я там только увижу синевато желтое пятно
+
avatar
0
  • yurok
  • 12 сентября 2016, 09:06
с 7 метров — это не опечатка
+
avatar
0
  • sim31r
  • 11 сентября 2016, 14:52
Дисплей хороший, но не забываем и обычные текстовые дисплеи в 2 или 4 строчки, они бывают в разы больше размерами и с разными цветами подсветки и не выгоряют в отличие от OLED.
+
avatar
0
  • Mplus
  • 11 сентября 2016, 13:16
А че не взять было 50 центовый дисплей от нокии?
+
avatar
+1
  • yurok
  • 11 сентября 2016, 13:23
яркость и углы обзора…
этот мне нравится гораздо больше
+
avatar
0
Это какой?
+
avatar
0
  • abyrwalg
  • 12 сентября 2016, 00:09
на Али ищете «5110»
вот только цена указана 'из прошлого'? сейчас типично ~~$1.5
+
avatar
0
(CurrentTime — timeOnEncButton) > long(timoutHoldButton) можно вынести в переменную
+
avatar
+2
  • yurok
  • 11 сентября 2016, 13:24
а смысл? из-за двухкратного использования в цикле :)
+
avatar
0
  • gassag
  • 11 сентября 2016, 15:07
А нет ли в вашей схеме ошибки, в районе включения MOC3022?
Сравниваю финальную схему и типовое включение 3022 приведенное вами в прошлом обзоре

невооруженным глазом заметно различие :)
+
avatar
0
  • yurok
  • 11 сентября 2016, 15:17
нет — ошибки нет
там разные варианты возможны
+
avatar
0
  • user67
  • 11 сентября 2016, 15:16
а внешний вид обновленного прибора можно увидеть?
+
avatar
0
  • yurok
  • 11 сентября 2016, 15:17
так прибор не менялся
+
avatar
-1
Yurok, а почему не соберете хороший корпус?
Это в давние времена материалов не было
и корпуса пилили из того, что удавалось найти.
Полагаю, что устраивает «и так», но весь вид портит))

ЗЫ а еще с сайта продавана можно стырить
габаритные размеры дисплея)
И добавить к обзору, лишним не будет ;-)
+
avatar
+1
  • yurok
  • 11 сентября 2016, 16:31
нормально вполне оно выглядит )
там в обзоре, где я писал как делал — народ более дикие варианты приводил :)

ну я вроде с линейкой сфотал — и так ясно
+
avatar
0
Устраивает, ну и ладно)
ну я вроде с линейкой сфотал — и так ясно
Не, я вот это имел ввиду:
+
avatar
0
  • yurok
  • 11 сентября 2016, 18:13
кстати в деревянные конструкции такой дисплей норм встраивать с помощью ручного фрезера, когда сварочник делал, то не было его под руками делал дедовским методом

А так делается два шаблона из березовой фанеры, и по кольцу получается ровно и аккуратно
+
avatar
0
  • ksiman
  • 11 сентября 2016, 17:40
Для контроля температуры в этот раз я решил использовать термистор на 100 КОм:
На схеме его так и не увидел…
впрочем как и питание на дисплей, ну там и так всё понятно
+
avatar
0
  • yurok
  • 11 сентября 2016, 18:18
питание на дисплей рисовать большого смысла нет, а подключение термистора добавил, после его описания
+
avatar
0
  • HacoH
  • 12 сентября 2016, 10:06
Подскажите знающие люди… В коде ничего менять не надо для OLED 0.96 "?
Он немного поменьше… но и цена в два раза ниже, а для настольного варианта и такой достаточно.
+
avatar
0
  • yurok
  • 12 сентября 2016, 10:09
не нужно, он вполне работает
реально наверно он больше подойдет — у меня просто был на 1.3" его и воткнул
+
avatar
0
  • LexBAM
  • 12 сентября 2016, 12:05
Придётся менять код. Экраны разные. У меня 1.3" не запустился на OLED_I2C
+
avatar
0
  • yurok
  • 12 сентября 2016, 12:41
не придется
+
avatar
0
  • LexBAM
  • 12 сентября 2016, 14:16
не придётся, так не придётся…
+
avatar
0
  • yurok
  • 12 сентября 2016, 14:31
обратное (на определенных библиотеках) неверно — 1.3" более нестандартный размер со всеми вытекающими, но та библиотека что в этом проекте — будет норм
+
avatar
0
  • HacoH
  • 12 сентября 2016, 11:19
yurok cпасибо что выложили свой вариант сварки. Давно хотел собрать, но попадались варианты либо с сильно заумным управлением, либо слишком топорные.
Свой вариант хотел собрать на промышленных реле времени типа ВЛ-68, но всё руки не доходили.
После вашей статьи появилось вдохновение :), буду собирать ваш вариант однозначно, осталось детали с Али дождаться…
В наличии есть термисторы NTC 10k. Я так понимаю его подключать аналогично, заменив резистор делителя на 10k, или у вас выводится ещё и температура и есть смысл подобрать резистор делителя?
Вопрос тем кто пользовался точечной сваркой: никто не пробовал в центр медного электрода вставлять тугоплавкий (вольфрамовый) электрод от аргонной сварки чтобы уменьшить износ медных электродов?
Не будет ли он залипать и есть ли смысл в такой доработке?
+
avatar
+1
  • ksiman
  • 12 сентября 2016, 12:23
Вопрос тем кто пользовался точечной сваркой: никто не пробовал в центр медного электрода вставлять тугоплавкий (вольфрамовый) электрод от аргонной сварки чтобы уменьшить износ медных электродов?
Не будет ли он залипать и есть ли смысл в такой доработке?
Нет смысла, т.к.
— вольфрам дороже
— имеет высокое сопротивление
— имеет теплопроводность ниже, чем у меди
Альтернатива меди — только серебро :)
+
avatar
0
  • HacoH
  • 12 сентября 2016, 14:46
1) вольфрам ещё совдеповский, достался от знакомого сварщика
2) да 3мм вольфрам будет на несколько мОм иметь большее сопротивление, с учётом что прижат внутри медного электрода по всей длине и торчит только коньчик 1-2мм.
3) тепло отдаст меди НО он не боится нагрева и не становится мягким в отличие от меди.
4) серебро это здорово но я думаю что серебро будет ещё мягче меди.
единственное меня беспокоит не будет ли залипать ( привариваться)
Почему возникла такая идея:
когда-то настраивал на заводе станок точечной сварки с пневмо прижимом и водяным охлаждением электродов и тиристоров, была постоянная болезнь — передержал, слабое усилие прижима, малый проток воды, большой ток — электроды перегревались, медь «отпускалась» становилась как пластилин и в итоге быстро расклёпывался конус электрода.
Конечно там токи были на порядок побольше, но и электроды были по 3см
В любом случае поэкспериментирую с твёрдой вставкой в электрод.
+
avatar
0
  • ksiman
  • 12 сентября 2016, 15:33
да 3мм вольфрам будет на несколько мОм иметь большее сопротивление,
Тут каждый миллиом на счету, т.к. напряжение мало а ток велик
единственное меня беспокоит не будет ли залипать ( привариваться)
Не будет, вольфрам не склонен к привариванию — из него частенько делают силовые контакты
+
avatar
+2
  • Mikakiev
  • 13 сентября 2016, 22:49
Я использовал электроды промышленного производства. Они были неподходящей формы, пришлось идти в кухню. Судя по цвету пламени, в сплав меди входит бор, и наверняка еще что-то. Суть в том, что такие электроды служат на порядок дольше обычной твердой меди

+
avatar
0
  • yurok
  • 13 сентября 2016, 23:21
круто!
+
avatar
0
  • abletone
  • 14 сентября 2016, 23:28
Ну ионы меди сами по себе окрашивают цвет пламени в зеленый цвет. ;) А так да, лигатура бора уменьшает зерно кр, увеличивая мех характеристики
+
avatar
0
  • Mikakiev
  • 15 сентября 2016, 00:11
Здесь был бюрюзово-голубой. А чистая медь, да, дает зеленый цвет.
Собственно не о цвете был мееседж ))
+
avatar
0
  • yurok
  • 12 сентября 2016, 12:42
да 10к — все аналогично

смысла нет — выше ответили
+
avatar
+1
  • olegue
  • 12 сентября 2016, 11:53
Хороший обзор, качественный!
+
avatar
0
  • gassag
  • 12 сентября 2016, 20:26
Разбираюсь с выложенной печатной платой *.lay6
Для чего выведены контактные площадки от выводов контроллера 15, 16, 17, 22, 23, 24, 25, 26, в схеме они вроде не участвуют… можно ли их не разводить?

Насколько разобрался выводы энкодера нужно подключать к контроллеру так: DT -32, CLK -1, SW -2, верно??

Контакты дисплея SDA на 27 и SCL на 28 ноги контроллера подключаются?

30 и 31 (Rx, Tx) в схеме тоже же не применяются ??

На общей схеме не вижу как подключен термистор, на печатке тоже нет ориентира в виде резистора 100К, так как же?
+
avatar
0
  • yurok
  • 12 сентября 2016, 21:14
не все выводы используются (часть оставил как резерв), термистор приведен ниже — его подключение

схема есть и печатная плата и код — уж куда подробнее???
+
avatar
0
  • ksiman
  • 12 сентября 2016, 21:21
схема есть и печатная плата и код — уж куда подробнее???
Привести всё в соответствие — дело 10 минут времени
+
avatar
0
  • yurok
  • 12 сентября 2016, 21:27
все в соответствии
+
avatar
0
  • ksiman
  • 12 сентября 2016, 22:04
— дорисовать термистор в схему
— исправить ошибку подключения оптрона PC817
— поправить номиналы некоторых элементов (резисторы 32Ом и 45кОм можно искать очень долго)
+
avatar
0
  • yurok
  • 12 сентября 2016, 23:57
— термистор ниже есть, смысл нагромождать? тем более он в этой прошивке не используется, я для тестов его ставил
— оптрон вроде верно нарисован, что не так?
— резисторы — понятно что близкие надо брать — у меня там составные, поэтому как есть написал :)
+
avatar
0
  • ksiman
  • 13 сентября 2016, 07:07
— оптрон вроде верно нарисован, что не так?
Со стороны фотодиода полярность должна быть обратной.
— резисторы — понятно что близкие надо брать
Это нам понятно, а остальным?
+
avatar
0
  • yurok
  • 13 сентября 2016, 13:14
Кстати про резисторы, 32 Ом — это с пищалкой — он громкость ограничивает, я вначале 100 Ом поставил — звук вентилятора перекрывал пищалку — вообще без резистора тоже можно, но будет очень громко, я сверху еще 2 припаял (smd — хорошо паяются друг на друга) померил вышло 32 — тут каждый на свой слух может припаять. У меня на видео слышно как с таким значением пикает

а тот который 45 кОм — чем он меньше тем раньше будет распознавание начала полуволны, но он будет сильнее греться — следует ставить в пределах 30-80 кОм — потом сдвиг подобрать оптимальный, в моем случае при 45 кОм оптимально 3 мс, думаю при 47 к Ом будет также.
+
avatar
0
  • gassag
  • 12 сентября 2016, 20:38
Извиняюсь, про 15-16-17 выводы сам не доглядел… это же MOSI, MISO, SCK — они конечно же нужны для прошивки контроллера…
+
avatar
0
  • gassag
  • 13 сентября 2016, 11:52
Скеч скомпилировался, на выходе сформировались 2 файла: welding__dot.ino.standard.hex и welding__dot.ino.with_bootloader.standard.hex
Пологаю, что внешним программатором нужно залить какой-то из HEX файлов, какой?
Еще же и фьюзы нужно задать…?
+
avatar
0
  • yurok
  • 13 сентября 2016, 13:08
любой можно
первый без загрузчика, только через spi потом можно заливать программы
второй с загрузчиком — заливать новое можно будет через tx и rx обновления

фьюзы задайте как у ардуино uno
+
avatar
0
  • gassag
  • 13 сентября 2016, 18:38
Такие дефолтные годятся?

Arduino Nano w/ ATmega328 Default Fuse Settings:
Low Fuse 0xFF
High Fuse 0xDE
Extended Fuse 0x05

(SPI разрешен, бутлоадер на 256 байт)
+
avatar
0
  • yurok
  • 13 сентября 2016, 19:11
да
+
avatar
0
  • Yuu
  • 15 сентября 2016, 12:45
Простите мне моё дилетантство, но есть несколько вопросов.
Зачем нужен VD1, если оптопару от тока пробоя защищает последовательно включенный VD2.
Конденсаторы C3 и C4 это дополнительные сглаживающие конденсаторы по питанию 5V?
+
avatar
0
  • yurok
  • 15 сентября 2016, 17:34
c3 и c4 — да

по диодам не так:
VD2 — снимает тепловую нагрузку с резистора, а VD1 защищает оптопару от обратки на емкости диода VD2
+
avatar
0
  • Yuu
  • 16 сентября 2016, 00:08
А ещё какой-то бонус у VD2 есть? Или можно было просто поставить два резистора по половине номинала R10 или просто более мощный резистор поставить? Почему именно диод?
+
avatar
0
  • ksiman
  • 16 сентября 2016, 20:12
Почему именно диод?
Это наиболее разумное решение в данном случае
+
avatar
0
  • Yuu
  • 16 сентября 2016, 22:13
Почему? Я же сразу спросил, какой «бонус» имеет диод по сравнению с резистором.
Не поленитесь, пожалуйста, объясните. Спасибо!
+
avatar
0
  • ksiman
  • 17 сентября 2016, 08:02
Без диода мощность потерь на резисторе 1Вт, с диодом 0,5Вт
+
avatar
0
  • Yuu
  • 17 сентября 2016, 14:07
Почему? Ведь если поставить 2й резистор вместо диода, получится ведь тот же эффект!

Всё что приходит на ум, это просто двойное назначение — и защитить оптопару от обратного тока и снять нагрузку с R10. Т.е. можно поставить и резистор вместо диода, но тогда оптопара под угрозой, а раз есть диод, на котором тоже падает напряжение, то R10 можно использовать меньшей мощности. Поправьте, если неверно.
Ещё кстати вопрос — на диоде такое сильное падение напряжения, что забирает пол ватта? Вроде у него не такое уж и большое сопротивление должно быть, нет?
+
avatar
0
  • ksiman
  • 17 сентября 2016, 14:24
Ещё кстати вопрос — на диоде такое сильное падение напряжения, что забирает пол ватта?
Диод не забирает пол ватта, а просто не пропускает их (отсекает одну полуволну)
+
avatar
0
  • Yuu
  • 17 сентября 2016, 15:48
Да, но полуволну отсекает и оптопара.
+
avatar
0
  • ksiman
  • 17 сентября 2016, 16:53
Нет, физически она её не отсекает, т.к. шунтирована диодом
+
avatar
0
  • Yuu
  • 17 сентября 2016, 19:36
Это я упустил из виду =(
Т.е. получается так:
Можно убрать диод и поставить резистор помощнее — в аспекте ограничения тока через оптрон ничего не изменится, но начнутся проблемы с прикладываемым обратным напряжением к оптрону — возможен пробой, а раз уж всё равно отрезана полуволна, можно бонусом поставить резистор в половину мощности.
Кажется разобрался? Надеюсь ^_^'
+
avatar
0
  • ksiman
  • 17 сентября 2016, 20:32
Кажется разобрался?
Примерно так
+
avatar
0
  • Yuu
  • 17 сентября 2016, 23:36
Уррряяяя! Спасибо за помощь!
+
avatar
0
  • moyemail
  • 04 октября 2016, 00:32
— а это не такой же дисплей будет, только чуток меньше диагональ.
— подключить его можно?
+
avatar
0
  • yurok
  • 04 октября 2016, 08:15
конечно можно, в последнем обзоре я про него написал — работает с существующим кодом хорошо
+
avatar
0
  • moyemail
  • 04 октября 2016, 13:09
— спсб!
+
avatar
0
  • moyemail
  • 04 октября 2016, 16:21
А Вы не могли бы для удобства форумчан выложить в конце обзора вместе с файлами спецификацию на комплектующие с учётом изменений?
+
avatar
0
  • yurok
  • 04 октября 2016, 16:40
так не менялась спецификация, в схеме есть элементы
+
avatar
0
  • moyemail
  • 05 октября 2016, 05:12
ОК, тогда:
R1-7 — мощность?
С1-5 — вольтаж, тип?
Можно ли использовать (завалялись такие дома):
MOC3062 вместо MOC3021?
SFH617A-4 вместо РС817 ??
Непонятно по схеме, как подключен термистор?
+
avatar
0
  • yurok
  • 05 октября 2016, 10:08
на схеме все есть
палочки — мощность в ваттах — одна — 1 Вт, две — 2 Вт, там где не указано 1/4 Вт
конденсаторы тоже обозначены С5 — 400-600 Вольт, остальные — минимум 10 Вольт
Мок — нужен без контроля нуля — и резисторами входными ограничить ток до указанного в даташите
Оптопара нужна быстрая — если скорость вашей не хуже — то можно
+
avatar
0
  • moyemail
  • 05 октября 2016, 11:23
СПСБ!
— а тип конденсаторов, кроме С4 (электролит, судя по полярности)?
С МОС разобрался, — не подойдёт, она с контролем нуля.
А с SFH617A-4 не совсем понятно, у неё время включения по даташиту — 6мкс, время выключения 2.5мкс, а у вашей РС817 вкл. — 4мкс, выкл. — 3мкс. Как тут быть? Пройдёт?
Что с
Непонятно по схеме, как подключен термистор?
+
avatar
0
  • yurok
  • 05 октября 2016, 11:46
Керамика остальные. У меня smd 1206
После оеисания термистора есть схема его подключения, смотрите внимательней

Если все так как вы говорите, то подойдет
+
avatar
0
  • moyemail
  • 05 октября 2016, 12:01
— схема-то есть, а как её привязать к общей, так?
+
avatar
0
  • yurok
  • 05 октября 2016, 12:23
А1 это вход PC1 контроллера, аналоговый вход 1
+
avatar
0
  • moyemail
  • 05 октября 2016, 12:46
— а что тогда обозначают А1 и А2 на общей схеме?
+
avatar
0
  • moyemail
  • 05 октября 2016, 13:40
И ещё вопрос, — вот такой буззер подойдёт?
+
avatar
0
  • yurok
  • 05 октября 2016, 17:11
Подойдет
+
avatar
0
  • moyemail
  • 05 октября 2016, 14:53
По диодам:
какие характеристики диода MUR?
С А1 и А2 разобрался, — это выводы симистора… ;))
+
avatar
0
  • bsdshneg
  • 08 февраля 2018, 09:22
Ответил кто по этому диоду?
Прочитал 3 части и нигде не указано какой именно должен быть диод :(
+
avatar
+2
  • moyemail
  • 09 февраля 2018, 14:58
— так ТС молчит, как рыба об лёд…
+
avatar
0
  • yurok
  • 11 февраля 2018, 03:03
извиняюсь, не увидел вопроса — например: 1N4148
+
avatar
0
  • moyemail
  • 11 февраля 2018, 03:23
— спсб, наконец-то дождались!
Вы софт не апдэйтили пока?
+
avatar
0
  • yurok
  • 12 февраля 2018, 13:49
для фабричных плат софт существенно доработан, впрочем как и сами платы
+
avatar
0
  • moyemail
  • 12 февраля 2018, 13:58
— а какая цена на такую голую плату?
+
avatar
0
  • yurok
  • 12 февраля 2018, 16:42
в личку
+
avatar
0
Получилось в личке узнать?
+
avatar
0
  • moyemail
  • 26 декабря 2018, 15:18
yurok14 февраля 2018, 23:30
Здравствуйте! спасибо за интерес.
базовым вариантом является полностью готовая плата со всеми
элементами, протестированная. Остается добавить экранчик по вкусу
(0.96" или 1.3"), кнопку или педаль кому как удобнее, светодиод — если
нужен и трансформатор. Стоимость такого варианта 3000 руб. Могу
положить светодиод экранчик и проводки — тогда будет 3500 руб

Возможны еще варианты — голая плата без деталей — 500 руб, плата с
припаянным и прошитым контроллером 700 руб.
Комплекты не высылаю — так как детали проверить не могу.

Доставка примерно 200 руб, независимо от варианта или даже нескольких
плат (условия почты россии).

схема такая: перечисляете, я высылаю и фотаю чек почты, оплачиваете
доставку, либо можете сразу перечислить +200 руб.

все платы я тестирую перед отправкой, но если что-то вдруг не
заработает — готов исправить, либо подскажу советом

mysku.club/blog/russia-stores/48049.html
mysku.club/blog/aliexpress/44073.html
mysku.club/blog/aliexpress/44445.html
mysku.club/blog/aliexpress/45329.html

тут обзоры и описания

Удобнее всего получить на карту сбербанка

63900244 9080470604 — номер карты сбербанка
paypal: maidanov@gmail.com
webmany:
Z780119974580
R832189855189
+
avatar
0
  • yurok
  • 11 февраля 2018, 03:03
извиняюсь, не увидел вопроса — например: 1N4148
+
avatar
0
  • bsdshneg
  • 11 февраля 2018, 06:19
Спасибо!
+
avatar
0
  • gassag
  • 13 октября 2016, 19:50
При компиляции в линуксовой версии Arduino IDE было выдало 2 варнинга:

/home/gas/Arduino/libraries/U8glib/utility/u8g_rot.c:48:1: warning: initialization from incompatible pointer type
u8g_dev_t u8g_dev_rot = { u8g_dev_rot_dummy_fn, NULL, NULL };
^
/home/gas/Arduino/libraries/U8glib/utility/u8g_rot.c:48:1: warning: (near initialization for 'u8g_dev_rot.dev_fn')

Впрочем, все прошилось потом и работает нормально.
+
avatar
0
  • zaa1978
  • 25 октября 2016, 21:50
приветствую всех. хочу собрать сварку но столкнулся с проблемкой( вроде и не первый раз) но чёт не получаеться с компилить на ардуино. может кто НЕХ файл выложить. програматор есть TL866.
+
avatar
0
  • Olegkad
  • 28 октября 2016, 21:54
Присоединюсь к zaa1978 может кто НЕХ файл выложить.
+
avatar
0
Если кому не в лом, объясните как из Arduino 1.6.12 загрузив скетч от Yurok выплюнуть HEX файл чтобы потом просто прошить USBASPом мегу328.
Сам с ардуиной просто никогда не сталкивался, очень буду признателен за науку…
+
avatar
0
  • zaa1978
  • 04 ноября 2016, 10:01
добрый день всем. я разобрался ( спасибо Yurok подсказал.) вечером скину файл в НЕХ. я думаю многим будет проще прошить.
+
avatar
0
  • zaa1978
  • 05 ноября 2016, 20:33
как добавить файл?
+
avatar
0
  • Olegkad
  • 05 ноября 2016, 22:41
Выложи на любой файлообменик, а ссылочку сюда
+
avatar
0
  • Olegkad
  • 05 ноября 2016, 22:40
Привет всем, потихоньку приступил к сборке. Есть вопрос по диоду MUR можно марку или любой пойдёт.
Ну и от автора порядок настройки или сразу всё заработает?

Вот прошивка в HEX которой спасибо ему поделился gassag
cloud.mail.ru/public/B9EB/KgFqZq5cW
+
avatar
0
  • zaa1978
  • 05 ноября 2016, 23:37
cloud.mail.ru/public/KGWT/orCqvS2PQ фьюзы.
cloud.mail.ru/public/9gZN/TbXEkAXaq флеш память.
cloud.mail.ru/public/zRjp/Dt8D4cHh7 еепром
насколько я понял потом можно обновить прошивку через ТХ И RX
прошивка с загрузчиком ( клон с ардуино)
извиняюсь что долго(первый раз пользуюсь файлобменником)
+
avatar
0
Нарисовал универсальную схему под Arduino Nano, где можно подключать дисплей OLED I2C или SPI от Nokia, использовать вентилятор на 220В или на 12В от компьютера, использовать термистор или цифровой 18b20. Прошу посмотреть не напутал ли я чего. Немного не уверен в правильности подключения PC817.
+
avatar
0
Перезалил схему.
+
avatar
0
  • Mix69
  • 27 ноября 2016, 10:53
кнопка запуска сварки — очевидно Р12?
Р7- индикаиор рабты?
Р11-?
Прошивку править не надо? в оригинале слежение за 0 приходит на ADC6 у Вас на ADC1,
включение симистра оригинал PB2 у Вас ADC2,
кнопка заруска сварки PB0, у Вас PD6
или где-то не путаю холдное с зеленым
+
avatar
0
Эммм… У меня подписаны контакты для Arduino Nano 3. Прошивка не подойдёт, я буду переделывать.
По поводу кнопки сварки — их две. Одна будет на панели, а другая будет выведена для педали.
+
avatar
0
  • zaa1978
  • 15 ноября 2016, 22:14
BurlakovSG
а именно какой дисплей Nokia
оптрон 1 и 2 ногу поменяй местами.
только не пойму вобще зачем он у тебя стоит?
+
avatar
0
а именно какой дисплей Nokia
Nokia 5110 (синяя или красная плата).
только не пойму вобще зачем он у тебя стоит?
Зачем стоит что?
+
avatar
0
  • zaa1978
  • 22 ноября 2016, 21:32
Прошу посмотреть не напутал ли я чего. Немного не уверен в правильности подключения PC817.
я про оптрон. зачем стоит если ты его не подключил к контроллеру. в общем я не понял его подключение ( на вход подаёшь 220 вольт ( кстати 1 и 2 ногу оптрона нужно поменять.) а выход кидаешь на +5 вольт и минус)) в общем ты оптроном ничего не измеряешь.

ошибся не менять 1 и 2 ногу на оптроне а развернуть диод Д2
+
avatar
0
зачем стоит если ты его не подключил к контроллеру
Как это не подключил на 3 ноге маркер стоит «А1».
ошибся не менять 1 и 2 ногу на оптроне а развернуть диод Д2
Да, я понял — во втором варианте я его уже развернул.
+
avatar
0
  • zaa1978
  • 23 ноября 2016, 09:45
понял. обычно отвод со стрелочкой, но как кому удобно. сразу не заметил.
+
avatar
0
Так KiCad делает. Может надо было немного проводник в сторону отвести и потом на него метку повесить, чтобы лучше видно было.
+
avatar
0
  • zaa1978
  • 26 ноября 2016, 23:02
можно и так.
+
avatar
0
Проходил по ссылке, не вошёл на схему, нельзя вложением оформить это дело интересно, потому что нет времени морочиться м голым атмегой, а использовать нано илимини про, и дисплеев каких надо нетуесть только эти и 16*2
+
avatar
0
Все заработало, за исключением алгоритма определения нуля… Посмотрите функцию welding_process и форму сигнала с оптрона. В данном случае корректнее будет использовать digitalRead (~4 мкс) в место analogRead (~110 мкс). Но у меня не получилось применить digitalRead к пину A6. Подскажите можно ли использовать пин А6 в качестве цифрового входа?
+
avatar
0
  • yurok
  • 23 июля 2017, 12:00
нет — a6 и a7 — только аналоговые
микросекунды там не критичны — есть корректировка — задача нарастание фронта определить и подобрать сдвиг
+
avatar
0
Отличная идея. Спасибо, Yurok!
Собрал себе на tiny2313 методом ЛУТ, писал на ассемблере, кода получилось на 630Байт, вывожу на 7-сегментный в два знака от 01 до 99 (количество полупериодов по 10мс), кручу энкодером. Не вижу смысла в серии импульсов, но можно запрограммить и заложить в настройки. Не пищит. Осциллограммы в нагрузке красивые. Тестовый образец (нет корпуса ещё) варит стабильно.
+
avatar
0
  • vishay
  • 19 декабря 2018, 11:21
Почему управляющий вывод с МОС3022 идет с 6 ноги, а не с 4 как в datasheet?
+
avatar
0
  • yurok
  • 20 декабря 2018, 09:15
они одинаково работают согласно datasheet
+
avatar
0
  • vishay
  • 27 декабря 2018, 11:47
1) Не подключены на схеме пины МК 3 и 21 к GND.
2) Зачем нужен R3 10 кОм?
3) В вашей заводской ПП исподьзуется RGB, тут 2 светодиода (или двухцветный), в чем различие подключения? На какие пины вешать RGB?
4) Где можно скачать последнюю версию прошивки?
+
avatar
0
  • yurok
  • 05 января 2019, 17:43
1 — конечно их надо подключить, я думаю подписей достаточно
2 — чтобы случайно не включился транс, лучше предусмотреть на случай нештатных ситуаций
3 — в заводской также используется 2 цвета — больше не нужно — подключение аналогично
4 — приведенная здесь рабочая — дальнейшие улучшения (а их немало) в готовых платах
+
avatar
0
  • vishay
  • 11 января 2019, 10:28
приведенная здесь рабочая — дальнейшие улучшения (а их немало) в готовых платах
Это какой то секрет? Нельзя ознакомиться со схемой?
+
avatar
0
  • kvarkk
  • 08 марта 2021, 21:05
Что-то у меня не работает библиотека u8glib. Ни один из примеров не компилируется. Ошибка:
'u8g' was not declared in this scope

Что я делаю не так?
+
avatar
0
Для энкодера достаточно один выход повесить на прерывание. На освободившееся прерывание можно повесить кнопку энкодера или оставить про запас. И ещё вопрос, я не спец по точечной сварке, у вас сварка идёт серией одинаковых по длительности импульсов. Ещё видел вариант, когда первый короткий импульс прихватывает свариваемые детали, затем идёт второй длинный импульс, который уже сплавляет детали. Какой вариант лучше?
+
avatar
0
На данный момент уж очень не гуманно стали стоить Atmega328 (что голым чипом, что в nano/mini исполнении). Но за стартовую идею всё равно спасибо!
Думаю реализовать подобное на ESP32 devkit. Походу можно отказаться (или оставить как опцию) и от энкодера, и от экрана — все параметры, как по мне, проще смотреть/менять в телефоне по bluetooth.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.