wtorek, 29 grudnia 2015

C - Znajdowanie minimum i maksimum ciągu liczbowego

W tym poście przedstawię krótki program, który pozwala na znalezienie wartości minimalnej i maksymalnej podanego ciągu liczbowego. Wykorzystana została funkcja losująca liczbę, które zostały wpisywane do tablicy.

poniedziałek, 28 grudnia 2015

C - Wskaźniki

W tym poście chciałbym opisać sposób deklarowania wskaźników, oraz opisać po co i do czego się je stosuje.

Wskaźnik jest to specjalny rodzaj zmiennej, który przechowuje jej adres . Pozwala na wskazanie miejsca w jakim została ona zapisana. Dzięki nim możliwe jest współużytkowanie pamięci przez różne funkcje. Daje to możliwość ograniczenia ilość wykorzystywanej pamięci. Właśnie po to przekazywany jest jej adres, tak aby inna funkcja wiedziała gdzie znaleźć daną zmienną.

Wskaźniki można wykorzystać w następujący sposób:

  • Deklaracja wskaźnika do obiektu określonego typu (Typ *NazwaZmiennej) np. char *Znak;
  • Pobranie wartości z adresu zmiennej ( *NazwaZmiennej) np. *Znak;
  • Wyciągnięcie adresu podanej zmiennej ( &NazwaZmiennej) np. &Znak;
Poniżej przedstawię różne programy prezentujące możliwości pracy z wskaźnikami.

czwartek, 24 grudnia 2015

[12] STM32 M3 - Nucleo - F103RB - Wyświetlacz Nokia 5110 SPI

Ostatnio opisywałem sposób obsługi tego wyświetlacza przez mikrokontroler Atmega328 na arduino. Tym razem przyszła pora na odpalenie tego samego modułu na STM32. Sposób programowania i inicjalizacji jest bardzo podobny, właściwie jedyną różnicą są tutaj odpowiednie ustawienia i deklaracje poszczególnych portów oraz interfejsu SPI.

Wstęp


Poniżej przedstawiam schemat blokowy wyświetlacza, który został zaczerpnięty z dokumentacji:

Rys. 1. Schemat blokowy wyświetlacza [1]

C - Operacje na bitach

W tym poście chciałbym zapisać sposoby wykonywania operacji na bitach.

Rodzaje operacji:


Głównym wykorzystywanym znakiem jest << lub >>. Informuje on w którą stronę dane będą przesuwane czy w stronę wyższej potęgi (<<), czy może w stronę niższej (>>).

poniedziałek, 21 grudnia 2015

[0] PCB - O czym należy pamiętać tworząc płytkę PCB

W tym poście chciałbym przytoczyć kilka istotnych zasad jakimi należy się kierować w trakcie wykonywania własnego projektu płytki PCB.


Odpowiednio dobrane elementy


Pierwszą rzeczą jest odpowiednie dobieranie elementów elektronicznych. Należy się upewnić, że dany element jest w takiej obudowie jaką posiadamy, bądź jaka jest do kupienia. Trzeba zwracać uwagę czy elementy na siebie nie nachodzą oraz czy są odpowiednio rozmieszczone i będzie możliwość ich łatwego przylutowania np. nie należy prowadzić ścieżek dla golpinów przewlekanych po stronie ich odbudowy plastikowej. Ponieważ podczas lutowania można bardzo łatwo ją uszkodzić bądź samo przylutowanie nie będzie możliwe i będzie trzeba płytkę przerabiać i wytrawiać ponownie.

[0] PCB - Prowadzienie połączeń

Tym razem chciałbym opisać sposoby prowadzenia ścieżek w programach, oraz zasady jakimi należy się kierować podczas ich wykonywania.

Sposoby prowadzenia ścieżek


Można wyróżnić sposoby ręczny oraz automatyczny.

