Поиск сообщества
Показаны результаты для тегов 'таймер'.
Найдено: 47 результатов
-
Здесь, в теме, я коротко информировал о том, что когда-то, давным-давно (в начале 80-х прошлого века), когда пленочная фотография была ещё востребованной, я сваял аналоговый таймер (реле времени) для микрофильмирования с помощью электромагнитного спуска к фотоаппарату "Зенит" (для печати было другое, цифровое, еще на 172-й серии). В нынешние времена, с завершением "эры" пленочной фотографии, надобность в подобном таймере сократилась до небольшой ниши экспонирования фоторезиста, но полностью так и не пропала. Именно поэтому я и рискнул описать принцип его реализации. "Фишкой" того таймера была нелинейная шкала выдержек. В широко распространенных и в то время (да и сейчас) таймерах шкала выдержек равномерная, из-за чего (к примеру) выдержка длительностью 1 с отличается от 2 с в два раза, а 9 с от 10 с - всего на 11%. Поэтому пересчет выдержки при изменении ее длительности приходилось делать "в уме", естественно, приближенно. Поэтому диапазон выдержек был разбит на 5 троек значений + еще одно, всего 16 (в наличии был пакетник на столько положений). Каждое следующее значение отличалось от предыдущего в 1,26 раза (корень кубический из двух). Дискретность при этом получилась, равной 1...1,26...1,59...2...2,52...3,18...4... и т.д. до 32 с. Она была подсказана моим хорошим приятелем - экспертом-криминалистом в области фотографии и подтвердилась в процессе эксплуатации. Дискретность 1...2...4...8... являлась слишком грубой. Обдумывалась дискретность 1,41 (корень квадратный из 2), но была признана тоже грубоватой, а вот 1,19 (корень 4-й степени из 2) - излишне дробной. Точность отработки выдержки аналоговым способом составляла (на глазок) примерно ±10%, что меня более-менее удовлетворяло, хотя уже тогда возникала мысль, как реализовать эту схему на цифровой компонентной базе. Однако, до реализации в "железе" дело так и не дошло, поскольку "эра" пленочной фотографии взяла и подошла к концу. А идея осталась... Вот ее-то я и хочу описать, как реализовать подобное в цифровом виде. Естественно, "та" схема за давностью лет не сохранилась, поэтому для данной записи я вчерне восстановил ее по памяти (в виде ФУНКЦИОНАЛЬНОЙ схемы, т.е., не привязанной ни к какой серии логики, ТТЛ либо КМОП!). При этом не отображены некоторые нюансы конкретной реализации, которые будут зависеть от типа использованной логики. Важна ведь не сама схема, как таковая, а ПРИНЦИП ее функционирования! Для знакомых с микроконтроллерами (сам я, к сожалению, уже "опоздал") не составит особого труда реализация алгоритма, на котором базируется схема, на МК. Если найдутся желающие - готов за отдельную, весьма умеренную плату даже изготовить такой таймер "в железе". Либо, что обойдется дешевле, крякнуть и доработать схему до принципиальной на желаемой компонентной базе (кроме МК, естественно). Итак, функциональная схема такого таймера: Главным "действующим лицом" является триггер "Т", управляющий ключевым каскадом на транзисторе VT1. Его нагрузкой показано реле К1, коммутирующее сетевую нагрузку. Вместо него можно применить (если финансы позволят) либо оптореле, либо связку из оптрона серии МОС30хх + симистор. Хотя и ПМСМ реле более, чем достаточно. Пара сотен/тысяч коммутаций оно по-всякому выдержит. Запуск триггера производится динамически (по фронту входного сигнала) на сход С, а сброс в ноль - статически по входу R, который имеет преимущество перед запуском. Генератор G1 на выходе формирует тактовую частоту 100 Гц, которая двоичным счетчиком СТ2.1 делится на одно из трех значений: 100, 126 или 159, выбираемое мультиплексором MUX1 в зависимости от положения многопозиционного переключателя SB. Эта уже низкая частота поступает на вход двоичного делителя СТ2.2, который делит ее дальше на 2, 4, 8, 16 и 32. Можно и больше, но тогда может быть сложно найти пакетник на нужное число положений. С выхода этого счетчика выходной сигнал через мультиплексор MUX2 поступает на вход обнуления триггера Т, прекращая формирования выдержки. Отработку выдержки можно оборвать в любой момент кнопкой "Стоп". На первый взгляд схема сложновата, но реально правильно спроектированный цифровой автомат в настройке не нуждается и начинает работать сразу.
-
Начинаю знакомство с STM32 после AVRок. Решил сделать дрыганог через прерывание по таймеру. Плата Nucleo на базе STM32F446re, частота работы до 180МГц, собираю проект в CubeIDE. Для опыта решил взять таймер6 (на самом деле мне всё равно какой) и вызывать прерывания по переполнению счётчика. По даташиту, его тактирование идёт от APB1, которая работает на 45МГц, с множителем Х2 (т.е получается 90МГЦ). Прескалер выставил в 89 (т.е счёт должен идти с частотой 1 МГц), каунтер на 1 (т.е по идее я должен получать прерывания с частотой 500КГц). static void MX_TIM6_Init(void) { TIM_MasterConfigTypeDef sMasterConfig = {0}; htim6.Instance = TIM6; htim6.Init.Prescaler = 89; htim6.Init.CounterMode = TIM_COUNTERMODE_UP; htim6.Init.Period = 1; htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) { Error_Handler(); } } В обработчике прерывания вызываю смену состояния светодиода на PA5. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM6) //check if the interrupt comes from TIM1 { HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); } } Загрузив код и проверив логическим анализатором я получаю частоту 254,5Кгц. Меняя значения прескалера в меньшую сторону увеличения частоты добиться не могу (основной цикл пуст, в программе никаких вычислений кроме этого нет). Почему так происходит?
-
здрасте) может кто подскажет как воткнуть светодиодную ленту в данную схему для индикации разным цветом времени задержки после запуска реле?
-
Добрый день. Подскажите пожалуйста, как бы мне реализовать схему автоотключения (забытого включенного света). Что есть: 12v аккумулятор, LED-лента, выключатель. Хочу собрать схему, при которой питание на LED-ленту будет подаваться не более чем N-минут. Всё что находил - это схемы через мосфет и конденсатор но с тач-кнопкой, это не совсем то, т.к. необходимо срабатывание "таймера" при замыкании цепи и отключение таймера и света при размыкании цепи. Желательно, что бы потребление схемы было минимальным, а в идеале - размыкание всей цепи по таймеру.
-
Изучаю прерывания на attiny13. Пока остановился на прерываниях по переполнению. Сделал тестовый код в Atmel Studio и сразу через программатор заливаю на тиньку со светодиодом. Проблема в том что гореть он должен 10 секунд и выключаться, а горит примерно 20-23 секунды. Прошу помощи в правильном расчёте. Код ниже (пока учусь сильно не ругайтесь) : #define F_CPU 1000000 #define LED PB2 #include <avr/io.h> //#include <util/delay.h> #include <avr/interrupt.h> unsigned char work_time =384; // 1000000/1024/256=3.8 (0.026 сек) 10/0.026=384 volatile unsigned char temp =0; ISR (TIM0_OVF_vect) { TCNT0=0x00; temp ++; if (temp>=work_time) { PORTB &=~(1<<LED); //Инвертируем состояние TCCR0B=0x00 // остановка таймера cli (); //общее запрещение прерываний } } int main (void) { init(); while (1) { } } void init () { DDRB |= (1<<LED); // выход PORTB =(1<<LED); //включен TCCR0B =0x05; // установка делителя на 1024 TIMSK0 |= _BV(TOIE0); sei(); // Либо SREG |= (1<<SREG_I); //Разрешаем прерывания глобально TCNT0 = 0X00; //Обнулить счётный регистр }
- 1 ответ
-
- Attiny13
- Прерывания
-
(и ещё 1 )
C тегом:
-
Вынес то что не получается в упрощенной форме в отдельный проект. Среда разработки 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
-
Не могу настроить таймер 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 Прошу помочь разобраться с таймером и прерываниями для него.
-
Добрый день. Помогите пожалуйста. Никак не могу найти простую схему, что не впишу все одно получаю таймер на отключение или через кнопку... Делаю инкубатор для яиц, яйца нужно поворачивать 2-3 раза в сутки, у меня есть суточный таймер но у него минимум 1 минута, а мой механизм за 1 минуту прокрутит яйца 4 раза, нужно сделать примерно 15 сек. Как правильно называется такой таймер, или дайте схему. Спасибо.
-
Добрый день всем! Столкнулся с такой проблемой. Купил несколько китайских реле времени, но они по питанию на 220 В. Теперь хочу их переделать на 24В переменку, возможно кто-то уже имел дело с такой задачей... Тип таймеров AH2-Y.
- 2 ответа
-
- Реле времени
- Таймер
-
(и ещё 1 )
C тегом:
-
Всем доброго времени суток. Решил я сделать "умную" электронную сигарету на arduino. Концепция заключается в кнопочном управлении мощностью посредством ШИМ, наличии экрана, и некоторыми защитами в виде ограничения максимального времени нажатия и уход камня в сон (режим пониженного энергопотребления) после N секунд простоя. Вводные: по нажатию кнопки запускается ШИМ и управляет полевиком, но в целях защиты я хочу ограничить время выполнения кода до 7 секунд(что бы при случайном зажатии кнопки в кармане не получить травматическую ампутацию конечностей) Проблема пришла откуда не ждали - обработка нажатой основной кнопки срабатывает как попало. Нажимая кнопку обработчик может сработать сразу и отработает как по маслу, а может и через 5 нажатий не сработать вовсе. Проверял в живую на Arduino UNO, Pro Mini (328е Меги) и в Proteus'е. Симптомы одни и те же. Проблема очевидно в коде но я в упор не вижу в чем может быть загвоздка. Уровень у меня "штота умею" поэтому не судите строго. #define pwmPin 5 #define buttonStart 3 #define maxOnTime 7000 //максимальное время выполнения условия нажатой кнопки #define RED_LED 7 #define GREEN_LED 8 int power = 150; //boolean StartState; boolean StartStateFlag; //Флаг кнопки Старт unsigned long pressTime; void setup() { pinMode(pwmPin, OUTPUT); pinMode(buttonStart, INPUT); pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); Serial.begin(9600); //чисто для отладки } void loop() { if (digitalRead(buttonStart) && StartStateFlag && ((millis() - pressTime) <= maxOnTime)) { // (1) если кнопка старт нажата И была отпущена И нажата менее 7 секунд выполняем: analogWrite(pwmPin, power); //запуск ШИМ Serial.println("PWM_ON"); digitalWrite(GREEN_LED, HIGH); digitalWrite(RED_LED, LOW); } else { // (2) иначе StartStateFlag = false; // кнопка небыла отпущена analogWrite(pwmPin, 0); digitalWrite(GREEN_LED, LOW); Serial.println("PWM_OFF"); pressTime = millis(); } if (!digitalRead(buttonStart)) { //(3) если кнопка не нажата analogWrite(pwmPin, 0); //остановка ШИМ Serial.println("PWM_OFF"); digitalWrite(RED_LED, HIGH); StartStateFlag = true; //была отпущена и можно входить в условие с нажатой кнопкой (1) } } И файлы: сам скетч, .elf и .hex для шПротеуса и проект Протеус. P. S. ШИМ в Протеусе не работает в принципе, в железе все ОК BUTTON_TEST.ino BUTTON_TEST.ino.eightanaloginputs.hex BUTTON_TEST.ino.elf BUTTON_TEST.ino.with_bootloader.eightanaloginputs.hex ButtonTest.pdsprj
-
Доброго времени суток. Помогите отремонтировать электронный таймер электроплиты Kaiser. После мойки плиты таймер перестал подавать признаки жизни. При включении в сеть срабатывают реле и всё.
- 12 ответов
-
- таймер
- электроплита
-
(и ещё 1 )
C тегом:
-
Привет! Ребята, помогите совсем начинающему. Задача поморгать светодиодом не прибегая к регистрам GPIO. Плата STM32F407VG DISC. В CubeMX 5 подключаю кварц, тактирование подгоняю 16МГц для АРВ1. В TIM5 для Channel1 выбираю Forced Output CH1. Ему соответствует PA0. В таймере пределитель беру 15999, счетчик 999. То есть рассчитываю что будет дергать ногу раз в секунду. Вешаю на PA0 светодиод. Все это выгружаю в Keil 5. Дописываю в main /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start(&htim5); /* USER CODE END 2 */ Собираю, загружаю, но ничего не происходит. Причем первые разы как то получилось, но теперь глухо. Посоветуйте что делать? Какие то файлы приложить?
-
Всем привет. Реебят подскажите, преедложили собрать схему таймера с отключением через 1-2 часа (время нее сильно суть меняет), но собрать на микросхемах К561ТР2 и К561ИЕ16. Теорию вроде пока говорили понял, но на практике что-то не срослось ((( Нарисовал схему как смог. Что не так делаю ? Спасибо
-
Доброго времени суток. Помогите пожалуйста зарисовать схему, которая может мигать 4-5 светодиодами на фиксированной частоте - 3-4гц. Питание будет от 4-х ААА-акумулятора NiMH 1.2v. Светодиоды - нормальные, чтоб обозначить движущее средство передвижения типа велосипед на дорогах в ночное время суток.
- 37 ответов
-
Всем светлым и умным головам привет! Никак не могу найти информацию о данном прерывании TIM1_BRK_UP_TRG_COM. Вопрос 1: Что это за стек или система прерываний? Вопрос 2: Когда будет вызываться обработчик прерывания TIM1_BRK_UP_TRG_COM_IRQHandler, если также есть обработчик прерывания TIM1_CC_IRQHandler? Вопрос 3: период переполнения таймера равен 100 мкс. Сколько раз будет вызываться обработчик прерывания TIM1_BRK_UP_TRG_COM_IRQHandler до обработчика прерывания TIM1_CC_IRQHandler? По логике вещей, предполагаю, что 100 раз? Заранее благодарен! Всем радости))
-
Здравствуйте! У меня в машине установлен телефон на андроиде в дополнение к штатному головному устройству. Его экран включается при подключении по USB внешней клавиатуры. Для этого замыкается один провод (OTG) через реле. Реле питается от ACC автомобиля. Проблема в том, что в то время, когда заводится двигатель, ACC пропадает. Это примерно 1-2 секунды. Для решения этой проблемы я собрал на NE555P одновибратор с задержкой в районе 3-4 секунд. На 2 вывод микросхемы я подаю ACC. Когда ACC пропадает, резистор на 10 кОм подтягивает вывод на землю и таймер запускается. Но, я не учёл одного нюанса — если не вернуть на 2 вывод напряжение, то на 3 выводе напряжение спустя заданное время не исчезает. Собственно вопрос в том, как модифицировать данную схему, чтобы при отсутствии ACC таймер работал только заданное время и затем выключался?
-
Здравствуйте! Монтировали кнопку открытия электрозамка на двери, бюджет был ограничен и закупили Таймер импульсов (ТИ). Точнее, купили две платы и обе работают не корректно, а именно: после нажатия кнопки (после подачи сигнала на вход ТИ) он размыкает контакты электрозамка, отсчитывает заданный интервал времени, замыкает контакты электрозамка, и может еще несколько раз сработать реле на ТИ. Т.е. кнопку нажали раз, а сработок было много. Пытались подключать диоды, но это не помогло. Проблема пропала после установки полноценного дверного контроллера СКД, но это решение не устраивает. Есть мысли, что происходят наводки в кабеле, ибо когда тестировали ТИ в офисе на столе с короткими кабелями, то система работала как надо. А теперь вопрос: может есть способ подключить данный ТИ таким образом, чтобы избежать ложных срабатываний?
-
Доброго времени суток!! Есть задача, измерить время между импульсами с точностью до периода 50МГц - ового генератора. Этим периодом ограничена и минимальная задержка между импульсами. Уже собрал в proteus-е схему на синхронных счетчиках и стал разбираться с МК, что бы управлять этой схемой. Оказалось в МК есть встроенный таймер, который может считать со скоростью тактового генератора МК. Вопрос: Возможно ли используя встроенный таймер МК на частоте >= 50 МГц нормально померить такую задержку и какие могут быть подводные камни?
-
Добрый день, в программирование контроллеров я ничего не смыслю, знаю только ассемблер, С++. Мне необходимо реализовать систему автополива, у меня есть 5 выходов RA каждый из которых отвечает за открытия крана. У каждого порта есть время срабатывания и длительность полива. Как мне в заданное время подать на нужный выход RA логическую единицу и держать этот уровень определенное время. Пример: время срабатывания RA1 в 12:15 логическая единица должна быть установлена на 5 минут после истечения этого времени выход выдаёт сигнал 0. Может посоветуете свои варианты как лучше сделать к примеру делать полив через заданные промежутки времени. Основной вопрос: как создать таймер, который в заданное время сработает и подаст сигнал на порт RA?
-
Добавил Модбас в проект все работало. Добавил еще несколько функций в main и модбас перестал работать. Когда присоединяю сериальный кабель модбас IAR дебагер пререстает работать (вероятно есть общие линии). Вопросы : 1. как решить конфликт кабелей (IAR JTAG) и Modbus и отлаживать модбас с его кабелем ? 2. Если решить конфликт кабелей нельзя тогда ... Как симулировать прерывания на ногах UART (модбас) чтобы программа зашла в обработчит прерывания модбас ?
- 3 ответа
-
- микроконтроллер
- LPC
-
(и ещё 3 )
C тегом:
-
Добрый вечер,мне вот отдали такую штуковину но не могу определить что это,вставил в розетку шнур питания и включил таймер,загорелся красный индикатор но не прошло и 10 секунд я почувствовал странный запах нагрева то отключил таймер,дотронувшись до штуковины та что идет к таймеру я смог лишь на мгновенье она была ужасно горячей и потом очень долго остывала,надеюсь не сгорела,помогите понять что это,заранее благодарю
- 6 ответов
-
- Таймер
- шнур питания
-
(и ещё 1 )
C тегом:
-
помогите, делаю этот таймер http://sxem.org/2-vse-stati/22-tajmery/38-tajmer-na-atmega8 и он идет очень медленно, одна секунда равняется 3,5 минутам, как это исправить
-
Здравствуйте. Столкнулся с проблемой выбора программируемого таймера на АлиЕкспресс. Задача такая: есть цепь, ее нужно замкнуть по разному. Варианты: - Каждые полчаса - от 5 до 25 минут. - Каждый час - от 5 до 50 минут. - Каждые 2 часа - от 5 до 50 минут. - Каждые 3 часа - от 5 до 50 минут. - Каждые 4 часа - от 5 до 50 минут. Естественно, каждый из этих вариантов нужно запрограммировать вручную. Но проблема в том, что не могу понять какое реле на АлиЕкспресс поддерживает все эти режимы! Вроде нашел несколько, НО - либо они срабатывают от 1 до 99 секунд всего лишь! - либо подключают питание, а мне нужно всего лишь замкнуть цепь, а не подключить к 220В - либо не поддерживают так много программ. Однако я уверен, что такие релюшки ДОЛЖНЫ быть, просто я их не замечаю Помогите советом, что выбрать на АлиЕкспресс, чтобы соответствовало моим нуждам?? Спасибо.
-
Помогите подобрать простую схему. На швейной машине есть "моргалка" - это такая пружинка для стабилизации нити, она при шитье постояно туда-сюда делает, я прицепил к ней клемму и теперь у меня есть на долю секунды по среди каждого стебка замыкание (ну просто единственное что без нити по другому себя ведет) Подскажите какой-то таймер чтобы продлевал себя с каждым замыкание моргалкой на 5-10 сек, и мог сутками работать. Извините если мой вопрос глупый, я не силен в радиотехнике, умею паять и найти ножки транзистора. Спасибо за внимание.
-
кто может подсказать у меня тут что тот не то, или симулятор не корректно работает . При нажатии на кнопку, подключенную С1, светодиод загорается примерно на 0,5 секунды, а затем гаснет(должно было). но не гаснет, как видно на графике. https://www.multisim.com/content/AAwakYAxYktCoDfQpd8sTC/untitled-circuit/open/