logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AtMega8] [Bascom] detekcja zera sieci kilka pytań.

nouki 13 Lut 2009 13:52 5038 7
REKLAMA
  • #1 6144109
    nouki
    Poziom 25  
    Witam.

    Zrobiłem układ jak w załączniku.
    Mam pytanie do Kolegów mianowicie:

    Chce by układ po wykryciu zera wykonał pomiar czyli
    ..
    .
    zero = input
    if zero=0 then getadc(x)
    .

    ale mam problem z wykryciem zera tzn. układ stale jest w stanie wysokim i nie wykrywa spadku - impulsu z transoptorów.

    Jak powinien wyglądać fragment programu by poprawnie to działało??

    [AtMega8] [Bascom] detekcja zera sieci kilka pytań.

    p.s dodam że jest to klon z fabrycznego rozwiązania .
    Na oscyloskopie widać że stan niski jest 2 razy krótszy niż stan wysoki.
  • REKLAMA
  • #2 6144281
    korrus666
    Poziom 40  
    Zrób to na przerwaniu zewnętrznym na opadające zbocze. Wtedy gdy na pinie załóżmy INT0 pojawi się stan niski obsługujesz przerwanie i robisz co tam potrzeba. Skoro na oscyloskopie widać stan niski to znaczy że układ z transoptorami jest prawidłowy a problem loży po stronie oprogramowania.
  • REKLAMA
  • #3 6144473
    nouki
    Poziom 25  
    Tak tylko na tym co było fabrycznie idzie na nogę Pc.1 czyli nie bardzo ...

    Tak jak by pomiar wykonywany był przez Adc ale nie bardzo wiem jak bo jakoś mi nie działa za bardzo :)

    zrobiłem to tak:

    jest tam powiedzmy jakieś 4,8V więc zrobiłem tak

    a=getadc(X)
    if a< 900 then call pomiar

    ale nie działa mi to
  • REKLAMA
  • #4 6144847
    jacobsek
    Poziom 22  
    a jak robiłeś wykrycie stanu niskiego, w jakiejś pętli?, skoro na skopie masz wyraźną różnicę między stanem wysokim i niskim to proc powinien to wyłapać bez problemu.Daj może fragment kodu którym to robisz
  • #5 6145082
    nouki
    Poziom 25  
    tak jak napisałem

    Zero = Getadc(2)

    If Zero < 780 Then
    Call Pomiar
    Call Diody
    End If
  • #7 6145134
    jacobsek
    Poziom 22  
    Żeby była jasność bo nie wiem jak daleko siedzisz w programowaniu, takie "jeśli coś tam ma niski stan to zrób coś tam" nie czeka na pojawienie się tego parametru tylko w naprawdę maluczkim ułameczku ułamka sekundy gna dalej jak stwierdzi że mu parametr nie pasuje, stąd pytanko o kod....?
  • REKLAMA
  • #8 6145226
    nouki
    Poziom 25  
    To jest pętla właśnie .
    Jeśli do bazy transoptora dotchnę palcem sygnał z sinusoidy zmienia sie w kwadrat i wszystko jest ok.

    To jest tak rozwiązane że przy silnych tętnieniach wynik pomiaru strasznie skacze i odbiega miedzi pomiarami od siebie to rozwiązanie niby ma na celu dokonywanie pomiaru w tej samej chwili co ma to wyeliminować.
    Oczywiście nie do końca ale na tyle by wynik był stabilniejszy do dalszego obrabiania :)

    Pętla wykonuje się w koło a w subach trwa wszystko ok 2s i wraca.


    Rozwiązanie dość proste w bazie zamiast 100k teraz jest 200k i działa.
    Dziwne jest tylko to że jak wymieniłem transoptory z tej 2 płytki na której się wzorowałem to działało ze 100K a jak zakładam te kupione to nie działa a producent transoptorów ten sam.
    coś mi się wydaje że "Chińczyki" maczali w tym palce jak zwykle:)
REKLAMA