Jump to content
ELFORUM - Forumul electronistilor

Temporizator cu Pic si trei relee


EFTIMIE

Recommended Posts

Va salut ,cer din nou ajutor pt. realizarea unui temporizator cu pic care sa aibe trei intrari si sa comande trei relee.Am nevoie sa execute astfel:Intrare 1 in scurt comanda releul 1 si ramane asa pana la disparitia scurtului de pe intrare.Intrare 2 in scurt, actionat releul 1, un timp reglabil de preferat, dar poate fi fix ,10s o mica pauza de 1s decuplat releul 1 actionat releul 2 care ramane aclansat pana la intreruperea scurtului de pe intrare.Intrare 3 in scurt ,actionat releul 1 10s,reglabil daca se poate,1s pauza decuplat releul 1, actionat releul 2 10s dupa care 1s pauza decuplat releul2,actionat releul 3 care ramane asa pana la intreruperea scurtului de pe intare.Am nevoie pentru comanda unui motor cu trei viteze si vreau sa ii fac un soft start cu acest temporizator.Multumiri anticipate pentru sprijinul acordat.

Link to comment
Share on other sites

  • Replies 22
  • Created
  • Last Reply

Salut!

 

Si eu am beneficiat de ajutor pe acest forum cand eram la inceput (@ratoiul, @ticu) asa ca fac si eu un gest si incerc sa te ajut.

Ai in arhiva un automat cum ai cerut tu, este varianta simpla fara reglaje la temporizari, realizat cu un PIC12F675 (ieftin).

 

Timpii sunt cei pe care i-ai mentionat: 10" pentru releu actionat, 1" pauza intre relee.

 

Intrarile se exclud reciproc, daca una este actionata celelalte sunt inactive.

 

In arhiva ai si simularea in Proteus. Pentru cazul tau, inlocuiesti LED-urile cu cate un tranzistor NPN cu o rezistenta in baza spre uC si cu emitorul la masa si cu un releu (obligatoriu cu dioda antiparalel) din colector spre rail-ul de +VCC. Recomandat sa pui si 2 condensatori pe alimentare: unul de 100uF si unul de 100nF in paralel, cat mai aproape de alimentarea PIC-ului. De asemenea preferabil sa alimentezi partea digitala din sursa separata de sursa etajului de comanda. Daca nu poti atunci macar ridica valoarea condensatorului electrolitic recomandat anterior la 220uF ... 470uF.

 

Daca chiar ai nevoie de reglarea temporizarilor atunci se poate face ceva cu un PIC cu mai multi GPIO la care se ataseaza un LCD cu 16x2 linii si 3 butoane pentru meniu. Dar pana atunci testeaza hex-ul din atasament.

 

Posted Image Uploaded with ImageShack.us

PJ_automat1.zip

Link to comment
Share on other sites

Uite si o varianta mai complicata, are posibilitatea reglarii timpilor folositi in temporizari, se foloseste de un PIC18F4550 care are interfata USB. Am ales PIC-ul deoarece cu ocazia asta am facut experiente cu comunicatia seriala pe USB si PIC-ul asta il am pe acasa. Totodata il gasesti pe stoc daca tragi o fuga pe Str. Maica Domnului.

 

Ai doua variante: varianta cu USB si cea fara.

 

Ambele au afisaj cu LCD 16x2 (gasesti pe forum la preturi bune, de fapt gasesti si PIC-ul pe aici) si automat-ul este controlat cu 3 butoane de tip PUSH fara retinere (UP, DOWN, SET).

Ai 3 intrari figurate ca si butoane in schema. Cele 3 LED-uri sunt de fapt cele 3 relee ale tale.

 

Varianta cu USB contine si driverul pentru USB dar numai varianta pe 64 biti, Windows7/Vista etc. Varianta de 32 biti nu am cum sa o generez pentru ca nu folosesc Win pe 32biti si nu instalez special.

 

Din nu stiu ce motive, varianta cu USB crashuieshte Proteus-ul asa ca nu s-a putut simula. Daca vrei sa o incerci, iti va trimite pe USB serial valorile setate pentru 3 variabile: timp T1 = timp pauza, timp t10_rel2 = timpul cat este activ releul 2, timp10_rel3 = timpul cat este activ releul 3. Valorile le poti citi pe PC cu un program gen Putty, HyperTerminal etc.

 

