Jump to content
Михаил Якимец

Таймер ту (тди универсальный) подключение

Recommended Posts

Здравствуйте!

Монтировали кнопку открытия электрозамка на двери, бюджет был ограничен и закупили Таймер импульсов (ТИ). Точнее, купили две платы и обе работают не корректно, а именно: после нажатия кнопки (после подачи сигнала на вход ТИ) он размыкает контакты электрозамка, отсчитывает заданный интервал времени, замыкает контакты электрозамка, и может еще несколько раз сработать реле на ТИ. Т.е. кнопку нажали раз, а сработок было много. Пытались подключать диоды, но это не помогло. Проблема пропала после установки полноценного дверного контроллера СКД, но это решение не устраивает. Есть мысли, что происходят наводки в кабеле, ибо когда тестировали ТИ в офисе на столе с короткими кабелями, то система работала как надо.

А теперь вопрос: может есть способ подключить данный ТИ таким образом, чтобы избежать ложных срабатываний?

ТДИ.JPG

ТДИ2.JPG

Share this post


Link to post
Share on other sites
3 часа назад, mazzi сказал:

Способ есть.

Спасибо огромное за ответ, очень исчерпывающе!

Но я задал вопрос на форуме не в философских целях чтобы узнать само наличие способа, а для того, чтобы решить возникшую проблему с помощью знающих и опытных людей. Это ведь очевидно 

Share this post


Link to post
Share on other sites

Литиевые ХИТы Fanso: устойчивость к высоким температурам

Литиевые ХИТы для широкого круга применений, в том числе в промышленности, соответствуют требованиям современного рынка и способны работать в самых жестких условиях. Основные требования – это длительность хранения и работы, высокая удельная емкость, а также защита от воздействия таких внешних факторов, как температура и влажность. ЛХИТ превосходят по плотности энергии и нормальному напряжению другие элементы автономного питания: 2,9…3,6 В против 1,2…1,5 В

Читать статью...

Очевидно, что не видя схемы устройства и схемы подключения трудно дать более конкретный ответ.

Share this post


Link to post
Share on other sites
1 час назад, mazzi сказал:

Очевидно, что не видя схемы устройства и схемы подключения трудно дать более конкретный ответ.

А тут полностью согласен, мой косяк. Схема ниже.

В дежурном режиме на Электрозамок подаётся напряжение от Блока питания 2 и двери закрыты. После нажатия Кнопки срабатывает ТИ, снимает напряжения Электрозамка - двери открыты, считает нужный интервал времени и замыкает контакт Электрозамка. Сам ТИ питается от Блока питания 1.

Это так задумано, а на самом деле ТИ срабатывает самопроизвольно несколько раз подряд или даже срабатывает без нажатия кнопки.

СхемаТИ.JPG

Edited by Михаил Якимец

Share this post


Link to post
Share on other sites

ESP32-DevKitC-VB позволит быстро запустить ваше первое WiFi-приложение

Отладочная плата на основе одного из самых популярных WiFi-модулей Espressif ESP32-WROVER-B позволяет в самые короткие сроки запустить приложение с поддержкой беспроводных стандартов WiFi 802.11b/g/n и Bluetooth Classic/BLE. Ресурсов встроенного в модуль чипа ESP32-D0WD хватит для решения даже очень сложных задач.

Подробнее...

27 минут назад, Михаил Якимец сказал:

ТИ срабатывает самопроизвольно несколько раз подряд или даже срабатывает без нажатия кнопки

