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 Płynne przejście 0 w 1 - początkujący

ARASOBOLEK 15 Wrz 2007 22:22 2400 9
REKLAMA
  • #1 4287558
    ARASOBOLEK
    Poziom 15  
    Posty: 185
    Pomógł: 3
    Ocena: 9
    Witam


    Chcialbym zaglębić sie w temacie programowania jestem zupełnie zielony jednak juz pierwsze kroki stawiam i zaczynam wiele rzeczy rozumieć jednak mam jedno pytanie. Jak zrobić płyne przejście ze stanu 0 do 1 i odwrotnie szukałem po forach oraz googleowałem sporo jednak odpowiedzi nie znalazłem.

    Cel:

    Stworzenie centralki do sterowania efektami świetlnymi za pomocą LED-ów.

    Jeden klawisz który umożliwia uruchamianie ukłądu (naciśniecie 3 sek)

    Kolejne naciskanie powoduje zmianie efektów.

    LED 2-u kolorowa:
    ziel. - stan pracy
    czer (pulsowanie) - czuwanie

    Jak narazie mam kilka opcji swiecenia ale jeszcze musze to wszystko podłączyć pod swich - w programie.

    Płytke mam juz zrobioną, wszystko jest poza programem :)


    Bardzo bym prosił o odp na moje pytanie
  • REKLAMA
  • #2 4287576
    Mad Bekon
    Poziom 23  
    Posty: 794
    Pomógł: 31
    Ocena: 36
    Płynne zapalenie / gaszenie możesz zrobić przez PWM.
    Czyli Modulacje szerokości impulsu...

    Możesz do tego wykorzystać sprzętowy PWM, albo napisać to programowo.
    Sprzętowo taka zaleta, że nie zajmujesz tym procka.
    o Co chodzi... ?
    otóż przełączając dość szybko ze stanu 1 na 0 i odwrotnie w równych odstępach czasu dostaniesz wypełnienie impulsu 50%, czyli takie przeskoki napięcia dadzą Ci około 2,5V na wyjściowym pinie.
    Zmieniając procent wypełnienia, regulujesz sobie napięcie na tym pinie i w ten sposób przygaszasz albo rozjaśniasz diodę...
  • REKLAMA
  • Pomocny post
    #3 4287592
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Poczytaj troszkę o PWM, zmiana szerokości impulsu dające w efekcie zmianę jasności świecenia diody. Bo oto chodziło, prawda ?
  • #4 4287605
    ARASOBOLEK
    Poziom 15  
    Posty: 185
    Pomógł: 3
    Ocena: 9
    Chyba do końca sie nie zrozumieliśmy :)


    Moją przyszłą centralke można porwnać do lampki rowerowej ... jesli chodzi o wlączanie poszczgolnych programow:

    Chciałbym upchac tyle prgroamów ile tylko wejdzie do atmegi

    przgasanie diod chciałbym zeby było ciągłe tzn rozjaśnia sie i gaśnie rozjaśnia i gasnie .. i tak cały czas w jednym z tych programów


    Mam nadzieje ze teraz jestem bardziej zrozumiały :)
  • Pomocny post
    #5 4287656
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Ależ zrozumieliśmy się bardzo dobrze ;) Tylko jeśli procesor nie ma przetwornika cyfrowo-analogowe (z prawdziwego zdarzenia) konieczne są inne kroki do uzyskania takiego efektu. Procesor operuje tylko na dyskretnych wartościach (0, 1) dlatego nie można uzyskać na wyjściu wartości pośredniej.
  • #6 4287675
    ARASOBOLEK
    Poziom 15  
    Posty: 185
    Pomógł: 3
    Ocena: 9
    Oj ... to bardzo źle.


    Dzisiaj juz nie mam siły na to ale jeszcze poszukam info odnośnie PWM bardzo dziękuje koledzy za oszałamiająco szybkie zainteresowaie tematem. Juto zaczne dalej dziłać :)


    Raz jeszcze bardzo dziękuje :)
  • REKLAMA
  • REKLAMA
  • #8 4288188
    ARASOBOLEK
    Poziom 15  
    Posty: 185
    Pomógł: 3
    Ocena: 9
    Rozumiem .... ale tak jak napisałem wcześniej płytke mam już zrobioną elem. są wszysko gra ... wiec nie chciałbym tego zmieniac ale jak zajdzie taka konieczność, a dużo jest elem. przy takim naprostrzym przetowniku bo wszystko mam juz upchane - zrobione pod pudełko
  • Pomocny post
    #9 4288235
    Mad Bekon
    Poziom 23  
    Posty: 794
    Pomógł: 31
    Ocena: 36
    Dość prostym układzikiem jest TDA8444. Obsługuje się go przez I2C. Jako maksymalne napięcie podajesz na pin Vref napięcie świecenia diody w pełni. Masz do dyspozycji 8 wyjść, na każdym z nich możesz ustalić sobie napięcie w skali 0-64 * Vref.

    Maksymalny wypływający prąd z każdego wyjścia to 10mA więc w zależności od diody, musiałbyś na wyjściach zastosować tranzystorki wzmacniające i masz do dyspozycji 8 regulowanych wyjść analogowych i nie zajmuje to procka tak jak programowe PWM
  • Pomocny post
    #10 4533405
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    Ale sie procesor napracuje z programowym PWM
    U mnie program zajmuje 0.2% czasu procesora dal jednego kanału
    a zysk mam z tego taki ze PWM moge zadeklarowac na dowolnej nodze atmegi co nie jest bez naczenia przy projektowaniu płytki. Oczywiscie ze ttaki PWM programowy nie nadaje sie do wszystkich zastosowan, ale do rozjasniania LED lub regulacji kontrastu w LCD idealny.

    Pozdrawiam

Podsumowanie tematu

✨ Dyskusja dotyczy implementacji płynnego przejścia sygnału z poziomu 0 do 1 w mikrokontrolerze Atmega8 przy użyciu Bascom, w kontekście sterowania efektami świetlnymi LED. Głównym zagadnieniem jest uzyskanie efektu ciągłego rozjaśniania i gaszenia diod (płynne przejście jasności) w programie, który ma obsługiwać wiele efektów i sterować dwukolorową diodą LED sygnalizującą stan pracy i czuwania. Proponowanym rozwiązaniem jest wykorzystanie modulacji szerokości impulsu (PWM), która pozwala na regulację jasności LED poprzez zmianę wypełnienia sygnału cyfrowego. Omówiono zarówno sprzętowe PWM, które odciąża procesor, jak i programowe PWM, które jest bardziej elastyczne, ale obciąża CPU. Wskazano, że Atmega8 nie posiada przetwornika cyfrowo-analogowego, więc PWM jest konieczne do uzyskania efektu analogowego rozjaśniania. Zaproponowano także alternatywę w postaci układu TDA8444 sterowanego przez I2C, umożliwiającego regulację napięcia na wyjściach LED bez obciążania procesora. Podkreślono, że programowe PWM może być efektywne do sterowania jasnością LED, choć wymaga zasobów procesora. Autor posiada już gotową płytkę i elementy, więc preferuje rozwiązania programowe lub z minimalną ingerencją sprzętową.
Wygenerowane przez model językowy.
REKLAMA