Например TDA7294

Форум РадиоКот • Просмотр темы - Регулятор скважности на Atmega8
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб мар 07, 2026 06:52:30

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 42 ]    , 2,  
Автор Сообщение
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Пн янв 26, 2026 23:19:51 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Так какой смысл выкладывать лишь часть исходника без конкретного описания задачи и желать по сути "сделайте за меня ...."?
vda67 писал(а):
...
Так вот значение OCR2 меняется от 255 до 0 с дискретностью 1. ...

Допустим начальное значение в OCR2 заносит АЦП.
запуск таймера должно дать прерывание
Что и с каким интервалом вызывает изменение значения OCR2?
и так далее...
:wink:


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Вт янв 27, 2026 13:18:19 
Друг Кота

Карма: 1
Рейтинг сообщений: 91
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8998
Откуда: .ru
Рейтинг сообщения: 0
я бы для начала переписал код в нормальный читаемый вид...
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Вт янв 27, 2026 13:56:46 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Чтобы переписать надо сначала самостоятельно обычным языком задачу четко описать.
Затем документацию на МК (и прочую, применяемую в проекте матчасть) внимательно перечитать.
Затем снова к словесной задаче вернуться и провести ее реализацию с помощью известного компилятора и данных о матчасти.
8)
А тут какая то мешанина с непонятными исходными и средствами получения результатов...
Да еще как оказывается это всего лишь "выкусь" какой то части другого проекта...
:sleep:


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Вт янв 27, 2026 17:17:43 
Друг Кота

Карма: 1
Рейтинг сообщений: 91
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8998
Откуда: .ru
Рейтинг сообщения: 0
Да. Это кусок кода. По нему не ясно как это должно работать.
:roll:


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Вт янв 27, 2026 17:39:46 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2941
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18992
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
есть у нас такой раздел - "Чистилище".
если автор темы не хочет давать полную информацию, я, думаю, могу эту тему отправить в ту "мусорку".

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


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Чт янв 29, 2026 11:01:49 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Посмотрим, что vda67 ответит на предложение выложить полное словестное описание задачи.
Пока я вижу в его вопросах сбор вариантов решений для своих задач с разных сайтов вместо самостоятельной разработки конструкции.
Зачем к примеру вместо простой функции запуска счетчика в ранее выбранном режиме запихивать функцию с возможностью смены настроек режимов таймера при каждом последующем запуске? Да и обзор режимов таймера по даташиту похоже не делался (или преднамеренно "замутнялся" чтоб никто не догадался чего делается и "супердевайс" в коммерческий оборот не пустил)...
:tea:


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Ср мар 04, 2026 14:47:15 
Родился

Зарегистрирован: Ср авг 28, 2024 12:50:05
Сообщений: 14
Рейтинг сообщения: 0
Да я в больницу попал поэтому не входил на форум

Схема еще не до конца доделана а принцип регулирования фазы включения симмистора в зависимости разности измеренного значения от PC0 и константы.
если PC0 < константы то OCR2 уменьшается и если PC0 > константы то OCR2 увеличивался и срабатывание прерывания от таймера изменяли состояние PC4

Изначально OCR2 255

Я почему обратился на PC4 изменения скважности скачками не плавно не мог понять точему.

А инициализация таймера при запуске это пробный код из уроков программирования.
Не судите строго.

Должно получится регулятор давления с защитами от кз на выходе и режим плавного пуска.

Пробовал частотник но он не работает с однофазными конденсаторными двигателями.


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Ср мар 04, 2026 15:19:07 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Так где гарантия, что измеренное значение будет "плавно" изменяться?
Это только вручную вращая потенциометр можно узреть (и то, ежли рука не дрогнет).
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Ср мар 04, 2026 18:03:48 
Родился

Зарегистрирован: Ср авг 28, 2024 12:50:05
Сообщений: 14
Рейтинг сообщения: 0
Да вы правы имитация датчика пока с помощью резистора.
В протеусе тоже с помощью резистора в живую с помощью подстроечника

Времени таймера не хватало на 8,5 мс выдавал 7,2мс поставил задержку 0,6мс она и вызвала сбои
пришлось разделить сигнал от PC814 на два входа PD2 и PD3 прерывание один на передний второй на спадающий получилось примерно 0,5 мс.
В промежутке дал запрет таймеру вроде получилось и в протеусе и в живую.
теперь нужно замедлить время изменения OCR2 боюсь что если воспользуюсь делеем скачки опять появятся

Или при использовании делая контролер стоит пока идёт задержка и когда приходит прерывание бросает всё обрабатывает его и дальше возвращается к программе?


Последний раз редактировалось vda67 Ср мар 04, 2026 18:19:07, всего редактировалось 1 раз.

Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Ср мар 04, 2026 18:11:05 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
А как к тому же расчет суммы и разности делается?
Исходно беззнаковый байт константы и какая то величина данных.
Вполне может иметь место "вылет за границы разумного" с искажением конечного результата.
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Чт мар 05, 2026 05:49:59 
Родился

