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

ATtiny13 - [Bascom] - przeliczenie wyniku z ADC - sterowanie zapłonem triaka

sieger 07 Mar 2013 18:45 1767 2
REKLAMA
  • #1 12029423
    sieger
    Poziom 24  
    Witam

    Piszę sobie prosty program do sterowania triakiem.
    Na jednym pinie na przerwaniu PCINT0 jest zrobiony zero-crossing
    Program ma odpalić Triak z zadanym opóźnieniem na pół milisekundy.
    Przetwornik sobie chodzi w trybie free i ze starszych 8 bitów chce sobie wyliczyć opóźnienie od 0 do 9000 mikrosekund (9 mili).

    Problem mam z samym przeliczeniem

    Oto kod programu:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Bascom zgłasza błąd 63 w linii: Waitt = Int(9000 *(1 - Voltage / 255))

    Integer or long expected for ABS()

    Moja logika jest taka, że jeśli napięcie będzie takie jak VCC to wtedy Voltage będzie zawierać wartość 255. Operacja ma dać 9ms opóźnienia dla skręconego potencjometru i 0 dla pełnego zakresu. Wynika to z działania triaka - im później w półokresie się włączy tym mniejsza wartość średnia/skuteczna napięcia.
    Jak już sobie poradzę z tym skalowaniem, to powstanie taki mały zestaw badawczy do badania pracy triaków z rożnymi obciążeniami. Planuję też dodać zadawanie czasu zapłonu z komputera.

    Proszę o pomoc z tą konwersją typów zmiennych.
  • REKLAMA
  • Pomocny post
    #2 12029638
    Press
    Poziom 24  
    sieger napisał:

    Bascom zgłasza błąd 63 w linii: Waitt = Int(9000 *(1 - Voltage / 255))


    Chyba żartujesz :D BASCOM matematyke ma na poziomie pierwszej klasy szkoły podstawowej. Jedna operacja w jednej linii.

    Czyli:
    Wynik = A + B + C
    Trzeba rozpisać jako:
    Wynik = A + B
    Wynik = Wynik + C
  • #3 12029805
    sieger
    Poziom 24  
    Rozpisałem z użyciem zmienej "pośredniej" definiowanej jako single.
    No i wyszło mi po kompilacji 138% pamięci. Jak człowiek pisze na dsp i na pc to zaczyna sobie zbyt szeroko rządzić. Powstała wersja zredukowana:

    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA