Sari la conținut
ELFORUM - Forumul electronistilor

Automat cu PIC 12f629 sau 12F675


Postări Recomandate

  • Răspunsuri 63
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

Cam asa arata la mine:

http://i62.tinypic.com/rtgkyp.jpg

 

Eu as incerca acelasi lucru si in C:

 

while (1) {

do{;}while(!(pin_inp)); // asteapta ca pinul colectorul lui BC sa fi ajuns pe logic 1

pin_out=0; // output pe 0

delay((1/50)/25 secunde); // astepta 5% din perioada sinus sa treci cumva de perioda aia cand nu este deschis cuplul de doua diode

delay ((1/50)/2/2 secunde); // mai asteapta jumate din semiperioada <- durata Toff PWM

pin_out=1;}

 

Ar fi mai simplu in C de scris asta. Durata Toff PWM poate deveni o variabila x care se incremetaza/ decremeteaza in ciclu. La 4MHz clock procesor ai o rezolutie la calcul durata de 1us iar perioada este 1/50Hz. Abia la a cincea cifra semnificativa apare diferenta.

 

Daca se vrea mai precis exista si instructiunea delay cicli procesor. Pentru masurarea timpului mai precis, fie va uitai fisierul ASM creat de compilatorul C, fie dati "pin_out=1" (pui un pin pe 1) si il folosesti ca trigger pentru oscilo.

Link spre comentariu

Schema poate sa ramana cea postata de colegul UDAR aici viewtopic.php?f=11&t=162052#p1459043 sau

Am luat acea schema atunci. Atasez ce am lucrat - simulare, sursa si hex:- primele cateva secunde creste intensitatea, sincron, timp in care nu citeste (deocamdata) nicio alta apasare de push- urmatoarele trei minute ramane pe "pornit", si citeste o eventuala alta apasare de push. Fiecare apsare de push prelungeste cu inca atat perioada. Pentru teste rapide am pus si varinta cu 17 secunde aprins. Daca nu am nimerit cele 3 minute bine, sa imi spuneti, am facut doar prin calcul estimativ- dupa care se stingeEste doar un test, nu zic ca poate fi folosit inca. Spune-mi, te rog, cum merge in practica, daca pe osciloscop arata cum vrei.
Buna Mondan!In primul rand iti multumesc pentru implicare!In simulare este perfect cum merge, dar se face doar prima rampa, dupa care continua 3 minute si se opreste.Ideea era, ca dupa cele 3 minute sa scada la 25-30% duty cycle, si sa mai mearga asa 20s, dupa care sa cada la OFF. Incerc sa explic functionarea in graficul de mai jos. Daca in orice moment din intervalul B-C, se apasa din nou pe buton, sare la B (reia numaratoarea celor 3 minute), iar daca se apasa in intervalul D-E, sa creasca inapoi duty-cycle liniar la 100% si sa inceapa la fel de la punctul B.MINUNAT ar fi daca cele 3 minute (din intervalul B-C) si cele 20 secunde (din intervalul D-E) de la capat, le-ar citi din adresa de eeprom, ca sa poata fi modificate ulterior dupa cerinta.I rest eu zic ca functioneaza perfect PWM sincron cu reteaua!Stima si respect!

post-18487-139829760298_thumb.gif

Link spre comentariu

MINUNAT ar fi daca cele 3 minute (din intervalul B-C) si cele 20 secunde (din intervalul D-E) de la capat, le-ar citi din adresa de eeprom, ca sa poata fi modificate ulterior dupa cerinta.

Daca codul sursa este disponibil, atunci se poate modifica direct in program si recompila (atat cred ca ma descurc sa fac :) ) nu mai este nevoie sa fie citit din eeprom!Stima!
Link spre comentariu
daca se aplica pwm-ul in poarta triacului la inceputul sinusoidei, acesta nu se va mai stinge decat la trecerea prin zero, indiferent de latimea pwm.

 

Eram curios doar de "stingera" triacului sa se razlizeaze bine. De asta am facut sa se opreasca pulsul inainte ca tensiunea sa ajunga 0V, ca nu cumva sa inceapa pulsul urmator si sa prinda triacul deschis.

 

 