Sposób drugi jest nie do końca odpowiedni. Pozwoli on co prawda na poprowadzenie połączeń lecz często będą one chaotyczne i niedokładnie. Natomiast jest on wygodny do prowadzenia pary różnicowej, gdzie w programie definiuje się odpowiednie parametry, po czym są one robione automatycznie. Dodatkowa zaleta autorutera pojawia się w tworzeniu obwodów bardzo prostych albo bardzo skomplikowanych. W takim wypadku po zdefiniowaniu warunków można znacznie przyśpieszyć pracę. Funckje autorutera można także wkorzystać do prowadzenia pojedyńczych połączeń, co w gąszczu innych może być bardzo pomocne.

poniedziałek, 14 grudnia 2015

[0] PCB - Płaszczyzna masy, zasilanie w płytkach drukowanych

W tym poście chciałbym opisać sposoby prowadzenia płaszczyzny masy i zasilania na płytkach drukowanych.

Wstęp


Dobrze zaprojektowany obwód masy pozwala na zapewnienie odpowiednich parametrów impedancyjnych oraz możliwość pracy urządzeń z wysoką rozdzielczością. Ma to duże znaczenie zwłaszcza dla układów analogowych.

Ważne znaczenie mogą mieć takie parametry jak grubość i szerokość warstwy ścieżek, grubość warstwy miedzi, długość kształt ścieżek, liczba przelotek bądź podłoże na którym ścieżki zostały wyłożone.

C - Zmiana wartości całkowitej na znakową

W tym poście opiszę w jaki sposób dokonać zmiany z postaci liczbowej całkowitej do postaci znakowej.

Aby dokonać takiej konwersji najlepiej wykorzystać funckję itoa.

[11] STM32 M3 - Nucleo - F103RB - Wyświetlacz ze sterownikiem HD44780

Ostatnio zaprezentowałem w jaki sposób obsłużyć wyświetlacz ze sterownikiem HD44780 dla STM32F4. Tym razem chciałem przedstawić przerobiony program, który pozwoli bez najmniejszych problemów obsłużyć taki wyświetlacz na płytce z rdzeniem M3. 

Główne funkcje programu oraz dostępy do rejestrów nie uległy zmianie. Główne zmiany znajdują się w obrębie funkcji opóźniających oraz deklaracji pinów. 

Wyświetlacz należy podłączyć w następujący sposób:
  • VSS - GND
  • VDD - 5V
  • V0 - Kontrast do potencjometru
  • RS - GPIOA_5
  • RW - GND
  • E - GPIOA_6
  • D0-D3 - linie danych nie podłączone
  • D4 - linia danych - GPIOB12
  • D5 - linia danych - GPIOB13
  • D6 - linia danych - GPIOB14
  • D7 - linia danych - GPIOB15
  • A - na drugi potencjometr
  • K - GND podświetlenia

niedziela, 13 grudnia 2015

[4] STM32 M4F - Discovery - Wyświetlacz ze sterownikiem HD44780

W tym poście opiszę sposób obsługi wyświetlacza ze sterownikiem HD44780. Program został wykonany i przetestowany na płytce STM32 Discovery. 

Wstęp


Wyświetlacz alfanumeryczny LCD ze sterownikiem Hitachi HD44780 pozwala na obsługę dwóch wielkości ekrany 2x16 albo 4x20. Każdy ze znaków jest w rozmiarze 5x8 pikseli. 

Komunikacja może odbywać się w trybie 4 bądź 8 bitowym. Przeważnie wykorzystuje się komunikację 4 bitową, ponieważ oszczędza ona linie wejścia/wyjścia a pozwala na zrealizowanie tych samych funkcji.

Wyświetlacz posiada zapamiętane wartości znaków w kodzie ASCII w pamięci ROM. Dzięki temu w celu wyświetlenia konkretnego znaku wystarczy przesłać jego kod, a nie sam znak. Jeśli potrzebny jest znak z poza znaków ASCII, istnieje możliwość zdefiniowana własnego ciągu, maksymalnie ośmiu wzorców.

Rys. 1. Wygląd zewnętrzny wyświetlacza

