|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 5:28 pm
Защита на електроуред срещу неправомерно включване
| Автор |
Съобщение |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12765 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
Апропо, ако сложиш след токовия траф гретц, някаква RC верига за филтрация, евентуално и подходящ делител, можеш да подадеш сигнала директно на микроконторлера. В него има АЦП, компаратор и всичко необходимо за целите на проекта... Редакция: Всъщност, за какво ти е микроконтролер? С бутона задействаш релето (контактора) включваш консуматора. Предвиждаш някаква времезадаваща верига, която да ти осигури някакво време в което да можеш да включиш консуматора. Последното, за да можеш да оперираш с една ръка, а не да правиш странни стойки около техниката. След включване на консуматора, напрежението от токовия траф осигурява задържане на релето. При изключване на консуматора, цялата система минава в първоначално състояние. Сещам се и за един потенциален проблем. При керамичните плотове (котлони) мощността се регулира с включване и изключване на нагревателя. Съотношението "има-нема" определя температурата. Трябва да видиш какъв е максималния период за "нема" за да осигуриш задържане на релето, за да не минава системата в първоначално състояние...
|
| Пет Мар 03, 2017 2:06 pm |
|
 |
|
lcr
Ранг: Форумен бог
Регистриран на: Пон Май 12, 2014 11:49 pm Мнения: 4394 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
@stefan63
Благодаря за насоката. Ще направя това, което препоръчваш.
@itso.t
За токов трансформатор съм ползвал някакъв готов тороидален L филтър от импулсно захранване, който върши работа но напрежението е прекалено ниско за стандартен грец. Може да стане евентуално с такъв от германиеви диоди.
МС съм ползвал за да мога по-прецизно да разгранича прага на консумацията, който ме интересува, евентуално да въведа точно желан хистерезис и т.н. Печката има някаква консумация на покой и тя трябва да бъде игнорирана. И да - с керамичен плот е и поради това съм реализирал по-голямата времезадръжка (около 330 секунди) при задействане от контролера.
А и изобщо идеята е цялата функционалност в т.ч. и тази на компаратора да я постигна с MC.
|
| Пет Мар 03, 2017 3:29 pm |
|
 |
