Mircea Postat Februarie 20, 2015 Partajează Postat Februarie 20, 2015 Dane, imi pare rau ca nu pot te ajuta cu problema ta. Dar te rog insistent sa pui o siguranta diferentiala intre retea si orice poti atinge tu la acel montaj. Link spre comentariu
Mondan Postat Februarie 20, 2015 Autor Partajează Postat Februarie 20, 2015 PIC-ul a fost alimentat dintr-un acumulator de 3.7V. La fel. GP2=1 ; triac aprins , becul sta aprin fara sa clipesca. Loop: goto Loop GP2=0 ; triac srtins , becul sta stins Loop: goto Loop Cand faci dimming, se face, dar becul clipeste la o frecventa joasa vreo 1-2Hz. ---------------------------------------------------- <Ar trebui sa faci cel putin o verificare suplimentara cat dureaza fiecare perioada intre 2 treceri prin zero. Daca ai echivalentu a 9-11ms sa zicem consideri ca ii ok.> Merita incercart, desi zic ca prin asta stricam 'farmecul' sincronizarii. Sau sa incerc ca sincronizarea sa se faca o data la 5 perioade. <Daca nu, faci resincronizare si astepti urmatoarea perioada.> Pai tocmai ii mai dam o clipire daca sarim din perioade. Altceva, La ce tensiune pinul ala INPUT este considerat in 0 logic ? Pai la sub 0.8 (la Vdd=5V) Cat timp intrarea are tensiunea asta ? Uin=310V*sin(2*3.14*50*t) Uin=310V*sin314*t) Uin<0.8V Acum, am 1uS/ instructiune btfsc port, pin ;1uS gorto $-1 2uS Abs(Uin)<0.8V doar pentru 16uS ar fi sinusoida sun 0.8V......... Link spre comentariu
Mondan Postat Februarie 20, 2015 Autor Partajează Postat Februarie 20, 2015 Nici asta n-a mers. Osciloscop pe placa de sunet. Risc placa de sunet. Oricum calculatorul e vechi. Link spre comentariu
ventzel Postat Februarie 20, 2015 Partajează Postat Februarie 20, 2015 Cand faci dimming, se face, dar becul clipeste la o frecventa joasa vreo 1-2Hz. Apare la orice nivel sau numa la intensitati mici? Calculu temporizarii din zero pana la comanda triacului cum o faci? Perioada retelei ar trebui masurata intre 2 treceri prin zero si ajustata eventual la fiecare ciclu daca ea ii intre anumite limite, cel mai simplu prin media aritmetica cu valoarea precedenta. Pe valoarea asta a perioadei calculezi temporizarea in functie de ce luminozitate vrei. Daca prinzi o perioada care nu se incadreaza in limite ii mai bine sa ignori ciclu respectiv. Poti avea o situatie in felu urmator: ai la t0=0 o detectie corecta la trecerea prin zero, faci temporizare 6ms pana la comanda triacului, si la 7ms ai o detectie gresita a trecerii prin zero. Urmaeaza iara 6ms temporizare si iti da comanda la triac la 13ms de t0 care ii defapt pe urmatoarea semiperioada a retelei la 3ms de trecerea prin zero reala. Pana nu pui codu sursa nu am idee care ii situatia si mai mult nu pot presupune. Trecerea prin zero la schema asta ii foarte aproape de trecerea prin zero real a retelei. Probleme de diferente de faza apar la schemele cu rezistenta-optocuplor sau detectia dupa un transformator coborator de tensiune cazuri in care momentu cand controlleru "vede" 0 pe pinu respectiv ii cu cateva zeci-sute de us inainte. Link spre comentariu
Mondan Postat Februarie 21, 2015 Autor Partajează Postat Februarie 21, 2015 <Apare la orice nivel sau numa la intensitati mici?> Apare si la intensitati mici si la intensitati mari. Numai cand e complet aprins sau complet stins nu apare (deci fara citirea trecerii prin 0) <Calculu temporizarii din zero pana la comanda triacului cum o faci?> Am pus in Proteus generator de semnal 50Hz (100Hz dupa redresare) Delay-ul a fost astfe ajustat: [galben- semal retea] [rosu- semnal in pin detectie trecere prin 0 , maxim 5V] [albastru - semnal in poarta tiristor ref. T1 ] <Perioada retelei ar trebui masurata intre 2 treceri prin zero si ajustata eventual la fiecare ciclu daca ea ii intre anumite limite> Asta ar fi un algoritm prea complex pentru un dimmer, da putin in inteligenta artificiala. Dar il voi incerca. < ai o detectie gresita a trecerii prin zero> Ce ar putea sa genereze asta ? <Pana nu pui codu sursa nu am idee care ii situatia si mai mult nu pot presupune.> Eu il pun, dar e in ASM pt. ca folosesc totusi un integrart cu memorie limitata: list p=12f675 #include <p12f675.inc> errorlevel -302 __CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT ;;;;w_temp EQU 0x20 del1 EQU 0x25del2 EQU 0x26del3 EQU 0x27simDC EQU 0x28 ;********************************************************************** ORG 0x000 ; processor reset vector;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GP5 e un LED care are o conexiune fixa la +;;;;GP2 iesirea tiristor;;;;;; citire tensiune retee - pe GP1;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main;;;;;;;;;;;;;;;;;;;;;;;;;; initializare port ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;bcf STATUS, RP0clrf GPIOmovlw 0xFF movwf CMCON ;; digital I/Obsf STATUS, RP0clrf ANSELmovlw 0xFF ;; toate pe input, movwf TRISIObcf TRISIO,2 ;; GP2 pe output - tirtistrr sau LED optocupl.bcf TRISIO,5 ;; LED bcf STATUS, RP0 ;; TRIS Bank 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AsteptPush:;----------------- start daca se apasa push ---------------------------------------------------AstepatPB:btfsc GPIO,0 goto AstepatPB;----------------------------------------------------------------------------------------------Repeta:;===========================================================================================;; Repata la fiecare ciclu sinus ;;;;;;===========================================================================================AstepatR:btfsc GPIO,1 ;; asteapta tensiune retea se apropie de 0V (coboara);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;goto AstepatRmovlw 0x0F ;; Toff minim "PWM"movwf del1 Delay1:nop nopnopdecfsz del1,Fgoto Delay1;+++++++++++++++++ Aici un delay variabil +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++movf simDC,0xE0 ;; peroada stins - FF maxim movwf del1 Delay12:nop nopnopnopnopnopnop nopnopnopnopnopnop nopnopnopnopnopnopnopnopnopnopdecfsz del1,Fgoto Delay12bsf GPIO, GP2 ;; pune iesirea pe 1 ;; Aprinderea trisoruluimovlw 0x0F;; delay cat tine tirisorul aprins - FF e 1/2 din 50Hz movwf del1 Delay12T:nop nopnopnopnopnopnop nopnopnopnopnopnop nopnopnopnopnopnopnopnopnopnopdecfsz del1,Fgoto Delay12Tbcf GPIO, GP2 ;; stingerea tristoruluigoto Repeta END ; directive 'end of program' Sunt lasate multe nop-uri pentru cain timp ce face delay va face si altceva. Repet: in Preoteus nu se observa problema, doar in montajul real. Am folosit in simulare exact acceleasi valori de rezistori ca in montajul real. Link spre comentariu
Mondan Postat Februarie 21, 2015 Autor Partajează Postat Februarie 21, 2015 (editat) Da. s-a rezolvat la acest punct. Au fost detectii false de 0. L-am probat 5 min la intensitate scazuta si nu a clipit. ----------------------------------------------------------- Acum parte a doua: Se va seta sa: - porneasca din fluier, stinge din push - pornesaca din push, singe din fluier - porneasca si stinge din fluier Deci in timp ce becul e aprins si el isi face algoritmul mai sus amintit; - va citi daca push este apasat scurt sau lung (are doua functii) si - va sesiza daca cineva fluiera. In C e dificil de scris asta, ca in interiorul unui delay sa definesti alte functii, dar delay-ul "sa ia" tot atat timp. --------------------------------------------------------------------------------- Cum am fost 'acuzat' ca vrea sa fur idei: http://www.elforum.info/topic/87668-amplificator-operational-din-pic16f-si-breloc-cu-fluer/ Inca studiez programul de aici. Montajul astepta fluieratul la 2 khz. Dar el nu masoara perioada intre maxim si minim. Astepta de la maxim un timp predefinit si citeste daca apaut minimul. Pentru a gasi frecventa peredominanta 2KHzarr fi un FFT, dar la PIC12F nu cred ca e folosit. Si va invit la acea discutie daca veti vrea. Editat Februarie 21, 2015 de Mondan Link spre comentariu
Mondan Postat Februarie 22, 2015 Autor Partajează Postat Februarie 22, 2015 Ar fi fost dificil in C de facut delay cat becul e aprins. Am facut diferenta intre - push apasare scurta si - push apasare lunga numarand in cate perioade push-ul a fost "gasit" apasat. De ex: la 100Hz dupa redresare, daca in 100 de perioade succesive push-ul a fost 'gasit' apasat, atunci a fost apasat pentru 1 secunda , deci e press long Link spre comentariu
Vezi Muti Postat Februarie 22, 2015 Partajează Postat Februarie 22, 2015 Ar fi fost dificil in C de facut delay cat becul e aprins. Evident, in C se fac delay-uri numai cand becul este stins. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum