Systemy wbudowane 2017 - pytania

sw

(Marcin Gruza) #22

Pytanie do termometru MCP9700. Wg noty katalogowej w temperaturze pokojowej powinien wskazywać około 700 mV w temperaturze pokojowej(20 stopni C), jednak mój pokazuje 750-760 mV, co odpowiada 25-26 stopniom C. Czy może to być spowodowane nagrzewaniem się termometru pod wpływem przepływającego przez niego prądu? A może to po prostu błąd pomiarowy ADC?


(Marek Materzok) #23

Nota katalogowa układu MCP9700 specyfikuje dokładność (accuracy) pomiaru +/- 4 stopnie. Innymi słowy, różne egzemplarze tego układu będą się trochę różnić wynikami, i jest to normalne. Obrazek demonstrujący, czym się różni precyzja od dokładności: http://cdn.antarcticglaciers.org/wp-content/uploads/2013/11/precision_accuracy.png

Ponadto nota katalogowa procesora Atmega328P specyfikuje typowe wartości błędu i wzmocnienia ADC na 2 bity (32.8), co może się przekładać na 0.2 stopnia błędu dla referencji 1.1V i 1 stopień błędu dla referencji 5V. Błąd napięcia referencyjnego też ma znaczenie. Napięcie zasilające ma z natury słabą precyzję i dokładność, i w tym zastosowaniu raczej nie powinno być używane jako napięcie referencyjne. Natomiast wbudowana referencja 1.1V ma dużą precyzję, ale dokładność już nie: producent specyfikuje nawet 10% odchylenie od wartości 1.1V między egzemplarzami procesora.

Podsumowując: istnieje wiele źródeł niedokładności, które będą powodować inne wyniki pomiaru dla różnych egzemplarzy termometru i procesora. Jedynym sposobem, aby zlikwidować te błędy, jest kalibracja. (Ale w zadaniu z termostatem nie będę wymagać, żeby temperatura była prawidłowa co do stopnia.)


(Alicja Gustowska) #24

Zabrałam się za listę 3 zad 1, zrobiłam dzielnik napięcia, zrobiłam diodę,dziwi mnie tylko “obliczać w programie wartość rezystancji ze zmierzonej wartości napięcia”. Wiem jak to zrobić (wikipedia zawsze spoko), ale skoro i tak zapalam diodę, której postrzeganie jest skopane to po co zmieniać to na opór (którego górna i dolna granica jest mocno niejasna)


(Daniel Dubiel) #25

Mam pytanie odnośnie źródła prądowego, jak należy je wykonać?


(Marek Materzok) #26

@rrter123: W skrócie – aby nauczyć się radzić sobie z nieliniowością. W tym konkretnym zastosowaniu korzyści dużej nie ma, jednak w ogólności liniowy odczyt wskazań sensora ułatwia np. projektowanie algorytmów sterujących.

@Zjonn: Przykłady prostych źródeł prądowych można znaleźć w wielu źródłach. W naszych zastosowaniach wystarczy proste źródło prądowe z jednym tranzystorem, najlepiej PNP (żeby móc wykonywać pomiar względem masy). Przykład (Constant Current Source circuit 4).


(Mariusz Bielecki) #27

na stronie o dzielniku napięcia jest podany wzorek na napięcie wyjściowe. Przekształciłem sobie ten wzór, tak aby liczył mi R1, czyli rezystancje tego fotorezystora. Ale nie wiem co mam podać jako Uwe i Uwy, myślałem, że wystarczy dać Uwe = 5v i Uwy = ADC (zmienione na volty), jednak metodą potu i łez (prób i błędów) doszedłem do tego, że Uwy ma być spadkiem napięcia, a więc dopiero Uwy = 5v - ADC wydawało się działać lepiej. Jednak dalej się psuje dla wysokiej rezystancji fotorezystora. Wydaje się jakby wyliczona rezystancja wychodziła grubo ponad 50k :confused:. Czy ja coś źle rozumuję? Czy to może wina tego, że liczę to używając floatów? a może źle wyprowadziłem wzór? (wyszło mi że R1 = Uwy * R / (Uwe - Uwy) )


(Alicja Gustowska) #28

Ja mam fotorezystor na R2, a opornik na R1 i wyszło mi R2 = R1/(Uc/U2 -1) w tym wypadku U2 to spadek napięcia na fotorezystorze, więc nie muszę niczego przekształcać. 1. Sprawdź wzór. 2. Fotorezystor może przyjmować wartości powyżej 50 kOhmów, zależy od fotorezystora, na moim udało mi się dojść do 100 jak sprawdzałam Ohmomierzem.


(Mariusz Bielecki) #29

Oki, popróbuję. Dziękuję :>


(Marek Materzok) #30

@maniek: Tak żeby rozwiać wątpliwości natury terminologicznej: spadkiem napięcia (voltage ground) nazywamy napięcie mierzone na końcówkach elementu, przez który płynie prąd. Napięcie mierzone przez ADC jest napięciem względem masy (ground), która pełni rolę napięcia 0 w systemie. Wobec tego, jeśli na zalinkowanym obrazku z Wikipedii przewód na samym dole jest połączony z masą, zarówno Uwe i Uwy są liczone względem masy, tak jak pomiary ADC.


(Mariusz Bielecki) #31

Okazało się, że rezystancja na fotorezystorze dochodzi nawet do 3 milionów (i pewnie mogłoby być więcej, bo nie byłem wstanie całkiem odciąć światła). Czyli jeśli fotorezystor jest oznaczony 50k ohms, to nie jest to maksymalna rezystancja przy bardzo małej ilości światła? w Takim razie co oznacza to 50k? dlaczego akurat taka wartość jest podawana w “nazwie” rezystora?


(Marek Materzok) #32

Wszystkie wątpliwości wyjaśnia nota katalogowa elementu. Wartość rezystancji jest podawana dla testowej wartości natężenia światła 10 luksów. Dla warunków ciemnych specyfikowana jest minimalna wartość rezystancji 2 megaom.


(Mariusz Bielecki) #33

W zadaniu pierwszym jest napisane, aby skonfigurować timer tak, żeby przepełniał się co sekundę. Mi jednak wygodniej było ustawić sobie tryb CTC, a przerwania wykonują mi się przy zmatchowaniu OCR1A lub OCR1B. Czy muszę zrobić to na przepełnianiu się licznika, aby dostać maksymalną ilość punktów, czy tak też będzie dobrze?


(Marek Materzok) #34

Propozycja z treści zadania jest sugestią, o ile rozwiązanie będzie spełniać wymagania (np. minimalna liczba wybudzeń), sposób implementacji może być dowolny.


(Mariusz Bielecki) #35

Termin wysyłania listy nr. 4 dla grupy piątkowej to jutro o 12:00? Pytam ponieważ na SKOS jest podana północ.


(Marek Materzok) #36

Dziękuję za zwrócenie uwagi, poprawiłem termin.


(Jan Góra) #37

Kiedy pojawi się lista numer 5??


(Marek Materzok) #38

Przepraszam za opóźnienie, lista pojawi się najpóźniej w poniedziałek, z terminem do piątku przed świętami.


(Daniel Dubiel) #39

Mam problem z 3 zadaniem, sterowanie serwem.

Czy dobrze rozumiem, że używając Phase and Frequency Correct PWM (zapalony bit WGM13) wartość TOP brana jest z rejestru ICR1, natomiast OCR1A odpowiada za wypełnienie sygnału?

Jeśli tak, to przy prescalerze 256 (bit CS12) i ICR1 = 625 PWM powinien działać z częstotliwością 50Hz. Serwo powinno więc reagować na zmiany wartości OCR1A, a jednak nic się nie dzieje. Czy o czymś zapomniałem?

EDIT:
Po zmianie TCCR1A z _BV(COM1A0) na _BV(COM1A1) serwo zaczęło reagować na wartości OCR1A między 17-100.


(Marek Materzok) #40

Widzę, że sam Pan znalazł rozwiązanie. Mogę co najwyżej dodać, że do sterowania serwem w zupełności wystarcza tryb Fast PWM, choć zastosowanie Phase and Frequency Correct PWM naturalnie nie jest błędem.


(Andrzej Milczarek) #41

Mam problem z zadaniem 1 z listy dodatkowej.
Mianowicie nie mogę znaleźć w Eagle płytki 4060 z takim rozkładem pinów jak w schemacie. Czy nie będzie żadnym problemem jeżeli wykorzystam inny model tej płytki (4060 D mianowicie), i w takim sam sposób ułożę piny jak w tym schemacie ?