Дима46

Блок Управления

8 posts in this topic

Дима46    0

В общем ситуация такая. Нужно собрать блок управления на замыкание 250 каналов. каждый канал должен замыкаться в определенное время ( настраиваемое индивидуально в диапазоне до 600 секунд) + нужна возможность механического управления ( на случай неисправности блока).

вся система питается от автомобильного аккумулятора.

Заранее всем спасибо за советы и помощь.

Share this post


Link to post
Share on other sites

Старт складской программы по Wi-Fi/ Bluetooth-чипам от Espressif

На склад КОМПЭЛ поступили чипы, модули и отладочные платы от компании Espressif Systems на базе ESP8266 и ESP32. Стоимость всех изделий данной линейки – в 2-3 раза ниже ближайших аналогов, чипы занимают минимальное место на плате, энергоэффективны и универсальны в применении

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

Дима46    0

Это пульт запуска пиротехники. У нас они конечно же есть. Но ! или механические ( контакты замыкаются вручную, что надежно, но иногда требуется секундная точность), или компьютерные ( иногда глючат в самый неподходящий момент).

В принципе можно сделать несколько блоков с меньшим числом каналов. но все-равно их надо объединять для последовательной работы.

Share this post


Link to post
Share on other sites

Вебинар Литиевые ХИТы FANSO или что нужно знать инженеру о батарейках»

20 июня компания Компэл приглашает всех желающих принять участие в вебинаре, посвященном литиевым батарейкам FANSO. На вебинаре будет рассказано о параметрах батареек, их зависимости от режима работы и эксплуатации. Будет дана информация о том, на какие параметры следует обращать внимание, выбирая литиевый ХИТ, и как избежать некоторых проблем.

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

А может быть подойдёт барабан с контактами. Принцип музыкальной шкатулки... В противном случае придётся покупать большое количество реле с транзисторами или 250 реле времени.

Edited by Byjcnhfytw77

Share this post


Link to post
Share on other sites
Дима46    0

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

Примерно так выглядят наши пульты.

post-200604-0-56502800-1461241539_thumb.jpg

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum 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 Alexandr Petrenko
      Нужна помощь, так случилось, что я никак не связан с радиотехникой и т.д, но мне нужно сделать перчатку (тема дипломной работы) по видео AlexGyver, которая по сути и есть стробоскопом на базе Arduino nano. И я её кое-как спаял и конечно же она не работает, причины искать нет смысла, потому что может быть всё что угодно. Подскажите мне как можно упростить это устройство чтобы я его смог сделать, что-то проще, желательно схему иначе я не справлюсь.
      Вот то видео:
      https://www.youtube.com/watch?v=rLpn_4ERJXQ
    • 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
    • By weffing
      Продам КТ908А-1 шт., 2Т301Д-140 шт.,РЭС59-7шт., РЭС 9 -1шт,РЭС 6-Т -1шт.,РЭС 6-1 шт., РЭс10- 1 шт.,РЭС 48А-10 шт., РЭС 48 Б-2 шт., РЭС 15-10 шт., 2ТС613 А -13 шт., РЭС-54-6 шт., СП5-39109-9 шт., ТО125-10-7 шт.,РПС32Б-2 шт., Д226-10шт., Sr-25-6 шт., Кондр. 3,3 мкф х50-22 шт., Конд. 100х35-14 шт.,К50-68. Цена договорная!
    • Guest Алексей
      By Guest Алексей
      Добрый день.
      Помогите пожалуйста.
      Никак не могу найти простую схему, что не впишу все одно получаю таймер на отключение или через кнопку...
      Делаю инкубатор для яиц, яйца нужно поворачивать 2-3 раза в сутки, у меня есть суточный таймер но у него минимум 1 минута, а мой механизм за 1 минуту прокрутит яйца 4 раза, нужно сделать примерно 15 сек.
      Как правильно называется такой таймер, или дайте схему.
      Спасибо.
  • Сообщения

    • Помогите найти полную схему для  https://s.click.aliexpress.com/e/bvfwc9DW Именной для 5в варианта. Также скиньте какой именно трансформатор тут стоит и как его найти на алиэкспресе. В общем задача этот модуль блока питания перенести на общую плату. Не могу найти толковую схему.
    • А я не стал запариваться, чтобы не откладывать и сделал побыстрей -  параллелил туалет с ванной. Удобно тем, что тащить провод нужно только от туалетной лампы.   Лампочки светодиодные, совсем мизер жрут. В туалете 8 вт, а в ванной чуть больше. Года три работает и дорабатывать уже и в мыслях нет. А сначала тоже хотел релюху поставить для развязки.
    • с точки зрения потерь амплитуды на ключах TL494, немного получше будет, если сделать наоборот - npn внешние повторители наверху, а TL494 - ОЭ внизу. Потери в режиме ОЭ у ТЛ494 будут на 0,7-1В ниже, чем в режиме ОК. Амплитуда сигнала на затворах также будет выше. В остальном, схема работает аналогично. Мостик надо делать не из FR и тем более, не из выпрямительных диодов, а только из Шоттки. И не обязательно мостик. В моем варианте понадобилось шунтирование только верхних ключей.  
    • Ну, я на съёмках не присутствовал, вам виднее, но на этом фото, даже если присмотреться, локти согнуты как положено, ладони вперёд, а живота, а тем более позвоночника, за волосами вообще в упор не видно.
    • 6000 пара вместе с отправкой.
    • Вячеслав, я в который раз читаю вашу статью...  прочитал так же ваши статьи по поводу обратных связей. И вот какое интересное наблюдение заметил, на данном графике вы по сути сравнили тетрод, у которого нет обратных связей, с псевдотриодным включением у которого 100% ОС, ул с 40% ОС, и КФБ 25% ОС при чем в триодном включении. В связи с тем возникает вопрос, почему вы не сделали более корректного сравнения, допустим тетрод с ООС 20-40%, возможно так было бы все иначе, или с катодной обмоткой но в тетроде включении?
    • К примеру УНЧ Technics SU-8044, заявленый диапазон: Frequency response: 10Hz to 50kHz. А Technics SU-8 так вообще 10Hz to 120kHz. И зачем тянуть до 50кГц, если большинство и 20кГц не слышат. То ли дело совковый ширпотреб, который всё для народа, 16кГц - и хватит.
      Прописные истины, что дает более широкий ЧД для качества звучания УНЧ, я не собираюсь Вам объяснять. Здесь форум, а не школа ЮТ. Гугл в помощь. Это Вы прикалываетесь или и вправду не знаете стандартный набор измеряемых параметров УНЧ. Загляните в инструкцию к своему самому честному УНЧ, если он заводской сборки, там все есть.

      Я, по мимо измерения параметров самодельного УНЧ, оцениваю звучание по принципу нравится-ненравится. Но ведь меня и не особо интересует честно или не очень усиливает УНЧ. И тем товарищам, которые забирают себе сделанные мной усилители, важно именно нравится как звучит или не нравится.
      А как Вы определяете честность усилителя, что является эталоном?