Попробуйте с SW на +12 резистор килоОм 10-20, и с SW на GND неполярный конденсатор 1-1000 нФ. Возможно будет достаточно только конденсатора. Экспериментируйте...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Andrey2
      Куплю приборы:
       
      Ротаметры Р50/20
      Пиранометры М-115М
      Реле электромагнитные 8Э18  дорого  срочно
      Кнопки командные КН-П  100шт.
       
      Пластины керамические ВК-96:
      60х48х1мм  75шт.
      60х48х0,5мм  75шт.
       
      Комплексы гидрологические ГРС-3, ГРС-3М  очень дорого  срочно
      Динамометры ДОСМ-3-500У (на 500кН)
      Интерферометры шахтные ШИ-11
      Аппараты переговорные АП-КМ
       
       
      Также покупаю любые б/у и новые электро- и радиоизмерительные приборы в СНГ. Возможен самовывоз. Предлагайте.
       
      Россия, Москва:
      Конт. тел. +7-495-374-54-18, Виктор
      Конт. тел. +7-925-667-33-89, VIBER, WHATSAPP
      Украина, Львов:
      Конт. тел. +38-050-370-91-94, Андрей
      Казахстан, Алматы:
      Конт. тел. +7-727-346-98-00
      prylad@gmail.com
      Skype: prylad

    • By кип-сервис
      В связи с закрытием склада, распродаю новые комплектующие для автоматизации: пневматика, реле, датчики, контроллеры и другое (Danfoss, Omron, Ifm, Esbe, Festo, SMC, Camozzi и др.)  Недорого! Подробности в ЛС. Цены по запросу.








    • By pozolgen
      Друзья, выручайте! Собрал я электронное реле-регулятор для своего "железного коня", но оно не работает. Делал все по шагам https://cuu.su/mMo/ - сокращенная ссылка на источник информации) , увы... Может кто поможет провести диагностику? Готов привезти по Москве куда угодно в удобное Вам время. Понимаю, что проще отдать в ремонтную мастерскую для прозвонки 8 элементов, но мы не ищем легких путей)  Заранее спасибо! 



    • By IgnatiusF
      Не могу настроить таймер 0 на работу, и даже не получается понять в чем проблема. Делаю в Proteus, так как это быстрее и нагляднее.
      Пробовал и просто по переполнению делать прерывание (WGM[1..0]  00) и по совпадению (WGM[1..0]  10; OCR0A = 0 - 255), однако прерываний нет. Перед циклом ставлю TCNT0 = 0;
      Тактирование выставляю TCCR0B (CS[2..0] 001, 100, 101).
      Прерывания TIMSK0 (OCIE0A, TOIE0) выставляю, не вызываются. Даже принудительным заносом значения в регистр TIFR0 (OCF0A, TOV0).
      Прерывание пытаюсь выполнить таким образом:
      #include <avr/interrupt.h> volatile unsigned int A = 0; ISR(TIMER0_OVF_vect) { A = 1; } ... while(1) { if (A == 1) PORTB |= (1<<0); } Proteus показывает, что вывод настроен как выход, но всегда 0;
      Конкретный код привести не могу, так как у меня не заработало совсем ничего.
      Внизу я сделал вырезку из даташита на ATMEGA328 по 0 таймеру 8-бит, и занес в один PDF файл.
      ATmega328-106-112.pdf
      Прошу помочь разобраться с таймером и прерываниями для него.
    • By mr_smit
      Вынес то что не получается в упрощенной форме в отдельный проект. Среда разработки CooCox 1.7.8, микроконтроллер STM32F103C8T6.
      Нужно раз в ~100 мсек формировать на ножке МК, например,такую последовательность:

      Стартовую длительность формирует таймер, в первом же своем прерывании по совпадению активирует DMA и дальше уже DMA по запросу таймера загружает значение CCR из массива. Что то похожее на управление светодиодами WS2812B. То что я сочинил выдает на пин:

      Но только один раз при первом вызове. При последующих вызовах данные из массива выдаются без первоначальной длительности в 150 мкс.
      Не могу найти ошибку. 
       
      #include <stm32f10x.h> #include <stm32f10x_conf.h> #include <stm32f10x_gpio.h> #include <stm32f10x_rcc.h> #include <stm32f10x_tim.h> #include <stm32f10x_dma.h> GPIO_InitTypeDef PIN; TIM_TimeBaseInitTypeDef TIM_Config; TIM_OCInitTypeDef TIM_OCConfig; DMA_InitTypeDef DMA_Setting; uint8_t Test_Buf[] = {15,30,30,30,15}; void delay_ms(uint32_t ms) { volatile uint32_t nCount; RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq (&RCC_Clocks); nCount = (RCC_Clocks.HCLK_Frequency/10000)*ms; for (; nCount != 0; nCount--); } void Init_GPIO(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); PIN.GPIO_Pin = GPIO_Pin_11; // PA11 -> TIM1 Channel4 PIN.GPIO_Mode = GPIO_Mode_AF_PP; PIN.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &PIN); } void Init_TIM_Transmit(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); TIM_TimeBaseStructInit(&TIM_Config); // настройки по дефолту TIM_Config.TIM_Prescaler = 72-1; // Запускаем таймер на тактовой частоте 1 MHz (72000000/(72-1)) TIM_Config.TIM_Period = 150-1; // Период - 150 мкс TIM_Config.TIM_ClockDivision = 0; // частоту дополнительно не делим TIM_Config.TIM_CounterMode = TIM_CounterMode_Up; // считаем вверх TIM_TimeBaseInit(TIM1, &TIM_Config); // Инициализируем TIM1 TIM_OCStructInit(&TIM_OCConfig); // настройки по дефолту TIM_OCConfig.TIM_OCMode = TIM_OCMode_PWM1; // Конфигурируем как ШИМ (выравнивание по границе) TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable; // Включаем выход TIM_OCConfig.TIM_Pulse = 0; // CCR до старта пока нулевой TIM_OCConfig.TIM_OCPolarity = TIM_OCPolarity_High; // Полярность TIM_OCConfig.TIM_OCIdleState = TIM_OCIdleState_Reset; // состояние выхода по совпадению CCR (сброс) TIM_OC4Init(TIM1, &TIM_OCConfig); // Инициализируем 4-й выход таймера, это PA11 TIM_ARRPreloadConfig(TIM1,ENABLE); // Предзагрузка периода (ARR) TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable); // Предзагрузка длины импульса CCR 4-го канала // (даем досчитать до конца и только потом значение меняется на новое) TIM_DMACmd(TIM1,TIM_DMA_CC4,DISABLE); // выключаем пока запрос к DMA от таймера TIM1 по достижении CCR) TIM_CtrlPWMOutputs(TIM1, ENABLE); // включаем выходы (это только для TIM1) TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Enable); // разрешаем таймеру управлять выводом PA11 TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // запрещаем пока таймеру генерировать прерывание по совпадению NVIC_EnableIRQ(TIM1_CC_IRQn); // разрешаем прерывания TIM_Cmd(TIM1, DISABLE); // Выключаем таймер (пока ждем) } void TIM1_CC_IRQHandler(void) // прошло 130 мкс { if (TIM_GetITStatus(TIM1, TIM_IT_CC4) != RESET) { // по совпадению TIM_ClearITPendingBit(TIM1,TIM_IT_CC4); // сбрасываем флаг прерывания TIM1 по совпадению } NVIC_EnableIRQ(TIM1_CC_IRQn); // выключаем прерывания от таймера TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // TIM1->ARR = 40-1; // устанавливаем период 40 мкс TIM1->CCR4 = Test_Buf[0]; // ширину из массива для следующего импульса DMA1_Channel4->CNDTR = 4; // длина данных для DMA на 1 меньше т.к. уже установили выше 1 элемент TIM_DMACmd(TIM1,TIM_DMA_CC4,ENABLE); // разрешаем таймеру делать запрос к DMA по совпадению CCR DMA_Cmd(DMA1_Channel4, ENABLE); // включаем DMA } void Init_DMA(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); // включаем тактирование DMA1 DMA_Setting.DMA_PeripheralBaseAddr = (uint32_t) &TIM1->CCR4; // куда копировать DMA_Setting.DMA_MemoryBaseAddr = (uint32_t) &Test_Buf[1]; // что копировать DMA_Setting.DMA_DIR = DMA_DIR_PeripheralDST; // копируем в периферию (Peripheral Destination, точка назначения - периферия) DMA_Setting.DMA_BufferSize = 0; // количество передаваемых данных DMA_Setting.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // адрес периферии постоянный DMA_Setting.DMA_MemoryInc = DMA_MemoryInc_Enable; // адрес в памяти увеличиваем DMA_Setting.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; // периферия 16 бит DMA_Setting.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; // массив 8 бит DMA_Setting.DMA_Mode = DMA_Mode_Normal; // режим обычный DMA_Setting.DMA_Priority = DMA_Priority_Medium; // приоритет средний DMA_Setting.DMA_M2M = DMA_M2M_Disable; // MemoryToMemory откл. DMA_Init(DMA1_Channel4, &DMA_Setting); // TIM1_CH4 относится к 4-му каналу DMA1 DMA_ITConfig(DMA1_Channel4, DMA_IT_TC, ENABLE); // настраиваем прерывание по окончанию передачи NVIC_EnableIRQ(DMA1_Channel4_IRQn); // включаем прерывания от 4-го канала DMA1 DMA_Cmd(DMA1_Channel4, DISABLE); // пока выключаем 4-ый канал DMA1 } void DMA1_Channel4_IRQHandler(void) // закончили передавать { if (DMA_GetITStatus(DMA1_IT_TC4) != RESET) { // по совпадению DMA_ClearITPendingBit(DMA1_IT_TC4); // сбрасываем флаг прерывания DMA1 Channel4 transfer complete } if (TIM_GetITStatus(TIM1, TIM_IT_CC4) != RESET) { // по совпадению TIM_ClearITPendingBit(TIM1,TIM_IT_CC4); // сбрасываем флаг прерывания TIM1 на всякий случай } TIM1->ARR = 150-1; // вновь настраиваем на период 150 мкс TIM1->CCR4 = 0; // и ждем следующею передачу TIM1->CNT = 0; // TIM_DMACmd(TIM1,TIM_DMA_CC4,DISABLE); // всё выключаем DMA_Cmd(DMA1_Channel4, DISABLE); // TIM_Cmd(TIM1, DISABLE); // TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Disable); } int main(void) { Init_GPIO(); Init_TIM_Transmit(); Init_DMA(); delay_ms(1000); while(1) { TIM1->CCR4 = 130-1; // до включения линия удерживается в 0 (CCR=0) TIM_ITConfig(TIM1, TIM_IT_CC4, ENABLE); TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Enable); TIM_Cmd(TIM1, ENABLE); delay_ms(100); } }  
      TEST_TIM_DMA.zip
×
×
  • Create New...