Sari la conținut
ELFORUM - Forumul electronistilor

Problema automat cu PIC16F873A - I/SP


Vizitator MarkyZiP

Postări Recomandate

Vizitator MarkyZiP

Am realizat un automat cu PIC 16F873A - I/SP ce functioneaza astfel: la intrarile RA0 si RA1 este legata o memorie EEPROM 24C02, la porturile PortC si PortB (mai putin RB0 si RB1 folositi ca intrare) am legate prin tranzistor 14 relee la 5 volti ce comanda diferite vane si motoare dupa o secventa de lucru si cu temporizari pe fiecare releu realizate software (timpii ajung pana la 4 minute si ceva, de fapt sunt 255 secunde maxim). In memoria EEPROM se tin variabilele "timp". PROBLEMA ESTE CA LA UN MOMENT DAT (cand ajunge sa comute un anumit releu) microcontrolerul nu trece mai departe ramane in acel pas la nesfarsit si daca dau reset (pinul MCLR la masa) dupa ce eliberez butonul de reses se intoarce tot acolo unde s-a blocat. Pinul RB1 l-am folosit pentru START-ul secventei de lucru iar RB0 este o intrerupere (deocamdata nu este folosita). AVETI VREO EXPLICATIE PENTRU ASTA CA EU NU STIU CE SA-I MAI FAC !?

MULTUMESC ANTICIPAT

Link spre comentariu
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • cirip

    3

  • sofian

    2

  • Abram Burel

    1

  • d2134

    1

Top autori în acest subiect

Posteaza o schema.Pana atunci: Ai diode pe relele? Ai decuplare pe alimentarea procesorului? Ai pull-up pe intrarea de intrerupere? Softul e facut de tine sau e frun hex de pe net? Softul a mers pe alt montaj sau asta e primul? Daca nu conectezi partea cu relele, se mai propteste? Incerc sa ma prind daca e de soft sau o ia procul razna din cauza de spike-uri.Cirip

Link spre comentariu
Vizitator MarkyZiP

Postez schema cu mentiunea ca nu am desenat toate conexiunile la relee, dar se poate observa ca Portul B (fara RB0 si RB1) si Portul C sunt iesiri pe relee. Soft-ul e facut de mine am folosit un "Delay" la 1 secunda timp de baza , pentru 3 secunde scriu : movlw .3 call Delay ......... Ma gandesc sa nu fie timpi prea mari ptr un microcontroler. Memoria tine cele 13 variabile de timp de care am eu nevoie. Releele comanda contactori. Alimentarea montajului este separata de partea cu relee si de cea cu contactori. Am condensatori de deparazitare nu am bucle de masa si cu toate astea apare din cand in cand fenomenul de care am vorbit. Releele (YAKAMISAWA) au rezistenta pe bobina de 160 ohmi dar alimentarea este separata. Multam de raspuns !!!

Link spre comentariu
Vizitator MarkyZiP

Mr Sofian, ce importanta are sursa din care alimentez releele daca e separata de sursa ce alimenteaza PIC-ul. Te asigur ca sursa pentru relee suporta curentul maxim pentru toate releele. Si mai e o faza: maxim 5 relee raman anclasate la un moment dat in secventa de program. Ma gandesc la PORTB nu pot activa rezistoarele de pull-up ptr ca 6 biti ai portului sunt de iesire si 2 de intrare. Se poate intampla ca din cauza aceasta (cele doua intrari de pe Port B nu au rezistoarele pull-up active) sa o ia razna PIC-ul meu (de fapt software-ul ramane blocat intr-o secventa sau daca dau reset cand revin tot acolo e soft-ul, nu se intoarce la start). Ce se poate intampla daca folosesti intrare de pe port B si nu activezi rez. de pull-up in conditiile in care limitez prin rezistor extern curentul la intrarea in port. :smt004 E dubios tare !!? :rolleyes:

Link spre comentariu

1.eu din schema respectiva am vazut ca releele si picul sunt alimentate dintr-un singur loc (Vdd)2.circuitul de detectie nu este bunmai bine faci astfelin loc de dioda zenner de 4.7V pui un rezistor si obtii un divizor de pe care masori tensiunea inainte de stabilizator si in functie de asta vezi daca dispare tensiunea de retea3.Daca activezi PullUp ptr PORTB nu conteaza daca mai ai si intrari4.Sfatul meu este sa schimbi configuratia ptr butonul de start astfel :rezistor la Vdd din RB0butonul START la masa si RB0

