Skocz do zawartości

RFM

Nowy
  • Zawartość

    312
  • Rejestracja

  • Ostatnio

Reputacja

40 Bardzo dobra

O RFM

  • Ranga
    6/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Po co rezystory na INT jak można włączyć podciąganie na wejściach?
  2. Oj chyba trzeba podrążyć. jeszcze w nocie Philips i jeszcze IIC zalecana wartość podciągania dla typowej linii transmisyjnej, przy 100kHz to max 5k, min kilkaset ohm ale zalecane 1k dla logiki 5V. Znam wiele przypadków, gdzie były problemy z podciąganiem 10k, dlatego wskazane 4,7, przy 400kHz 2k2. Wiele naturalnie zależy od długości linii zwłaszcza gdy połączenie jest kablowe np pomiędzy PCB. Oczywiście 10k w 90% przypadków będzie ok ale gdy ktoś ma pecha, to trafi na te 10% a bez oscyloskopu (90% zaczynających przygodę z Arduino nie ma oscyloskopu) nie sposób znaleźć przyczynę problemów.
  3. Gdzie napisałem, ze podciąganie ma być 10k?
  4. O jakiej wartości? 10..100nF. Patrzę na fotke i nie widzę jak doprowadzona jest masa do PCF8574.
  5. Dobrze? Gdzie kondensator filtrujący zasilanie PCF8574? W skrajnym przypadku, różne piki na zasilaniu mogą powodować "zatrzaskiwanie" zasilania przez pasożytnicze tyrystory na wejściach układu. Tu akurat to nie nastąpi bo na wejściach nie ma dużych pojemności ale inne problemy mogą powstać. Gdzie podciąganie I2C? To, które ewentualnie jest na Arduino jest nieodpowiednie (najczęściej 10k) i za małe dla domyślnej (100kHz) prędkości transmisji.
  6. Płytka stykowa, zwłaszcza w poruszającym się pojeździe, to bardzo ale to bardzo zły pomysł. Sprawdź czy po rozłączeniu uC "widzi" moduł BT.
  7. A po tym może robić to z wykorzystaniem ekspandera. Przy okazji, obliczenia: są błędne. Samo skanowanie niech zajmuje 5ms ale CPU jest angażowany w tym czasie co 90us (przy 100kHz) na kilka us (5..10) w przerwaniu. Mamy więc obciążenie ok 5..10% w czasie 5ms i 0% w pozostałym okresie. Przyjmując skanowanie 50 razy na sekundę da to obciążenie CPU wyniesie 1 max 2,5%. Obsługa przerwań I2C jest problemem? Jak już napisałem wcześniej, własna w arduino niemożliwa ale wiedząc, że gdy wywołujemy funkcje wire.start(), wire.write(0 itd tak naprawdę nie sa one wykonywane on-line na I2C tylko zapamiętywane w 32 bajtowym (dla AVR) buforze. Dopiero wire.stop() uruchomi transmisję na przerwaniach. Wystarczy więc wykorzytać ten fakt i w przerwaniach od timera obsługiwać i2C.
  8. Można obsłużyć I2C na przerwaniach. W zasadzie arduinowe libs obsługują I2C na przerwaniach. Co prawda wole sam napisać taka obsługę ale w przypadku arduino nie ma "tylnej furtki", nie da się przejąc wektora przerwań (widać autorzy Arduino nie brali dobrych wzorców np z C-64) ale można w prostszy l;ub bardziej skomplikowany sposób wykorzystać przerwania I2C i program nie bedzię "mielił". Nie zmienia to faktu, ze zgadam się z tym, iz najprościej klawiaturę matrycowa obsłużyć na portach uC i tak powinni robić początkujący. Wykorzystaj Mega2560. Tą idę wykorzystuje np TM1638.
  9. Nie będzie. Zarówno oko, jak i czujnik, ma różną charkterystykę dla każdej podstawowej barwy. Kolor biały nie da równych wartości wszystkich składowych RGB np 250, 250, 250.
  10. Na to nic nie poradzę. Nie zabieram się do budowy domu jak nie mam betoniarki. Wyniki stabilne ale niezgodne z tym czego spodziewał się autor programu. Pisałem jakich wartości spodziewa się autor programu.
  11. A co z datą? Jak dodam godzinę o np 23:30, to wyświetli się 0:30 ale nie będzie dzień+. Trzeba więc albo jednorazowo dodać/odjąć godzinę korzystając z flag albo operować na np czasie UNIX co wymaga konwersji, najpierw z YY-MM-DD mm:gg (RTC) na UNIX, dodanie godziny, ponowna konwersja z UNIX na YY-MM-DD mm:gg.
  12. Najpierw musisz zrobić wieczny kalendarz aby na podstawie daty określić czy masz ostatnią niedziele marca lub października. Dalej prosta sprawa, np dzień wcześniej ustawiasz flagę zmiany czasu. Gdy minie godzina 2:00 ostatniej niedzieli a flaga zmiany czasu ustawiona, dodajesz lub odejmujesz godzinę po czym kasujesz flagę zmiany czasu.
  13. Co to za czujnik? Umieść jego notę katalogowa na forum. Aktualizacja: Note znalazłem https://pdf1.alldatasheet.com/datasheet-pdf/view/560507/AMSCO/TCS3200.html Aktualizacja: Deklarujesz int frequency a spodziewana wartość frequency to 0..255. Dlaczego deklarujesz int (+/-32kB)? To powód otrzymywania wartości ujemnych. Wyświelt co otrzymujesz z pulseIn(sensorOut, LOW); Aktualizacja: Z tego co widzę to pulseIn zwraca unsigned long. Programista spodziewa się wartości 25..72. Łatwo wywnioskować, że przekroczony jest zakres. Obstawiam, że na wejściu sensorOut nie ma sygnału. Sprawdź oscyloskopem czy i jaki sygnał tam jest.
  14. CMRR to jedno a to, ze wzmacniacz musi na wyjściu uzyskać napięcie bliskie 0 to inna sprawa. Wzmacniacz różnicowy powinien więc też wzmacniać sygnał 10 czy 20 razy a może i więcej (zależy od wartości rezystora bocznika).
  15. Po co testować? Można obliczyć. Na dzień dobry problem, który widze w Twoim rozwiązaniu, to zasilanie wzmacniacza z 5v a pomiar przy 12V. Są wzmacniacze, które sobie z tym poradzą ale: Kosztują ok 20zł. Wzrasta prąd wejściowy wzmacniacza. Problem można rozwiązać na tanim TL072 ale będzie bardziej skomplikowany od pomiaru prądu od masy, który pokazałem na swoich schematach.
×
×
  • Utwórz nowe...