sobota, 12 grudnia 2015

[10b] STM32 M3 - Nucleo - F103RB - Ekspander portów GPIO cz. 2 - obsługa przycisku

Ten post będzie kontynuacją poprzedniego, który dotyczył obsługi ekspandera portów GPIO. Tym razem przedstawię jak obsługiwać za jego pomocą przyciski.

Wszystkie istotne informacje zostały umieszczone bezpośrednio w programie w formie komentarzy.

Działanie polega na tym, że w momencie przyciśnięcia przycisku następuje zapalenie kolejnej diody. Zostały one podłączone poprzez rezystor 1kOhm do wyprowadzeń od GP0 do GP3. Do portu GP4 został podłączony przycisk.

W celu odczytania stanu panującego na linii należy wystawić stan niski na linię CS, po czym wysłać dane do rejestru, informując układ, że nastąpi odczytywanie danych. Dana z rejestu zostaje odczytana i przesłana i wysłana do mikrokontrolera.  Jeżeli przycisk został wciśnięty, czyli linia została zwarta do masy nastąpi wykonywanie zadania w pętli.

piątek, 11 grudnia 2015

[6] Płytki z elementami SMD do płytek stykowych

W tym poście chciałbym przedstawić sposób wykonania dosyć prostych przejściówek na różnego typu elementy SMD.

Wstęp


Może się tak zdarzyć, że będzie się chciało wykorzystać pewien element SMD do testów różnego rodzaju układów. A jak wiadomo testy najlepiej wykonywać na płytkach stykowych, bądź uniwersalnych. W takim przypadku zamiast lutować kabli do elementów służących do montażu powierzchniowego lepiej wykonać płytkę, zawierającą pady oraz wyprowadzenia na goldpiny. Dzięki temu w bardzo łatwy sposób można lutować bądź odlutowywać różnego typu układy. 

Poniżej przedstawiam wersję paru płytek PCB przystosowanych do łączenia elementów SMD do płytek stykowych. Wyprowadzenia układów są podłączone bezpośrednio do golpinów. W związku z tym wszystkie dodatkowe elementy należałoby umieścić bezpośrednio na płytce stykowej.

[10a] STM32 M3 - Nucleo - F103RB - SPI - Ekspander portów wejścia/wyjścia

W tym poście chciałbym opisać sposób podłączenia oraz obsługi ekspandera portów MCP23S08

Wstęp


Ekspander portów wejścia/wyjścia pozwala na zwiększenie liczby dostępnych pinów. Komunikacja przebiega poprzez interfejs SPI. W przypadku zakupy układu MCP23008 zamiast interfejsu SPI będzie dostępny I2C.

Rys. 1. Ekspander [microchip.com]

czwartek, 10 grudnia 2015

Sprawdzanie elementów elektronicznych - Kondensatory

W tym poście chciałbym opisać sposób sprawdzania kondensatorów.

Pomiary:


Przed przystąpieniem do pomiarów kondensator należy wcześniej rozładować. Dobrym sposobem jest przyłączenie do kondensatora rezystora o bardzo dużej wartości rezystancji.

Jeśli ktoś posiada tani miernik, który nie jest wyposażony w funkcję pomiaru pojemności, wtedy jedyną opcją jest sprawdzenie go omomierzem. Jeśli wartość rezystancji będzie rosnąć do wartości nieskończonej, wtedy na kondensatorze nie ma przebicia. Można przyjąć, że jest on sprawny, jednak nie ma się pewności co do wartości jego pojemności.

wtorek, 8 grudnia 2015

[20] Arduino - Wyświetlacz graficzny Nokia 5110

Tym razem chciałbym opisać sposób programowania wyświetlacza graficznego pochodzącego z telefonu Nokia 5110.

Wstęp