Link spre comentariu

Nu trebuie activate rezistentele weak pull-up. Ai 10k pull-down pe RB1.Muta rezistenta de 2k mai la stinga (pe schema) si pinul RB1 decupleazal la VDD cu 100nF.S-ar putea sa-ti faca probleme un contactor. Schimba-i intre ei. Nici 'MCLR nu e prea bine aranjat. Daca problema apare aleator poate fi vorba de EMI. Daca apare constant poate fi si din soft. Si in soft pot apare probleme aleatorii in caz de race-condition de exemplu.Foloseste o sursa de calitate, ia masurile anti EMI (pune si grupuri RC pe bobinele de la contactori), fa un circuit pentru 'MCLR ca la carte si n-are cum sa nu mearga.Mai vezi si ce se intimpla cu brown-out rest enabled/disabled.

Link spre comentariu

Ma gandesc sa nu fie timpi prea mari ptr un microcontroler.

Nu exista asa ceva. Daca rutina de intarziere e scrisa corect, poate sa astepte si o zi si 2 saptamani.Din ceea ce spui as suspecta ca e o problema in soft. Ai testat softul separat? Eu folosesc simulatorul din MPLAB in situatii din astea si il prind repejor cand o ia razna. Deci ti-as sugera sa rulezi programul cu simulatorul si sa vezi daca si unde se poticneste.Nu vad decuplare la pinii de alimentare ai picului. Paote ca exista , dar nu e figurata pe schema.Cirip
Link spre comentariu
Vizitator MarkyZiP

In primul rand vreau sa va multumesc pentru sfaturi, mi-ati fost de mare ajutor.

Alimentarea pe relee este separata nu este tot din Vdd (am omis pe schema).

Am simulat in MPLAB inainte de a arde in PIC si bineinteles ca a functionat. Am doua PIC 16 F 873A si se intampla pe amandoua fenomenul care este aleator.

Nu inteleg ce inseamna sa fac un circuit pentru MCLR ca la carte. Presupun ca MCLR trebuie tinut in 0 logic ceva timp dupa ce se alimenteaza PIC-ul (problema ce se rezolva cu un grup RC), sau poate ma insel eu.

Voi face modificari dupa sfaturile primite si va tin la curent .

MULTUMESC !!!

Link spre comentariu
Alimentarea pe relee este separata nu este tot din Vdd (am omis pe schema).

E bine daca e separata.

 

Am simulat in MPLAB inainte de a arde in PIC si bineinteles ca a functionat. Am doua PIC 16 F 873A si se intampla pe amandoua fenomenul care este aleator.

Daca merge pe simulator, iar comportarea HW este aleatoare, e pos sa ai EMI. Deconecteaza toate rezistentele de la comanda in baza a tranzistoarelor (ridica-le cate un crac) si porneste-l. Mai face? Daca nu mai face, e EMI cum zicea si d2134 si trebuie stinse spike-urile de la relee.

 

Nu inteleg ce inseamna sa fac un circuit pentru MCLR ca la carte. Presupun ca MCLR trebuie tinut in 0 logic ceva timp dupa ce se alimenteaza PIC-ul (problema ce se rezolva cu un grup RC), sau poate ma insel eu.

Nu neaparat (grup RC). Intai... Dioda aia nu are nici un rol acolo decat daca faci programare in circuit. Daca nu, scoate-o si conecteaza MCLR prin rezistenta sau direct la VDD. Nici de circuit RC nu ai nevoie ptr ca , daca il activezi din registrul CONFIG, picul are in interior intarzierea aia ca sa permita sursei sa se stabilizeze. Nu uita de decuplare la pinii de alimentare ai picului.

 

Cirip

Link spre comentariu

Putin off-topic: daca nu ai decit 13 variabile de timp de ce nu le tii in memoria EE-prom interna a PIC-ului? On-topic: cum adica daca dai reset tot in aceeasi stare ramine? La reset nu stergi starea automatuului ( de fapt ar fi bine - dupa parerea mea - ca la initializare - imediat dupa reset - sa stergi toti registrii din RAM )

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