Blacksmith Postat 4 ore în urmă Partajează Postat 4 ore în urmă Am un montaj cu microcontroler Raspberry Pi Pico care trebuie sa citeasca daca un intrerupator este inchis sau deschis ca sa stie cand se cere shutdown. Intrerupatorul pe care l-am folosit este in genul asta: https://www.lcsc.com/product-detail/Rocker-Switches_Legion-SS21-BBIWG-D_C6775924.html. Fiind vorba de o chestie atat de serioasa (shutdown) nu trebuie sa existe declansari false. Eu am testat circuitul din imagine cam 1 an de zile, si am tot primit shutdown-uri necerute. Recent am descoperit ca intrerupatoarele au nevoie de un curent minim, numit "wetting current", ca sa functioneze corect. Pentru a rupe stratul de oxid format pe contacte... Dupa cum se vede pe schema, curentul meu era in jur de vreo 70uA ! Deci probabil ca e prea mic... Voi v-ati lovit cumva de problema asta ? Aveti idee cam ce curent mi-ar trebui pentru intrerupatorul din link ? I-as da 2mA... O fi de ajuns ? Link spre comentariu
mihaiaurul Postat 4 ore în urmă Partajează Postat 4 ore în urmă (editat) Rutina soft care trateaza acest buton cum arata ? Si, in general, este bine ca atunci cand dai o comanda unui procesor printr-un intrerupator să pui la GND acel pin. La tine starea "activa" (intrarea in shutdown) este cand pin se duce la alimentare. R2 ce rol are ? Editat 4 ore în urmă de mihaiaurul Link spre comentariu
Blacksmith Postat 4 ore în urmă Autor Partajează Postat 4 ore în urmă Indiferent ce rutina soft ii fac, tot se reseteaza... I-am dat delay de 2s si tot degeaba, se pare ca intreruperea este mai mare de atat. R2 este pt limitarea curentului prin contact la scurtcircuitarea condului... Acum 6 minute, mihaiaurul a spus: cand dai o comanda unui procesor printr-un intrerupator să pui la GND acel pin. De ce ? Ce conteaza ca e pe front crescator sau descrescator ? Da, la mine, cererea de shutdown era semnalizata prin 1 logic. M-am gandit sa fac asa: Link spre comentariu
mihaiaurul Postat 3 ore în urmă Partajează Postat 3 ore în urmă (editat) 21 minutes ago, Blacksmith said: Ce conteaza ca e pe front crescator sau descrescator ? Cand pinul este la GND influenta zgomotului electric din jur este mai mică. Adică, zgomotul poate să facă din High->Low. Invers este mai greu. Editat 3 ore în urmă de mihaiaurul Link spre comentariu
Blacksmith Postat 3 ore în urmă Autor Partajează Postat 3 ore în urmă (editat) Stai, ca le-am incurcat... Deci intrerupatorul meu, este dublu, si cealalta pereche de contacte are alta functie. Din cauza asta comanda de shutdown trebuie data cand comutatorul se deschide... Adica, cand se trece de la "inchis" la "deschis". Deci tot ca in prima schema tre sa fac. Dar cu valorile din a doua... Pana la urma, despre "wetting current" nu stii nimic ? Ca asta e problema, nu zgomotele. Pe alea pot sa le scot din soft. Editat 3 ore în urmă de Blacksmith Link spre comentariu
mihaiaurul Postat 3 ore în urmă Partajează Postat 3 ore în urmă 14 minutes ago, Blacksmith said: Pana la urma, despre "wetting current" nu stii nimic ? Ca asta e problema, nu zgomotele. Nu m-a interesat asta. Si nici nu cred ca acest fenomen este cauza problemelor tale. Eventual pune acolo 4k7, maxim 10k in loc de 47k. Link spre comentariu
Blacksmith Postat 3 ore în urmă Autor Partajează Postat 3 ore în urmă Pai altceva ce poate sa fie... ? Ca ti-am zis, nu sint doar spike-uri de tensiune, pentru ca am asteptat si 2 secunde dupa ce am primt frontul crescator, si apoi am citit din nou nivelul pinului, si era tot sus. Nu are cum sa existe zgomote cu durata de peste 2 secunde... Link spre comentariu
cimitavita Postat 3 ore în urmă Partajează Postat 3 ore în urmă Scoate condensatoare, scoate tot. Nu mai pune piese aiurea. Ori e analogic, ori e digital. Ambele complică lucrurile foarte mult. Filtrele și temporizările se bagă în softul uC care comandă releul respectiv. Trebuie stabilite niște condiții foarte clare pentru ca uC să facă shut down sau o altă comandă. Eventual să înregistreze pentru debug în eeprom sau într-o memorie externă motivul și condițiile care au apărut și pentru care a făcut shut down ca mai târziu să vezi unde ai greșit în program. De pildă, rutina de citire a unei tastaturi are filtre software care scot paraziții care apar la apăsarea unui push button în cazul în care contactele sunt un pic oxidate și nu se fac perfect. Fără filtre, în loc de o singură apăsare a butonului, uC ar lua câteva apăsări ale butonului respectiv și programul ar merge total aiurea. În felul ăsta nu este nevoie să pui condensatoare în paralel cu fiecare push button. În plus, la butoanele conectate în matrice e imposibil să pui condensatoare. La atmega dacă pui un buton care trebuie citit de uC, este de preferat ca butonul să fie pus la masă datorită felului în care atmega citește intrările. Activezi pull-up pe pinul respectiv și nu ai nevoie de nici o rezistență externă. Dacă pui butonul pe plus, nu poți folosi filtrele hardware care sunt puse la fiecare intrare și o să ai multe citiri false. Iar când comanzi un led sau releu, este de preferat ca ieșirea respectivă să absoarbă și nu să dea curent. Adică ledul sau releul îl pui între plus și ieșirea uC (cu eventualele rezistențe de limitare a curentului). Dacă contactele releului merg in cc, pentru curățirea contactelor, se leagă în paralel cu contactele un condensator de 2,2-22nF. Fiecare scânteie ajută la curățarea contactelor. Dar dacă releul este acționat foarte des, condensatorul "ajută" la distrugerea prematură a contactelor. Link spre comentariu
Blacksmith Postat 2 ore în urmă Autor Partajează Postat 2 ore în urmă Chestia e ca eu nu folosesc nici Atmega, nici tastaturi si nici relee... Condensatoarele pe intrarile de butoane sint foarte comune, se numeste "debouncing". Nu conteaza ca e digital, cu cond acolo tensiunea aia scade si creste un pic mai incet, atata tot. Da, fac si din software debouncing. Dar nu strica sa ai si hardware... La Pico, poti sa faci intrarile si pull-up, si pull-down. Dar rezistentele pe care le foloseste el intern sint de 47k. Ca asa am si facut prima data (de aia era rezistenta aia de 47k pe schema). Si dupa cum am spus, nu a mers... din cauza de "wetting current" de care n-a auzit nimeni. Link spre comentariu
UDAR Postat 2 ore în urmă Partajează Postat 2 ore în urmă (editat) Eu nu cred că este de la ”wetting current”, ar trebui să fie extrem de prost comutatorul ăla. Ar trebui să prezinte o rezistență de contact de 10kΩ sau mai mult! Și chiar și așa (adică prost fiind) se oxidează în timp ce este închis? Înțeleg să nu facă contact din cauza oxizilor la trecerea de la deschis la închis dar așa, din senin ? Și da, am auzit de ”wetting current” dar la relee (pentru ceva proiecte am studiat destul de mult diferențele între releele de semnal și cele de putere) nu la întrerupătoare. Da, întrerupătorul ăla nu este adecvat acolo dar sunt aproape sigur că nu de la el e problema. Editat 2 ore în urmă de UDAR Link spre comentariu
Blacksmith Postat 2 ore în urmă Autor Partajează Postat 2 ore în urmă (editat) Acum 14 minute, UDAR a spus: Ar trebui să prezinte o rezistență de contact de 10kΩ sau mai mult Pai initial poate sa faca bine contact si apoi sa piarda contactul din cauza ca trec doar 70uA prin el. Acum 14 minute, UDAR a spus: Da, întrerupătorul ăla nu este adecvat acolo Tu cum ai face in locul meu ? Ce fel de intrerupator sa pun si ce schema sa fac ? Problema este ca mie imi trebuie un intrerupator cu 2 perechi de contacte. Iar una trebuie sa fie de putere (2-3A minim), ca va fi intrerupatorul principal de pe alimentare, iar cealalta e asta care da comanda de shutdown (ca ramane pe baterie, chiar daca ii intrerup eu alimentarea). Din cauza asta nu pot da comanda decat prin intreruperea circuitului. Ca daca era invers, nu era problema... As mai putea folosi un intrerupator DPDT si sa folosesc contactele opuse, dar nu cred ca exista din asta mic si DPDT. Acum 14 minute, UDAR a spus: dar sunt aproape sigur că nu de la el e problema Inteleg... dar nu prea sint alte variante. Circuitul ala l-am folosit la NAS-ul meu cu Raspberry Pi 4. Si, in afara de ala, altceva nu am avut acolo... Editat 2 ore în urmă de Blacksmith Link spre comentariu
UDAR Postat 1 oră în urmă Partajează Postat 1 oră în urmă Nu știu ce ai tu acolo deci mi-e greu să-ți propun soluții. Poți de pildă să sesizezi lipsa alimentării (după ce s-a deschis cealaltă secțiune care ar deveni unica) cu un optocuplor sau ceva. Nu știu dacă ți se potrivește. Link spre comentariu
Blacksmith Postat 45 minute în urmă Autor Partajează Postat 45 minute în urmă Nu merge sa iau semnalul de pe alimentare, ca nu vreau sa-si dea shutdown cand pica reteaua, ci sa ramana pe baterie. Vreau sa isi dea shutdown doar cand actionez eu mecanic intrerupatorul... Link spre comentariu
sesebe Postat 23 minute în urmă Partajează Postat 23 minute în urmă Existau butoane de power pt TV-uri veci ce aveau și un contact aditional de mica putere ce dedea comanda la procesor. Poți cauta unul de ala. Apoi rezistenta de limitare a curentului din condesator o pui de doar citiva ohmi nu zeci de kohm. Iar mai apoi cum demonstrezi ca cele citeva reseturi apărute în decurs de un an au fost generate de acest buton cu probleme și nu au fost generate de altceva? Faptul ca ție posibil să-ți fi rămas un log în care să apară comanda de la buton nu garantează ca intradevar a fost o comanda falsa de la buton (pe partea HW externa procesorului). Link spre comentariu
Blacksmith Postat chiar acum Autor Partajează Postat chiar acum Deoarece totul e facut de mine, iti dai seama ca am facut cumva sa ma asigur ca e de la buton. Pe de alta parte, butonul este si acum acolo, insa e dat disable din soft de vreo 6 luni, si nu a mai existat nici un shutdown din senin... Daca ne cunoastem de 10-15 ani si tu imi recomanzi mie sa caut intrerupatoare prin tv-uri vechi... inseamna ca n-ai inteles nimic din ce fac eu... Asta faceam acum 25 de ani. Aveam un boschetar abonat pe care il plateam sa-mi caute placi electronice defecte prin tomberoane, ca nu aveai de unde sa cumperi. Dar intre timp am mai evoluat si noi... Acum, nu doar ca folosesc doar piese noi la produsul final, dar trebuie neaparat sa fie piese in productie activa si sa existe stocuri mari la magazin. Nu fac productie de serie ca sa vand, dar nu concep ca un montaj al meu sa nu poata fi reprodus oricand de oricine doreste, pentru ca nu se mai gasesc piesele. 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