Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyj±tek elektroda.pl do Adblock.
Dzięki temu, że ogl±dasz reklamy, wspierasz portal i użytkowników.

[BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej

airman 05 Mar 2012 00:26 2254 11
  • #1 05 Mar 2012 00:26
    airman
    Poziom 11  

    Witam

    Potrzebuję waszej pomocy, mam problem którego nie potrafię rozgryĽć a mianowicie chce wykonać sterowanie lamp± błyskow± za pomoc± dĽwięku a uC ma pełnić rolę opóĽnienia błysku w ms która wcze¶niej jest ustawiona przez potencjometr

    napisałem prosty program jednak opóĽnienie w tym wypadku nie działa tak jak tego oczekuje

    program:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    w tym przypadku program nie reaguje na chwilowy sygnał mikrofonu ktory powinien zostac opóĽniony o wartosc getadc(5), kolejny element ktory przeszkadza to "zamulone" działanie

    Zapewne po kodzie zaawansowani programi¶ci stwierdz±, że to moje pierwsze niepewne kroki w programowaniu, i macie racje dopiero zaczynam wiec licze na pomoc

    Pozdrawiam
    Rafał

  • #2 05 Mar 2012 10:30
    FastProject
    Poziom 28  

    Pokaż kolego schemat. Nie napisałe¶ co masz podł±czone do ADC5(potencjometr???) i jaki oraz w jaki sposób podł±czony mikrofon.

    Bez tego ciężko analizować ten kod.

  • #4 05 Mar 2012 13:06
    airman
    Poziom 11  

    Witam ponownie, sygnał samego mikrofonu pojemno¶ciowego wychodzi z tego układu:

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej

    pocz±tkowo za tym układem stawiałem tic106m i wszystko działa jednak układ jest za szybki i muszę zrobić regulowane opóĽnienie, schemat poł±czeń uC postaram się szybko ujawnić, tylko wrócę z pracy

    korrus666 jak inaczej można bardziej zoptymalizować kod ?

    Dziękuję za odpowiedzi

  • #5 05 Mar 2012 14:19
    korrus666
    Poziom 40  

    Jak już pisałem wcze¶niej wykorzystaj przerwanie. Użyj wej¶cia INT0 lub INT1. Ustaw je sobie na narastaj±ce zbocze i napisz procedurę obsługi przerwania odliczaj±c± zadany czas. W pętli możesz sobie czytać ADC, a jak przyjdzie przerwanie to program automatycznie skoczy do obsługi przerwania. Daje to mniejsze opóĽnienie pomiędzy wykryciem zmiany a zaczęciem odliczania czasu niż w twoim programie.
    Nie powiem Ci jak to napisać bo nie znam Bascoma i piszę tylko w asemblerze.

  • #6 05 Mar 2012 15:28
    airman
    Poziom 11  

    Oto schemat, wytykanie błędów mile widziane (pierwsze kroki w eagle)

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej

    D1 będzie zast±piona np tic106m aby wyzwolić lampe

    Wielkie dzięki korrus666 za nakierowanie, postaram się stworzyć tak± procedurę, jednak je¶li kto¶ zna Bascoma lepiej niż ja to proszę o jak±¶ pomoc

    Pozdrawiam

  • #7 05 Mar 2012 17:31
    PiotrPitucha
    Poziom 32  

    Witam
    Jakie długie zwłoki chcesz uzyskać ?
    W tym układzie analogowym kondensator 0,1µF ładujesz przez rezystor 10kΩ co już daje zwłokę, aby ustrzec się przed niespodziankami lepszy byłby układ daj±cy strome zbocza, np. Link
    i nie wprowadzaj±cy przypadkowych opóĽnień
    Piotr

  • #8 05 Mar 2012 22:51
    airman
    Poziom 11  

    Witaj

    Na razie układ działa prawidłowo i na pewno jest jaka¶ zwłoka, któr± z czasem będę chciał zniwelować o ile będzie to konieczne, teraz chciałbym się skupić nad programem do opóĽnienia z którym mam najwięcej problemów, czas opóĽnienia ma być regulowany od 0 do np 1000ms aby wybrać odpowiednie ujęcie podczas rozbijaj±cego się np słoika.

    Dodano po 5 [godziny] 8 [minuty]:

    Oto kolejne dzieło które ponownie działa ale nie tak jak tego oczekuję, timer liczy cały czas od momentu podania zasilania nie zwracaj±c uwagi na to czy na portd.2 (int0) dostaje wczesniej jaki¶ sygnał.


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Próbowałem zmodyfikować delikatnie obsługę przerwania aby kasowal licznik "Liczba" jednak wtedy nie pokazuje mi wartosci "Czas" s± za to jakie¶ liczby z kosmosu a "Liczba" ci±gle ma warto¶ć 0. Po podaniu sygnalu na portd.2 (int0) zmienia mi się jedynie informacja na lcd, że "dioda on" nic poza tym.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

  • Pomocny post
    #9 06 Mar 2012 12:18
    gromleon
    Poziom 31  

    Troszkę zmieniłem, sprawdĽ czy działa.
    Troszkę nie rozumiesz co piszesz dlatego oporni Ci to idzie najpierw zwiększa liczbę a potem sam j± zerujesz, więc sił± rzeczy zawsze będzie równa zero.
    Druga rzecz to zwiększasz "liczbę" tylko od jakiej warto¶ci zaczynasz? Najlepiej zaczynać od zera. itd


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

  • Pomocny post
    #10 06 Mar 2012 17:53
    emarcus
    Poziom 34  

    airman napisał:
    Witaj

    Na razie układ działa prawidłowo i na pewno jest jaka¶ zwłoka, któr± z czasem będę chciał zniwelować o ile będzie to konieczne, teraz chciałbym się skupić nad programem do opóĽnienia z którym mam najwięcej problemów,


    Masz problemy bo cały program masz napisany pod priorytetem obsługi LCD a nie zamierzonego celu. LCD potrzebujesz tylko aby ustawić czas opóĽnienia, reszta jest absolutnie zbędna.
    Obsługa LCD, któr± masz ujet± w programie głównym, zabiera tak dużo czasu processora że isnieje realna możliwo¶ć "przegapienia" krótkiego sygnału na wej¶ciu, tymbardziej że nie stosujesz interruptu, który tu jest konieczny.
    Zdaje się 'korrus' albo kto¶ już o tym pisał.

    Odno¶nie podł±czenia LCD:
    Line z Data (D4 do D7) do LCD powinny należeć do tego samego portu processora.
    Bascom akceptuje mieszane podł±czenie, ale to znacznie wydłuża program.

    Na schemacie brak kilku kondensatorów i ponieważ wykorzystujesz ADC skoryguj sposób podł±czenia AVCC do zasilania. Także AREF nie powinno wisieć bez podł±czenia - daj tam mały cap. do GND. Naturalnie wej¶cie zostało przeniesione z PB1 na PD2, możesz tam dać wiekszy rezystor.

    Poniżej masz code, który wydaje mi się że powinien pracować (nie testowany).
    Jeżeli jest Ľle to inni poprawi± lub skomentuj±.

    Code:
    [syntax=basic4gl]
    
    $regfile = "m8def.dat"
    $crystal = 4000000

    Config Portd.2 = Input
    Config Portb.2 = Output

    Dim Temp As Word , Czas As Word
    Dim Liczba As Word , T2 As Byte
    Dim Flag1 As Bit , Flag2 As Bit
    Config Int0 = Rising
    Enable Int0
    Enable Interrupts
    On Int0 T_delay
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , Rs = Portb.6 , E = Portb.7
    Cursor Off
    Config Timer0 = Timer , Prescale = 64
    Const Timer0reload = 62
    Enable Timer0
    On Ovf0 Timer0_isr
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
      Start Adc


      Cls
      Lcd "CZAS= " ; Czas ; " mS"
      Do
           Temp = Getadc(5)
           If Temp <> Czas Then
           Czas = Temp
           Gosub Disp
           End If

      If Flag1 = 1 Then
      If Liczba >= Czas Then

      Set Portb.2
      Reset Flag1
      Set Flag2
      End If
      End If

      If Flag2 = 1 Then
      Gosub Koniec_cyklu
      End If
      Loop


      T_delay:
      Timer0 = 0
      Liczba = 0
      Set Flag1
      Return


       Timer0_isr:
       Load Timer0 , Timer0reload
       If Flag1 = 1 Then
       Incr Liczba
       End If
       If Flag2 = 1 Then
       Incr T2
       End If
       Return

       Disp:
       Locate 1 , 7
       Lcd Czas ; " mS" ; Spc(3)

       Koniec_cyklu:

       If T2 = 10 Then   'czas trwania stanu wysokiego na wyjsciu diody (D1); wg zalozenia: 10 mS
       Reset Portb.2
       Reset Flag2
       T2 = 0
       End If
       Return

    [/syntax]


    e marcus

  • #11 07 Mar 2012 01:04
    airman
    Poziom 11  

    Dziękuję za odpowiedzi, program wydaje się działać prawidłowo, zmienie jeszcze tylko piny LCD. Narazie cało¶ć przechodzi faze testów i juz teraz wiem ze sam mikrofon nie jest tak czuły jak tego oczekiwałem więc staram się trochę usprawnić czę¶ć analogow±.

  • #12 21 PaĽ 2016 23:26
    airman
    Poziom 11  

    No to odkopujemy stuletnie jaja

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej
    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej

    Nieprofesjonalna wersja kreatywna.
    Wtedy zaczynałem i do dzi¶ nie ma wersji finalnej ;)
    Skoro otrzymałem pomoc to przydałoby się chociaż pokazać partyzane z tym zwi±zan±.

    Moduły poł±czone przewodami.
    Wiem, to niechlubnie trochę, ale starannie zabezpieczone ciepłym glutem by na ł±czeniach się nie łamały.

    Aktualnie zamontowany akumulator li-ion od jakiego¶ iphone'a + ładowarka z zabezpieczeniem i przetwornica 5V by nie ciorać za sob± kabli. Nie miałem jednak czasu by wymierzyć i wyci±ć otworu pod moduł TP4056, może dlatego iż rzadko muszę ładować.

    Zapytaj± ludzie po co pleksi i Led wewn±trz, ¶pieszę z odpowiedzi±, ano po to aby w mroku nie pozabijać się o urz±dzenia i statywy.

    W wyobraĽni miałem jeszcze menu z wyborem wbudowanego modułu, czasu oczekiwania by wyzwolić powtórnie jednak na razie korzystam tylko z skrajnych przycisków do ustawienia Delay.

    NajwyraĽniej zbyt dużo już nie zmienię bo spełnia na razie swoje zadanie i cieszy mnie to, a wiadomo jak bywa z prototypami, już tak do końca. Może kolejna wersja w pełni na 1 płytce, smd.

    Krótko.

    Obudowa- drewno+sklejka

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej

    Moduł klawiatury

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej


    MB

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej


    Sound Sensor
    Za rad± kolegi PiotrPitucha skorzystałem z schematu klaskacza i spisuje się oczywi¶cie wspaniale dlatego dziękuję za pomoc.
    Ze względu na niskie koszta szarpn±łem się na cztery takie moduły, może się kiedy¶ do czego¶ przyda.

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej


    ...i reszta archiwum

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej

    Co do malowania... to nie moja najmocniejsza strona ;P


    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej

    [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej [BASCOM] regulacja czasu zwłoki dĽwiękowego wyzwalacza lampy błyskowej

    Rozmazany ¶rut jest spowodowany przez zastosowanie archaicznej lampy której czas błysku trwał wyj±tkowo długo a moc± nie można było się pobawić.

    Wielkie Dziękuję dla

    emarcus, korrus666, PiotrPitucha, gromleon

    Pomocni i skuteczni :)

 
Promocja -20%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
tme