Skocz do zawartości

Chev

Użytkownicy
  • Zawartość

    17
  • Rejestracja

  • Ostatnio

Reputacja

3 Neutralna

O Chev

  • Ranga
    2/10
  • Urodziny 02.10.1995

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Kraków
  • Języki programowania
    C, C++
  • Zainteresowania
    IoT, technologia oświetleniowa, łucznictwo
  • Zawód
    elektronik
  1. Dzień dobry, Zmagam się z następującym problemem. Potrzebuję ustawić czas jednego bitu Timera4 w stm8s003f3 na 1 uS. Robiąc to w sposób standardowy, a mianowicie: 1. Ustawiając preskaler HSI oraz CPU na DIV = 1 (czyli korzystam z 16 MHz) void clock_setup(void) { ////////////////////////////// Configure Quartz Clock CLK_DeInit(); CLK_LSICmd(ENABLE); CLK_HSICmd(ENABLE); //CLK_ClockSwitchCmd(ENABLE); CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); CLK_PeripheralClockConfig (CLK_PERIPHERAL_TIMER2 , ENABLE); C
  2. Poradziłem sobie już w ten sposób, że zastosowałem prostownik jednopołówkowy, dzielnik napięcia, by uzyskać napięcie 1,2V na transoptorze oraz prąd 5 mA bodajże. Do tego elektrolit na wejście 220uF + ceramik 100 nF jako filtracja. Na wyjściu w torze kolektora transoptora rezystor 10k, dczytuje sobie stan zbocza na porcie i wszystko działa jak należy.
  3. Jeśli pytasz o środowisko to jest to darmowa wersja IAR EW for STM8 3.11.1. Jest ograniczenie zapisu do 8kB, ale licencja jest nielimitowana, darmowa. Mi osobiście to wystarcza na tą chwilę. Kiedyś pokombinuje jak to przerobić na Eclipsa, bo widziałem, ze się da.
  4. Przy przekaźniku jest dioda. Problem był prozaiczny. Brak kondensatora 100 nF przy wejściu NRST powodował czasami falowanie napięcia, co wprowadzało reset. Dobry zwyczajem jest podwieszać wszystkie, niewykorzystane porty do przeciwnego stanu, aby nie dopuścić do takich dziwnych sytuacji. Widać, lenistwo dało górę. Najważniejsze, że się poprawiło i jest lekcja na przyszłość
  5. Dzień dobry, kontynuując swój projekt, natchnąłem się na dziwną sytuację. Jest to timer, który odmierza czas, który ustawiony jest za pomocą trzech klawiszy (na każdym wybieramy 1). Wszystko działa do momentu rozpoczęcia wykonywania się funkcji start();. Mało tego. Do procedury odliczania czasu do rozpoczęcia pracy (countdown) wszystko gra. Problem pojawia się w linii GPIO_WriteHigh(GPIOC, GPIO_PIN_6);, kiedy wystawiam stan wysoki na porcie. Generalnie wszystko działa i program wykonuje się poprawnie, ale zdarzają się sytuacje, kiedy funkcja dochodzi do tej linii, wystawia stan wysoki i r
  6. Chev

    STM8S - problem z debouncingiem

    Dziękuję Panom za pomoc. Udało mi się to wykonać w przerwaniu timera jak napisał @rajszym. Daje kod dla przyszłych pokoleń. Mało informacji jest ogólnie o procesorze STM8S. Myślę, że taki przykład się komuś przyda w przyszłości INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13) { if((GPIO_ReadInputPin(GPIOA, GPIO_PIN_3) == 0)) // sprawdzam stan przycisku { timeTIM2++; // jeśli wciśnięty, liczę czas +1ms TIM2_ClearITPendingBit(TIM2_IT_UPDATE); //zeruje flagę przerwania } else //jeśli zmienił się stan interrupt = 1; // ustawiam fl
  7. Dzień dobry, Mam problem z pozbyciem się debouncingu na wejściu procesora spowodowanego przez przyciski. Do nogi procesora mam oczywiście dołożony rezystor pull-up 10k oraz kondensator 100nF, równolegle z przyciskiem. Walczę z tym od kilku dni i już nie mam pomysłu dlaczego to nie działa. Problem jest taki: staram się stworzyć softwarową eliminacje debouncingu. W tym celu w przerwaniu przycisku sprawdzam stan przycisku na porcie PA3. Timer TIM2 ustawiony jest na takt 1ms, więc ustawiam sobie w pętli while czas 20ms, aby po tym jeszcze raz sprawdzić stan portu, czy oby na pewno jest niski
  8. Super. Dziękuję za dobre info! Dopytam jeszcze, bo kto pyta nie błądzi. Powiedzmy, że przerwanie pojawi się, gdy na wejściu pojawi się stan niski. Nogę kolektora w takim przypadku podłączam bezpośrednio do uC bez zasilania, tak jak jest na rysunku, tak?
  9. Masz rację, że wystarczy przekaźnik z cewką 230V, ale dla samej nauki chciałbym to zrobić na transoptorze. Przychodzi mi do głowy rozwiązanie dołożenia drugiej diody równolegle w przeciwnym kierunku. Wtedy przepływ napięcia będzie dwukierunkowy. Rozwiąże to problem?
  10. Dzień dobry. Postanowiłem zbudować układ, który pozwoliłby mi na monitorowanie poziomu sieci 230V. Chcę wykorzystać czujnik ruchu, aby za jego pomocą zaświecać lampę, jak to się po bożemu robi, a przy okazji dodatkowo wysterować inne urządzenie za pomocą mikrokontrolera i przekaźnika. Zbudowałem schemat pokazany na zdjęciu. Zasada działania jest taka: Zasilam układ i czujnik ruchu z napięcia 230V. W momencie załączenia się czujnika ruchu, przekaźnik w nim zostaje zwarty i ten sygnał chciałbym badać, ale idźmy dalej. Dioda zaczyna przewodzić, wycinając połowę sinusa na fo
  11. Tak jest to policzone. 1,4V (nowe 1,45V ale biorąc uwagę degradację, biorę pod uwagę gorszy przypadek) osiąga naładowane ogniwo NiCd, więc naładowanie moich 6 pastylek, będzie wymagało 8,4V. Tak samo LiFePo4. Naładowane ogniwo osiąga napięcie 3,65V, lecz to w porównaniu do NiCd można trochę przeforsować napięciowo do 4,1V, co nie wpływa znacząco na jego kondycję. Ja przyjąłem ładować je do 3,85V na celę, bo tak pozwalają na to rezystory użyte w układzie (nie chcę generować nowych elementów, bo później wiąże się to też z kosztami układania przez zewnętrzną firmę. Ciągle kompromisy). Jest kilka
  12. Akumulator jest ładowany zawsze stałym prądem 180 mA z możliwością wybrania napięcia ładowania na switchu: 8,5V oraz 11,5V, by ładować ogniwa NiCd (7,2V) lub LiFePo4 (9,6V). Po uzyskaniu napięcia 8,4V dla NiCd oraz 11V dla LiFePo4 nastąpi jakaś zmiana sygnalizacji LED, a w przypadku, gdy napięcie na złączu akumulatora będzie niższe niż 6,5V, co ma sygnalizować błąd lub brak akumulatora, ma na nastąpić adekwatna do tego faktu sygnalizacja LED. Oba akumulatory będą o pojemności 1800mAh. Ładuje je prądem 0,1C z bardzo prostego powodu. Nie chcę generować dodatkowych kosztów na czujnik temperatury,
  13. Z gotowych rozwiązań mogę polecić system sterownia Casambi CBU-PWM4. Wystarczy podłączyć zasilacz oraz pasek LED RGB lub RGBW, do sterownika, pobrać aplikacje na telefon i skonfigurować sceny, które mają uruchomić się o danej godzinie. Kosztuje trochę, ale jest to gotowe, przyzwoicie działające rozwiązanie.
  14. 1. Nie używałem jeszcze nigdy ADC, więc stąd te pokłady niewiedzy. Wiedziałem o separacji fizycznej tych ścieżek, ale jakoś nie przyszło mi do głowy, że to jednak faktycznie ta sam potencjał. Teraz wiem jak to wykonać fizycznie. 3. Faktycznie, chochlik. Wzmacniacz na wejściu dodatnim widzi napięcie 3,3V, a te moje nieszczęsne R3 razem z R1 i R2 mają wpływ na wzmocnienie pochodzące z wejścia nieodwracającego. Trochę doczytałem i narysowałem kolejny schemat. Przy dopasowaniu R1=R3, R2=R4 moje napięcie wyjściowe wyniesie Uwy = R2/R1 (U2-U1), z tym że chcąc zastosować LM258 czy jeg
  15. Kubeł zimnej wody jeszcze nikomu na złe nie wyszedł. No chyba, że ktoś złapał po nim katarek. Do rzeczy. Uzupełniłem pokaźne pokłady niewiedzy dot. OPAmpów. Załączam kolejny schemat, przemyślany, nie wykonany ,,od czapy''. Zaczniemy od zasilania. Doprowadzam zasilanie +3V3 - AGND do OPAmpa, z tych samych linii, które doprowadzają zasilanie do uC. W ten sposób zapewniam sobie ten sam punkt odniesienia dla pomiaru napięcia wyjściowego plus dodatkowo robię dzielnik napięcia 1:1 na wejściu nieodwracającym, by przesunąć off-set mojej masy na 1/2Vcc zasilania OPAmpa, czyli 1,65V jak kolega @RF
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.