Зарегистрирован: Ср авг 28, 2024 12:50:05
Сообщений: 14
Рейтинг сообщения: 0
С АЦП байт типа char сравнивается с константой типа char дальше если константа больше то Tz-1, если константа меньше то Tz+ 1 и если константа и с АЦП байт равны то остаётся без изменения Tz при запуске таймера в OCR2 записывается Tz


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Чт мар 05, 2026 12:50:45 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
+/-1 проходят и через 0 и через 0хFF оба варианта можно считать некорректными и соответственно исключить.
Проверить корректность момента перезаписи данных в регистр OCR2 - не все режимы могут подходить для задачи при произвольном моменте смены информации.
АЦП не 8 разрядный - следовательно или шум поймает или будет более грубое значение давать.
При том, что еще вопрос в фиксации значения с потенциометра может иметь место - непрерывно следим или только при фиксации очередного отклонения от предыдущего значения...
Да и сам алгоритм... "значение" может заметно и долго отличаться от "константы" и все это время идет изменение по единичке... или другая крайность если сигнал "значения" будет меняться быстрее, чем проводится обработка (частота опросов АЦП), то вполне вероятно и появление "шараханий" - к примеру от +1 сразу в -1 и обратно...
Вариантов много... Ни схемы, ни программы... ни описания... похоже бедный таймер тут абсолютно не при делах...
Проще для начала программный задатчик - сканер сделать. А уже после отладки программой перейти к выяснению следующей точки.
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Чт мар 05, 2026 18:40:18 
Родился

Зарегистрирован: Ср авг 28, 2024 12:50:05
Сообщений: 14
Рейтинг сообщения: 0
Согласен да может переваливать для этого я сделал ограничения чтобы не выше 255 и не ниже 1.
АЦП я беру только верхний байт
Непрерывно следим за двумя каналами РС0 и РС1 Их выводим на дисплей 1602
Схемы на нарисованной нет только только в куски в протеусе целиком схему протеус не берёт в ошибку вылетает кусками берёт
Исходник программы могу выслать только не для общего обозрения ато вдруг смеяться будут и лажать куда мол лезешь
В регистр OCR2 запись происходит после запуска таймера от прерывания по PD2 по спаду
Значение АЦП я жду While пока фраг в 0 не станет
Значения в протеусе на дисплее стоят отлично в живую дёргаются наверно слишком быстро информация меняется надо частоту процессора понизить с 8 до 4


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Чт мар 05, 2026 19:00:33 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Самое вероятное - выбран неверный алгоритм обработки.
Но тут уж самому выбирать надо по имеющейся литературе по автоматике/регуляторам под восприятие условий задачи.
Качественное описание заметно решению поможет. Но тут уже другой вопрос обсуждать надо,а не работу со счетчиком.
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Чт мар 05, 2026 19:03:29 
Друг Кота

Карма: 1
Рейтинг сообщений: 91
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8998
Откуда: .ru
Рейтинг сообщения: 0
а что тут вообще делают ? я так и не понял... :dont_know:
остановились на куске кода...

Спойлер
Код:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>// подключаем библиотеку

void init_interrupt(char YROVEN) // настройка прерывания
{
   GICR|=(1<<INT0); // включаем прерывания
   MCUCR|=((YROVEN & 1)<<ISC00)|((YROVEN >>1 & 1)<<ISC01);//устанавливаем тип срабатывания
   // 1-Любое изменение уровня на выводе INT0, 2-Нисходящий фронт сигнала (смена 1 на 0) на выводе INT0
   //3-Восходящий фронт сигнала (смена 0 на 1) на выводе INT0, 0- Нижний уровень на выводе INT0
}
void int_StopTimerT2(void)
{
   TCCR2 = 0b00000000;
}

void int_TimerT2(char delitel, char rejim_taim,char rejim_OC2,char rejim_foc2)
// Настройка таймера

