Думаю, да. Симисторы на пользовал на таких токах, но вот полевой транзистор IRFZ44N (по даташиту - 49А) в таком же точно корпусе у меня работает и до 42 ампер отлично держит, только радиатор хороший нужен.
я просто не хотел заказывать. ждать не охото))) у нас тут магазин большой есть. но по прайсу максималка на 40А. поэтому думал может 2 взять.
Если заказть в платане или chipdip- эжать недолго. Они (по крайней мере вторые) доставляют в евросеть, а это не почта россии - доходит меньше, чем за неделю
Если заказть в платане или chipdip- эжать недолго. Они (по крайней мере вторые) доставляют в евросеть, а это не почта россии - доходит меньше, чем за неделю
ну попробую сначала взять у себя на 40, поставлю радиатор хороший, если будет все равно греться сильно. там может спереди. или ноги. будем заказывать, а этот поставлю потом куда нибудь домой(если не сгорит) :), а вот еще вопросик, мне хотелось бы точку поставить. в 1 регистре. я думал сделать что то типа такого: если выводится на экран 1-я цифра, там стояла точка. что бы получались цифры 0.01 ; 0.02; 0.68; 5.50 и т.д. это так, просто что бы постоянно она горела в 1 регистре
Кстати, помните, я Вам проинициализировал массив масок тремя минусиками? Моветую остаить. Я всегда так делаю. Если горят минусы во всех позиция - типа большой прочерк, значит полезной информации пока не поступало.
Д и ещё. Нашу программу легко упрятать в отдельный файл, чтобы места не занимала перед глазами - будет типа библиотеки. Умеете?
Ну нашу программу до библиотеки еще дописать надо, что бы было типа segment.Print(abc123) и она писала на 3-ех, 4-ех, 8-и разрядных "экранах" просто задав пины и количество разрядов. Такое сможем сделать? И писал выбором бегущая строка, либо постоянное свечение)))) вот было бы классно
Кстати, помните, я Вам проинициализировал массив масок тремя минусиками? Моветую остаить. Я всегда так делаю. Если горят минусы во всех позиция - типа большой прочерк, значит полезной информации пока не поступало.
Да, заметил сегодня такое, когда методом тыка проверял программу, куда вставить маску точки.
Ну нашу программу до библиотеки еще дописать надо, что бы было типа segment.Print(abc123) и она писала на 3-ех, 4-ех, 8-и разрядных "экранах" просто задав пины и количество разрядов. Такое сможем сделать? И писал выбором бегущая строка, либо постоянное свечение)))) вот было бы классно
Ну, делайте, тепрь у Вас знаний достаточно.
Я такие вещи делаю по-другому. Дело в том, что я впервые увидел микроконтроллер (тогда ещё не было такого слова) в специзделиях в давно забытые годы. Было там если склероз не изменяет 96 слов оперативной памяти и что-то около килобайта памяти для программы. А впихивать приходилось системы навигации, фурье-анализ и прочие приятные вещи. Да и сейчас, в нынешнем хобби, макетирую я на чём попало, а конечном изделии мой основной инструмент вовсе не мега и даже не нано, а тини с их крохотной памятью.
Поэтому свои "библиотеки" я пишу на уровне препроцессора. Если, допустим, мне нужно три разряда - ни одного байта нужного для работы с четырьмя разрядами в окончательный код не попадает. Это совсем другая техника программирования. И библиотека для семисегментника у меня есть - общие анод/катод, подключение прямо, через сдвиговый регистр или через TLC5940, динамическая индикация или статическая - всё поддерживается, но всё на уровне препроцессора. Окончательный код выглядит как специально написанный для данного конкретного случая - никакой универсальности.
Да, конечно. Но здесь почти всё совершенно необходимо. Лишний здесь только цикл 19-21, веренее не совсем лишний - он гасит все цифры, а зажигает новую, которая должна включиться. В идеале он должен гасить не все, а только ту, что в данный момент горит, предполагая, что остальные гасить не надо. Хотите, сделаем, но сделано так, чтобы не думалось ни о начальных значениях, ни о возможных сбоях в управлении.
в общем я понял что таймер наподобие "loop"а циклически прокручивает, только loop прокручивает когда весь код пройдет, а таймер через заданный промежуток времени, правильно думаю?
Перемнная строке 17 объявлена статической. Значит, инициализируется она только один раз, и, что очень важно - она сохраняет своё значение между вызовами функции. Именно это нам позволяет при каждом новом вызове помнить какой разряд высвечивался в прошлый раз.
в общем я понял что таймер наподобие "loop"а циклически прокручивает, только loop прокручивает когда весь код пройдет, а таймер через заданный промежуток времени, правильно думаю?
Ну, если быть точнее, таймер сам по себе ничего не прокручивает. Он просто тикает и, если закзано, вызывает программу-обработчик при переполнении. А уэ что та делает его (таймера) абсолютно не волнует.
Ну, если быть точнее, таймер сам по себе ничего не прокручивает. Он просто тикает и, если закзано, вызывает программу-обработчик при переполнении. А уэ что та делает его (таймера) абсолютно не волнует.
ну да, я это и имел ввиду. я просто делал проект по автозапуску двигателя, и мне надо было читать обороты тахометра, а без таймера не получалось ничего. неправильные были показания, на самом делел 2000 а пишет то 6000 то 4000 то 2000.... вот буду переделывать на таймер, думаю заработает.
вот что получилось, работает отлично, но почему-то прошивку заливаешь, снимаешь питание с ардуинки и прошивка слетает, а вместо нее встает заводской "блинк"
может кому надо, набросал скетч для проверки правильности подключения индикатора. смысл такой. заливаешь скетч в ардуинку, открываешь монитор порта и вводишь туда "1" - 1 разряд, "2" - 2 разряд, "3" - 3 разряд, "A"- сегмент А, "B"- сегмент B,"C"- сегмент C,
"D"- сегмент D, "E"- сегмент E, "F"- сегмент F, "G"- сегмент G, "H"- сегмент "ТОЧКA" а, если ввести повторно эти сегменты или передать в порт "0" то все сегменты отключатся. это для индикатора с общим катодом
Ну, при нажатии кнопки, при прошивке. А также в любом случае, если Вы специально заводите туда дорожку и подаёте на неё Low. Например, у меня как-то был таким образом реализован внешний watchdog на 555 таймере.
Ну, при нажатии кнопки, при прошивке. А также в любом случае, если Вы специально заводите туда дорожку и подаёте на неё Low. Например, у меня как-то был таким образом реализован внешний watchdog на 555 таймере.
ну в общем я думаю если выпаять кнопку от случайных нажатий и закоротить контакт после прошивки, можно и без резистора обойтись. ну это я так, рассуждаю, если резистор не прокатит. попробую на 10к, если не хватит на 10 поставлю на 1к, а если и так не получится вообще накоротко сделаю.
в общем, я дома, попробовал все. резистор ставил и "накоротко" замыкал ничего не помогает. но заметил такую вещь. если не подключать к компьютеру. а допустим взять зарядку от телефона и подключить как питание ардуино. то все работает хорошо. ничего не слетает. как только подключу к копмьютеру. прошивка слетает. с чем может быть связанно. не понимаю. может драйвер на ch340 поставил такой.... в общем очень отлично все работает, через пару дней выложу видео как работает на споттере и полную схему. если будет работать)))
Всем Привет! Прочитал с удовольствием.Хотел сам реализовать такое; в итоге ничего за месяц и не вышло. Тема про Споттер на сайте websvarka.ru Контроллер точечной сварки(споттера) всё подробно--с печатными платами с нех. файлами и т.д. Много вариантов по управлению в разных версиях. Просто хотел сам попробовать т.к. ардуинки есть а заказ из Китая для споттера ещё небыл доставлен. Буду реализовывать на АТТИННИ2313. Советую посетить сайт. И ещё если можно то весь скетч // Пожалуйста в студию// для общего развития желательно с подробными комментариями.
НЕ очень хорошо.Чкрез некоторое время подгорят контакты. При всём этом нет функции "автозапуск" хотя для начального этапа можно и так. Молодец что осилил с программой. "" МОЛОДЕЦ""
НЕ очень хорошо.Чкрез некоторое время подгорят контакты. При всём этом нет функции "автозапуск" хотя для начального этапа можно и так. Молодец что осилил с программой. "" МОЛОДЕЦ""
На этом реле споттер уже 2 года работает, только без электроники, а принудительно, а вы можете сказать как автопуск сделать? Поограммно знаю, знаю что на вторичку цеплять, а вот как аппаратно реализовать?
Сварщик я никакой. Но свой дом, который я недавно построил требует много всего. Купил инвертор, потренировался, сварил несколько изделий, которыми очень горжусь - баскетбольную "баншню" для внуков, распорку для подвески гамака, мангал, несколько полок в кладовке и лаги на забор наварил к столбам. Вот собственно и весь опыт. Все эти изделия получились вполне симпатичными, но времени я на них тратил ... жуть.
Со временм захотелось варить и что-то мелкое, но неудобно и устал швы зашлифовывать. Прочитал, что для мелких изделий лучше использовать либо автомат, там аккуратненькие ровные шовчики, либо точечную. Пока не купил девайсов, но вот терзают смутные сомнения. Есть подозрения, что точечная - это для узкого круга работ, типа листы меж собой соединять - т.е. не для меня. С автоматом тоже неясно - я не понимаю как оно работает и для каких это работ.
У моих работ нет никакой специфики - просто общехозяйственные вещи типа "для дома для семьи".
Можете посоветовать что мне приобрести и освоить, чтобы было наиболее универсально. Покупать всё - ну я же не профи, зачем мне, только валяться будет.
Сварщик я никакой. Но свой дом, который я недавно построил требует много всего.
В общем не автомат а полуавтомат, это такой сварочный варит проволокой с угекислотой, т. Е. Надо проволку и баллон углекислоты, шов ровный получается, варить сможет любой, но это в основном для тонкого металла, но и толстый можно, стоит дороже чем обычная, но конечно удобнее, я когда варю толстый метал все равно варю электродами, надежнее, а контактная сварка в основном для автомобилей, т. Е. Металл толщиной не более 1-2мм, листовой так что инвертор я считаю для дома лучше всех
websvarka.ru Форум сварщиков Вебсварка--О сварке в общем-- Изделия и поекты--Контроллер точечной сварки(споттера)
что то там ужас вообще. в первичку подают 220В на 10% мощности с помощью симистора и считают на вторичке импульсы с помощью оптосимистора. если они пропадают то типа пошел автостарт. может как то проще организовать...
Всем привет! Вопрос про "авторежим" удалось реализовать или нет?
автостарт? пока нет((( нет времени совсем. работы много пошло на споттере. пока на кнопке хватает. задумка такая, сделать диммер который будет постоянно давать какой-то процент мощности на первичку, и читать оптосимистором есть ли импульсы, когда вторичка замыкается пропалает сигнал на первичке, и идет сигнал на автостарт. потом естественно полная мощность появляется не первичке и стабилитронгом сглаживать эту полную мощность через высокоомный резистор. думаю как то так.
Кто-нибудь пробовал код для трех разрядов из этой темы. Для двух все работает. Гружу любой из этой темы для трех разрядов - показывает какую-то ерунду. Показывает нормально, только если все три цифры одинаковые.
я просто не уверен что там ток 30-35А. а если 50? что бы запасик был) по рассчетам 30-35А
Ну, возьмите на 50А - http://www.chipdip.ru/product/ts132-50-8/
Вот здесь подешевле - http://www.promelectrica.ru/catalog/9898989/ts1325012_analog/
Вот на 63А - http://www.platan.ru/cgi-bin/qwery.pl/id=433668020
А вот 100А всего за 460 рублей а вот ещё один.
Думаю, да. Симисторы на пользовал на таких токах, но вот полевой транзистор IRFZ44N (по даташиту - 49А) в таком же точно корпусе у меня работает и до 42 ампер отлично держит, только радиатор хороший нужен.
хорошо, спасибо) буду пробовать.
Ну, возьмите на 50А - http://www.chipdip.ru/product/ts132-50-8/
Вот здесь подешевле - http://www.promelectrica.ru/catalog/9898989/ts1325012_analog/
Вот на 63А - http://www.platan.ru/cgi-bin/qwery.pl/id=433668020
А вот 100А всего за 460 рублей а вот ещё один.
я просто не хотел заказывать. ждать не охото))) у нас тут магазин большой есть. но по прайсу максималка на 40А. поэтому думал может 2 взять.
я просто не хотел заказывать. ждать не охото))) у нас тут магазин большой есть. но по прайсу максималка на 40А. поэтому думал может 2 взять.
Если заказть в платане или chipdip- эжать недолго. Они (по крайней мере вторые) доставляют в евросеть, а это не почта россии - доходит меньше, чем за неделю
Если заказть в платане или chipdip- эжать недолго. Они (по крайней мере вторые) доставляют в евросеть, а это не почта россии - доходит меньше, чем за неделю
ну попробую сначала взять у себя на 40, поставлю радиатор хороший, если будет все равно греться сильно. там может спереди. или ноги. будем заказывать, а этот поставлю потом куда нибудь домой(если не сгорит) :), а вот еще вопросик, мне хотелось бы точку поставить. в 1 регистре. я думал сделать что то типа такого: если выводится на экран 1-я цифра, там стояла точка. что бы получались цифры 0.01 ; 0.02; 0.68; 5.50 и т.д. это так, просто что бы постоянно она горела в 1 регистре
разобрался
072
void
putNumber(
const
unsigned number) {
073
static
const
uint8_t allDigits[] = { D0, D1, D2, D3, D4, D5, D6, D7, D8, D9 };
074
div_t divRes = div(number, 100);
075
076
divRes = div(divRes.rem, 10);
077
putMask(allDigits[divRes.quot], 1);
078
putMask(allDigits[divRes.rem], 2);
079
}
в строке 75 изменил, добавив туда маску напрямую.
Ну, если всегда в одном месте, то правильно.
Кстати, помните, я Вам проинициализировал массив масок тремя минусиками? Моветую остаить. Я всегда так делаю. Если горят минусы во всех позиция - типа большой прочерк, значит полезной информации пока не поступало.
Д и ещё. Нашу программу легко упрятать в отдельный файл, чтобы места не занимала перед глазами - будет типа библиотеки. Умеете?
Ну нашу программу до библиотеки еще дописать надо, что бы было типа segment.Print(abc123) и она писала на 3-ех, 4-ех, 8-и разрядных "экранах" просто задав пины и количество разрядов. Такое сможем сделать? И писал выбором бегущая строка, либо постоянное свечение)))) вот было бы классно
Кстати, помните, я Вам проинициализировал массив масок тремя минусиками? Моветую остаить. Я всегда так делаю. Если горят минусы во всех позиция - типа большой прочерк, значит полезной информации пока не поступало.
Да, заметил сегодня такое, когда методом тыка проверял программу, куда вставить маску точки.
Ну, делайте, тепрь у Вас знаний достаточно.
Я такие вещи делаю по-другому. Дело в том, что я впервые увидел микроконтроллер (тогда ещё не было такого слова) в специзделиях в давно забытые годы. Было там если склероз не изменяет 96 слов оперативной памяти и что-то около килобайта памяти для программы. А впихивать приходилось системы навигации, фурье-анализ и прочие приятные вещи. Да и сейчас, в нынешнем хобби, макетирую я на чём попало, а конечном изделии мой основной инструмент вовсе не мега и даже не нано, а тини с их крохотной памятью.
Поэтому свои "библиотеки" я пишу на уровне препроцессора. Если, допустим, мне нужно три разряда - ни одного байта нужного для работы с четырьмя разрядами в окончательный код не попадает. Это совсем другая техника программирования. И библиотека для семисегментника у меня есть - общие анод/катод, подключение прямо, через сдвиговый регистр или через TLC5940, динамическая индикация или статическая - всё поддерживается, но всё на уровне препроцессора. Окончательный код выглядит как специально написанный для данного конкретного случая - никакой универсальности.
Хорошо, очень интересно это изучать, с моим среднем образованием даже вовсе не трудно, спасибо за помощь)
01
void
setupTimer2(
void
) {
02
PRR &= ~(1 << PRTIM1);
// Убедимся, что таймер 1 не отключен
03
TCCR1A = 0;
// Установим Normal режим
04
TCCR1B = PRESACLER;
// Установим делитель частоты
05
TCNT1 = TICKS;
// Установим счётчик
06
TIMSK1 |= (1 << TOIE1);
// Разрешим прерывание по переполнению
07
TIFR1 = 1;
// Очистим Очистим флаг прерывания (если он взведён)
08
}
09
//
10
// Обработка прерывания по переполнению
11
//
12
ISR(TIMER1_OVF_vect) {
// т.е. эта функция будет прокручиватся каждый раз когда таймер переполнится????
13
TCNT1 = TICKS;
// Установим счётчик для следующего прерывания
14
//
15
// Покажем очередную цифру, как мы это делали раньше
16
//
17
static
int8_t currentDigit = 0;
18
static
const
int8_t all_postions[] = { PIN_DIG1, PIN_DIG2, PIN_DIG3 };
19
for
(register int8_t i = 0; i < TOTAL_DIGITS; i++) {
20
digitalWrite(all_postions[i], currentDigit != i);
21
22
}
23
setRawSegments(maskArray[currentDigit]);
24
currentDigit = (currentDigit + 1) % TOTAL_DIGITS;
// В следующий раз показываем другую цифру
25
26
27
}
а можно еще раз уточнить, вот строка с 12 по 27 это будет все крутится каджый раз когдабудет переполнятся таймер?
Да, конечно. Но здесь почти всё совершенно необходимо. Лишний здесь только цикл 19-21, веренее не совсем лишний - он гасит все цифры, а зажигает новую, которая должна включиться. В идеале он должен гасить не все, а только ту, что в данный момент горит, предполагая, что остальные гасить не надо. Хотите, сделаем, но сделано так, чтобы не думалось ни о начальных значениях, ни о возможных сбоях в управлении.
А зачем мы объявляем переменную каждый раз? В строке 17
в общем я понял что таймер наподобие "loop"а циклически прокручивает, только loop прокручивает когда весь код пройдет, а таймер через заданный промежуток времени, правильно думаю?
Перемнная строке 17 объявлена статической. Значит, инициализируется она только один раз, и, что очень важно - она сохраняет своё значение между вызовами функции. Именно это нам позволяет при каждом новом вызове помнить какой разряд высвечивался в прошлый раз.
в общем я понял что таймер наподобие "loop"а циклически прокручивает, только loop прокручивает когда весь код пройдет, а таймер через заданный промежуток времени, правильно думаю?
Ну, если быть точнее, таймер сам по себе ничего не прокручивает. Он просто тикает и, если закзано, вызывает программу-обработчик при переполнении. А уэ что та делает его (таймера) абсолютно не волнует.
Ну, если быть точнее, таймер сам по себе ничего не прокручивает. Он просто тикает и, если закзано, вызывает программу-обработчик при переполнении. А уэ что та делает его (таймера) абсолютно не волнует.
ну да, я это и имел ввиду. я просто делал проект по автозапуску двигателя, и мне надо было читать обороты тахометра, а без таймера не получалось ничего. неправильные были показания, на самом делел 2000 а пишет то 6000 то 4000 то 2000.... вот буду переделывать на таймер, думаю заработает.
вот что получилось, работает отлично, но почему-то прошивку заливаешь, снимаешь питание с ардуинки и прошивка слетает, а вместо нее встает заводской "блинк"
может кому надо, набросал скетч для проверки правильности подключения индикатора. смысл такой. заливаешь скетч в ардуинку, открываешь монитор порта и вводишь туда "1" - 1 разряд, "2" - 2 разряд, "3" - 3 разряд, "A"- сегмент А, "B"- сегмент B,"C"- сегмент C,
"D"- сегмент D, "E"- сегмент E, "F"- сегмент F, "G"- сегмент G, "H"- сегмент "ТОЧКA" а, если ввести повторно эти сегменты или передать в порт "0" то все сегменты отключатся. это для индикатора с общим катодом
001
#define PIN_A 9 // пин 9 сегмент A
002
#define PIN_B 8 // пин 8 Сегмент B
003
#define PIN_C 7 // пин 7 Сегмент C
004
#define PIN_D 6 // и т.д.
005
#define PIN_E 5
006
#define PIN_F 4
007
#define PIN_G 3
008
#define PIN_DP 2
009
010
#define PIN_DIG1 10 // пин 10, 1 разряд
011
#define PIN_DIG2 11// пин 11, 2 разряд
012
#define PIN_DIG3 12// пин 12, 3 разряд
013
014
015
016
017
int
analogValue = 0;
018
int
incomingByte = 0;
019
int
smena1 = HIGH;
020
int
smena2 = HIGH;
021
int
smena3 = HIGH;
022
int
smena4 = LOW;
023
int
smena5 = LOW;
024
int
smena6 = LOW;
025
int
smena7 = LOW;
026
int
smena8 = LOW;
027
int
smena9 = LOW;
028
int
smena10 = LOW;
029
int
smena11 = LOW;
030
031
032
void
setup
() {
033
034
Serial
.begin(9600);
035
036
pinMode(12, OUTPUT);
037
pinMode(11, OUTPUT);
038
pinMode(10, OUTPUT);
039
pinMode(9, OUTPUT);
040
pinMode(8, OUTPUT);
041
pinMode(7, OUTPUT);
042
pinMode(6, OUTPUT);
043
pinMode(5, OUTPUT);
044
pinMode(4, OUTPUT);
045
pinMode(3, OUTPUT);
046
pinMode(2, OUTPUT);
047
048
}
049
050
void
loop
() {
051
052
if
(
Serial
.available() > 0)
053
{
054
incomingByte =
Serial
.read();
055
Serial
.print(
"I received: "
);
056
Serial
.println(incomingByte, DEC);
057
}
058
059
if
(incomingByte == 48)
060
{
061
smena1 = HIGH;
062
smena2 = HIGH;
063
smena3 = HIGH;
064
smena4 = LOW;
065
smena5 = LOW;
066
smena6 = LOW;
067
smena7 = LOW;
068
smena8 = LOW;
069
smena9 = LOW;
070
smena10 = LOW;
071
smena11 = LOW;
072
073
074
}
075
else
if
(incomingByte == 51)
076
{
077
smena1 = !smena1;
078
incomingByte = 0;
079
}
080
else
if
(incomingByte == 50)
081
{
082
smena2 = !smena2;
083
incomingByte = 0;
084
}
085
else
if
(incomingByte == 49)
086
{
087
smena3 = !smena3;
088
incomingByte = 0;
089
}
090
else
if
(incomingByte == 97)
091
{
092
smena4 = !smena4;
093
incomingByte = 0;
094
}
095
else
if
(incomingByte == 98)
096
{
097
smena5 = !smena5;
098
incomingByte = 0;
099
}
100
else
if
(incomingByte == 99)
101
{
102
smena6 = !smena6;
103
incomingByte = 0;
104
}
105
else
if
(incomingByte == 100)
106
{
107
smena7 = !smena7;
108
incomingByte = 0;
109
}
110
else
if
(incomingByte == 101)
111
{
112
smena8 = !smena8;
113
incomingByte = 0;
114
}
115
else
if
(incomingByte == 102)
116
{
117
smena9 = !smena9;
118
incomingByte = 0;
119
}
120
else
if
(incomingByte == 103)
121
{
122
smena10 = !smena10;
123
incomingByte = 0;
124
}
125
else
if
(incomingByte == 104)
126
{
127
smena11 = !smena11;
128
incomingByte = 0;
129
}
130
131
digitalWrite(PIN_DIG3, smena1);
132
digitalWrite(PIN_DIG2, smena2);
133
digitalWrite(PIN_DIG1, smena3);
134
digitalWrite(PIN_A, smena4);
135
digitalWrite(PIN_B, smena5);
136
digitalWrite(PIN_C, smena6);
137
digitalWrite(PIN_D, smena7);
138
digitalWrite(PIN_E, smena8);
139
digitalWrite(PIN_F, smena9);
140
digitalWrite(PIN_G, smena10);
141
digitalWrite(PIN_DP, smena11);
142
143
}
работает отлично, но почему-то прошивку заливаешь, снимаешь питание с ардуинки и прошивка слетает, а вместо нее встает заводской "блинк"
Хрена-се! Впервые слышу о таком глюке! Он что, самоперепрошивается? Не, так не бывает! :) Попробуйте в аппаратном это обсудить.
Хрена-се! Впервые слышу о таком глюке! Он что, самоперепрошивается? Не, так не бывает! :) Попробуйте в аппаратном это обсудить.
почитал, советуют на reset, 5v кинтуть
китай...
домойприду проверю.
почитал, советуют на reset, 5v кинтуть
китай...
домойприду проверю.
Тока через 10К резистор!!!
А то блин, при ресете КЗ будет
Тока через 10К резистор!!!
А то блин, при ресете КЗ будет
о!!! точно!! а я думал как же ресет при прошивке будет происходить... а в каких еще случаях ресет происходит? не подскажете?
Ну, при нажатии кнопки, при прошивке. А также в любом случае, если Вы специально заводите туда дорожку и подаёте на неё Low. Например, у меня как-то был таким образом реализован внешний watchdog на 555 таймере.
Ну, при нажатии кнопки, при прошивке. А также в любом случае, если Вы специально заводите туда дорожку и подаёте на неё Low. Например, у меня как-то был таким образом реализован внешний watchdog на 555 таймере.
ну в общем я думаю если выпаять кнопку от случайных нажатий и закоротить контакт после прошивки, можно и без резистора обойтись. ну это я так, рассуждаю, если резистор не прокатит. попробую на 10к, если не хватит на 10 поставлю на 1к, а если и так не получится вообще накоротко сделаю.
в общем, я дома, попробовал все. резистор ставил и "накоротко" замыкал ничего не помогает. но заметил такую вещь. если не подключать к компьютеру. а допустим взять зарядку от телефона и подключить как питание ардуино. то все работает хорошо. ничего не слетает. как только подключу к копмьютеру. прошивка слетает. с чем может быть связанно. не понимаю. может драйвер на ch340 поставил такой.... в общем очень отлично все работает, через пару дней выложу видео как работает на споттере и полную схему. если будет работать)))
вот такое устройство получилось))) работает супер)
https://youtu.be/z6lFHSno8NU вот видео)
Всем Привет! Прочитал с удовольствием.Хотел сам реализовать такое; в итоге ничего за месяц и не вышло. Тема про Споттер на сайте websvarka.ru Контроллер точечной сварки(споттера) всё подробно--с печатными платами с нех. файлами и т.д. Много вариантов по управлению в разных версиях. Просто хотел сам попробовать т.к. ардуинки есть а заказ из Китая для споттера ещё небыл доставлен. Буду реализовывать на АТТИННИ2313. Советую посетить сайт. И ещё если можно то весь скетч // Пожалуйста в студию// для общего развития желательно с подробными комментариями.
Сегодня вечером или в понедельник выложу все, только печатку сами разведете, потому что я делал большую ее, а схему выложу
Я так понял всё управление "220" через пускатель?
Ну да
001
//
002
// Определение пинов для сегментов
003
// (поставьте Ваши пины, у меня мелкий экран и плохо видно какие там у Вас)
004
//
005
#define PIN_A 9
006
#define PIN_B 8
007
#define PIN_C 7
008
#define PIN_D 6
009
#define PIN_E 5
010
#define PIN_F 4
011
#define PIN_G 3
012
#define PIN_DP 2
013
014
#define PIN_DIG1 10
015
#define PIN_DIG2 11
016
#define PIN_DIG3 12
017
018
#define vihod 13
019
#define knopka1 A0
020
#define knopka2 A1
021
#define knopka3 A2
022
023
024
//
025
//
026
//
027
#define PRESACLER (1<<CS11)|(1<<CS10) // Соответствует делителю частоты 64
028
#define TICKS ((uint16_t)(65536ul-1666ul)) // Оставляет 1666 тиков до переполнения
029
030
031
032
//
033
// Определение пинов для цифр
034
// (поставьте Ваши пины, у меня мелкий экран и плохо видно какие там у Вас)
035
//
036
037
038
//
039
// Определение масок для сегментов
040
//
041
#define MASK_A (1 << 0)
042
#define MASK_B (1 << 1)
043
#define MASK_C (1 << 2)
044
#define MASK_D (1 << 3)
045
#define MASK_E (1 << 4)
046
#define MASK_F (1 << 5)
047
#define MASK_G (1 << 6)
048
#define MASK_DP (1 << 7)
049
050
051
//
052
// Определение цифр через маски сегментов
053
//
054
#define D0 (MASK_A | MASK_B | MASK_C | MASK_D | MASK_E | MASK_F)
055
#define D1 (MASK_B | MASK_C)
056
#define D2 (MASK_A | MASK_B | MASK_G | MASK_D | MASK_E)
057
#define D3 (MASK_A | MASK_B | MASK_C | MASK_D | MASK_G)
058
#define D4 (MASK_B | MASK_C | MASK_G | MASK_F)
059
#define D5 (MASK_A | MASK_C | MASK_D | MASK_F | MASK_G)
060
#define D6 (MASK_A | MASK_C | MASK_D | MASK_E | MASK_F | MASK_G)
061
#define D7 (MASK_A | (MASK_B | MASK_C))
062
#define D8 (MASK_A | MASK_B | MASK_C | MASK_D | MASK_E | MASK_F | MASK_G)
063
#define D9 (MASK_A | MASK_B | MASK_C | MASK_D | MASK_F | MASK_G)
064
#define D10 (MASK_DP)
065
066
#define TOTAL_DIGITS 3
067
068
069
unsigned
long
startstop = 0;
070
unsigned
long
currentMillis = 0;
071
unsigned
long
dlya_sekund = 0;
072
unsigned
long
dlya_sekund1 = 0;
073
074
const
int
kolichestvo_sekund = 10;
075
076
077
int
schet = 20;
078
int
vihodState = HIGH;
079
int
val = 0;
080
int
dlya_puska = 0;
081
int
val1 = 0;
082
083
int
polozhenie_knopki =0;
084
static
int8_t currentDigit = 0;
085
volatile int8_t maskArray[TOTAL_DIGITS] = { MASK_G, MASK_G, MASK_G, };
086
087
088
//
089
// Функция складывает готовую маску в массив масок
090
//
091
inline
void
putMask(
const
int8_t mask,
const
int8_t pos) {
092
if
(pos < TOTAL_DIGITS) maskArray[pos] = mask;
093
094
}
095
096
//
097
// Функция разделяет число на сотни, десятки и единицы и складывает в массив масок
098
// сотни в позицию 2
099
// десятки в позицию 1
100
// единицы в позицию 0
101
//
102
void
putNumber(
const
unsigned number) {
103
static
const
int8_t allDigits[] = { D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10 };
104
div_t divRes = div(number, 100);
105
putMask((allDigits[divRes.quot] | MASK_DP), 0);
106
divRes = div(divRes.rem, 10);
107
putMask(allDigits[divRes.quot], 1);
108
putMask(allDigits[divRes.rem], 2);
109
110
}
111
112
//
113
// Функция устанавливает по маске - параметру (HIGH-горит, LOW-не горит)
114
//
115
void
setRawSegments(
const
int8_t mask) {
116
digitalWrite(PIN_A, mask & MASK_A);
117
digitalWrite(PIN_B, mask & MASK_B);
118
digitalWrite(PIN_C, mask & MASK_C);
119
digitalWrite(PIN_D, mask & MASK_D);
120
digitalWrite(PIN_E, mask & MASK_E);
121
digitalWrite(PIN_F, mask & MASK_F);
122
digitalWrite(PIN_G, mask & MASK_G);
123
digitalWrite(PIN_DP, mask & MASK_DP);
124
}
125
126
//
127
// Инициализация таймера. делается один раз
128
//
129
void
setupTimer2(
void
) {
130
PRR &= ~(1 << PRTIM1);
// Убедимся, что таймер 1 не отключен
131
TCCR1A = 0;
// Установим Normal режим
132
TCCR1B = PRESACLER;
// Установим делитель частоты
133
TCNT1 = TICKS;
// Установим счётчик
134
TIMSK1 |= (1 << TOIE1);
// Разрешим прерывание по переполнению
135
TIFR1 = 1;
// Очистим Очистим флаг прерывания (если он взведён)
136
}
137
//
138
// Обработка прерывания по переполнению
139
//
140
ISR(TIMER1_OVF_vect) {
141
TCNT1 = TICKS;
// Установим счётчик для следующего прерывания
142
//
143
// Покажем очередную цифру, как мы это делали раньше
144
//
145
146
static
const
int8_t all_postions[] = { PIN_DIG1, PIN_DIG2, PIN_DIG3 };
147
for
(register int8_t i = 0; i < TOTAL_DIGITS; i++) {
148
digitalWrite(all_postions[i], currentDigit != i);
149
150
}
151
setRawSegments(maskArray[currentDigit]);
152
currentDigit = (currentDigit + 1) % TOTAL_DIGITS;
// В следующий раз показываем другую цифру
153
154
155
}
156
157
//
158
// Всё, что выше - это своя жизнь. От основной программы требуется только
159
// положить число для показа в numberToShow и оно будет показываться.
160
// Больше основная программа ни о чём не заботится
161
//
162
///////////////////////////////////////////////////////////////////////////////////
163
164
void
setup
() {
165
setupTimer2();
166
pinMode(2, OUTPUT);
167
pinMode(3, OUTPUT);
168
pinMode(4, OUTPUT);
169
pinMode(5, OUTPUT);
170
pinMode(6, OUTPUT);
171
pinMode(7, OUTPUT);
172
pinMode(8, OUTPUT);
173
pinMode(9, OUTPUT);
174
pinMode(10, OUTPUT);
175
pinMode(11, OUTPUT);
176
pinMode(12, OUTPUT);
177
pinMode(13, OUTPUT);
178
179
180
181
}
182
183
184
void
loop
() {
185
186
if
((analogRead(knopka1) == 0) && (analogRead(knopka2) != 0) && (val == 0))
187
{
188
schet++;
189
val = 1;
190
dlya_sekund = millis();
191
delay(5);
192
}
193
194
195
if
((analogRead(knopka1) == 0) && (analogRead(knopka2) != 0) && (val == 1))
196
{
197
delay(5);
198
if
((millis() > dlya_sekund + 600) && (millis() > dlya_sekund1 + 300))
199
{
200
schet = schet + 10;
201
dlya_sekund1 = millis();
202
}
203
}
204
if
((analogRead(knopka2) == 0) && (analogRead(knopka1) != 0) && (val == 0))
205
{
206
schet--;
207
val = 1;
208
dlya_sekund = millis();
209
delay(5);
210
}
211
212
213
if
((analogRead(knopka2) == 0) && (analogRead(knopka1) != 0) && (val == 1))
214
{
215
delay(5);
216
if
((millis() > dlya_sekund + 600) && (millis() > dlya_sekund1 + 300))
217
{
218
schet = schet - 10;
219
dlya_sekund1 = millis();
220
}
221
222
}
223
224
if
((analogRead(knopka1) > 0) && (analogRead(knopka2)) > 0)
225
{
226
227
val = 0;
228
}
229
if
(millis() > dlya_sekund + 700)
230
{
231
if
((analogRead(knopka1) == 0) && (analogRead(knopka2)) == 0)
232
{
233
schet = schet + 50;
234
dlya_sekund = millis();
235
delay(5);
236
}
237
}
238
if
(schet > 999) schet = 1;
239
else
if
( schet < 1) schet = 999;
240
241
242
if
(schet != 999)
243
{
244
pusk();
245
}
246
else
if
(schet == 999)
247
{
248
pusk_constant();
249
}
250
251
252
253
putNumber(schet);
254
255
}
256
257
258
void
pusk()
259
{
260
if
((polozhenie_knopki==0)&&(millis()>startstop+1000)) {
261
if
(analogRead(knopka3) == 0)
262
{
263
delay(5);
264
startstop = millis();
265
currentMillis = millis();
266
dlya_puska = 1;
267
polozhenie_knopki=1;
268
}
269
}
270
if
((millis() < currentMillis + (kolichestvo_sekund * schet)) && (dlya_puska == 1))
271
{
272
vihodState = 0;
273
274
}
275
else
{
276
vihodState = 1;
277
dlya_puska = 0;
278
}
279
digitalWrite(vihod, vihodState);
280
if
(analogRead(knopka3) != 0)
281
{
282
delay(5);
283
polozhenie_knopki=0;
284
}
285
}
286
287
288
void
pusk_constant()
289
{
290
if
(analogRead(knopka3) == 0)
291
{
292
vihodState = 0;
293
delay(5);
294
}
295
else
296
{
297
vihodState = 1;
298
299
}
300
digitalWrite(vihod, vihodState);
301
}
сорри, коментарии лень писать, в принципе все понятно тут. но если что спрашивайте
d13lider, а можно у Вас проконсультироваться по точеченой сварке? Вы специалист или просто девайс для кого-то другого делаете?
НЕ очень хорошо.Чкрез некоторое время подгорят контакты. При всём этом нет функции "автозапуск" хотя для начального этапа можно и так. Молодец что осилил с программой. "" МОЛОДЕЦ""
Почитай пост ,,180 ,, сайт про сварку.
НЕ очень хорошо.Чкрез некоторое время подгорят контакты. При всём этом нет функции "автозапуск" хотя для начального этапа можно и так. Молодец что осилил с программой. "" МОЛОДЕЦ""
На этом реле споттер уже 2 года работает, только без электроники, а принудительно, а вы можете сказать как автопуск сделать? Поограммно знаю, знаю что на вторичку цеплять, а вот как аппаратно реализовать?
d13lider, а можно у Вас проконсультироваться по точеченой сварке? Вы специалист или просто девайс для кого-то другого делаете?
Занимаюсь кузовщиной сам
Почитай пост ,,180 ,, сайт про сварку.
скиньте ссылочку)
Вопрос собственно, такой.
Сварщик я никакой. Но свой дом, который я недавно построил требует много всего. Купил инвертор, потренировался, сварил несколько изделий, которыми очень горжусь - баскетбольную "баншню" для внуков, распорку для подвески гамака, мангал, несколько полок в кладовке и лаги на забор наварил к столбам. Вот собственно и весь опыт. Все эти изделия получились вполне симпатичными, но времени я на них тратил ... жуть.
Со временм захотелось варить и что-то мелкое, но неудобно и устал швы зашлифовывать. Прочитал, что для мелких изделий лучше использовать либо автомат, там аккуратненькие ровные шовчики, либо точечную. Пока не купил девайсов, но вот терзают смутные сомнения. Есть подозрения, что точечная - это для узкого круга работ, типа листы меж собой соединять - т.е. не для меня. С автоматом тоже неясно - я не понимаю как оно работает и для каких это работ.
У моих работ нет никакой специфики - просто общехозяйственные вещи типа "для дома для семьи".
Можете посоветовать что мне приобрести и освоить, чтобы было наиболее универсально. Покупать всё - ну я же не профи, зачем мне, только валяться будет.
Вопрос собственно, такой.
Сварщик я никакой. Но свой дом, который я недавно построил требует много всего.
В общем не автомат а полуавтомат, это такой сварочный варит проволокой с угекислотой, т. Е. Надо проволку и баллон углекислоты, шов ровный получается, варить сможет любой, но это в основном для тонкого металла, но и толстый можно, стоит дороже чем обычная, но конечно удобнее, я когда варю толстый метал все равно варю электродами, надежнее, а контактная сварка в основном для автомобилей, т. Е. Металл толщиной не более 1-2мм, листовой так что инвертор я считаю для дома лучше всех
Завтра про все сварки сниму видео и покаду плюсы и минусы
websvarka.ru Форум сварщиков Вебсварка--О сварке в общем-- Изделия и поекты--Контроллер точечной сварки(споттера)
websvarka.ru Форум сварщиков Вебсварка--О сварке в общем-- Изделия и поекты--Контроллер точечной сварки(споттера)
что то там ужас вообще. в первичку подают 220В на 10% мощности с помощью симистора и считают на вторичке импульсы с помощью оптосимистора. если они пропадают то типа пошел автостарт. может как то проще организовать...
здравствуйте, пришлите пожалуйста эмейл. я вам ссылку на видео кину про сварочные
.
Всем привет! Вопрос про "авторежим" удалось реализовать или нет?
Всем привет! Вопрос про "авторежим" удалось реализовать или нет?
автостарт? пока нет((( нет времени совсем. работы много пошло на споттере. пока на кнопке хватает. задумка такая, сделать диммер который будет постоянно давать какой-то процент мощности на первичку, и читать оптосимистором есть ли импульсы, когда вторичка замыкается пропалает сигнал на первичке, и идет сигнал на автостарт. потом естественно полная мощность появляется не первичке и стабилитронгом сглаживать эту полную мощность через высокоомный резистор. думаю как то так.
Кто-нибудь пробовал код для трех разрядов из этой темы. Для двух все работает. Гружу любой из этой темы для трех разрядов - показывает какую-то ерунду. Показывает нормально, только если все три цифры одинаковые.