Софтстарт для усилителя
-
Johnson1496
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Сб май 02, 2015 10:06:21
Софтстарт для усилителя
Добрый день, уважаемые коты и котята.
Прошу помощи, так как сильно хромаю в пользовании микроконтроллерами в народном хозяйстве. Суть проблемы:
- имеется усилитель на прямонакальных лампах по нынешним временам стоящих не по-детски, поэтому нужно некое устройство на Тинни13 (много их у меня), которое:
1. При подаче питания на устройство на всех выходах устанавливается 0;
2. При подаче на один из входов 1 от механического включателя (желательна защита от дребезга):
- подает на один из входов/выходов 1;
- через 5 сек появляется 1 на втором выходе;
- через 30 сек появляется 1 на третьем выходе;
- через 30 сек. Появляется 1 на четвертом выходе;
при этом 1 с остальных выходах не снимаются
3. При снятии 1 с входа/выхода (выкл):
- на четвертом выходе 1 сменяется на 0;
- через 30 сек появляется 0 на третьем выходе;
- через 30 сек появляется 0 на втором выходе.
Программу хотелось бы на ассемблере или С с пояснениями для даунов
Прошу помощи, так как сильно хромаю в пользовании микроконтроллерами в народном хозяйстве. Суть проблемы:
- имеется усилитель на прямонакальных лампах по нынешним временам стоящих не по-детски, поэтому нужно некое устройство на Тинни13 (много их у меня), которое:
1. При подаче питания на устройство на всех выходах устанавливается 0;
2. При подаче на один из входов 1 от механического включателя (желательна защита от дребезга):
- подает на один из входов/выходов 1;
- через 5 сек появляется 1 на втором выходе;
- через 30 сек появляется 1 на третьем выходе;
- через 30 сек. Появляется 1 на четвертом выходе;
при этом 1 с остальных выходах не снимаются
3. При снятии 1 с входа/выхода (выкл):
- на четвертом выходе 1 сменяется на 0;
- через 30 сек появляется 0 на третьем выходе;
- через 30 сек появляется 0 на втором выходе.
Программу хотелось бы на ассемблере или С с пояснениями для даунов
- Реклама
Re: Софтстарт для усилителч
1% из 99% что Ваша хотелка будет реализована в данном разделе форума.
P.S. с AVR-ами не дружу
P.S. с AVR-ами не дружу
Для связи email: risctronix собака gmail.com
Re: Софтстарт для усилителч
Код: Выделить всё
#define F_CPU 1200000
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
uint8_t i;
void delay_s(uint8_t s) {
while (s) {
s--;
_delay_ms(1000);
}
}
int main() {
DDRB = (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4);
while(1) {
if (PINB & (1 << PB0))
i++;
else
i = 0;
if (i >= 250) {
PORTB |= 1 << PB1;
delay_s(5);
PORTB |= 1 << PB2;
delay_s(30);
PORTB |= 1 << PB3;
delay_s(30);
PORTB |= 1 << PB4;
while (PINB & (1 << PB0));
PORTB &= ~(1 << PB4);
delay_s(30);
PORTB &= ~(1 << PB3);
delay_s(30);
PORTB &= ~(1 << PB2);
}
}
}
-
Johnson1496
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Сб май 02, 2015 10:06:21
Re: Софтстарт для усилителч
Спасибо откликнувшимся! На выходных постараюсь отмакетировать
Re: Софтстарт для усилителя
Как вариант. На ассемблере. 
- Реклама
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Софтстарт для усилителя
[uquote="Johnson1496",url="/forum/viewtopic.php?p=3817693#p3817693"]...сильно хромаю в пользовании микроконтроллерами...[/uquote]
Фьюзы оставить заводские.NStorm писал(а):Код: Выделить всё
#define F_CPU 1200000 ...
Docendo discimus
-
Johnson1496
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Сб май 02, 2015 10:06:21
Re: Софтстарт для усилителя
akl,
Спасибо президенту, этот вариант проверю точно в ближайшее время.
Спасибо президенту, этот вариант проверю точно в ближайшее время.
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Софтстарт для усилителя
а как поступать, если выключил раньше окончания процесса включения?
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Софтстарт для усилителя
Софтстарт - это я понимаю, а выключение тоже ступенчато - это не излишне ? Или не ?
-
Самсусамыч
Re: Софтстарт для усилителя
[uquote="Johnson1496",url="/forum/viewtopic.php?p=3817693#p3817693"]поэтому нужно некое устройство на Тинни13 (много их у меня), которое:[/uquote]
Фьюзы прошивать не нужно, если МК новые (тактируется на заводских установках).
Прошивка: Схема:
Фьюзы прошивать не нужно, если МК новые (тактируется на заводских установках).
Прошивка: Схема:
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Софтстарт для усилителя
[uquote="Самсусамыч",url="/forum/viewtopic.php?p=3818459#p3818459"]...[/uquote]
Исходники выложить постеснялись?
Исходники выложить постеснялись?
-
Самсусамыч
Re: Софтстарт для усилителя
Я пишу на АВ (Algorithm Builder). На форуме единицы кто понимает данный язык программирования.
Если ТС пожелает размещу и исходник.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Софтстарт для усилителя
ТС, в последнем пункте что происходит с первым выходом?
Последний раз редактировалось Demiurg Чт мар 26, 2020 12:50:35, всего редактировалось 1 раз.
Re: Софтстарт для усилителя
Прокомментирую свой прошлый код. Реализовывал его тупо дословно со слов ТС.
Никаких ситуаций, кроме "в лоб" описанной ТС не предусмотрено. Если включить и пока идет включение выключить - включение продолжится до конца и только потом пойдет выключение.
Готовый HEX:
:100010000FC00EC011241FBECFE9CDBF20E0A0E667
:10002000B0E001C01D92A136B207E1F710D033C095
:10003000E7CF882359F081502FE739EA93E0215028
:1000400030409040E1F700C00000F3CF08958EE10A
:1000500087BBB09B06C0809160008F5F809360007B
:1000600002C010926000809160008A3F90F3C19AB4
:1000700085E0DFDFC29A8EE1DCDFC39A8EE1D9DF53
:10008000C49AB099FECFC4988EE1D3DFC3988EE1B5
:0A009000D0DFC298DECFF894FFCF56
:00000001FF
Спойлер
Код: Выделить всё
#define F_CPU 1200000 // Поясним прошивке, что частота МК 1.2МГц (настройки по умолчанию)
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
uint8_t i; // Переменная для счетчкика
void delay_s(uint8_t s) { // Функция задержки на s секунд. Циклично по 1000 мс будет считать, т.к. функция задержки в мс имеет свои ограничения
while (s) {
s--;
_delay_ms(1000);
}
}
int main() {
DDRB = (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4); // Переведем порты PB1-4 в режим выхода
while(1) { // Начинаем бесконечный цикл
// Антидребезг
if (PINB & (1 << PB0)) // Если на входе PB0 лог. 1, то увеличиваем значение i на 1.
i++;
else // иначе сбрасываем i до 0.
i = 0;
// Если антидребезг выше натикал 250 (это будет порядка 1-3 мс, достаточно чтобы исключить дребезг), то начинаем цикл "включения"
if (i >= 250) {
PORTB |= 1 << PB1; // Переводим порт PB1 в лог1.
delay_s(5); // Ждем 5 с
PORTB |= 1 << PB2; // Переводим порт PB2 в лог1.
delay_s(30); // Ждем 30 с
PORTB |= 1 << PB3; // Переводим порт PB3 в лог1.
delay_s(30); // Ждем 30 с
PORTB |= 1 << PB4; // Переводим порт PB4 в лог1.
while (PINB & (1 << PB0)); // Ждем тут бесконечно пока на входе PB0 лог1
// Если дошли сюда, значит на входе PB0 появилась лог0, т.е. начинаем выключение.
PORTB &= ~(1 << PB4); // Переводим порт PB4 в лог0.
delay_s(30); // Ждем 30 с
PORTB &= ~(1 << PB3); // Переводим порт PB3 в лог0.
delay_s(30); // Ждем 30 с
PORTB &= ~(1 << PB2); // Переводим порт PB2 в лог0.
}
}
}Готовый HEX:
Спойлер
:1000000009C016C015C014C013C012C011C010C062:100010000FC00EC011241FBECFE9CDBF20E0A0E667
:10002000B0E001C01D92A136B207E1F710D033C095
:10003000E7CF882359F081502FE739EA93E0215028
:1000400030409040E1F700C00000F3CF08958EE10A
:1000500087BBB09B06C0809160008F5F809360007B
:1000600002C010926000809160008A3F90F3C19AB4
:1000700085E0DFDFC29A8EE1DCDFC39A8EE1D9DF53
:10008000C49AB099FECFC4988EE1D3DFC3988EE1B5
:0A009000D0DFC298DECFF894FFCF56
:00000001FF
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Софтстарт для усилителя
Как-то так:
Последний раз редактировалось Demiurg Чт мар 26, 2020 14:33:33, всего редактировалось 1 раз.
-
Самсусамыч
Re: Софтстарт для усилителя
[uquote="NStorm",url="/forum/viewtopic.php?p=3818632#p3818632"]Прокомментирую свой прошлый код. Реализовывал его тупо дословно со слов ТС.[/uquote]
У Вас в алгоритме четыре вывода для управления. У ТС заявлено три. Значит один лишний. ИМХО, в данном алгоритме реализовывать алгоритм антидребезга контактов смысла нет.
Дребезг контактов при данном алгоритме ни на что не влияет.
У Вас в алгоритме четыре вывода для управления. У ТС заявлено три. Значит один лишний. ИМХО, в данном алгоритме реализовывать алгоритм антидребезга контактов смысла нет.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Софтстарт для усилителя
В начальном сообщение чётко прописано. Значит пусть автор чётко выскажется. Ждём его.
-
Самсусамыч
Re: Софтстарт для усилителя
О чём?Значит пусть автор чётко выскажется
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Софтстарт для усилителя
[uquote="Johnson1496",url="/forum/viewtopic.php?p=3817693#p3817693"]1. При подаче питания на устройство на всех выходах устанавливается 0;
2. При подаче на один из входов 1 от механического включателя (желательна защита от дребезга):
- подает на один из входов/выходов 1;
- через 5 сек появляется 1 на втором выходе;
- через 30 сек появляется 1 на третьем выходе;
- через 30 сек. Появляется 1 на четвертом выходе;
при этом 1 с остальных выходах не снимаются
3. При снятии 1 с входа/выхода (выкл):
- на четвертом выходе 1 сменяется на 0;
- через 30 сек появляется 0 на третьем выходе;
- через 30 сек появляется 0 на втором выходе.[/uquote]
[uquote="Самсусамыч",url="/forum/viewtopic.php?p=3818682#p3818682"]
[/uquote]
Все-таки один вход-выход под сомнением. Вот и ждем уточнения. Пусть автор четко выскажется. Входов - столько-то, выходов - столько-то. Тогда не будет непоняток.
2. При подаче на один из входов 1 от механического включателя (желательна защита от дребезга):
- подает на один из входов/выходов 1;
- через 5 сек появляется 1 на втором выходе;
- через 30 сек появляется 1 на третьем выходе;
- через 30 сек. Появляется 1 на четвертом выходе;
при этом 1 с остальных выходах не снимаются
3. При снятии 1 с входа/выхода (выкл):
- на четвертом выходе 1 сменяется на 0;
- через 30 сек появляется 0 на третьем выходе;
- через 30 сек появляется 0 на втором выходе.[/uquote]
[uquote="Самсусамыч",url="/forum/viewtopic.php?p=3818682#p3818682"]
О чём?Значит пусть автор чётко выскажется
Все-таки один вход-выход под сомнением. Вот и ждем уточнения. Пусть автор четко выскажется. Входов - столько-то, выходов - столько-то. Тогда не будет непоняток.
-
Самсусамыч
Re: Софтстарт для усилителя
[uquote="Demiurg",url="/forum/viewtopic.php?p=3818683#p3818683"]Все-таки один вход-выход под сомнением.[/uquote]
На мой взгляд всё очевидно:
Здесь указано на какой уровень реагировать.
А это последовательность алгоритма при появлении на входе лог 1
Коианда:
и тд.
На мой взгляд всё очевидно:
Здесь указано на какой уровень реагировать.
2. При подаче на один из входов 1 от механического включателя (желательна защита от дребезга):
А это последовательность алгоритма при появлении на входе лог 1
Коианда:
Действие:- подает на один из входов/выходов 1; - это вход для "механического включателя"
- через 5 сек появляется 1 на втором выходе; - (Первый выход)
- через 30 сек появляется 1 на третьем выходе; - (Второй выход)
- через 30 сек. Появляется 1 на четвертом выходе; - (Третий выход)
и тд.
Последний раз редактировалось Самсусамыч Чт мар 26, 2020 14:25:01, всего редактировалось 1 раз.