{
   TCNT2 = 0x00;//обнуляем счетчик таймера Т2
   TCCR2 = 0x00; // Сброс регистра конфигурации таймера Т2
   TCCR2|=((delitel >>2 & 1)<<CS22)|((delitel >>1 & 1)<<CS21)|((delitel & 1)<<CS20)
   // Установка делителя: 0-Источника тактирования нет таймер остановлен,
   // 1-Тактовая частота МК, 2-Тактовая частота МК/8, 3-тактовая частота МК/32,
   // 4-Тактовая частота МК/64, 5-Тактовая частота МК/128, 6-Тактовая частота МК/256,
   // 7-Тактовая частота МК/1024.
   |((rejim_taim >>1 & 1)<<WGM21)|((rejim_taim & 1)<<WGM20)//Режим работы таймера/счётчика
   // 0-Нормальный режим счётчика, 1-ШИМ с коррекцией фазы,
   //2- Сброс таймера при совпадении регистров OCR2 и TCNT2 (CTC) и 3-Быстрая ШИМ (Fast PWM).
   |((rejim_OC2 >>1 & 1)<<COM21)|((rejim_OC2 & 1)<<COM20)
   // Режим работы вывода OC2: 0-Вывод ОС2 отключён от таймера/счётчика,
   //1- Состояние вывода меняется на противоположное при совпадении TCNT2 и OCR2
   //(только в режимах Normal и CTC)
   //2-На OC2 устанавливается "0" при совпадении TCNT2 и OCR2
   // и устанавливается "1" при сбросе счётчика,
   //3-На OC2 устанавливается "1" при совпадении TCNT2 и OCR2
   //и устанавливается "0" при сбросе счётчика.
   |((rejim_foc2 & 1)<<FOC2);//устанавливаем тип срабатывания
   // предназначен для принудительной установки логического уровня на выходе OC2.
   // Он работает только для режимов Normal и CTC. При установке бита FOC2 в единицу
   //состояние выхода меняется в соответствии со значениями битов COM21 и COM20.
}
void int_RazPrerT2(char Kakoe)//разрешения прерываний
{
   TIMSK &=0b00111111;// сброс прерываний таймера Т2
   TIMSK|=((Kakoe >>1 & 1)<<OCIE2)|((Kakoe & 1)<<TOIE2);
   //0-Все прерывания запрещены, 1-Разрешает прерывание по событию переполнение,
   //2-Разрешает прерывание по событию совпадение, 3-Разрешает прерывания по обоим событиям
   // sei();// Разрешение работу прерываниям
}


void int_pcb(void)
{
   DDRD = 0b11110011;//PD0 PD1  PD4 PD5 PD6 PD7  — настраиваем ножки на выход PD2 PD3 - Вход
   PORTD = 0b00001100;//РD2 PD3 — подключаем подтягивающие резисторы
   DDRC = 0b00110000;   // Конфигурируем вывод порта PC0-PC3 как вход и PC4 PC5 как выход
}

ISR(INT0_vect)// прерывание по ножке PD2
{
   PORTC &= ~(1 << PC4);// Устанавливаем 0 на его выходе на линии 4 порта C
   _delay_ms(0.6);
   int_TimerT2(6,2,0,0);//запукаем таймер Т2
   OCR2 -=1;
   
}

ISR (TIMER2_COMP_vect) // Если произошло прерывание по совпадению таймера Т2
{
   
   if(OCR2 <1)
   {
      PORTC &= ~(1 << PC4);// Устанавливаем 0 на его выходе на линии 4 порта C
   }
   else
   {
      PORTC |=_BV (PC4); //Устанавливаем 1 на  выходе PC4
   }
}






int main(void)
{   
   int_pcb(); //Настройка портов
   sei();// Разрешение работу прерываниям
   init_interrupt(3); // Включение прерывания по входу PD2
   int_RazPrerT2(2);//разрешения прерываний от таймера Т2

 
    while(1)
    {
     _delay_ms(50); // ждем 0.005 сек.

    }
}

а дальше ?))


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Чт мар 05, 2026 19:17:50 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Насколько я понял у вопрошающего есть некое устройство с компрессором и датчиком давления...
И ему хочется за счет ШИМ регулятора управлять компрессором для поддержания стабильных показаний датчика...
К сожалению оказалось, что в реале железо ведет себя не так, как он задумал...
Крамолу в поведении макета автор предположил в работе таймера ( о чем и начальный вопрос задал)...
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Пт мар 06, 2026 10:29:52 
Родился

Зарегистрирован: Ср авг 28, 2024 12:50:05
Сообщений: 14
Рейтинг сообщения: 0
Не шим а ПИД регулятор и не компрессор а скважный насос


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Пт мар 06, 2026 11:09:22 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15500
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Вот там и проблемы искать надо.
Таймер всего лишь честно тот ШИМ сигнал выдает, который ему указали.
А вот принцип того,как определяются те "указания" и дает возникающие проблемы.
Так что выясняйте, чего там с алгоритмами Вашего ПИД "не по бумажной теории"...
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Пт мар 06, 2026 12:22:48 
Родился

Зарегистрирован: Ср авг 28, 2024 12:50:05
Сообщений: 14
Рейтинг сообщения: 0
Не всё наоборот как раз получилось в протеусе стало плавно меняться в железе тоже только осталось дребезг с ацп убрать
Интересно сколько раз ацп успевает замерить за 10 мс

Надо как-то синхронизацию сделать


Вернуться наверх
 
 Заголовок сообщения: Re: Регулятор скважности на Atmega8
СообщениеДобавлено: Пт мар 06, 2026 14:57:10 
Друг Кота

Карма: 1
Рейтинг сообщений: 91
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8998
Откуда: .ru
Рейтинг сообщения: 0
в соседней теме мы делали радиоуправление на Atmega8.

viewtopic.php?f=28&t=185219

там и дребезг с ацп убирали... с помощью гистерезиса...
и синхронизацию делали через буферизацию...
и там же измеряли сколько раз ацп успевает замерить... у нас 70 микросекунд измеряет ацп в Atmega8.
и т.д. и т.д.
СпойлерИзображение

:tea:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 42 ]    , 2,  

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y