EFTIMIE Posted July 13, 2013 Share Posted July 13, 2013 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 More sharing options...
costi002 Posted July 13, 2013 Share Posted July 13, 2013 daca nu gasesti ajutor in alta parte, fa o schema si iti fac eu softul pentru el. Link to comment Share on other sites More sharing options...
mars01 Posted July 14, 2013 Share Posted July 14, 2013 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. Uploaded with ImageShack.us PJ_automat1.zip Link to comment Share on other sites More sharing options...
EFTIMIE Posted July 14, 2013 Author Share Posted July 14, 2013 Multumesc mult voi incerca maine softul si vad daca merge asa cum imi trebuie mie.Revin cu amanunte. Link to comment Share on other sites More sharing options...
mars01 Posted July 14, 2013 Share Posted July 14, 2013 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. 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. Uploaded with ImageShack.us PJ_package_without_USB.zip PJ_v1_with_USB.zip Link to comment Share on other sites More sharing options...
EFTIMIE Posted July 15, 2013 Author Share Posted July 15, 2013 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 More sharing options...
mars01 Posted July 15, 2013 Share Posted July 15, 2013 Am refacut putin software-ul, am testat pt simultaneitati si nu au aparut. Cel putin in simulator. Valorile pt "debouncing" la butoane sunt conservative ... totul pare OK. Verifica si varianta aceasta. PJ_Motor_Controller_ Alternate.zip Link to comment Share on other sites More sharing options...
EFTIMIE Posted July 17, 2013 Author Share Posted July 17, 2013 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 More sharing options...
mars01 Posted July 18, 2013 Share Posted July 18, 2013 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 ) PJ_Motor_Controller_v3.zip Link to comment Share on other sites More sharing options...
bercioiu Posted July 18, 2013 Share Posted July 18, 2013 Ma bag si eu in seama... Eu daca am aceasta situatie, folosesc masking pe bitii respectivi, in modul asta nu voi avea niciodata 1 pe doi biti Link to comment Share on other sites More sharing options...
mars01 Posted July 18, 2013 Share Posted July 18, 2013 Bine gandit.Sa vedem daca merge brute-force-ul facut de mine si daca nu fix asta o sa aplic. Asta, daca nu vii tu mai repede cu un HEX Link to comment Share on other sites More sharing options...
bercioiu Posted July 18, 2013 Share Posted July 18, 2013 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 More sharing options...
mars01 Posted July 18, 2013 Share Posted July 18, 2013 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 More sharing options...
bercioiu Posted July 18, 2013 Share Posted July 18, 2013 Pai da, pentru ca-ti ajunge mana stanga sa te scarpini la urechea dreapta... Mie nu-mi ajunge, ma scarpin cu dreapta Link to comment Share on other sites More sharing options...
mars01 Posted July 18, 2013 Share Posted July 18, 2013 Pai "cate bordeie atatea obiceie". M-am fript odata si de-atunci suflu-n iaurt.Si ... fiecare se scarpina cum poate. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.