Wyświetlacz graficzny pochodzący z telefonu Nokia 5110 posiada rozdzielczość 84x48px. Do obsługi wykorzystuje on sterownik PCD8544. Cała komunikacja odbywa się poprzez interfejs SPI.
Wyświetlacz można zasilać wykorzystując napięcie z zakresu od 3,3V do 5V. 

Rys. 1. Wyświetlacz graficzny Nokia 5110.

poniedziałek, 7 grudnia 2015

Sprawdzanie elementów elektronicznych - Tranzystory

W tym poście zaprezentuję sposób sprawdzania miernikiem czy tranzystor jest sprawny.

Bipolarny NPN


Na początek idzie tranzystor bipolarny npn. Ja posłużę się elementem CTBC547B. 

Rys. 1. Tranzystor bipolarny

[I] STM32F4 - Discovery - Projekt - Wiatrak sterowany za pomocą PWM

Witam, tym razem chciałbym przedstawić projekt wykonany na STM32F4 - Discovery. Działanie programu polegało na sterowaniu współczynnikiem wypełnienia w celu regulacji prędkości obrotowej wiatraka. Współczynnik wypełnienia został przedstawiony na wyświetlaczu.

Wstęp


W skład tego projektu wchodzą:
  • Wiatrak 12V czteropinowy.
  • STM32F4 Discovery
  • Przyciski funkcyjne 3x
  • Wyświetlacz HD44780
  • Dioda LED

Sprawdzanie elementów elektronicznych - rezystor

Tym razem pierwszy post z serii w której chciałbym przedstawić w jaki sposób można sprawdzać elementy elektroniczne za pomocą miernika uniwersalnego. Pierwszym elementem będzie rezystor.

Rys. 1. Rezystory

piątek, 4 grudnia 2015

[10] STM32 M3 - Nucleo - F103RB - SPI opis oraz sposób programowania

Tym razem chciałbym zaprezentować sposób obsługi urządzeń za pomocą interfejsu SPI.

Wstęp


SPI (ang. Serial Peripheral Interface) jest to interfejs szeregowy stosowany do komunikacji pomiędzy różnymi układami. Obecnie jest jednym z częściej wykorzystywanych metod komunikacji pomiędzy urządzeniami.

Komunikacja odbywa się za pomocą trzech głównych linii:

  • MOSI (ang. Master Output Slave Input) - dane wysyłane z urządzenia sterującego (przeważnie mikrokontroler) do urządzenia peryferyjnego pod układ główny (np. czujnik wyświetlacz).
  • MISO (ang. Master Input Slave Output) - odwrotne działanie niż MOSI, z układu peryferyjnego do głównego,
  • SCKL, CLK, SPC (ang. Serial Clock) - jest to sygnał taktujący.
Dodatkowo często wykorzystywana jest linia SS, pozwala ona na wybranie układu podrzędnego, lub na wykonanie adresacji układów.

W czasie przesyłania danych jeden układ jest nadrzędny (master), drugi natomiast w tym czasie jest układem podrzędnym.

Rys. 1. Podłączenie modułów SPI [wikipedia]

środa, 2 grudnia 2015

Sprawdzenie akumulatora oraz alternatora

Tym razem chciałbym przedstawić krótki post, w którym opiszę jak sprawdzić czy akumulator oraz alternator są sprawne. Do tego celu jedynym potrzebnym urządzeniem będzie miernik uniwersalny.

Sprawdzenie akumulatora


Podstawowym pomiarem jaki należy wykonać jest sprawdzenie samego akumulatora. Należy to robić na zimnym silniku, najwcześniej około 2 godziny od zakończenia jazdy.

wtorek, 1 grudnia 2015

[9] STM32 M3 - Nucleo - F103RB - Wyświetlacz 7-seg

Tym razem przedstawię obsługę wyświetlacza 7-segmentowego za pomocą mikrokontrolera STM32.

Wstęp


Do obsługi wyświetlacza wykorzystuje gotowy moduł zaprezentowany razem z podpisanymi wyprowadzeniami na rysunku 1.1.

Rys. 1. Wyświetlacz 7 segmentowy