le-ar citi din adresa de eeprom, ca sa poata fi modificate ulterior dupa cerinta.

E ok, gaseste un mod de setare al timpului in EEProm. De exemplu:

-push pentru up/down + indicatie pe LED

-se alimenteaza cu push-ul apasat, se asteapata timpul dorit, se apasa push pt stingere;

 

Sau daca nu, se pot face mai multe montaje cu diversi timpi prestabiliti.

 

Ideea era, ca dupa cele 3 minute sa scada la 25-30% duty cycle

Este vorba cumva de 25-30% din intensitatea maxima a luminii ? Pentru ca daca "tai din sinusoida" ultimii 30% ca timp, e o arie prea mica.

Link spre comentariu

Aveti cumva 16F675 ?Aceeasi schema. In folderul test este acelasi fisier, dar cu urmatoarele perioade aproximative pentru test: 3sec creste(AB), 7 secunde pornit constant (BC), 2 sec scade (CD), cateva secunde ramame la 25% (DE), apoi scade la 0 (EF). Rampele de luminozitate au treceri rotunjite (eu cred ca arata mai bine asa). In perioada CD push-ul apasat face sa sara in punctul B (nefinalizat).Daca puteti sa ma ajutati cu un test practic, sau macar cu Proteus. Nu m-am descuracat in Proteus la conectarea optocuplorului (asa cum arat in fisierul atasat, eu nu prea stiu sa folosesc programele de simulare) :jytuiyu .Pana atunci nu mai continui, pentru ca nu am o verificare daca triacul e controlat bine. Sa cronometran si sa verificam timpii in practica. In cele 20s cu lumina slaba, e ok nivelul de lunimozitate ?

Link spre comentariu

@Mondan

 

Merge perfect sincron cu reteaua, controlul triacului e perfect! am testat pe breadboard.

Mai sunt cateva chichite ...

 

De pornit porneste OK, dar nu face resetul la B cand face rampele de coborare (C-D si E-F), atunci butonul este inactiv, voiam ca oriunde in intervalul B-F, daca se apasa pe buton sa sara la B!

 

Am omis (uitat sa spun) in prima explicatie de intervalele C-D si E-F ... gresala mea! :jytuiyu

 

Acum face reset doar in intervalul B-C (de 3 min) si D-E ( 20 s) , iar cand urca inapoi la 100% din intervalul D-E, nu porneste urcarea de la 20% ci de la 0% exact ca la prima pornire, iar pe lampa se simte cum porneste din 0.

 

In rest OK!

 

Cu respect!

Link spre comentariu

Rampele de luminozitate au treceri rotunjite (eu cred ca arata mai bine asa).

Exact asta voiam sa spun doar ca eu am reprezentat trecerile rotunjite prin coborari pe grafic.

In perioada CD push-ul apasat face sa sara in punctul B (nefinalizat).

Si asta voiam dar am uitat de ele :jytuiyu (cele doua intervale C-D si E-F).La apasarea pe push sa urce inapoi la 100% de unde a ajuns si sa contiune (sara) de la B.Stima si respect!
Link spre comentariu

Am corectat programul. Acest program poate fi folosit in practica Si atasez. Atasat si in MikroC cam cum arata algoritmul facut, asa se va citi mai usor.Programul in C postat anterior pare sa fie OK in simulare.Ceea ce n-a observat nimeni (cred), este ca acest integrat este un mic calculator, iar daca functionaza continuu in cateva luni da eroare, se blocheaza. De aceea trebuiesc folosite instructiuni antiblocare.Sa verificati cu un ampermetru pe alimetarea lui PIC12f675, daca dupa ce "isi face treaba" trece la consum redus de curent (ma astept de la mA la uA). Intra in acest mod doar dupa ce s-a apasat macar o data push-ul. Asta insemnca ca e in stand-by.Push-ul ar trebui sa aiba condensator paralel (cred, cam 1mS la fiecare 10mS e inactiv)In locul lui Push un optocuplor. Ca pin-ul integratului este destul de sensibil la zgomot si daca sunt firele lungi, ar putea lua zgomot.Si totusi cred ca am gresit ceva la intrerupere. Am sa revin. Trebuia fie oprit INTCON.GIE la inceput.Vedeti cum merge.

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări