| |
Język C: Programowany, cyfrowy komparator okienkowy sygnału analogowego
Wysłany przez Jacek dnia 10-01-2010 o godz. 12:51:15 (322 odsłon)
Cyfrowy komparator okienkowy to urządzenie, które można zastosować w wielu aplikacjach. Opisywany prototyp miał służyć do wyłączenia zasilania prasy hydraulicznej w momencie, gdy czujnik tensometryczny przyklejony do jej obudowy odkształci się poza dopuszczalny zakres. W normalnych warunkach pracy może to oznaczać zakleszczenie się lub oderwanie narzędzia. Przy dużych prędkościach automatycznie wykonywanego tłoczenia, taka awaria ma trudne do przewidzenia następstwa.
Można sobie jednak wyobrazić także inne zastosowania: nadzorowanie poziomu hałasu, wilgotności, temperatury itd. Wszędzie tam, gdzie monitorowana wielkość da się przekształcić na monitorowany zakres napięć analogowych, który można zmierzyć przetwornikiem A/C. Projekt może być również inspiracją do budowy innych zabezpieczeń lub chociażby może pokazać, jak zbudować proste menu użytkownika z użyciem tylko kilku klawiszy. Komparator okienkowy nie jest czymś, czego nie można wykonać w technice analogowej, jednak zastosowanie mikroprocesora daje mu dodatkowe możliwości wizualizacji danych jak również nauki wartości granicznych i adaptacji do warunków pracy. Projekt komparatora nie jest nowy. Kiedyś do jego konstrukcji zastosowałem mikrokontroler AT89S8252, który już nie jest produkowany. Został zastąpiony przez AT89S8253 i wszystkie osoby chcące użyć urządzenia do celów komercyjnych, będą zmuszone sprawdzić układ połączeń oraz nieco zmienić oprogramowanie, tak aby dostosować się do nowego mikrokontrolera. Hobbyście z całą pewnością uda się jeszcze gdzieś kupić kilka sztuk. Urządzenie można wykonać w oparciu o dowolny mikrokontroler z rdzeniem 8051, ponieważ dla takiego został napisany program. Ważne jest, aby zastosowany procesor miał pamięć EEPROM, w której można będzie przechowywać parametry nastaw komparatora okienkowego.
Oryginalny program sterujący pracą komparatora jest napisany z użyciem kompilatora RC-51 firmy Raisonance. Była to co prawda starsza wersja, lecz sprawdziłem, że bez problemu kompiluje się również z użyciem najnowszego środowiska RIDE dla 51-ki. Kod wynikowy nie przekracza 4 kB, (3702 bajty), więc program można skompilować z użyciem wersji demonstracyjnej pakietu, dostępnej na stronie producenta http://www.raisonance.com/. Do programowania używałem programatora opisanego na tej stronie (Programator szeregowy AVR i AT89S8252 z interfejsem RS232), ale oczywiście można używać dowolnego innego programatora typu in-circuit.
(Czytaj więcej... | 2829 bajtów więcej | Wynik: 0)
|
|
Język C: Algorytm poszukiwania układów w sieci 1-Wire.
Wysłany przez jacek dnia 26-11-2008 o godz. 21:12:11 (797 odsłon)
Każdy z układów z interfejsem 1-Wire posiada unikatowy 64-bitowy kod identyfikacyjny. Kod ten nosi nazwę "kod ROM" i może być utożsamiany z unikatowym adresem układu z interfejsem 1-Wire. Kod ten używany jest przez układ Master do wyboru układu w sieci. W związku z tym, że jest to kod unikatowy, to jeśli nie jest znana liczba układów Slave w sieci, może ona zostać określona przy jego użyciu przez zastosowanie funkcji przeszukiwania sieci. Algorytm jej działania oparty jest o zasadę przeszukiwania drzewa binarnego. Gałęzie przeszukiwane są do momentu aż zostanie odnaleziony koniec gałęzi lub pamięć ROM układu 1-Wire. Funkcja przeszukuje drzewo do momentu aż wszystkie numery ROM i wszystkie zakończenia zostaną odkryte.
Algorytm rozpoczyna się od wysłania rozkazu reset. Jeśli jego przesłanie zakończy się powodzeniem, to znaczy odpowiednio zareagują na niego układy dołączone do magistrali, wysyłana jest 1-bajtowa komenda zwana "search" o kodzie 0xF0 lub 0xFC. Komenda ta przygotowuje układy podłączone do magistrali do przeszukiwania.
Firma Dallas zaimplementowała dwa rodzaje komend przeszukujących. Najczęściej używane jest przeszukiwanie tzw. normalne (0xF0) sprawdzające wszystkie układy podłączone do linii. Innym rodzajem przeszukiwania jest tzw. warunkowe, które znajduje układy będące w stanie alarmowym, np. załączone termostaty czy timery, które sygnalizują zakończenie odmierzania czasu. Redukowany jest w ten sposób obszar przeszukiwania do tylko tych układów, które muszą zostać z jakiś powodów odczytane czy ustawione.
Po wysłaniu przez układ Master komendy przeszukiwania, układy Slave podłączone do magistrali 1-Wire (wszystkie, których dotyczy komenda) odpowiadają wysyłając jednocześnie mniej znaczący bit własnego adresu. Według standardu 1-Wire, układ Master inicjuje przesłanie każdego bitu zapisywanego czy odczytywanego z układu Slave. W związku ze specyfiką interfejsu, gdzie wszystkie układy podłączone są do wspólnej linii przesyłowej i na odebraną komendę przeszukiwania odpowiadają w tym samym czasie (jednocześnie i synchronicznie z sygnałem zegarowym wysyłanym przez układ Master), rezultat odczytu docierający do układu Master jest iloczynem logicznym stanów wyjść układów Slave (wired and).
Po tym jak układy Slave prześlą 1-szy bit swojego adresu, układ Master inicjuje odbiór następnego bitu, na który układy Slave odpowiadają wysyłając ponownie 1-szy bit adresu lecz tym razem jest to jego bit komplementarny. Następnie układ Master wysyła bit adresu do układów Slave. Jeśli urządzenie Slave odbiera bit, który zgadza się z bitem na pozycji adresu, pozostaje załączone i aktywne. Jeśli natomiast odebrany bit nie odpowiada temu z adresu, urządzenie Slave przechodzi do stanu oczekiwania i nie przesyła już żadnych danych. Stan ten trwa aż do odebrania następnego sygnału reset.
Opisywana wyżej procedura tzn. odbiór przez układ Master jednego bitu jako normalny i komplementarny a następnie przesłanie tego bitu adresu do układu Slave (jako normalny), powtarzana jest dla wszystkich 63 pozostałych bitów adresu. W takiej sytuacji urządzenie Slave wywołuje wszystkie układy dołączone do magistrali, lecz w danym momencie, po odbiorze bitu adresu, tylko jeden z nich przejdzie do stanu oczekiwania. Na końcu procedury znany jest adres ostatniego układu dołączonego do magistrali. W następnych przejściach procedury uwzględniana jest inna ścieżka, dotąd nie przeszukiwana.
(Czytaj więcej... | 3531 bajtów więcej | Wynik: 0)
|
|
Język C: Odbiornik zdalnego sterowania w podczerwieni
Wysłany przez Jacek dnia 07-06-2006 o godz. 16:29:57 (1480 odsłon)
Firma Philips jako pierwsza opracowała, lub zaadaptowała, standard RC5 dla swoich nadajników - odbiorników podczerwieni do zastosowań w sprzęcie domowego użytku. Stosowano w nim stały czas trwania i stałą liczbę bitów. Za każdym razem, gdy użytkownik naciska przycisk w nadajniku zdalnego sterowania, pracującym zgodnie ze specyfikacją Philips, wysyła on ciąg 14 bitów o czasie trwania 1,728 ms każdy. Jeśli klawisz pozostaje naciśnięty, to cała transmisja powtarzana jest co 130 ms. Wysyłane słowo kodowane jest zgodnie ze standardem kodowania Manchester. Oznacza to, że każdy bit transmitowany jest w postaci dwóch stanów logicznych, tzw. półbitów, a w środku czasu przeznaczonego na przesłanie pojedynczego bitu następuje zmiana, to jest opadające lub narastające zbocze sygnału. I tak zmianie z "0" na "1" odpowiada przesyłany bit o wartości "1", natomiast zmianie z "1" na "0" odpowiada przysyłany bit o wartości "0". Ponieważ czas na przesłanie pojedynczego bitu został przez twórcę standardu określony na 1,728ms, to zmiana następuje po połowie tego czasu, czyli 0,864ms. Dodatkowo zbocze występujące w środku bitu umożliwia synchronizację odbiornika z nadajnikiem.
(Czytaj więcej... | 1278 bajtów więcej | Wynik: 0)
|
|
Język C: Alarm samochodowy z telefonem GSM SIEMENS C35i
Wysłany przez Jacek dnia 24-10-2005 o godz. 21:39:50 (4221 odsłon)
W artykule prezentowany jest przykład aplikacji, która opisuje sposób podłączenia
telefonu GSM Siemens C35i do systemu z mikrokontrolerem. Napisany dla mikrokontrolera program, to rodzaj alarmu z powiadomieniem, który może zostać zainstalowany na przykład w samochodzie, jednak opisywaną aplikację bardziej należy traktować jako pewną sugestię, co do wykonania części sprzętowej i interfejsu łączącego mikrokontroler z telefonem GSM, aniżeli gotowe do wykorzystania urządzenie.
Oto funkcje realizowane przez mikrokontroler w prezentowanej aplikacji:
-wysyłanie powiadomienia o załączeniu przez SMS,
-wyłączenie alarmu przez identyfikację osoby dzwoniącej,
-możliwość odbioru SMS z komendami (nie wykorzystana, jednak obecna w bibliotekach języka C i gotowa do użycia).
Program sterujący napisany jest w języku C dla mikrokontrolera 8051. Opisywane wyżej funkcje zaimplementowano w bibliotekach i przypuszczalnie mogą być użyte nie tylko z kompilatorem RC-51, przy pomocy
którego pisałem program. Wymagają jednak pewnej inwencji własnej i ewentualnej parametryzacji.
(Czytaj więcej... | 1422 bajtów więcej | Wynik: 4.57)
|
|
Język C: Podłączenie drukarki do uK z rodziny 8051. Aplikacja w języku C.
Wysłany przez Jacek dnia 17-12-2004 o godz. 12:35:07 (2554 odsłon)
Obecnie port równoległy wypierany jest z zastosowań przez dużo wygodniejszy w użyciu interfejs USB. Stale jednak stanowi podstawowe wyposażenie komputerów PC, a w sklepach czy na rynku podzespołów wtórnych, bez większych kłopotów można kupić drukarkę wyposażoną w złącze równoległe. Jej przeznaczenie w systemie z mikrokontrolerem może być różne i zależy od potrzeb i inwencji konstruktora czy programisty. Ciekawy dla elektroników amatorów wydaje się być zwłaszcza rynek wtórny, gdzie za niewielką cenę można nabyć drukarkę igłową czy atramentową, wyposażoną w ten rodzaj interfejsu i dołączyć ją do własnego urządzenia.
Typowo złącze portu równoległego komputera PC to tzw. złącze DSUB żeńskie o 25 doprowadzeniach. Złącze zawiera:
-8 linii danych,
-5 linii do raportowania statusu urządzenia,
-4 linie kontrolne.
Zestawienie linii wraz z krótkim opisem ich funkcji zawiera tabela 1. Port równoległy nowoczesnego komputera PC może pracować w jednym z 5 trybów: Compatibility Mode, Nibble Mode, Byte Mode, EPP (Enhanced Parallel Port), ECP (Enhanced Capability Port). Oczywiście nic nie stoi na przeszkodzie, aby opracować własny interfejs dla systemu z mikrokontrolerem pracujący w trybach rozszerzonych, jednak dla większości zastosowań służących dołączeniu drukarki wystarczającym jest tryb standardowy, to jest Compatibility. Na jego opisie skupi się ten artykuł, dla niego również opracowany został przykładowy interfejs łączący mikrokontroler AT89S8252 z drukarką igłową marki EPSON LX400.
(Czytaj więcej... | 1622 bajtów więcej | Wynik: 4)
|
|
Język C: Podłączenie klawiatury PC do mikrokontrolera 8051
Wysłany przez jacek dnia 03-11-2004 o godz. 20:49:07 (4331 odsłon)
Do jednego z projektowanych urządzeń potrzebowałem klawiaturę alfanumeryczną. Mój wybór padł na zwykłą klawiaturę do komputera PC z dwóch prostych powodów: dostępność i cena. Do pełni zadowolenia wystarczyło dołączyć klawiaturę do mojego urządzenia i po prostu używać. I
tu pojawił się pewien kłopot... Chciałem skorzystać z jakiejś gotowej aplikacji, jednak 2 kompletne, które udało mi się znaleźć
były zupełnie bezużyteczne. Obie ze względu na użyty język programowania: Bascom i
mikrokontroler 8051 to nie najlepszy moim zdaniem pomysł a i o zmianie mikrokontrolera na PIC nie mogło być mowy. Postanowiłem, wzorując się na obu rozwiązaniach, napisać program w języku C, dla mikrokontrolera AT89S8252. Powstał w ten sposób driver opisywany w niniejszym artykule.
(Czytaj więcej... | 982 bajtów więcej | Wynik: 4.66)
|
|
Język C: Sterowanie wyświetlaczem VFD na przykładzie aplikacji
Wysłany przez Jacek dnia 01-11-2004 o godz. 00:45:02 (2040 odsłon)
'W związku z dużym zainteresowaniem jaki wywołał artykuł na temat modułów wyświetlaczy VFD, zdecydowałem kontynuować temat w następnym tego rodzaju artykule. Tym razem sięgnąłem jednak nie tyle do gotowych modułów wyświetlaczy z wbudowanym kontrolerem, ile do samego wyświetlacza, rzecz by można - nagiej lampy, bez żadnego oprzyrządowania. W tym miejscu chciałbym podziękować również firmie FUTABA, jednemu z największych producentów wyświetlaczy VFD, za udostępnienie próbek wyświetlacza 7-LT-109 do testów. Aplikacja powstała bardziej z myślą o tych wszystkich, którzy zastanawiają się w jaki sposób użyć posiadanego VFD niż jako kit oferowany dla elektroników amatorów.
(Czytaj więcej... | 987 bajtów więcej | Wynik: 5)
|
|
Język C: Płytka testowa dla mikrokontrolerów AT89S oraz AVR
Wysłany przez Jacek dnia 01-11-2004 o godz. 00:18:24 (3660 odsłon)
Budując urządzenie z mikrokontrolerem czego tak na prawdę oczekuje projektant od tzw. układu uruchomieniowego? Trudno odpowiedzieć na takie pytanie, ponieważ z całą pewnością każdy oczekuje innego. Może spróbuję wymienić własne kryteria wyboru. Chciałbym aby taki układ:
-umożliwiał łatwe dołączenie urządzeń zewnętrznych,
-umożliwiał wykorzystanie stosowanych przeze mnie mikorokontrolerów bez poważnych zmian w konstrukcji zestawu uruchomieniowego,
-pozwalał na łatwy zapis i testowanie programów przeznaczonych dla mikrokontrolera bez dodatkowego układu programatora,
-w łatwy sposób pozwalał integrować się z używanymi przeze mnie programami typu IDE.
Najbardziej zbliżonym do tego mojego "ideału" jest AVR Starter Kit firmy ATMEL. Ma jednak szereg wad, które obniżają w moich oczach jego funkcjonalność. Mam na przykład zawsze duże problemy z podłączeniem zasilania sondy logicznej - najczęściej lutuję jej wyprowadzenia wprost do układu stabilizatora. Nie jest to ani funkcjonalne, ani estetyczne, ani zbyt wygodne. W związku z tym zdecydowałem się na projekt i wykonanie własnej płytki uruchomieniowej.
(Czytaj więcej... | 1853 bajtów więcej | Wynik: 5)
|
|
Język C: Uzupełnienie programatora AVR o ATMega128
Wysłany przez Jacek dnia 01-11-2004 o godz. 00:03:15 (2125 odsłon)
Tomek Żurawski wykonał zmiany firmware umożliwiające programowanie mikrokontrolera ATMega 128. To naprawdę proste! Zachęcam do eksperymentów.
(Czytaj więcej... | 1873 bajtów więcej | Wynik: 5)
|
|
Język C: Errata do artyku?u n/t programatora AVR i AT89S
Wysłany przez Jacek dnia 31-10-2004 o godz. 23:55:48 (685 odsłon)
Podstawowa wersja programatora zakłada bardzo niską szybkość oscylatora mikrokontrolera. Jeśli nie są używane kwarce o częstotliwości mniejszej niż 1MHz, można wykonać modyfikację programu, która oko?o trzykrotnie skraca czas programowania.
(Czytaj więcej... | 2416 bajtów więcej | Wynik: 0)
|
|
Język C: Programator szeregowy AVR i AT89S8252 z interfejsem RS232
Wysłany przez Jacek dnia 31-10-2004 o godz. 23:45:13 (1506 odsłon)
Kilka dni wytężonej pracy zajęło mi coś, co wygląda bardzo niepozornie. Jest to
programator szeregowy układów firmy ATMEL z rodziny AT90, AT-Mega i AT89S8252 z
interfejsem RS232. Dla mnie to kolejny przykład urządzenia, o którego wartości stanowi nie tyle ilość i jakość użytych podzespołów a wykonywany przez mikrokontroler program. Zapewne większość z Was zajmujących się mikrokontrolerami zna wiele różnych typów prostych
programatorów, wiele z nich było również
publikowanych na łamach czasopism. Większość z nich sterowana jest sygnałami portu równoległego. Ma to swoje wady i zalety, nie chcę ich dyskutować. Osobiście mam jednak pewne obawy przed
podłączaniem czegoś do portu drukarki. Raz, że nie jest to zbyt wygodne, jeśli już jest tam podłączona drukarka. Dwa, że czasami drobna awaria programatora prowadzi do uszkodzenia portu a to już
jest duży kłopot. Zdecydowałem się na skonstruowanie programatora podłączanego do portu szeregowego komputera PC. Istnieje co prawda nota aplikacyjne
firmy ATMEL (AVR910) opisująca taki programator, jednak wydał mi się on zbyt skomplikowany. Dodatkową trudnością dla mnie było zdobycie i zaprogramowanie mikrokontrolera AT90S1200.
(Czytaj więcej... | 1728 bajtów więcej | Wynik: 0)
|
|
Język C: Doręczenie i odbiór SMS w trybie PDU (np.interpreter komend)
Wysłany przez Jacek dnia 31-10-2004 o godz. 14:08:25 (3247 odsłon)
'Opisywany przykład aplikacji, to prosty interpreter poleceń. W połączeniu z telefonem komórkowym (działanie aplikacji testowane było z telefonem GSM marki SIEMENS C35i) potrafi realizować proste polecenia wydawane
ze pomocą SMS. Rezultaty wykonania poleceń oraz stan urządzenia raportowany jest również przez komunikaty SMS. Urządzenie zbudowane było w oparciu o płytkę prototypową z wbudowanym układem drivera interfejsu UART - MAX232 oraz z wykorzystaniem fabrycznego kabla połączeniowego dla telefonu komórkowego SIEMENS. Należy je traktować bardziej jako przykład wykonania aplikacji współpracującej z telefonem GSM aniżeli urządzenie gotowe do wykorzystania, chociaż z całą pewnością może posłużyć do jego budowy.
(Czytaj więcej... | 935 bajtów więcej | Wynik: 4.4)
|
|
Język C: Konfiguracja pamięci 8051 dla programów napisanych w języku C
Wysłany przez Jacek dnia 31-10-2004 o godz. 12:05:29 (1350 odsłon)
Kompilatory języka C przeznaczone dla mikrokontrolerów z rodziny 8051 oferują szereg różnych modeli pamięci. Który z nich wybrać? Jakie kryteria wyboru stosować? Jaki
wpływ ma zastosowany model kompilacji na optymalizację kodu wynikowego oraz czas
wykonywania programu przez mikrokontroler?
(Czytaj więcej... | 397 bajtów więcej | Wynik: 0)
|
|
Język C: Wykorzystanie funkcji STDIO.H do formatowania tekstu na wyświetlaczu LCD
Wysłany przez Jacek dnia 30-10-2004 o godz. 23:10:57 (1713 odsłon)
Pisząc program w języku C czasami zadajemy sobie pytanie: czy naprawdę muszę tworzyć funkcję dokonującą konwersji wartości dziesiętnej na szesnastkową? Przecież chociażby biblioteka o nazwie STDIO zawiera w sobie możliwość formatowania zarówno danych wejściowych, jak i wyjściowych. Czy nie ma możliwości skorzystania z czyjejś pracy i zaoszczędzenia własnego czasu?
(Czytaj więcej... | 470 bajtów więcej | Wynik: 5)
|
|
Język C: Budujemy klawiaturę
Wysłany przez Jacek dnia 30-10-2004 o godz. 22:48:59 (1774 odsłon)
'Budując urządzenia z mikrokontrolerami wcześniej czy później staniesz przed zagadnienie komunikacji z użytkownikiem. We wcześniejszych odcinakach "kursu" zajmowaliśmy się prezentacją wyników przy pomocy wyświetlacza LED czy LCD. Czasami jednak trzeba również wprowadzić pewne parametry na przykład nastawę czasu, wielkość napięcia itp. Możliwe jest tu wykorzystanie różnych technik, lecz jedna z nich przyjęła się u zarania dziejów urządzeń elektronicznych i króluje do dziś. Nic też nie wskazuje na to, aby szybko została wyparta przez inne rozwiązania. Mowa o klawiszu lub grupach klawiszy zwanych klawiaturami.
Ten odcinek w całości poświęcony będzie klawiszom, klawiaturom, będzie przeglądem stosowanych rozwiązań. Zaczniemy od prostych metod testowania naciśnięcia pojedynczego klawisza, poprzez testy dla większej ich ilości aż do klawiatur zbudowanych w formie matrycy, czy też działających w oparciu o przerwania.
(Czytaj więcej... | 1029 bajtów więcej | Wynik: 0)
|
|
| |
 |
Artykuł dnia |
 |
|
|
Dziś nie dodano nowego artykułu.
|
|
|
 |
|