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

AVR - AVR + pomiar tętna (+ GPS + LCD + karta SD)

grubson 14 Gru 2013 23:50 3585 15
  • #1 14 Gru 2013 23:50
    grubson
    Poziom 9  

    Witam wszystkich :)

    Jestem w trakcie robienie projektu (AVR + pomiar tętna + GPS + LCD + karta SD) do celów własnych jako osoby aktywnej fizycznie (pomiar tętna, prędkości, czasu, dystansu, wyznaczenie trasy).

    Tworzenie projektu zacząłem od próby opanowania każdego z modułów z osobna, aby później połączyć to w całość.

    Pierwszy poszedł pod warsztat wyświetlacz od Nokii 3310 - sprawa bardzo prosta, polecam ;)
    Na drugi ogień postanowiłem wziąć pomiar tętna - jako metodę wybrałem pomiar metodą podczerwieni. Przejrzałem chyba wszystkie tematy na różnych forach dotyczących tego zagadnienia. Temat nie wydaje się być trudny, a jednak ciągle coś mi nie chce działać.

    Zrobiłem 3 układy do pomiaru tętna, wzorując się na:
    1) http://embedded-lab.com/blog/?p=5508 (mam identyczny układ zamieniając jedynie MCP6004 na dwa LM358)
    2) https://www.elektroda.pl/rtvforum/topic2439222.html#11619351
    3) Układzie z czasopisma Elektronik numer 8/2001

    Każdy z układów działa, ale... za czort nie chcą mierzyć. W wymienionych układach jest użyta dioda migająca w rytm pulsu człowieka (nazwijmy ją testowa). Stosowałem transoptor TCRT1000, CNY70, diodę IR nadawczą i odbiorczą, w jasnym pomieszczeniu, w ciemnym pomieszczeniu, zasilając układ z sieci przez prostownik oraz z baterii (myślałem, ze może zakłócenia z sieci) i za każdym razem dzieją się dziwne rzeczy.

    Z tego co wiem ta dioda testowa powinna przy pewnym natężeniu światła świecić, a przy pewnym nie. Czyli jeśli przykładam palec do czujnika nie świeci, tylko przy uderzeniu krwi (pulsie) na chwilę się zapala. Ona jednak świeci gdy np ruszę ręką nad czujnikiem. Tuż nad lub kilka centymetrów nad. Jeśli utrzymam rękę w w konkretnej pozycja dla której się zaświeciła, dioda i tak zaraz gaśnie. Jeśli dociskam palec do czujnika nie świeci się, jeśli robię minimalny ruch góra dół wtedy miga. W razie czego mogę nagrać jakiś filmik.

    Czy ktoś kiedyś robił podobny układ? Lub ma jakiś pomysł gdzie szukać przyczyny? Czemu np układ z 1) działa na filmiku idealnie, a u mnie nie chce? A może ktoś kiedyś robił podobny projekt tylko z wykorzystaniem przetwornika piezoelektrycznego lub mikrofonu pojemnościowego?

    Z góry dziękuję za jakiekolwiek wskazówki, gdyż strasznie utknąłem w miejscu już od 3 tygodni... Pisanie w stylu "było", lub linki do innych tematów o pomiarze tętna nie pomogą, bo na prawdę przez 3 tygodnie od kiedy się męczę z zagadnieniem przeczytałem już chyba wszystkie.

    PS. Jeśli zamieściłem temat w nieodpowiednim dziale prosiłbym o przeniesienie.

    0 15
  • Pomocny post
    #2 15 Gru 2013 00:21
    Marek_Skalski
    Moderator Projektowanie

    MCP6004 to wzmacniacz operacyjny typu rail-to-rail. Nie możesz go zastąpić wzmacniaczem operacyjnym LM358 w takiej aplikacji.
    Do tego MCP6004 ma prąd wejściowy na poziomie pA i dlatego jest używany jako stopień wejściowy dla fotoelementów, do czego absolutnie nie nadaje się LM358.
    Nie ma rady, trzeba wymienić wzmacniacz.

    0
  • #3 15 Gru 2013 16:23
    grubson
    Poziom 9  

    Dzięki za szybką odpowiedź :)

    Jutro w takim razie kupię MCP6004 i oczywiście dam znać czy pomogło :)
    Czy mogą być dwa MCP6002 ? (żebym nie musiał projektować nowej płytki).

    W jednym z projektów ktoś zastosował wzmacniacz TL082CN. Czy nadaje się on do tego typu zastosowań? Z ciekawości podmieniłem go zamiast LM358 i podczas pomiaru "dioda testowa" świeci się cały czas. Jest to kwestia zbyt dużego wzmocnienia sygnału czy użyteczności układu w takim projekcie?

    W żadnym sklepie nie mają na stanie MCP6002... Prosiłem, żeby mi zamówili, jutro powinno być do odbioru :)

    0
  • #4 06 Sty 2014 14:22
    grubson
    Poziom 9  

    Witam w Nowym Roku! Najlepsze życzenia dla wszystkich forumowiczów ;)

    Dzięki pomocy Marek_Skalski udało mi się uporać z problemem i pomiar tętna działa, ciężko jest znaleźć odpowiedni punkt na palcu, ale działa :)

    Mam jednak prośbę i kilka pytań. Może tym razem ktoś będzie mógł mi bardziej pomóc :)

    1) Zabieram się za zrobienie już całej gotowej płytki, czy mógłby ktoś sprawdzić poprawność schematu?

    AVR - AVR + pomiar tętna (+ GPS + LCD + karta SD)

    2) Tu od razu przyznam się, że całą część związana z zasilaniem (bateria + możliwość ładowania) jest zapożyczona z innego projektu. Mógłby ktoś mniej więcej wyjaśnić skąd się wziął taki właśnie i skąd się wzięły te konkretnie wartości rezystancji? Albo jakiś odnośnik, gdzie mógłbym o tym poczytać i się dokształcić?

    AVR - AVR + pomiar tętna (+ GPS + LCD + karta SD)

    3) I jeszcze takie pytanie: czy mógłbym jako zasilania wykorzystać USB (zamiast standardowej ładowarki do starej Nokii)? I czy wtedy wystarczy jakbym podłączył w USB jedynie piny od zasilania (VCC GND) czy od przesyłu danych też (D- D+)?

    4) Aha jeszcze chciałem się upewnić.... Ponieważ zarówno LCD od nokii3310 jak i microSD używają portów SPI od uP. Czy można podłączyć je jednocześnie do tego samego portu pod warunkiem, że jeśli będę zapisywał dane na kartę pamięci, nie będę wysyłał komend do wyświetlacza? (np: wyświetlę jakiś napis -> przejdę do funkcji zapisującej na SD i po zakończeniu zapisywania dopiero zmienię grafikę na wyświetlaczu? )

    Z góry dziękuje za wszelkie odpowiedzi :)

    0
  • #5 06 Sty 2014 17:35
    Marek_Skalski
    Moderator Projektowanie

    1. Mega podłączona ok, ale:
    - złącze karty pamięci niezgodne ze standardem, więc nie powiem czy jest prawidłowo podłączone;
    - jeszcze nie widziałem stabilizatora LM1117-3.3 w wersji z kontrolą ON/OFF. Producent też się nie przyznaje, więc lepiej powiedz co to jest. LM1117 Może jakiś LK112 czy coś podobnego?
    - pomiar napięcia przez dzielnik 1M/1M raczej słabo widzę ponieważ prąd wejściowy może dochodzić do 1uA, co daje 1V spadku napięcia. Poza tym stała czasowa jest dramatycznie wysoka. Lepszym rozwiązaniem jest zastosowanie dzielnika na rezystorach ~50k, ale dolny jest zapinany do masy przez tranzystor sterowany z uC. W ten sposób strata energii jest tylko podczas pomiaru, a nie stale;
    - rezystory R3, R4, R7, R9... wyglądają na "znalezione w szufladzie";
    - R14... to jest układ zasilany z baterii. Zamieniać 0,37uA w ciepło to trochę bez sensu. Poza tym, mając wyłącznik, nie ma większego sensu trzymanie zasilania na stabilizatorze;
    - ładowanie baterii LiPol 3,7V to nie jest wcale takie proste zadanie; masz do tego algorytm albo gotowy program? Tutaj możesz troche poczytać: Li-Poly Szczególnie sekcja Charging. U Atmela można gdzieś znaleźć dokumentację na ten temat. Wybacz, ale nie mam czasu szukać.

    2. Szukaj u źródła. Skoro znalazłeś schemat, to powinien też być dołączony opis.

    3. Tak, wystarczy podłączyć zasilanie aby dostać 100mA. Po więcej należy się przedstawić i poprosić, czyli przejść enumerację i podać w wymaganiach 500mA max.

    4. W zasadzie tak. Musisz tylko sprawdzić czy wyświetlacz pracuje w tym samym trybie SPI co karta (mode 0). Jeżeli nie, to będziesz musiał za każdym razem zmieniać konfigurację portu SPI.

    0
  • #6 06 Sty 2014 19:22
    grubson
    Poziom 9  

    Dziękuję za odpowiedź :)

    1) Poprawiłem tą część zasilania według podanych wskazówek:
    AVR - AVR + pomiar tętna (+ GPS + LCD + karta SD)

    - Karta micro SD zgodna ze standardem:
    AVR - AVR + pomiar tętna (+ GPS + LCD + karta SD)

    Cztery linie transmisyjne podciągnięte pod 3V3 poprzez rezystory 4k7 :)

    - To jest LM1117 mój błąd - z rozpędu zapomniałem przerobić układ - poprawione

    - Ładowanie... zastanowię się nad tym rozwiązaniem. Postaram się znaleźć taki algorytm lub go dobrze opracować zanim zacznę używać, lecz dobrze by było mieć już dostosowany do takiej możliwości układ, aby z czasem zwiększyć funkcjonalność całego urządzenia - dobry pomysł? Czy lepiej pominąć całe to ładowanie?

    Na razie wiem tyle:
    Akumulatory Li-pol/ Li-ion muszą być ładowane dwu-etapowo:
    1 - ładowanie stałym prądem o wartości odpowiedniej dla danego ogniwa, aż ogniwo osiągnie 4,20 V
    2 - ładowanie stałym napięciem 4,20 V, aż prąd spadnie do 50mA [8] (dla pewnych typów ogniw Li-ion o napięciu znamionowym 3,70 V napięcie ładowania wynosi 4,10 V na ogniwo), lub do założonego ułamka wartości (np. 2 do 10%) prądu płynącego w pierwszym etapie.

    Wstępnie kombinowałbym z pomiarami poziomów napięć i sygnałem PWM - z nóżki CHAR aby sterować wartością prądu ładowania.

    2) Niestety nie ma opisanego sposobu doboru wartości rezystorów - układ jest z Elektroniki Praktycznej 1/2009. Zakładałem, że powinien być zrobiony z sensem i przede wszystkim jako wzór dla osób uczących.

    Link

    Czy jeśli, jak wyżej, te wartości R3,R4... są z projektu z EP to czy układ będzie działał? Czy są na tyle "z czapy", że trzeba dobrać inne?

    3) 100mA do zasilania całego układu może być mało, ale do ładownia chyba wystarczy? Tej części z enumeracją chyba nie skumałem o co chodzi :P

    4) Upewnię się, ale z tego co wiem to tak, czyli miałbym chociaż tyle łatwiej :)

    0
  • #7 06 Sty 2014 19:48
    Marek_Skalski
    Moderator Projektowanie

    ~50k znaczy 47k, 51k, 56k, 62k Tutaj wartość nie jest krytyczna, więc używaj wartości typowych dla szeregów E12, E24.
    Karta ok.
    O ładowaniu wiesz, więc sobie poradzisz. A zrobić musisz, bo przecież nie będziesz przekładał akumulatora do telefonu w celu ładowania.
    Projekt z EP wydaje się być ok. Może nie jest najbardziej energooszczędny, ale zawsze uważam, że pierwsza wersja urządzenia ma działać, a dopiero następne wersje działają naj... Zazwyczaj 3 lub 4 wersja realizuje plan przyjęty na początku ;)
    100mA to wcale nie tak mało, ale trochę zabierze uC, karta, GPS i LCD. Pomyśl czy możesz je odłączyć, uśpić na czas ładowania akumulatora. Może też warto rozważyć użycie innego uC. Tutaj może być sporo do ugrania -> wydłużenia czasu życia urządzenia na 1 aku.
    Powodzenia!

    0
  • #8 06 Sty 2014 20:22
    grubson
    Poziom 9  

    Uśpić na czas ładowania.... a myślisz, że sprawdziłoby się gdybym zasilanie karty SD podłączył do portu uP? I załączał tylko na czas zapisu danych? Wydajność pinu 40mA powinna wystarczyć chyba? :)

    0
  • #9 06 Sty 2014 22:15
    piotrva
    Moderator na urlopie...

    Co do zasilania karty SD z portu uC - kolega @manekinen robił tak w swoim uProg'u (możesz poszukać wątku). Był z tego co pamiętam problem z tym, że karta SD podczas podłączania zasilania "pobiera" stosunkowo duży impuls prądowy.
    Jak problem rozwiązał @manekinen można zobaczyć na schematach dostępnych tu: http://mdiy.pl/uprog-maly-szybki-przenosny-programator-avr-z-sd/

    PS. z tego co wiem to wydajność pinów zwykle w AVR'ach wynosi 20mA...

    0
  • #10 06 Sty 2014 22:40
    grubson
    Poziom 9  

    Chyba jednak 40mA i przy SMD całkowita wydajność 400mA

    AVR - AVR + pomiar tętna (+ GPS + LCD + karta SD)

    Dzięki za link, przeanalizuje projekt :)

    0
  • #11 09 Sty 2014 21:19
    grubson
    Poziom 9  

    Mam, myślę, że proste pytanie techniczne..... :)

    Mam na zbyciu (od znajomego) laminat z miedzią i powłoką światłoczułą. Zawsze wytrawiałem tradycyjne laminaty miedziane, czy te drugie wytrawia się w taki sam sposób? Lub ew czy można ściągnąć tą niebieską powłokę? :P

    Pozdrawiam i będę wdzięczny za szybką odpowiedź :)

    0
  • #13 16 Lut 2014 20:40
    grubson
    Poziom 9  

    Witam,
    Ma ktoś jakiś pomysł czemu nie mogę wysterować niektórych pinów uP ?
    - uP - Amtega32 w SMD
    - 3 piny w diodami LED (PC1, PC3, PC5)
    - 3 piny z przyciskami (PC0, PC2, PC4)

    Na zmiany w kodzie reagują jedynie jedna dioda PC1 oraz jeden przycisk PC0.
    W pozostałych zupełnie jakby się zawiesił procesor. Nie zależnie czy ustawiam wartość 1 czy 0 na 3 pinach (PC2, PC3, PC5) jest ciągle 1, a na PC4 jest cały czas 0 (to jest przycisk i mimo ustawiania podciągnięcia do vcc i tak jest 0).

    Kod programu najprostszy na świecie:

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Możliwe jest, żeby "zablokowały" się niektóre piny? Albo może wpływ mają alternatywne funkcje pinów, trzeba je jakoś wyłączyć (TCK, TMS, TDO, TDI) ?
    Zwarcia nóżek nie wchodzą w grę.

    Pozdrawiam i z góry dzięki za wszelkie propozycje, bo już zgłupiałem....

    Dodam jeszcze jedno:
    Jest jeszcze problem taki, że przy pinach PC3 i PC5 gdzie są podłączone diody - diody te nie zapalają się, procesor wystawia 1, ale daje tylko 1,6V napięcia. Diody są podłączone przez 330om katodą do GND. Tutaj jako jedyną możliwość widzę niewydolność prądową i będę nieco modyfikował układ dodając tranzystor. Aczkolwiek dioda na PC1 działa. Napisałem też o tym, bo może te rzeczy w jakiś sposób się łączą.

    0
  • Pomocny post
    #14 16 Lut 2014 20:48
    dondu
    Moderator Mikrokontrolery Projektowanie

    grubson napisał:
    Ma ktoś jakiś pomysł czemu nie mogę wysterować niektórych pinów uP ?
    - uP - Amtega32 w SMD
    - 3 piny w diodami LED (PC1, PC3, PC5)
    - 3 piny z przyciskami (PC0, PC2, PC4)

    Na zmiany w kodzie reagują jedynie jedna dioda PC1 oraz jeden przycisk PC0.
    W pozostałych zupełnie jakby się zawiesił procesor. Nie zależnie czy ustawiam wartość 1 czy 0 na 3 pinach (PC2, PC3, PC5) jest ciągle 1, a na PC4 jest cały czas 0 (to jest przycisk i mimo ustawiania podciągnięcia do vcc i tak jest 0).

    Mam pomysł ... zerknij do dokumentacji ... albo tutaj: http://mikrokontrolery.blogspot.com/2011/04/avr-czyhajace-pulapki.html
    i poszukaj o JTAG.

    0
  • #15 16 Lut 2014 21:01
    grubson
    Poziom 9  

    ok zaraz uważnie przeczytam cały artykuł :)

    Dodano po 7 [minuty]:

    Dondu KOCHAM CIE!!! :D :D :D

    Uratowałeś mój układ i kilka dni z mojego życia! :D

    Jako pokutę przeczytam cały Twój blog, żeby następnym razem nie zadawać głupich pytań! :)

    0
  • #16 16 Lut 2014 21:11
    dondu
    Moderator Mikrokontrolery Projektowanie

    Oj bez przesady ... po prostu następnym razem skoro nie działały Ci piny portu C, to zerkasz na ich opis w dokumentacji (już na 5-tej stronie):

    Cytat:
    Port C (PC7..PC0)
    Port C is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). The
    Port C output buffers have symmetrical drive characteristics with both high sink and source
    capability. As inputs, Port C pins that are externally pulled low will source current if the pull-up
    resistors are activated. The Port C pins are tri-stated when a reset condition becomes active,
    even if the clock is not running. If the JTAG interface is enabled, the pull-up resistors on pins
    PC5(TDI), PC3(TMS) and PC2(TCK) will be activated even if a reset occurs.

    The TD0 pin is tri-stated unless TAP states that shift out data are entered.
    Port C also serves the functions of the JTAG interface and other special features of the
    ATmega32 as listed on page 60

    ... i wiedząc już że przyczyną jest JTAG szukasz dalej w dokumentacji, co z tym fantem zrobić :)

    Co do pokuty ... jest już ponad 300 artykułów ... sporo czasu Ci to zajmie :)

    0
  Szukaj w 5mln produktów