Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C/C++] ATtiny13A - Miganie LED z częstotliwością 100Hz

Rafii[H] 27 Sty 2014 00:54 3150 29
  • #1 27 Sty 2014 00:54
    Rafii[H]
    Poziom 14  

    Witam,

    jestem początkujący w tym temacie, więc z góry przepraszam za banalne pytania.

    Mam problem, otóż zrobiłem stroboskop do gramofonu odpowiedzialny za pomiar obrotów na diodzie LED (miganie z częstotliwością 100Hz) i Atmega8.

    Oto kod:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    I wszystko działa dobrze, lecz chciałbym zastąpić ten układ mniejszym, mianowicie ATtiny13A. Po zaprogramowaniu go, pojawia się problem, LED miga z inną częstotliwością. Wyczytałem, że problem tkwi w częstotliwość zegara, tylko za bardzo nie wiem co trzeba zmienić, aby to działało prawidłowo.

    Pozdrawiam

    0 29
  • Arrow Multisolution Day
  • #2 27 Sty 2014 01:10
    dondu
    Moderator Mikrokontrolery Projektowanie

    Witaj.

    W kodzie zdefiniowałeś częstotliwość 1MHz. Jednakże ATtiny13A nie ma możlowości pracy z taką częstotliwością, a fabrycznie dostarczany jest w ustawieniu na 9,6MHz. Zobacz rozdział w dokumentacji: 6.2.2 Calibrated Internal 4.8/9.6 MHz Oscillator

    0
  • #5 27 Sty 2014 09:33
    BlueDraco
    Specjalista - Mikrokontrolery

    Do gramofonu wypadałoby mieć wiarygodny wzorzec częstotliwości. Oscylator ATtiny ma dokładność gorszą od 1%. Najprościej użyć jako wzorca częstotliwości sieci zasilającej. Inna opcja - to oscylator kwarcowy. W każdym razie wewnętrzny RC odpada w tym zastosowaniu.

    0
  • #6 27 Sty 2014 12:21
    Rafii[H]
    Poziom 14  

    No tak, powinno to być dosyć dokładne. Do gramofonu wchodzi tylko 12v DC, a nie chciałbym wchodzić tam z kolejnym kablem, tylko z powodu stroboskopu. Czyli zostaje oscylator kwarcowy, tylko problem w tym, że nie mam o tym zielonego pojęcia.

    0
  • Arrow Multisolution Day
  • Pomocny post
    #7 27 Sty 2014 12:39
    excray
    Poziom 39  

    dondu napisał:
    fabrycznie dostarczany jest w ustawieniu na 9,6MHz

    Fabrycznie jest 1,2MHz (9,6MHz/8). Drobnostka, ale wolę skorygować. Co do kwarcu to lepiej użyć attiny25/45/85. One mają taką możliwość prostej implementacji.

    0
  • #8 27 Sty 2014 13:52
    BlueDraco
    Specjalista - Mikrokontrolery

    To może obejrzyj dwie strony dokumentacji i nabądź to zielone pojęcie - to naprawdę żadna filozofia podłączyć trzy elementy według gotowego schematu i przestawić 2 bity konfiguracji wg. opisu.

    0
  • #9 27 Sty 2014 14:19
    dondu
    Moderator Mikrokontrolery Projektowanie

    excray napisał:
    dondu napisał:
    fabrycznie dostarczany jest w ustawieniu na 9,6MHz

    Fabrycznie jest 1,2MHz (9,6MHz/8). Drobnostka, ale wolę skorygować.

    I dobrze zrobiłeś, bo zapomniałem o tym pomimo, że podałem link do artykułu, gdzie Olek niedawno o tym napisał :oops:

    0
  • #11 29 Sty 2014 13:31
    BlueDraco
    Specjalista - Mikrokontrolery

    Klasyczna sieć musiała trzymać 50 Hz, bo była synchronizowana na dużym obszarze geograficznym. Rosnący udział przekształtników z jednej strony teoretycznie oznacza, że każdy fragment sieci może mieć inną częstotliwość, ale praktycznie nikt nie ma żadnego interesu w nietrzymaniu częstotliwości. Ciekaw jestem, co na ten temat powiedzą praktycy - energetycy, ale na moją intuicję te 50 Hz jest nie gorsze niż z dobrego kwarcu, a może nawet lepsze.

    0
  • #12 30 Sty 2014 07:23
    94075
    Użytkownik usunął konto  
  • #14 30 Sty 2014 07:46
    94075
    Użytkownik usunął konto  
  • #15 30 Sty 2014 08:09
    dondu
    Moderator Mikrokontrolery Projektowanie

    Mówimy o gramofonie, który będzie użytkowany w temperaturach pokojowych, więc różnice mogą sięgać około 10-15 stopni. Przy tym zakresie zmian dokładność RC po kalibracji będzie na poziomie około 1% (tak na oko określone z wykresu):

    [C/C++] ATtiny13A - Miganie LED z częstotliwością 100Hz

    Moim zdaniem nie ma to znaczenia dla odtwarzania płyt tym bardziej, że większe (pływanie obrotów) będzie pewnie powodowało sterowanie silnikiem.

    Jeżeli natomiast autorowi zależy na większej dokładności utrzymania prędkości obrotowej niż 1%-2%, to powinien zainteresować się sterowaniem silnikiem i w oparciu o jakiś czujnik np. odbiciowy (hallotron, a nawet w porywach rozpaczy kontaktron) zliczający aktualne obroty talerza i odpowiednio sterujący silnikiem.

    Materiały dot. kalibracji:
    http://www.atmel.com/images/doc8053.pdf
    http://www.atmel.com/images/doc2563.pdf


    EDIT:
    Patrząc na 4,8MHz:

    [C/C++] ATtiny13A - Miganie LED z częstotliwością 100Hz

    W zakresie od 20°C do 35°C mamy około 50kHz różnicy, czyli praktycznie dokładnie 1%.

    0
  • #16 30 Sty 2014 08:39
    94075
    Użytkownik usunął konto  
  • #17 30 Sty 2014 08:42
    dondu
    Moderator Mikrokontrolery Projektowanie

    albertb napisał:
    Czyli zamiast gwarantowanych wartości z DS dla ustalonej temperatury bierzesz dane "tak na oko" z wykresów typowych a nie gwarantowanych charakterystyk.

    Czy dobierając tranzystor opierasz się tylko o tabelkę, czy może także wykresy?
    Po to są wykresy w dokumentacji, by z nich korzystać i dodać do tego kalibrację OSCCAL.
    Parametry w tabelkach są wynikiem wykresów, a nie odwrotnie.

    0
  • #18 30 Sty 2014 08:52
    94075
    Użytkownik usunął konto  
  • #21 30 Sty 2014 09:05
    BlueDraco
    Specjalista - Mikrokontrolery

    Jeśli ktoś robi migadełko do gramofonu, to raczej nie do sprzętu klasy Bambino - to ma być stabilne i dokładne, nie gorzej niż 0.1%. Do tego oscylator RC żadnego mikrokontrolera się nie nadaje (a ATtiny nie nadaje się jakby bardziej niż współczesne) - musi być kwarc. Robiłem kiedyś programowy UART na ATtiny13 - nie działało, trzeba było dobierać konkretne egzemplarze, żeby chciały ze sobą gadać.

    Albertb:
    Za komuny tak było, dlatego zegarki z zachodu Europy, które tam chodziły dobrze, bo były synchronizowane siecią, u nas wariowały - z tego samego powodu. Myślałem, że zmiana ustroju pomogła na stabilność częstotliwości sieci energetycznej... ;)

    0
  • #22 30 Sty 2014 09:21
    94075
    Użytkownik usunął konto  
  • #23 30 Sty 2014 09:29
    dondu
    Moderator Mikrokontrolery Projektowanie

    Posługujesz się dokumentacją innego mikrokontrolera niż w temacie. Prawidłowa to ta: http://www.atmel.com/Images/doc8126.pdf

    Odnalazłem więc tabelkę odpowiadającą tej którą wskazałeś:

    [C/C++] ATtiny13A - Miganie LED z częstotliwością 100Hz

    Czerwoną strzałką zaznaczyłem parametr, który wskazałeś.

    Powyżej jest informacja:

    Cytat:
    It is possible to manually calibrate the internal oscillator to be more accurate than default factory
    calibration.
    Note that the oscillator frequency depends on temperature and voltage. Voltage and
    temperature characteristics can be found in Figure 19-59 on page 154, Figure 19-60 on page
    154, Figure 19-61 on page 155, Figure 19-62 on page 155, Figure 19-63 on page 156, and Figure
    19-64 on page 156.


    czyli jest możliwość dokładniejszego skalibrowania niż fabryczne ±2% (co robi się właśnie za pomocą OSCCAL) i wskazanych dalej wykresów - oto one:

    [C/C++] ATtiny13A - Miganie LED z częstotliwością 100Hz [C/C++] ATtiny13A - Miganie LED z częstotliwością 100Hz [C/C++] ATtiny13A - Miganie LED z częstotliwością 100Hz


    BlueDraco napisał:
    Jeśli ktoś robi migadełko do gramofonu, to raczej nie do sprzętu klasy Bambino - to ma być stabilne i dokładne, nie gorzej niż 0.1%. Do tego oscylator RC żadnego mikrokontrolera się nie nadaje (a ATtiny nie nadaje się jakby bardziej niż współczesne) - musi być kwarc.

    Mam gramofon Bernard G-603 ze stroboskopem, który nie mam pojęcia jak jest zrobiony, więc tylko informuję. Trudno więc mi określić dlaczego w trakcie działani nieco pływa i to jest na pewno więcej niż 1%. To tak dla informacji.

    USART trudno porównywać do stroboskopu gramofonu :)

    0
  • #24 30 Sty 2014 09:40
    94075
    Użytkownik usunął konto  
  • #25 30 Sty 2014 09:47
    dondu
    Moderator Mikrokontrolery Projektowanie

    Hmm, faktycznie chyba źle interpretuję tę tabelkę.
    Nie zmienia to jednak faktu, że w zakresie temperatur 20-35°C wpływ temperatury na F_CPU nie powinien być większy niż dla wskazanego przeze mnie wykresu, czyli 1%.

    Per saldo dla jednostkowego produktu (a o takim chyba rozmawiamy) według mnie nie powinniśmy mieć problemu ze skalibrowaniem stroboskopu z dokładnością 1% (mam na myśli oczywiście mikrokontroler + program) w w/w zakresie temperatur (oczywiście pod warunkiem, że zasilanie będzie porządne).

    Cały czas stawiam pytanie, czy 1% jest słyszalne dla ucha - mnie się wydaje, że nie, ale mogę się mylić.

    0
  • #26 30 Sty 2014 09:56
    94075
    Użytkownik usunął konto  
  • #27 30 Sty 2014 10:00
    dondu
    Moderator Mikrokontrolery Projektowanie

    Żeby była jasność, ja nie podważam zastosowania kwarcu, tylko zwracam uwagę na fakt, że stroboskop to jedno, a pływanie sterowania silnika to drugie.

    Dlatego napisałem, że jeżeli chce mieć super dokładnie, to powinien zupełnie inaczej do tematu podejść. W końcu stroboskop to tylko wskaźnik, na który trzeba reagować ręcznie. Z autopsji wiem, że ustawiając prędkość talerza idę zaparzyć herbatę i wracając musiałbym skorygować, bo już minimalnie wskaźniki poruszają się w którąś ze stron. Absolutnie tego nie robię - po co skoro i tak nie słyszę różnicy :)


    EDIT:
    Z ciekawości poszukałem instrukcji do mojego gramofonu - możliwość regulacji obrotów ±3%.

    [C/C++] ATtiny13A - Miganie LED z częstotliwością 100Hz
    inne strony: http://www.audiostereo.pl/gramofon-fonica-g603-bernard_72315.html

    Czyli jednak ten 1% może być słyszalny jeżeli zmiana nastąpi szybko. Ale z autopsji takiego czegoś nie stwierdzam - zmiany są zbyt powolne.

    0
  • #28 30 Sty 2014 10:12
    94075
    Użytkownik usunął konto  
  • #29 30 Sty 2014 10:17
    dondu
    Moderator Mikrokontrolery Projektowanie

    Ciekawi mnie jaki silnik jest w moim gramofonie - nigdy go nie rozbierałem - działa od około 1980r. - wprawdzie go oszczędzam, a przede wszystkim płyty, ale jednak działa - wyjątek pasek - sparciał i trzeba wyło wymienić :)

    0
  • #30 17 Lut 2014 18:21
    Rafii[H]
    Poziom 14  

    Problem już rozwiązany. Zastosowałem Attiny25 z oscylatorem kwarcowym 8MHz.

    0