|
lcr
Ранг: Форумен бог
Регистриран на: Пон Май 12, 2014 11:49 pm Мнения: 4394 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
 |  |  |  | ToHu написа: Ами ...и да и не, какво чначи рестваш контролер,а няма какво да го ресетваш  Ако искаш единичен импулс, правиш си една променлива Pulse, или просто я мапваш като булева към изход, все там. като ти дойде тригериращ евент, да речем прекъсване, сетваш тази променлива 1-ца и нулираш един таймер, кото си избереш. Седиш си и въртиш един празен цикъл, и като ти дойде прекъсване от таймера нулираш тази променлива и забравяш до следващият тригериращ евент .. най-общо. Ако искаш да може да се пуска и удължава импулса просто вместо да въртиш в нищото, то няма да е точно нищото де, ако ти дойде този тригериращ евент пак нулираш таймера ... нещ от сорта : while(true){ if(ext_IR){ if(pulse){ if(re_triger) timer_1=0;} else { pulse = true; timer_1=0;} if(timer_1_IR) { pulse = false; timer_1_IR=false; } Като разбира се проверките могта да се съкратят зашото защото нищо не пречи винаги да правиш pulse =1 ако имаш прекъсване, а само да нулираш таймера ако параметъра re-triger ти е 1-ца. |  |  |  |  |
Ето, как реализирах формирането на двата импулса: void main() { OSCCON = 0b01110000; // Set internal clock, 8MHz TRISA=0b00110000; //RA4, RA5, inputs ANSELA = 0b00000000; //digital ports INTCON = 0b10001000; // interrupt on change IOCAN = 0b00110000; //interrupt on falling edge of RA4 RA5 LATA2=0; j=100; } // end of main() void interrupt isr(void) { while (j>0) { LATA2=1; pause_1(); j--; if(RA5==0) j=300; if(RA4==0) j=1000; } asm ("reset"); } void pause_1() { for(i=0; i<3000; i++); } ....... Сигурно е дърводелско, но работи добре и лесно се настройват желаните продължителности.
|
| Сря Мар 08, 2017 1:08 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
Абе не се обиждай, ама какви са тия кодове които нямат main тяло, тук и друг колега бях видял да пише код без основен луп, така разчитате на случайността и на фазата на луната. И второто нещо, като ти гледам интеръпта много стоиш там, в прекъсване не се стои, ако ти се налага влизаш и излизаш максимално бързо, тоя while не му е там мястото, както и pause_1 ... на какво го пишеш това, това asm("reset") какво трябва да прави ?
|
| Сря Мар 08, 2017 10:58 pm |
|
 |
|
lcr
Ранг: Форумен бог
Регистриран на: Пон Май 12, 2014 11:49 pm Мнения: 4394 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
Аз не се обиждам, защото се уча и всички забележки и насоки са ми добре дошли. Но някак не мога да приема, че нещо работи заради случайността или заради фазите на луната. Кодът съм го писал на XC8 и работи. Вие обяснете, защо работи след като според вас не би трябвало. Не разбирам, кое правило налага да не се стои дълго в ISR. Може и да греша, но аз не виждам нищо особено в това, което е написано във вектора на прекъсването, освен, че то се изпълнява, когато възникне прекъсване. Без Reset не мога да се върна в Main. Защо е така, също не разбирам а бих искал. След като на while и на pause не са им там местата, къде са им?
|
| Чет Мар 09, 2017 11:43 am |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12765 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
Потърси класическия пример "blink.c" за някой пик, и виж какви са разликите с твоя код.
|
| Чет Мар 09, 2017 11:58 am |
|
 |
|
dvrachkov
Ранг: Ориентиран
Регистриран на: Вто Сеп 30, 2014 8:20 am Мнения: 231 Местоположение: Bansko
|
 Re: Защита на електроуред срещу неправомерно включване
Спомних си за въпрос от Вас зададен на 26 февруари 2017: lcr: "Ползвам този триак https://store.comet.bg/Catalogue/Product/20971/ за да комутирам захранването на готварска печка с цел защита от неправомерно включване. Печката е с върхова мощност 10 kW, но рядко се ползва на повече от 6. Триакът съм монтирал на радиатор с площ около 40 кв. см. и при това положение, се нагрява до около 60 гр. при товар от 2 kW. Цялото нещо съм поместил в затворена кутия с размери 110Х110Х60 мм. Ясно е, че или трябва да правя принудителна вентилация на кутията или трябва да изнеса радиатора отвън. Според документацията, корпусът му е галванично развързан и не би трябвало да избие фаза по радиатора и да утрепе някой, но......... Някой има ли преки наблюдения по въпроса, че мен това леко ме притеснява и започвам да умувам дали да не заместя триака с добрите стари релета. Примерно с 2 такива https://store.comet.bg/Catalogue/Product/44007/ и да не се занимавам с глупости." timt е казал: "или с такива https://www.google.bg/search?q=solid+st ... gQ_AUIBigB" Чудя се, защо не ги ползваш тези подсказки. Поздрави за ентусиазма.
_________________ "Спасението на давещите се е дело на самите давещи се" - О.Б. "По въпросите ще ги познаете" - В.Б. "'С изкуствен интелект е хубаво да се занимават хора, които имат естествен такъв" - Д.Б.
|
| Чет Мар 09, 2017 4:18 pm |
|
 |
|
lcr
Ранг: Форумен бог
Регистриран на: Пон Май 12, 2014 11:49 pm Мнения: 4394 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
 |  |  |  | dvrachkov написа: Спомних си за въпрос от Вас зададен на 26 февруари 2017: lcr: "Ползвам този триак https://store.comet.bg/Catalogue/Product/20971/ за да комутирам захранването на готварска печка с цел защита от неправомерно включване. Печката е с върхова мощност 10 kW, но рядко се ползва на повече от 6. Триакът съм монтирал на радиатор с площ около 40 кв. см. и при това положение, се нагрява до около 60 гр. при товар от 2 kW. Цялото нещо съм поместил в затворена кутия с размери 110Х110Х60 мм. Ясно е, че или трябва да правя принудителна вентилация на кутията или трябва да изнеса радиатора отвън. Според документацията, корпусът му е галванично развързан и не би трябвало да избие фаза по радиатора и да утрепе някой, но......... Някой има ли преки наблюдения по въпроса, че мен това леко ме притеснява и започвам да умувам дали да не заместя триака с добрите стари релета. Примерно с 2 такива https://store.comet.bg/Catalogue/Product/44007/ и да не се занимавам с глупости." timt е казал: "или с такива https://www.google.bg/search?q=solid+st ... gQ_AUIBigB" Чудя се, защо не ги ползваш тези подсказки. Поздрави за ентусиазма. |  |  |  |  |
Въпреки, че въпросът не е по дискутирания казус, ще си направя труда да ви отговоря: Ако сте запознат с посочените от колегата безконтактни релета, бе трябвало и да сте и наясно, че те също ползват, като ключов елемент симистор, който за разлика от механичните релета има и по-голям пад на напрежение върху себе си в отпушено състояние, обикновено 0,5 - 1V. Вие сега пресметнете, каква мощност разсейва въпросното реле при ток от 40 А, преценете, какво охлаждане му трябва и пр. Накратко - решението, посочено от колегата принципно не се различава съществено от това с въпросния триак и поради това "не съм ползвал тези подсказки" ами съм си решил проблема с механичните релета.
|
| Чет Мар 09, 2017 4:59 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
Ти нямаш майн, той свършва. Защо работи, защото извърташ цялата памет, да но какво има там е божа работа, ако го триеш всеки път може би има нещо безобидно, ако не се е начукало де. Иначе може да имаш всичко, може да е гото към там лъдето генерираш импулса и да го генерираш безброй пъти. За да не става така ти трябва безкраен цикъл в мейна. От прекусване или функция се излиза с ретърн. Компилатора ако е С сам ще си излезе.
|
| Чет Мар 09, 2017 11:06 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
Нямам много време да пиаш тия дни. void main() { some code while(true) { е те тук ти е мейн цикъла който се върти безкрайно } }
В прекъсванеот не ти трябва нищо, дори не ти трябва реално прекъсване, достатъчно е в този цикъл да полираш флага на прекъсването.
|
| Пет Мар 10, 2017 1:31 am |
|
 |
|
lcr
Ранг: Форумен бог
Регистриран на: Пон Май 12, 2014 11:49 pm Мнения: 4394 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
Хиляди благодарности, приятелю! Благодарение на твоите насоки успях да пусна цикъл в main, да генерирам прекъсване, да ида в ISR, там да присъдя стойност на променлива и с тази стойност отново да се върна в main. Ето това построих за теста и то работи, точно, както си го обяснил: #include <xc.h> #include <pic12F1840.h> #define _XTAL_FREQ 8000000 //tell compiler that the clock is 8 MHz #pragma config MCLRE=ON // Reset pin enabled #pragma config CP=OFF // Code protection off #pragma config WDTE=OFF // Watch Dog Timer disabled #pragma config FOSC=INTOSC // Set to internal clock unsigned int i; void interrupt isr (void); void main() { OSCCON = 0b01110010; // Set internal clock, 8MHz ANSELA = 0b00000000; // Disable all analog input WPUA = 0b00000000; // Disable all internal weak pull ups TRISA = 0b00100000; // Configure pins for input(1)/output(0) INTCON = 0b10001000; // interrupt on change IOCAN = 0b00100000; //interrupt on falling edge of RA5 i=0; while(1) { if(i==0) LATA2=0; else LATA2=1; } } void interrupt isr(void) { LATA2=1; __delay_ms(1000); LATA2=0; __delay_ms(1000); i=1; INTCON = 0b10000000; } Най-важното - разбрах на какво се дължи и невъзможността ми до момента да се върна от ISR. Забравял съм да нулирам флага на прекъсването. Т.е - накрая на ISR да напиша INTCON = 0b10000000; С това, както казваш, компилаторът връща в основния цикъл и без да пиша "return". Сега продължавам борбата с това всичко по дискутираната джаджа да пусна да работи на контролера. Освен импулсите с различната продължителност подкарах и компаратора. Остава всичко да натъкмя спазвайки насоките ти. PS: Възникна още един проблем, свързан с горния пример. След като се върна от прекъсването в main, установявам, че ново (второ) прекъсване е невъзможно от същото събитие (отрицателен фронт на RA5). Това е логично, след като накрая на ISR съм нулирал целия регистър INTCON или поне IOCIE бита му. Поради това си помислих, че трябва да променя основния цикъл така: ...... while(1) { INTCON = 0b10001000; // interrupt on change IOCAN = 0b00100000; //interrupt on falling edge of RA5 if(i==0) LATA2=0; else LATA2=1; } Резултатът от това обаче е непрекъснато циклене в ISR. Какво пропускам? Накратко - искам да постигна следното: 1 - Изпълнение на main 2 - Изпълнение на ISR при дадено събитие в main (примерно - отрицателен фронт на RA5) 3 - Връщане в main. 4 - Последващо изпълнение на т. 2
|
| Пет Мар 10, 2017 11:42 am |
|
 |
|
dvrachkov
Ранг: Ориентиран
Регистриран на: Вто Сеп 30, 2014 8:20 am Мнения: 231 Местоположение: Bansko
|
 Re: Защита на електроуред срещу неправомерно включване
 |  |  |  | Цитат: Въпреки, че въпросът не е по дискутирания казус, ще си направя труда да ви отговоря:
Ако сте запознат с посочените от колегата безконтактни релета, бе трябвало и да сте и наясно, че те също ползват, като ключов елемент симистор, който за разлика от механичните релета има и по-голям пад на напрежение върху себе си в отпушено състояние, обикновено 0,5 - 1V. Вие сега пресметнете, каква мощност разсейва въпросното реле при ток от 40 А, преценете, какво охлаждане му трябва и пр.
Накратко - решението, посочено от колегата принципно не се различава съществено от това с въпросния триак и поради това "не съм ползвал тези подсказки" ами съм си решил проблема с механичните релета.
|  |  |  |  |
Механичните релета, които използвате имат 300000 работни цикъла живот. Управляващата намотка при 12V захранващо напрежение, харчи 92.3mA. Да не говорим, че релетата които сте посочили комутират 30А и са за монтаж на платка. SSR полупроводниковите релета имат своите предимства: "using an SSR instead of an EMR could extend the life of the switching component in the oven from 2 months (with the EMR) to 833 years (or 83 years at the lower end of the calculation, just to be prudent)" Да, цената им е по - висока, да - имат нужда от охлаждане при комутация на големи токове, да - токът за управление на SSR е 6mA при 4.5V, да - ако правите нещо сериозно, ще Ви трябва такова реле, да - имат по - дълъг живот от механичните. И то осезаемо. И особено ако се гони надеждност. Май забравих да спомена, че при механични вибрации също SSR е плюс. Относно какво охлаждане трябва - пише го в документа на уреда. Но, Вие сте специалист в тази област. Какъв съм аз, че да Ви говоря за токове и щуротии, след като вашият проект работи и всичко е наред. Чудя се, лекарите имат ли такъв форум? И лекуват ли така - наизуст. Боли те корем - апандесит! Отиваш да го махат, то се оказва, че преди десет години са ти го махнали. Цъкат с език над операционната и пишат във форума: "-Абе, тука един дойде с оплаквания - болки в корема. Не е апандесит. Какво може да е, да проверим докато сме отворили? - Ами може да е бъбрек. - Извадихме го вече..." и т.н.
_________________ "Спасението на давещите се е дело на самите давещи се" - О.Б. "По въпросите ще ги познаете" - В.Б. "'С изкуствен интелект е хубаво да се занимават хора, които имат естествен такъв" - Д.Б.
|
| Пет Мар 10, 2017 1:35 pm |
|
 |
|
lcr
Ранг: Форумен бог
Регистриран на: Пон Май 12, 2014 11:49 pm Мнения: 4394 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
На въпросното устройство "му се налага да сработи" максимум по 10 пъти в денонощие. Е - след 82 г. ще сменя релетата  Цялото устройство понастоящем е събрано в кутия с размери 110 Х 110 Х 60.:  Ако ползвах симистор или някое безконтактно реле, само охлаждащият радиатор щеше да е по-голям от нея и щях активно да допринасям за глобалното затопляне. Както е видно, казусът с комутацията вече е решен. Предлагам да не задълбаваме повече в тази посока.
|
| Пет Мар 10, 2017 2:00 pm |
|
 |
|
dvrachkov
Ранг: Ориентиран
Регистриран на: Вто Сеп 30, 2014 8:20 am Мнения: 231 Местоположение: Bansko
|
 Re: Защита на електроуред срещу неправомерно включване
Добре изглежда на външен вид. Като за home made е екстра. Ще попитам след 82 години, дали работят релетата. 
_________________ "Спасението на давещите се е дело на самите давещи се" - О.Б. "По въпросите ще ги познаете" - В.Б. "'С изкуствен интелект е хубаво да се занимават хора, които имат естествен такъв" - Д.Б.
|
| Пет Мар 10, 2017 2:10 pm |
|
 |
|
lcr
Ранг: Форумен бог
Регистриран на: Пон Май 12, 2014 11:49 pm Мнения: 4394 Местоположение: София
|
 Re: Защита на електроуред срещу неправомерно включване
Това скалъпих за момента:
#include <xc.h> #include <pic12F1840.h> #define _XTAL_FREQ 8000000 //tell compiler that the clock is 8 MHz
#pragma config MCLRE=ON // Reset pin enabled #pragma config CP=OFF // Code protection off #pragma config WDTE=OFF // Watch Dog Timer disabled #pragma config FOSC=INTOSC // Set to internal clock
unsigned int i; unsigned int t;
void main()
{ while (1) { OSCCON = 0b01110010; // Set internal clock, 8MHz INTCON = 0b00000000; // Disable all interrupts ANSELA = 0b00000011; WPUA = 0b00000000; // Disable all internal weak pull ups TRISA = 0b00011011; C1ON = 1; // Comparator enabled C1OUT = 0; // out = 0 if (+) > (-) C1OE = 0; // out internal C1SP = 1; // speed = high; power = normal C1HYS = 1; // hysteresis C1PCH1 = 1; //(+) to internal V ref C1PCH0 = 0; //(+) to internal V ref FVRCON = 0b11001000; C1SYNC = 1; TMR1ON = 1; //T1 enabled TMR1GE = 1; //T1 gate enable T1GPOL = 0; // T1 gate polarity T1GSS1 = 1; // T1 gate source - comparator T1GSS0 = 0; //T1 gate source - comparator t = TMR1H*255+TMR1L; TMR1L = 0; TMR1H = 0; __delay_ms(50); LATA2 = 0; LATA5 = 0; if(t>50) LATA2=1; else LATA2 = 0; if(RA4==0) i=15; if(LATA2) i=10; while(i>0) { LATA5=1; __delay_ms(1000); i--; if(RA4==0) i=10; } } }
Кратко пояснение:
При наличие на консумация, възниква променлива съставка на входа на компаратора и така на изходът му се повяват импулси, които се броят от таймера. Ако се преброят над някакъв брой за единица време, се вдига LATA2. Входът от бутона (RA4) вдига за 15 секунди LATA5 (изходното реле). LATA5 се държи вдигнат и от вдигнатия LATA2.
Това е замисълът и общо взето работи. Има нещо, което не мога да вдяна. Без това в червеното, изходният импулс се стартира нормално с натискането на бутона и трае 15 сек. след пускането му. LATA2 също се вдига само докато има консумация. Но когато го има това в червеното и сработи компараторът, LATA2 стои вдигнат заедно с LATA5 а би трябвало да е така само докато има консумация. Това е и причината да не мога да вкарам във while (i>0) и условието за LATA2.
|
| Пет Мар 10, 2017 7:29 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|