• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

-=gga=-

Members
  • Публикации

    1 375
  • Зарегистрирован

  • Посещение

Репутация

1 Обычный

О -=gga=-

  • Звание
    Механик
  • День рождения 10.11.1991

Контакты

  • ICQ
    0

Информация

  • Пол
    Мужчина

Электроника

  • Стаж в электронике
    Не связан с электроникой

Посетители профиля

23 446 просмотров профиля
  1. Спасибо за советы, попробую реализовать их в реале. Посмотрим что получится
  2. С порчей сети особых проблем нет, т.к. райончик промышленный и там с сетью и не такое твориться. Сигнал мягко говоря идёт ужасный. Но это мало кого волует Мне кажется что вся проблема кроется в обработке сигнала перехода через ноль. А так же обработка этого сигнала в прерывании. Видимо обработка в прерывании не лучшая идея т.к. в сети идёт много помех и уже не говорю о том, что во время сварки от аппарата тоже идёт шумы. Что скажите на счёт идеи постоянно (в таймере раз в 5мкс) опрашивать порт перехода через ноль и так ловить сигнал а не прерыванием ? По поводу схемы, графики снимал с использованием левой схемы, но потом попробовал и правую (отдельно друг от друга). Вторая даёт более близкий к нулю сигнал, но как вижу в ней много помех идёт. А первая искажет время перехода через ноль, но при этом помех поменьше. Какие обычно схемы используете сами ? Кстати, видимо КТ12 который питается от этой же катушки трансформатора тоже добавляет свои помехи в сигнал. Как считаете использование отдельного выхода трансформатора поможет чем-нибудь ? Пару дней назад был на производстве. Тестирвоали сварку. Результаты впринципе такие же как и были, ничего не поменялось. На мылох токах сварка получается какая-то странная (ток идёт по бокам электрода). А на больших токах ток идёт по центру, но при этом автомат сбрасывает. Пробовали варить обычным РКС на малых токах и с теми же электродами. Точка сварки получается маленькой но видно что так идёт именно по центру. Слева на право идёт с увеличением тока. Время и электроды теже. На самых правых точках сваривалось нормально, но автомат сбрасывал.
  3. Ручь про третий сверху график ? Тогда да. Но это график с оптрона подключённого параллельно силовым тиристорам (через резистор и диодный мост). Кстати на втором графике сигналы тоже чуть-чуть отличаются (меньше 100мкС), в зависимости от периода. Это связано со схемой датчика перехода через ноль. При разных знаках полупериода у него разные временные задержки, но это впринципе исправимо. Завтра собираюсь выехать, ещё немного потестировать. О результатах отпишусь. Если есть ещё что-то что желательно проверить то внимательно слушаю
  4. chip-chip, за файл спасибо, интересный. Но именно алгоритма управления тиристором (какая форма импулься, когда включать, какие длительности) там к сожалению не было. IMXO, Схему изучил. Даже прикрепил к посту. Вот только не могу понять в чём разница между тем, что бы подключить общий на 24В но коммутировать минус и подключить общий на минус, но кммутировать плюс ? Дабы не пришлось искать схему я её вырезал и прикрепил к посту. И вопрос в догонку, чем именно по вашему отличаются импульсы даваемые приведённой схемой и схемой РКС ? Вот на счёт пропуска импульсов абсолютно согласен, я тоже на это грешу, просто не могу понять в чём реально прчина, в алгоритме, программе или в железе. mr_smit, Есть там С1-55 но как-то я сним не поладил)) Но попробовал подключить всё к логичскому анализатору через оптронные развязки. Вот первый скриншот - РКС при сваривании металла, на среднем значении тока. Как видно открывающий импульс длился 0.5мс, и он был через 2.28мс после перехода напряжения через ноль. Первый график - датчик перехода через ноль напряжения сети Второй - выходной сигнал берущийся с катушки тиристорного трансформатора и подающийся на оптрон. Третий - сигнал с оптрона подключённого параллельно силовым тиристорам через сопростивление в 40кОм. Четвёртый - Сигнал перехода через ноль но берётся выхода окнтроллера. Второй скриншот - графики моего устройства. Импульс открывания длиной 1.5мс, задержка от начала перехода через ноль - 3мс. Впринципе я пробовал и те же числа что и в РКС, но тогда автомат сбрасывал.
  5. cuzikov, не реле это не наш подход, лучше чуток попаримся но сделаем чтоб хорошо работало и с фазовым регулирвоанием было Схему выходной части прикрепил, катушку трансформатора тоже пририсовал. Сейчас заметил, что выводы GND микросхемы драйвера у меня не подключены к минусу, а висят в воздухе и на них порядка 9 вольт. Но прошерстил даташит и как понял проблемы вряд ли из-за этого. Тем более, что клапаны нормально работают. Что бы было проще разобраться прикрепляю осциллограмму сигналов. Верхний график - прерывания от датчика перехода через ноль, нижний график - выходной сигнал идущиё на тиристорный контактор. Кстати везде в документации написано что шинина сигнала равна 200мкС, у меня при 200мкС вообще ничего не сваривает, пришлось повышать до 1-1.5мс. Думаю может вместо постоянного сигнала в 1.5мс подавать серию импульсов с шининой 200мкс, но общей длительностью 1.5мс ? // Current enable flag unsigned char current_enabled = 0; // Current start flag unsigned char current_start = 0; // Welding state flag unsigned char weld_state = 0; // Current running program ProgramData program; // Thyristor out state unsigned char triac_on = 0; void Timer3Reset(unsigned int time_us) { time_us <<= 1; cpu_irq_disable(); triac_on = 1; TCNT1H = 0x00; TCNT1L = 0x00; OCR1AH = time_us >> 8; OCR1AL = time_us & 0xFF; cpu_irq_enable(); } // Converts phase regulation percent to timer delay in us #define PERCENT_TODELAY(x) (x*100) // External Interrupt 1 service routine // ZERO_CROSS interrupt ISR(INT5_vect) { static unsigned int weld_time = 0; static unsigned char delay_cnt = 1; LEDMainToggle(); if(current_start) { if(weld_time >= program.weld1_time) { current_start = 0; weld_time = 0; delay_cnt = 1; weld_state = CURRST_COMPLETED; } else { Timer3Reset(PERCENT_TODELAY(program.weld1_current)); delay_cnt ++; weld_time ++; } } else { weld_time = 0; } } #define TIMER_STEP 400 // Tiner time = x / 2 us // Timer3 output compare A interrupt service routine ISR(TIMER1_COMPA_vect) { static char after_del = 0; switch(triac_on) { case 0: return; case 1: // Enable thyristor only if it is closed! TRIAC_ON; triac_on = 2; after_del = 0; OCR1AH = TIMER_STEP >> 8; OCR1AL = TIMER_STEP; return; case 2: if(after_del++ >= 5) // Take delay 5*200us = 1ms triac_on = 3; return; case 3: TRIAC_OFF; triac_on = 0; return; } } void CurrentOn(ProgramData * program_) { memcpy(&program, program_, sizeof(ProgramData)); weld_state = CURRST_IN_PROGRESS; current_start = 1; } void CurrentInit(void) { cpu_irq_disable(); // Thyristor output initialization TRIAC_INIT; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 2000.000 kHz // Mode: CTC top=OCR1A // OC1A output: Discon. // OC1B output: Discon. // OC1C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR1A = 0x00; TCCR1B = 0x0A; TCNT1H = 0x00; TCNT1L = 0x00; ICR1H = 0x00; ICR1L = 0x00; OCR1AH = 0xFF; OCR1AL = 0xFF; OCR1BH = 0x00; OCR1BL = 0x00; OCR1CH = 0x00; OCR1CL = 0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK |= 0x10; // External Interrupt(s) initialization // INT5: On // INT5 Mode: Any change EICRB |= (0<<ISC51) | (1<<ISC50); EIMSK |= (1<<INT5); EIFR |= (1<<INTF5); DDRE &= ~(1 << 5); PORTE |= 1 << 5; cpu_irq_enable(); }
  6. Спасибо за ссылку, поищу завтра и отпишусь. Клапан срабатывает раньше тока, с этим проблем нету. Со схемой думаю тоже нет проблем, т.к. ничего сложного там нету - выход с контроллера идёт на оптопару а потом на драйвер. Проблема именно в длительности импульса, в их количестве и в том когда нужно эти импульсы давать. В зависимости от мощности и трансформатора. Так если бы трансформатор работал на полную мощность то сварка хотя бы получалась бы, а у меня вместо сварки получается небольшой прогрев и неравномерные обгорания металла. Это при том что РКС так варит (при том же времени) что получается ровное чёрное пятно. А что касается разогрева(модуляции) то я его отключил на РКС. И даже с отключённой модуляцией и максимальным током РКС автомат не сбрасывает. А у меня чуть что так сразу сбрасывает.
  7. Добрый вечер форумчане! Задался задачей для друга смастерить блок управления контактной сваркой. Станки все есть в рабочем состоянии (трансформаторы, клапаны, контакторы и прочее) но вот блоки управления типа РКС-801 давно уже вышли из строя. Свой блок делаю на контроллере и проблема возникает с управлением тиристоров. Хочется сделать фазовое управления для регулировки тока, но пока-что даже не получается варить листы хоть на каком-то одном фиксированном токе. По поводу тиристоров, используется готовы тиристорный контактор КТ-12, вот ссылка на него. Как видно из схемы для развязки используется трансформатор на который я подаю управляющие импулься амплитудой 20-30В постоянного напряжения. Контакты 12-13. Что касается трансформатора то он на 32кА, достаточно больших размеров. Кстати может кто-нибудь вкурсе какой cos(fi) бывает у таких трансформаторов, бирки на нём не обнаружил. Проблема собственно в том, что какие только импульсы я не подавал на этот трансформатор (естественно с разным сдвигом относительно перехода напряжения через ноль) так и не получается получить нормальную сварку, всегда получается что-то недоваренное и легко отламывается. При этом зачастую автомат на станке скидывает от перегрузки. Хотя когда пробуем варит тот же метал его старым блоком он чуть ли не до красна расскаляет его и при этом автомат не срабатывает. Можете посоветовать в какую сторону копать ? Каким алгоритмом подавать импульсы на трансформатор и собственно какой формы\длительности. Ну или может есть у кого старые книжки на эту тему где подробно разъясняется данная тематика ? Буду рад любой помощи
  8. Atmega128L Самопроизвольно Перезагружается

    Спасибо огромное!
  9. С наступающим! Возникла тут одна проблемка. Собрал плату на МК ATmega128L. Питание от ЮСБ. Кварц на 7.3728 мГц. Программатор AVR910. Пишу на С. Ножка Ресет подключена резистором в 10кОм к плюсу и к минусу через конденсатор 0.1мкФ. Суть проблемы заключается в том, что МК самопроизвольно рестартирует. Программу сгенерировал генератором начального кода CodeVisionAVR. Строчки // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=1 State2=T State1=T State0=T PORTC=0x08; DDRC=0x08; делают PortC.3 Выходом и устанавливают на нём 1. Строчки delay_ms(1000); PORTC.3=0; Устанавливают на выводе PortC.3 лог. 0 через одну секунду. В протеусе работает, но в реале у меня светодиод постоянно горит. Вот скриншот фьюзов. Вот листинг программы /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 12/27/2010 Author : Freeware, for evaluation and non-commercial use only Company : Comments: Chip type : ATmega128L Program type : Application AVR Core Clock frequency: 7.372800 MHz Memory model : Small External RAM size : 0 Data Stack size : 1024 *****************************************************/ #include <mega128.h> #include <delay.h> // Declare your global variables here void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=1 State2=T State1=T State0=T PORTC=0x08; DDRC=0x08; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Port E initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTE=0x00; DDRE=0x00; // Port F initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTF=0x00; DDRF=0x00; // Port G initialization // Func4=In Func3=In Func2=In Func1=In Func0=In // State4=T State3=T State2=T State1=T State0=T PORTG=0x00; DDRG=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected ASSR=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // OC1C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; OCR1CH=0x00; OCR1CL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // Timer/Counter 3 initialization // Clock source: System Clock // Clock value: Timer3 Stopped // Mode: Normal top=0xFFFF // OC3A output: Discon. // OC3B output: Discon. // OC3C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer3 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR3A=0x00; TCCR3B=0x00; TCNT3H=0x00; TCNT3L=0x00; ICR3H=0x00; ICR3L=0x00; OCR3AH=0x00; OCR3AL=0x00; OCR3BH=0x00; OCR3BL=0x00; OCR3CH=0x00; OCR3CL=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off // INT3: Off // INT4: Off // INT5: Off // INT6: Off // INT7: Off EICRA=0x00; EICRB=0x00; EIMSK=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; ETIMSK=0x00; // USART0 initialization // USART0 disabled UCSR0B=0x00; // USART1 initialization // USART1 disabled UCSR1B=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; delay_ms(1000); PORTC.3=0; while (1) { } }
  10. Ик Локатор

    Да сделал по простому, генерирую частоту 200 гц, и проверяю вход прервания. В зависимости что за импульсы на входе, решаю о положении предмета.
  11. Как Настроить I2c В Avr На Slave

    Вот нашёл в инете (точнее на сайте атмела) пример настройки TWI как на slave так и на master. Это апноуты AVR311 и AVR315 соответственно. Там исходник на С, но для компилятора IAR. Я его переделал немного, и подогнал под компилятор Codevision. Код скомпилировался, но работать корректно не хочет. Я симулирую слайв и мастер в протеусе. Мастер отправляет команду, слайв отвечает. Но корректно не получается... Мне нужно всеголишь два функционала: 1. Мастер передаёт коменду (например какой-то символ) а слейв вызывает функцию соответствующую этой команду. При чём слайв при этом ничего не возвращает мастеру. 2. Мастер отправляет кманду (уже другую), а слейв в ответ высылает два числа (в пределах char). В исходниках вагон функций, бусь над ними уже почти целый день, но так и не могу понять как они работают... TWI_for_Codevision.rar
  12. Как Настроить I2c В Avr На Slave

    Здравствуйте! Есть задача связать два контролера между собой по интерфейсу I2C. Один из них (BF537) настроен как мастер. Он должен время от времени обращаться к slave устройству на AVR контроллере и запрашивать у него данные. Т.к. на шине есть другие slave устройства, для AVR было решено отвести адресс 0х35. Дело в том, что CodeVisionAVR сгенерировал код для AVR но в качестве мастера, а мне нужно, что бы он был именно slave. Нет ли готовой библиотеки для того, что бы настроить AVR на слайв ? В качестве МК можно использовать ATmega8 (ну или ATtiny2313) Дело срочное, время поджимает, вот по этому надо что-то готовое. Гугл ничего толкогого на С не дал к сожалению... Спасибо!
  13. Ик Локатор

    Ну так демодулятор уже есть в TSOP 1738 и SM0038. У них частота модуляции равна 38кГц. А эта схема на МК только и делает, что модулирует сигнал. А принимает она уже готовую лог1 или лог0 от самого ИК приёмника. Вот только программа написана на асм, а я его не знаю. Как там модулируется сигнаал я тоже не пойму... Да и изначально я планирвоал просто собрать эту схему и поставить. Просто есть более важные задачи, которые нужно решать, по этому и решил собрать что есть. Вот только не работает оно, и заставить работать не получается...
  14. Ик Локатор

    Добрый вечер! Есть тут задачка одна, вроде не сложная... да я над ней уже день сижу... В общем нужно сделать устройство, которое обнаружит наличие предмета между передатчиком и приёмником. Расстояние между передатчиком и приёмником меняется в пределах от 5 см до 20. Нужно что бы датчик срабатывал чётко и при любой освещённости. Изначально думал поставить ИК передатчик и ИК приёмник но потом оказалось, что они сильно зависят от света. В силу того, что нужно максимально исключить ложные срабатывания, решил применить передатчик от ПДУ и примёник (от телека). Т.к. в этих приёмниках есть встроенная схема подавления помех (отсеивает ненужные сигналы). Хотел купить приёмник TSOP 1738 но не смог найти... был только SM0038. Никаких лишних срабатываний нету. Срабатывает только от ПДУ. При покупке думал реализовать вот эту схему ИК локатора но оказалось, что там не компилируется программа. Но я исправил это (заменил COUNT на 10). Но после компиляции оказалось что программа и вовсе не работает корректно (проверял в протеусе). Пробовал переделать код на ATtiny13 (есть в наличии) но и на нём не работает. Кроме того обшарил гугл, нашёл кучу других кодов, как на Си так на асм, но там только приёмники. Может кто-нибудь собирал эту схему ? Как заствить её работать и если возможно на ATtiny13 ?