Aceste valori se salveaza in EEPROM dupa setarea lor din meniul de SETARI si tot atunci se trimit si pe USB.

La prima pornire se incarca in EEPROM valorile default:

timp pauza, t1=1"

timp releu 2, t10_rel2=10"

timp releu 3, t10_rel3=10"

iar ulterior se salveaza valorile setate din meniu.

 

Urmeaza sa implementez si o functie PWM pe unul dintre pinii ramasi, functie care se va activa sau dezactiva din meniu.

Daca vrei sa te joci, poti mai intai sa programezi un bootloader in PIC (e.g Tiny Bootloader) si apoi sa programezi PIC-ul numai prin USB. :da

 

Success!

 

LE: Cristalul folosit in oscilator este de 19.668MHz (vroiam sa ma joc si sa fac o intrerupere la 1 secunda si sa masor schimbarile de stare de pe un pin al uC-ului astfel avand posibilitatea sa citesc viteza motorului (ca si senzor folosind un senzor Hall sau poate un optocuplor - desi optocuploarele mai ieftine sunt lente...). Frecventa aceasta pemite obtinerea unei frecvente numar intreg a timere-lor.

 

Posted Image Uploaded with ImageShack.us

PJ_package_without_USB.zip

PJ_v1_with_USB.zip

Link to comment
Share on other sites

M-am jucat astazi un pic cu prima varianta si satisface cerintele fara probleme,nu am facut toate decuplarile, am simulat doar cu led fara relee,tranzistoare ,rezistente de polarizare si condensatori de decuplare si a mers satisfacator.Am avut niste simultaneitati ale iesirilor dar sper sa fie probleme hard nu de hex.Dupa ce voi face forma finala voi testa si sper sa nu m-ai am aceste probleme pt. ca actionarea simultana a doua iesiri este dezastruasa pentru motor.Multumiri multe pt. sprijinul acordat ,schema 2 este de retinut dar nu neaparat o voi folosi pt. acesta aplicatie.

Link to comment
Share on other sites

Si cu varianta 2 ,facand toate decuplarile necesare inclusiv condensatori in paralel pe intrari pt. a elimina vibratiile apare starea de simultaneitate .O aparitie deranjanta a acestei stari este la decuplare nu permanent dar totusi din cand in cand apare.Daca nu se poate rezolva din soft o sa o rezolv din relee cu dublu contact si inserierea bobinelor prin contactele releelor ca sa am doar un singur releu aclansat.

Link to comment
Share on other sites

Nimic nu bate verificarea direct pe breadboard. Am sa vad si eu in seara aceasta fizic ce se intampla si pe urma am sa corectez problema.LE: Incearca si varianta aceasta (nici aceasta nu este verificata pe breadboard dar ...). Bine ca nu vede nimeni codul pe care l-am scris, tot ce pot spune ca forta bruta primeaza in fata elegantei (am folosit jumatate din ROM si din RAM doar pentru cateva delay-uri si decizii :jytuiyu )

PJ_Motor_Controller_v3.zip

Link to comment
Share on other sites

Pai ce rost are sa vin eu cu hex? Ce suntem la concurs?Editat ulterior:Nu stiu in ce-l scrii, dar iti scriu in cod fals:Releu 1 anclasat bitul 0 portA:mask portA 0,1,21 portAReleu 2 anclasat bitul 1 portA:mask portA 0,1,22 portAReleu 3 anclasat bitul 2 portA:mask portA 0,1,24 portASucces!

Link to comment
Share on other sites

Am glumit, din aceasta cauza am si folosit "zambete" ...Sincer mie putin imi pasa cine vine cu solutia atata timp cat solutia este buna si OP are rezultatul dorit adica un automat functional.Asa cum este versiunea v4. Este verificata hardware - pe breadboard, nu apar simultaneitati (am identificat si greseala originara:conditiile + lipsea un ciclu WHILE pentru intrarea 1, pusesem un simplu IF cu alte consecinte). Am revenit la solutia care foloseste resurse minime, dar corectata.Succes!LE: mascare foloseam si eu, pentru iesire faceam un AND bitwise cu masca pt selectarea iesirii dorite si apoi aplicam cu OR bitwise.Cam asa: //Output: 0 -> A1trisio = trisio & 0xFD;if (0) { gpio = (gpio & 0xFD) | 0x02; }else { gpio = gpio & 0xFD; }

PJ_motor_controller_v4.zip

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.




×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines