Виктрыч Опубликовано 19 часов назад Опубликовано 19 часов назад 8 часов назад, hddee сказал: только не через программный digitalWrite Поясни. У меня таймер3 периодически дергает прерывание, в котором и прописан этот digitalWrite , смотри выше. Можно как то правильней? Я только в СИ+. Вот подробнее cli(); // отключить глобальные прерывания TCCR2A = 0; // установить регистры в 0 TCCR2B = 0; OCR2A = 156; TCCR2B |= (1 << WGM22); TCCR2B |= (1 << CS20) | (1 << CS21) | (1 << CS22); TIMSK2 |= (1 << OCIE2A); sei(); // включить глобальные прерывания Ну и само. ISR(TIMER2_COMPA_vect) { // сам алгоритм Брезенхема Error_KARL -= KARL; if (Error_KARL < 0) { Error_KARL += 100; digitalWrite(PIN_KARL, 1); } else digitalWrite(PIN_KARL, 0); Error_TEN -= POW; if (Error_TEN < 0) { Error_TEN += 100; digitalWrite(PIN_TEN, 1); } else digitalWrite(PIN_TEN, 0); } Упс, тут на втором. Думаю не суть. Так то второй обычно занят сервой. Что подвернулось. Дорога к обеду ложка, К ночи дорог унитаз.
leon013 Опубликовано 18 часов назад Автор Опубликовано 18 часов назад 11 часов назад, hddee сказал: нельзя трансформторы и моторы накачивать полуволнами ну если нельзя, значит не накачивайте))) я вот уж почти 10 лет накачать все не могу, раз работает автономка 12 часов назад, макс54 сказал: Вот так ? Да, у меня так работает Автоматика для дистилляции и ректификации на PIC
Виктрыч Опубликовано 17 часов назад Опубликовано 17 часов назад (изменено) Кстати вспомнилось. Когда появились тиристоры чего только на них не собирали в том числе и регуляторы скорости для асинхронников. Например втрое. Простейший тиристорный регулятор с фазоимпульсом на потенциометра и кондере. Только за синхронизирован не с анода а до нагрузки. То есть с сети. Крутя круток можно настроить что бы тиристор пропускал первую положительную полуволну, затем две полуволну пропускал и включал уже четвёртую отрицательную. И так далее. Получалось некое подобие синусоиды. Само собой греющих гармоник мама не горюй, но на вентиляторе работало. Может в ряде случаев и переключать Вент? Старт-стоп же в отборе тоже переключается и терпимо. Изменено 17 часов назад пользователем Виктрыч Дорога к обеду ложка, К ночи дорог унитаз.
hddee Опубликовано 15 часов назад Опубликовано 15 часов назад (изменено) 5 часов назад, Виктрыч сказал: Поясни много писать.. как работает шим ? у ардуино есть счетчик, он тактируется от кварца, можно с делителем (регистры CSn2 CSn1 CSn0) плюс есть два регистра: первый это сравнения OCR1A , число счетчика, когда ножка перекидывается (можно выключается, можно включается) и регистр верхней границы счета ICR1, когда счетчки обнуляется, он общий для двух у наны (OCR1A, OCR1B) и трех у меги (OCR1A, OCR1B, OCR1C). Всё это работает без участия программы, вот пример от искина на вопрос "как настроить таймеры счетчики ардуино на шим в 500 Гц" void setup() { pinMode(9, OUTPUT); // Настраиваем пин 9 как выход // Очищаем управляющие регистры TCCR1A = 0; TCCR1B = 0; // Устанавливаем режим Fast PWM, где TOP задается регистром ICR1 (режим 14) // Включаем неинвертированный ШИМ на выводе OC1A (пин 9) TCCR1A = _BV(COM1A1) | _BV(WGM11); // Устанавливаем предделитель (prescaler) равный 8 и режим WGM12, WGM13 TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS11); // Вычисляем TOP для получения частоты 500 Гц: // 16 000 000 (частота МК) / (8 (предделитель) * 500 (Гц)) - 1 = 3999 ICR1 = 3999; // Устанавливаем заполнение (duty cycle) 50% // Для изменения яркости или мощности передавайте значения от 0 до 3999 OCR1A = 1999; } регистры настройки восьмибитные, биты можно задать вручную, ставя нули и единицы куда тебе надо, например TCCR1B = Bххххх000 - тактирование отключено TCCR1B = Bххххх001 - без предделителя, счетчик работает от кварца 20 или 16МГц TCCR1B = Bххххх010 - делитель 8, счетчик увеличивается на каждый 8й такт кварца TCCR1B = Bххххх011 - делитель 64 TCCR1B = Bххххх110 - делитель 256 опять вопрос искину "что делает строчка TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS11)" устанавливает в логическую единицу (1) ровно три бита: WGM13, WGM12 и CS11. Все остальные биты в регистре TCCR1B эта команда сбрасывает в ноль (0) еще раз смотри структуру TCCR1B, с предыдущей страницы /* структура битов в регистре TCCRxB ICNCn ICESn --- WGMn3 WGMn2 CSn2 CSn1 CSn0 : и так далее по даташиту: CSn2 CSn1 CSn0: предделитель частоты от процессора 0 0 0 Нет источника для тактирования (таймер/счетчик остановлен). 0 0 1 clkI/O/1 (прескалер отключен). 0 1 0 clkI/O/8 (прескалер 8). 0 1 1 clkI/O/64 (прескалер 64). 1 0 0 clkI/O/256 (прескалер 256). 1 0 1 clkI/O/1024 (прескалер 1024). 1 1 0 Внешний источник тактов, подключенный к ножке Tn. Тактовый перепад от 1 к 0. 1 1 1 Внешний источник тактов, подключенный к ножке Tn. Тактовый перепад от 0 к 1. ну и режим работы продублирую: WGMn3 WGMn2 WGMn1 WGMn0 Режим работы TOP Обновл. OCRnx TOVn установится при значении 1 0 0 0 0 Normal 0xFFFF Немедленно MAX 2 0 0 0 1 Phase Correct PWM, 8 бит 0x00FF TOP BOTTOM 3 0 0 1 0 Phase Correct PWM, 9 бит 0x01FF TOP BOTTOM 4 0 0 1 1 Phase Correct PWM, 10 бит 0x03FF TOP BOTTOM 5 0 1 0 0 CTC OCRnA Немедленно MAX 6 0 1 0 1 Fast PWM, 8 бит 0x00FF BOTTOM TOP 7 0 1 1 0 Fast PWM, 9 бит 0x01FF BOTTOM TOP 8 0 1 1 1 Fast PWM, 10 бит 0x03FF BOTTOM TOP 9 1 0 0 0 Phase and Frequency Correct ICRn BOTTOM BOTTOM 10 1 0 0 1 Phase and Frequency Correct OCRnA BOTTOM BOTTOM 11 1 0 1 0 Phase Correct PWM ICRn TOP BOTTOM 12 1 0 1 1 Phase Correct PWM OCRnA TOP BOTTOM 13 1 1 0 0 CTC OCRnA Немедленно MAX 14 1 1 0 1 Зарезервировано - - - 15 1 1 1 0 Fast PWM ICRn BOTTOM TOP искин назвал режим работы "14" потому что 1110 это 14 в десятичной системе, в табличке он 15. Биты WGMn1 WGMn0 находятся в другом регистре (TCCR1A) опять же продублирую структуру регистра А: /* структура битов в регистре TCCRxA COMnA1 COMnA0 COMnB1 COMnB0 COMnC1 COMnC0 WGMn1 WGMn0 что бы настройка работала нужно установить TCCR1A = Bхххххх10; т.е строчка из примера TCCR1A = _BV(COM1A1) | _BV(WGM11) устанавливает в логическую единицу два бита COM1A1 и WGM11, что равносильна прямому объявлению: TCCR1A = B10000010; где первые два бита в отвечают за событие на ножке МК, опять же смотрим даташит биты COMnA1 COMnA0: 0 0 Обычная работа порта как GPIO, функционал OCnx отключен. 0 1 Переключение OCnx в противоположное состояние при Compare Match. 1 0 Очистка OCnx при Compare Match (выходной сигнал сбрасывается в лог. 0). 1 1 Установка OCnx при Compare Match (выходной сигнал переходит в лог. 1). вторая пара бит BххNNхххх отвечает за счетчик OCR1B, третья пара BххххNNхх за счетчик OCR1C у меги 2560, у наны его нет. Если установить "01" то получиться генератор частоты 1000Гц, ножка будет менять значение каждый раз когда счетчик совпадает с OCR1A Ну а дальше дело техники, когда от 500Гц тебе надо регулировать вент с шагом 50Гц задаешь 0% - OCR1A = 0; 10% - OCR1A = 399; 20% - OCR1A = 799; 30% - OCR1A = 1199; .... 90% - OCR1A = 3599; 100% - OCR1A = 3999; можно через функцию case, можно математикой, при этом у наны остается свободный OCR1B, на котором можно делать ровно тоже самое, в меге еще и OCR1C Изменено 14 часов назад пользователем hddee
Виктрыч Опубликовано 12 часов назад Опубликовано 12 часов назад Многа букв. Я хотел уточнить, чем тебе не нравится, команда digitalWrite(PIN_TEN, 0); И наоборот, вызываемая, каждые 10 мс.? Дорога к обеду ложка, К ночи дорог унитаз.
макс54 Опубликовано 12 часов назад Опубликовано 12 часов назад 4 часа назад, leon013 сказал: Да, у меня так работает Проектика значит не осталось...ничего ? )
hddee Опубликовано 10 часов назад Опубликовано 10 часов назад (изменено) 2 часа назад, Виктрыч сказал: Многа букв А мне набирать столько - нормально? Можно было спасибо и не читая нажать. Дигиталврайт медленно работает, занимает много процессорного времени . Настроенный таймер работает в фоне вообще без участия программы Изменено 9 часов назад пользователем hddee
leon013 Опубликовано 10 часов назад Автор Опубликовано 10 часов назад @макс54 Дело было почти 8 лет назад, за это время я два раза менял железо и в начале лета потерял nvme на 500Гб. Что удалось найти по старым дискам, то выложил. Куски кода взяты из кусков проекта который я даже не знаю для чего был написан. Что бы вникнуть надо убить вечер на это дело, но я не горю желанием это делать, дел и так навалом... Автоматика для дистилляции и ректификации на PIC
макс54 Опубликовано 9 часов назад Опубликовано 9 часов назад (изменено) 8 часов назад, leon013 сказал: Да, у меня так работает Доброго.. вот накидал прогу ( еще пока в сыром варианте..) Скрины напруг с протеусаы Будет работать ? )) 5 минут назад, leon013 сказал: Дело было почти 8 лет назад, за это время я два раза менял железо и в начале лета потерял nvme на 500Гб. Что удалось найти по старым дискам, то выложил. Жаль... Тоже имел неосторожность потерять очень важные фалы в свое время... Посему теперь всегда дублирую инфу выносных дисках Изменено 9 часов назад пользователем макс54
макс54 Опубликовано 7 часов назад Опубликовано 7 часов назад Вообщем новости хорошие) Получилось и все работает ) Домашний вентилятор управляется и скорость меняется..мягко и приятно) Единственное что на двигуне будет небольшая вибрация (зависит от моторчика) ну и греться будет более сильнее Например : на моторе турбины-наддув отопительного котла (100 вт) вибрация есть...на домашнем вентиляторе практически нет ).. Нужно учитывать подушки вибрационные__ как то так
Виктрыч Опубликовано 7 часов назад Опубликовано 7 часов назад Картинки правильные. Может какие RC цепочки понадобятся на закрытие симистора. Но не обязательно. Упс. Опоздал. У меня как то синхронник не выключался. Пришлось параллельно лампу накаливания пристроить на безрыбье. Заодно и индикация за километр. Дорога к обеду ложка, К ночи дорог унитаз.
hddee Опубликовано 5 часов назад Опубликовано 5 часов назад (изменено) @Виктрыч есть специальные симисторы для индукционной нагрузки, они закрываются получше, правильнее конденсатор бы повесить Изменено 5 часов назад пользователем hddee
Михаил Лемуровв Опубликовано 5 часов назад Опубликовано 5 часов назад (изменено) @hddee ты зачем усы сбрил hd себе добавил? Изменено 5 часов назад пользователем Михаил Лемуровв
hddee Опубликовано 2 часа назад Опубликовано 2 часа назад @Михаил Лемуровв что бы никто не догадался ))) 1
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти