Jump to content
ELFORUM - Forumul Electronistilor
Sign in to follow this  
Vlad Mihai

Implementare protecţie în DualVoltampermetru

Recommended Posts

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);         }

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Vlad, am scris prostii mai sus :nas: , pastreaza din ce-am zis numai ideea cu amplificarea.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 :rade: , 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.

Share this post


Link to post
Share on other sites

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ă. :sparge:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • 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.