Archiwum kategorii: Arduino

Kolejny zegar czasu rzeczywistego: podłączenie ds1307 do Arduino – i kilka słów o i2c

W poprzednim poście  podłączałem do Arduino zegar PCF8563. Ale PCF8563 to nie jedyny układ, który możecie użyć jako odniesienie czasu. DS1307 to inny popularny czip tego typu. I podobnie jak pcf – podłącza się go do szyny i2c. Przyjrzymy się ds1307 – oraz bibliotekom umożliwiającym korzystanie z niego.

Czytaj dalej Kolejny zegar czasu rzeczywistego: podłączenie ds1307 do Arduino – i kilka słów o i2c

Zegar czasu rzeczywistego: podłączenie PCF8563 do Arduino

Jeżeli kiedykolwiek postanowicie zbudować zegarek, prędzej czy później będziecie potrzebowali układ  odniesienia czasu. Każdy procesor zlicza czas od swojego uruchomienia. Ale po resecie, zaniku napięcia zasilającego lub przepełnieniu odpowiedniego rejestru – zaczyna od zera. W zupełności wystarcza to dla funkcji opóźnienia i wielu innych, które korzystają z czasu – jak PWM czy watchdog. Słabo nadaje się jednak na zegarek.

Dlatego stosuje się układy odniesienia czasu. Są to dodatkowe czipy,  najczęściej niezależnie zasilane (przez baterię lub kondensator). Ich rolą jest zapamiętywanie godziny i daty – i odliczanie jej nawet, gdy cały komputer jest wyłączony. Zawartość takich czipów może być ustawiona przez użytkownika – albo np. synchronizowana z usługą czasu sieciowego NTP.

Podobnych układów jest na rynku kilka np. DS1307, MCP79400. Tutaj zajmę się zegarem firmy NXP: PCF8563.

Czytaj dalej Zegar czasu rzeczywistego: podłączenie PCF8563 do Arduino

Tester rezystancji wewnętrznej ogniw 18650

Ogniwa Li-Ion 18650 są głównym źródłem zasilania moich „zabawek”. Owszem – wymagają odpowiedniej ładowarki, trzeba kontrolować stan ich napięcia, są większe niż „normalne” paluszki. Za to dają duże prądy a nominalne napięcie pojedynczego ogniwa to 3.7 v – naładowanego nawet 4.2v.

Wbrew pozorom, 18650 są łatwo osiągalne. Pozyskuję je z baterii od laptopów czy power banków. Tuż po wyłuskaniu ich z „opakowania” konieczna jest ocena ich jakości. Pierwszy sprawdzian jest łatwy – wystarczy zmierzyć ich napięcie. Jeżeli jest zbyt niskie – nawet nie biorę się za ich ładowanie. Absolutną granicą jest dla mnie 3v. Ładowanie ogniw, które dłużej leżały rozładowane najczęściej nie daje dobrych rezultatów – będzie to trwało wieki (cykle ładowania i rozładowania), wymaga czasami „kopa” napięciowego – a na koniec wepchniecie w nie jedynie kilkaset mAh. Najbardziej lubię takie ogniwa, które mają 3.5v i więcej – dają najwięcej energii.

Napięcie to jednak nie wszystko. Jeszcze bardziej liczy się rezystancja wewnętrzna baterii.

Czytaj dalej Tester rezystancji wewnętrznej ogniw 18650

Pomiar natężenia prądu z użyciem bocznika, wzmaczniacza operacyjnego i Arduino

W kolejnym projekcie będę mierzyć natężenie przepływającego prądu… Napięcie wystarczy wprowadzić na piny analogowe Arduino. Z natężeniem jest trochę problemów. Matematycznie sprawa jest prosta. Pan Ohm jest tu dość konkretny:
 I = {U \over R}

Natężenie prądu I możemy łatwo obliczyć, jeżeli znamy napięcie U i rezystancję R. Trzeba to jednak zrobić tak, żeby nasz miernik nie wpłynął na mierzony układ. Jeżeli R będzie za duże – spadek napięcia (dodatkowe obciążenie) wpłynie na działanie mierzonego urządzenia. Rezystancja R powinna być więc możliwie jak najmniejsza. Jednak  wtedy spadek napięcia na niej będzie niewielki…. i trudno go będzie zmierzyć!

Czytaj dalej Pomiar natężenia prądu z użyciem bocznika, wzmaczniacza operacyjnego i Arduino

Ciekawy przypadek pewnego Nano… (piractwo i „kara” po latach)

Zdarzyło mi się pewne Nano… Wygrzebałem je z dna pudełka (przeleżało tam trochę czasu), podłączyłem do komputera. Niestety – nie odpowiadało na programowanie z Arduino IDE. Pierwsze podejrzenie padło oczywiście na bootloader. Szybkie wgranie nowego (sposób znany i opisany) – co zazwyczaj rozwiązywało problem. A tu niespodzianka – nic to nie dało. Co więcej:

Bricked Counterfeit FT232 Serial (UART) IC? What da hell?!

Czytaj dalej Ciekawy przypadek pewnego Nano… (piractwo i „kara” po latach)

Generator sygnału, port szeregowy i… Arduino

W poprzednim tekście o niewielkim generatorze przebiegów prostokątnych pisałem o możliwości konfigurowania go przez port szeregowy. Pokazałem, jak to można zrobić przez konsolę szeregową, np. Putty. Oczywiście nic nie stoi na przeszkodzie, żeby sterować nim z… Arduino.

Co więcej – GND, RX i TX generatora można wpiąć bezpośrednio do gniazd portów Arduino – GND, D13 i D12. Pozostaje podłączyć zasilanie VIN Arduino do VIN+ generatora… i gotowe!

Czytaj dalej Generator sygnału, port szeregowy i… Arduino

Arduino i pomiary napięcia z użyciem napięcia odniesienia AREF – LM336

Jedną z ciekawszych funkcji Arduino UNO R3 (a właściwie napędzającego go AtMega328) jest wbudowany przetwornik analog-cyfra. Przetwornik zamienia sygnał analogowy (napięcie) na postać cyfrową. Standardowo przetwornik może mierzyć napięcie w zakresie od 0 do Vcc voltów – gdzie Vcc jest napięciem zasilania AtMega. Podane zasilanie przetwornik dzieli na 1024 przedziały (stąd się bierze rozdzielczość 10 bitów – 2^10 = 1024) i ilość tych przedziałów zwraca w funkcji analogRead() (a dokładniej 0..1023).

Standardowo zakłada się, że Vcc=5v. Jeżeli więc funkcja analogRead() zwróci wartość około 511 – napięcie na takim pinie powinno wynosić około 2.5v. A tu niespodzianka: dla napięcia 2.5v moje Arduino zwróciło…  515 – czyli 2.5171. Skoro rozdzielczość przetwornika to 4.8mV (5v/1024), to skąd się bierze ta różnica, prawie 18mV?

Czytaj dalej Arduino i pomiary napięcia z użyciem napięcia odniesienia AREF – LM336