|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
||||||||||||||||||||||||||
Дистанционный сенсорный диммер25.10.2011, 12:56. Показов 16708. Ответов 20
Метки нет (Все метки)
Доброго всем времени суток!
Начал я недавно осваивать STM8. И дабы совместить приятное с полезным решил собрать на нем диммер, управляемый с пульта ДУ и местно сенсором. Изначально схема была для AVR, путем нехитрых манипуляций была портирована на STM8S103F3P6: http://savepic.su/499702m.gif На данный момент реализовано (в принципе, самое основное и сложное): 1. Работа с пультом: плавное вкл/выкл, регулировка яркости 2. Работа с сенсором: плавное вкл/выкл, регулировка яркости Осталось добавить (свисто-перделки): 1. Защиту от помех при определении нуля 2. Возможность перепрограммирования (под ПДУ) без снятия/разборки 3. Работа с EEPROM. 4. Функция автоотключения через заданный интервал 5. Функция иммитация присутствия. На этом пока все, но в будущем, возможно, список функций расширится. Вот на первой же свисто-перделке я пока и тормознулся. Вроде и работает, но при плавном включении (в самом начале) дает короткий импульс на полную мощность, потом все норм. Итак (пока только относящееся к делу), функции плавного вкл/выкл, регулировки якрости:
1. Определяется ноль 2. Настраивается и запускается таймер 3. Ждем от него прерываний 4. Включаем/выключаем симистр 5. Даем добро на новое определение перехода через НОЛЬ. 6. Начинаем все с начала. Сейчас, если закоментить строку в прерывании при переходе через НОЛЬ: Код: if (EnableZeroCross){ // определяем, попали ли мы в "окно" то все работает четко и без косяков. Раскоменчиваем, и имеет вспышку в начале плавного включения. У кого есть какие соображения? Прошу поделиться.
0
|
||||||||||||||||||||||||||
| 25.10.2011, 12:56 | |
|
Ответы с готовыми решениями:
20
Дистанционный включатель - ПОМОЩЬ
Дистанционный регистратор |
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 25.10.2011, 13:11 | |
|
вот тут мы довольно подробно всё обсуждали.
<a ctoss="postlink-local" href="http://forum.iosyitistromyss.ru/viewtopys.php?f=17&t=7165">viewtopys.php ?f=17&t=7165[/URL] 1. Определяется ноль 2. Настраивается и запускается таймер 3. Ждем от него прерываний 4. Включаем! /выключить симистор нельзя, он выключиться сам при проходе через ноль 5. Даем добро на новое определение перехода через НОЛЬ. 6. Начинаем все с начала.
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|
| 25.10.2011, 13:35 | |
|
Я в курсе того как работает симистр.
Открывается он у меня импульсами по 70мкС (даже чуть больше). Согласен неправильно обозвал. Надо было как-то: Окончание импульса открытие симистора. Но сути дела это не меняет.
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|
| 25.10.2011, 22:24 | |
|
Проблему удалось почти полностью решить.
Но вот как - скажу только после того, как знатоки подскажут мне: как к этой схеме подцепиться двухканальным осциллографом без ущерба для кого-либо? А конкретно: как одновременно посмотреть синусоиду в сети и сигнал на ножке МК. С учетом того, что земля у обоих каналов соединена.
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|
| 25.10.2011, 23:39 | |
|
Подключил. Посмотрел.
Вот теперь стало действительно интересно! Выставил в прерывании по ЗероКроссу выключение пина, Выставил в прерывании по третьему каналу(оконный) таймера включение пина. По идее как должно быть (я так думаю...): 1. При переходе через ноль, пин выставляется в ноль. Это событие происходит с неизменным периодом = константа. 2. В прерывании третьего канала таймера пин выставляется в единицу. Это событие тоже должно происходит с неизменным интервалом, т.к. этот канал каждый раз инициализируется постоянным числом. Т.е. по логике вещей на экране осциллографа я должен увидеть некий меиндр с постоянной, ни от чего не зависящей (сеть будем считать идеальной) скважностью. Но в реальной жизни я вижу этот меиндр, но его скважность зависит от установленной мощности лампочки! Т.е. зависит от значений двух других каналов таймера!!! КАК ЭТО ПОНИМАТЬ???
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
||||||
| 26.10.2011, 01:07 | ||||||
|
ЭТО оказалось в неверном чтении статуса регистра SR1.
Правильно надо читать его так:
Теперь "окно" работает как надо. Но косяк со вспышкой все еще остался. Будем копать дальше...
0
|
||||||
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
||||||
| 26.10.2011, 14:23 | ||||||
|
Пока до конца не разобрался. Придет Ригол разберусь досконально.
Сейчас обошел этот косяк так:
0
|
||||||
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|
| 26.10.2011, 15:47 | |
|
У кого есть какие соображения по поводу входа в режим программирования ПДУ?
Я пока хочу сделать так: 1. Кладем руку на сенсор и держим. 2. Яркость или полностью убавляется или прибавляется на всю. 3. Держим еще несколько секунду и входим в режим программирования. 4. Если свет прибавлялся на всю, программируются кнопка увеличения ярости/включения. 5. Если свет убавлялся, программируется кнопка уменьшения яркости/выключения. Таким образом время программирования конечно увеличится, но появится возможность раздельного программирования отдельных кнопок.
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|
| 05.11.2011, 01:15 | |
|
Фух... первая волна праздников почти прошла. Снова за работу!!!
У кого есть какие-нибудь идеи, отработанные алгоритмы по увеличению ресурса работы EEPROM? Пока попробую отыскать алгоритм, который мне когда-то давненько попадался в АВРовских апноутах, никто не помнит его номерок случаем? Там, если не ошибаюсь, смысл был в создании двух кольцевых буферов.
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
||||||
| 06.11.2011, 21:42 | ||||||
|
Кому на будущее может пригодиться:
0
|
||||||
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|||
| 15.11.2011, 22:12 | |||
|
Выкладываю весь проект для IARa целиком и полностью в таком виде, в котором он находится сейчас.
Так что прошу звинять, за внешний вид и малое количество комментариев. [198.36 Кб] Сорри за RAR, но в ZIP на форум не пролазит. Для тех кто не в курсе, код в таком виде выкладывается для решения возникших проблем. А именно:
CLK_DeInit(); CLK_HSICmd(ENABLE); CLK_LSICmd(DISABLE); CLK_HSECmd(DISABLE); CLK_CCOCmd(DISABLE); CLK_ClockSwitchCmd(DISABLE); CLK_FastHaltWakeUpCmd(DISABLE); CLK_SlowActiveHaltWakeUpCmd(DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _I2C, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _SPI, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _UART1, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _UART2, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _UART3, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _TIMER6, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _TIMER4, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _TIMER5, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _TIMER2, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _TIMER3, DISABLE); //CLK_PeripheralClockConfig(CLK_PERIPHERAL _TIMER1, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _AWU, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _ADC, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL _CAN, DISABLE); CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV4); // включаем делитель HSI = 16/4 = 4МГц для таймера CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV2); // включаем делитель для ядра = 4/2 = 2 МГц }Отключается все, кроме внутреннего генератора и первого таймера. Может здесь собака зарыта? В порядке эксперимента, ТСОП подключил к другому пину с отключенной подтяжкой. Посмотрим, что получится. Прошу всех желающих, распологающих какими-либо мыслями и соображениями по данной проблеме присоединяться к обсуждению!
0
|
|||
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
||
| 15.11.2011, 22:14 | ||
|
Чуть не забыл:
... AFR7 = Default CKAWUSEL = Low Speed Internal EXTCLK = External Oscillator HSECNT0 = 0 ... HSECNT7 = 0 HSITRIM = 3-bit trymming I2C = Frozen when stopped IWDG_HW = Software LSI_EN = Dysable PRSC = 16MHz to 128kHz ROP = Read-out protection disable Timer1 = Frozen when stopped Timer2 = Frozen when stopped Timer4 = Frozen when stopped UBC = Write protection disable WWDG_HALT = No Riset WWDG_HW = Software
0
|
||
|
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 550
|
|||||||
| 16.11.2011, 09:32 | |||||||
|
Привет, не смог проверить :(
Не знаю как в ИАРе, но вот эта запись
скачай прогу от стм для заливки и проверь по доке, что тебе нужно, а что нет в "конфигурационных байтах".
0
|
|||||||
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
|
| 16.11.2011, 09:40 | |
|
Значение там меняется легко.
Но вот на что его менять? Если не ошибаюсь, то на замену там предлагается только внешний генератор. Всеравно проверю, попробую изменить. Спасибо за наводку.
0
|
|
|
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 550
|
|
| 17.11.2011, 12:11 | |
|
Добрался, проверил все работает без проблем.
Попробовал твой код (как в этой "каше" разбираешься ? :)) ,то же работает.
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
||
| 17.11.2011, 15:49 | ||
ТСОП, сидящий у меня на другом пине без подтяжки, дорабатывает уже вторые сутки без косяков, посмотрим что будет. Кстати, ради интереса проводил испытания по помехам: Из той же розетки запитал ТВС с УН, где-то на 20кВ. Два стационарника (ПК) почти сразу "повесились" (бук и нетбук никак не отреагировали, чего и следовало ожидать:) Девайсу тоже было все-равно. Вывод: все проблемы заключены в самом МК. Я еще только учусь кодить, и от пинков в нужном направлении не откажусь. Обычно порядок действий такой: Составляю список задач для девайса (нередко новые задачи приходят уже во время писанины). Потом начинаю писать код, постепенно идя по всем пунктам списка. Потом, в процессе пошаговой отладки, я этот код довожу до "приятного вида".
0
|
||
|
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 550
|
|
| 17.11.2011, 17:17 | |
|
Чиркни мне на мыло скину пару книжек по стилистике кода, может зацепит :)
-- Могу оставить "твой" код на пару суток, завтра на работе прошью и оставлю включенным. Просто ты написал что да же до инициализации пина проблемы, у меня вроде все как и положено работает.
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
||
| 17.11.2011, 20:37 | ||
Потом начались проблемы. Сначала с одним пином, и почти сразу со вторым.
0
|
||
|
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 22
|
|
| 18.11.2011, 19:23 | |
|
Я вот делал на тиньке устройство плавного включения света в ванну, у меня тоже этот импульс вначале вылезал. Причем моделировал схему в протеусе, и он там тоже был. Короче, так и не смог победить, забил.
0
|
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 163
|
||||||||||||
| 19.11.2011, 01:07 | ||||||||||||
Но сейчас проблема совсем в другом, и отловить её пока никак не получается. Вчера вечером прошли вторые сутки. Устройство работает нормально (с перекинутой ножкой ТСОПа). Ради эксперимента "включил" вторую заглючившую ножку, и О ЧУДО! Она работает как ей и положено. Подождем еще. З.Ы. Под словом "включил" я подразумеваю следующее:
0
|
||||||||||||
| 19.11.2011, 01:07 | |
|
Помогаю со студенческими работами здесь
20
Дистанционный hard reset Дистанционный переключатель лвс По книге Х.Шилдта дистанционный вызов методов -rmi Дистанционный светодиодный индикатор по радиоканалу или по сети 220В? IR диммер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|