Vlad Mihai Postat Martie 2, 2013 Partajează Postat Martie 2, 2013 Salut, am scris un cod in mikroC pentru un dualVoltampermetru dar nu reuşesc să implementez o protecţie la scurt_circuit. Protecţia vreau să funcţioneze în felul următor: Vreau să citească tensiunea de un un şunt de 0.1ohmi înseriat cu sursa care teoretic la 10A dă o cădere de 1v, eu vreau să citesc această valoare cu ADC şi atunci când depăseşte cei 1V pe şunt să dea un clear LCD şi să afişeze 2 texte pe LCD, pe lângă asta mai vreau să acţioneze un releu.... adică atunci când e scurt să afişeze pe ecran că e scurt şi după 5 secunde să decupleze releul. şi mai vreau să adaug un buzzer care să scoată un bip repetat când e scurt. şi să dispară când sursa nu mai e în scurt. am încercat eu prima parte să o rezolv. dar nu mai ştiu să continui.... nu e necesar să postez tot codul...Poate are cineva vreo idee. //Protectie scurt-circuit scurt_circuit = ADC_read(4); while (scurt_circuit >= 210) { Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,2,"Scurt circuit"); LCD_Out(2,5,"I > 10A"); Delay_ms(1000); PORTC.F1 = 0; /// aici schimba starea releului din pornit în oprit scurt_circuit = ADC_read(4); Lcd_Cmd(_LCD_CLEAR); } Link spre comentariu
Mircea Postat Martie 3, 2013 Partajează Postat Martie 3, 2013 Vlad, setezi o intrare ca fiind IOC care cheama o procedura de unde nu iesi pana nu revii la starea originala. Cand starea se schimba (esti in procedura scurt), atunci afisezi mesajul, actionezi releul, etc.Pentru o rezolutie mai buna, as amplifica tensiunea de pe sunt cu un factor intre 2 si 5. Ai sa folosesti mai bine cei 10 biti din ADC. Link spre comentariu
Mircea Postat Martie 3, 2013 Partajează Postat Martie 3, 2013 Vlad, am scris prostii mai sus , pastreaza din ce-am zis numai ideea cu amplificarea. Link spre comentariu
Vlad Mihai Postat Martie 4, 2013 Autor Partajează Postat Martie 4, 2013 multumesc, dar parca nu as vrea sa ma complic cu amplificarea pentru ca ar trebui si tensiuni simetrice si ma complic. As putea modifica suntul sa folosesc unul de 0.33 ohmi cu toate ca as avea cadere tensiune pe el destul de mare. Va urma probabil diseara sa mai incerc sa vad cum rezolv cu chestia asta. Link spre comentariu
Liviu M Postat Martie 4, 2013 Partajează Postat Martie 4, 2013 Ce te-ai astepta sa faca, ce nu face, cu ce ai vrea sa continui si nu stii...O gramada de detalii care lipsesc, asa ca o sa primesti cel mult sfaturi "principiale" (in principiu...).Ce mi se pare mie nu tocmai corect in bucatica de cod pe care ai postat-o:- dupa ce detectezi un scurt, intai povestesti cu LCD-ul, dupa aia mai astepti o secunda si abia dupa aceea intrerupi scurtul. In timpul asta poti arde multe.- dupa ce astepti secunda, dezactivezi iesirea si o masori. Am asa o vaga senzatie ca n-o sa mai detectezi nici un scurt , o sa iesi din while si o sa continui linistit programul, desi inca nu stii daca mai ai scurt sau nu.Eu as fi dezactivat iesirea dupa intrarea in while, as fi afisat si asteptat, as fi reactivat iesirea si as fi masurat inca o data (timp de 5 ori, pentru cele 5 secunde). In cazul in care scurtul persista bucla while e repetata (dezactiveaza iesirea, afiseaza, asteapta)...Ce mi se pare c-ar mai trebui sa ai in vedere:- releului n-o sa-i placa sa-l activezi cu 10 A pe contacte. Sau trebuie sa alegi un releu care sa poata asta. Sau folosesti un releu solid-state.- releul are un timp de stabilizare pe care nu-l iei in considerare pe nicaieri. Adica intre comanda pentru releu si achizitia cu ADC ar fi bine sa astepti niste ms.- as face rutina de detectie la scurt bazata pe intreruperi, ca parca e mai sigur sa strige imediat ce are o problema, decat sa astepte sa-i vina randul. Cu alte cuvinte, poate e mai bine sa folosesti o intrare de comparator, ca parca astea genereaza si intreruperi. Link spre comentariu
Vlad Mihai Postat Martie 4, 2013 Autor Partajează Postat Martie 4, 2013 Salut Liviu, da ai dreptate, dar eu nu vreau să mă complic cu intreruperi(nu ştiu programare, lucrez cu tutoriale şi nici nu am timp să învăţ). Eu vreau ceva simplu, detecţie scurt şi afişare pe LCD şi un buzzer care să ţipe, nu mai vreau să dezactivez ieşirea. nu cred că vor fi 10A in circuit, nici măcar 5 nu cred, era doar o valoarea aleatorie aleasă, care va fi probabil setată la 5A. şuntul va fi pe ieşire inseriat cu sarcină către masă. când depăseşte 5A mă avertizează sonor şi eu voi dezactiva releul manual cu un push buton. Am definitivat teoretic partea cu protecţia. scurt_circuit = ADC_read(4); while (scurt_circuit >= 110) { Sound_Init(&PORTC, 3); Sound_Play(1000, 500); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,2,"Scurt circuit"); LCD_Out(2,5,"I > 5A"); Delay_ms(1000); scurt_circuit = ADC_read(4); Lcd_Cmd(_LCD_CLEAR);Ştiu că e ciudată protecţia dar eu aşa o vreau, practic vreau doar avertizare nu şi protecţia propriu-zisă. Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum