Sari la conținut
ELFORUM - Forumul electronistilor

Dificultati cu ADC la 16F877


nassus

Postări Recomandate

Vreau sa fac un senzor de curent pt un motor, senzorul in sine imi da 5V la 10A consum sau 0V la 0A consum. Senzorul de curent trebuie sa opreasca motorul cand se depaseste un anumit curent dar daca se supravegeaza constant curentul atunci se intra intr-o bucla naspa pt ca la pornire motorul consuma mai mult decat limita impusa, deci trebuie cumva intarziata "citirea" ADC-ului cateva zeci de milisecunde pt ca permite pornirea. Pornirea si oprirea motorului se face de la un buton.

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

Top autori în acest subiect

  • nassus

    6

  • Abram Burel

    1

  • Bala

    1

  • kit

    1

Zile populare

Top autori în acest subiect

Trebuie masurat curentul doar pentru a detecta obstacolele sau si pentru a se opri motorul la capatul cursei? Daca este doar pentru obstacole am vazut un sistem ca si cel descris de tine la care ADC-ul incepea sa functioneze cand butonul de actionare era eliberat.

Link spre comentariu

Eu vad doua cai de rezolvare:- hard: se monteaza un sensor ce determina rotatia motorului. daca este zero, se aplica o intarziere la activarea ADC, pana cand motorul intra in regim normal de functionare.- soft: daca am un curent zero, orice crestere este ignorata un anume timp, suficient pentru ca motorul sa intre in acel regim de functionare normal.apoi, se lasa ADC-ul, sa-si faca treaba. Cu alte cuvinte, un gradient de la 0 la valoare de decuplare este ignorat, daca se petrece intr-o perioada determinata de timp. Altfel trebuie sa intervina decuplarea, pentru ca este posibil ca motorul sa se fi blocat din start. Cred ca asa ceva as face eu...

Link spre comentariu

Sistemul e folosit ca sa detecteze obsacolele ca pt limitele inferioare si superioare sunt senzori. Oare nu e un timp prea scurt de la apasarea si pana la eliberarea butonului ca sa se poata folosi in vreun fel? Senzorii de limita superioara si inferioara sunt niste potentiometre legate tot la ADC pt a permite revenirea angrenajului la aceeasi pozitie de unde o plecat intrebarea mea e cum salvez si unde, valoarea ADC-ului ca sa o pot folosi la revenire? Si cum as putea combate fenomenul de deplasare a angrenajului peste valoarea exacta a potentiometrului din cauza inertiei sau din cauza impuritatiolor din potentiometru?

Link spre comentariu

Ca sa nu treci de pozitia ceruta (sa il faci cat mai rapid si fara oscilatii) cauta pe net despre bucle PID (Proportional Integrativ Derivativ).Teoria buclelor de reactie PID e bina pusa la punct si gasesti si exemple de implementare in microcontrollere.Daca nu ai nevoie de timp minim si de precizie prea mare poti sa o faci si "babeste" adica doar Proportional, fara Integrativ si Derivativ.Cat despre potentiometru, depinde ce vrei sa faci. Daca vrei precizie pune encodere digitale.

Link spre comentariu

pai precizia nu trebuie sa fie foarte mare de asta am si ales potentiometre. O sa ma documentez unpic de despre PID-uri pt microcontrelere ca suna interesant.. dar oricum ideea e sa nu fie nici prea complicat pt ca, cu cat e mai complicat cu atat pot sa apara mai multe erori si sistemul asta nu are voie sa clacheze. Deci angrenajul trebuie sa se revina de unde o plecat cu o marja de eroare de +- 15 valori ale adc-ului (consider ca e suficient de larga plaja).

Link spre comentariu

Daca vrei sa detectezi doar limitele, de ce folosesti potentiometre? Nu vad la ce te ajuta. Cum faci reglajul? mult mai simplu erau niste "contacte" de orice tip (electrice, optice) si pe care le puteai ajusta cumva mecanic.In ceea ce priveste pornirea si detectorul de blocare, asa cum s-a spus n-ar trebui sa para probleme, daca fenomenele pe care vrei sa le controlezi cu robotelul tau sunt modelate bine. Chestia cu intarzierea ar putea fi suficienta, mai ales ca un motor nu se "arde" pe durata cat ajunge la regim nominal, deci nici daca este tinut blocat pe aceasi durata.

Link spre comentariu

folosesc potentiometre pt a putea tine minte pozitia in care o fost la un moment dat angrenajul pt a se putea reveni la acea pozitie la un moment dat. Am inteles ca trebuie folosita o intarziere dar poate sa imi dea careva un exemplu de cod?

Link spre comentariu

1. Am deja rutinele de intraziere, problema e ca vreau sa le folosesc cu ADC-u deci sa se intarzie pornirea lui cu vreo 20 milisecunde.daca se apasa buton up/down;delayms(20);pornire supravegherea curentuluidaca motorul functioneazapornire supraveghere obstacole (tot curentul)2. Eu folosesc C pt ca nu am nici o treaba cu ASM-u3. Chestia asta foloseste la controlul geamurilor electrice.

Link spre comentariu

Vezi ca pentru geamuri electrice exista un application note de la Microchip, din pacate nu mai stiu cum se numeste, dar era un exemplu de implementare exact pentru treaba asta: geamuri electrice, usi de lift sau alte locuri in care trebuie sa se detecteze overload si cap de cursa. Din cate imi amintesc eu totul era NUMAI soft, si masura si turatia si fara limitatoare de cursa pentru ca sensul il stiai iar capatul de cursa il deduceai (suprasarcina in motor). Si in plus tinea cont si de ultimii centimetri la actionarea geamului, se micsora viteza, etc.Treaba era bine gandita si completa. Cauta in Application Notes-uri. Ii zice anti-pinch la treaba cu suprasarcina. In doc atasat gasesti trimiteri catre ce trebuie sa citesti.

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