logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Wysyłanie sygnału PWM przez port DB9 – czy to możliwe i jak to zrobić?

ElektroMuzyk 14 Wrz 2025 18:10 435 23
REKLAMA
  • #1 21689886
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Witam. Coś mnie nie daje spokoju. A mianowicie; czy mając wyjście na db9 można wykorzystać port TX/rx by wysłać z komputera sygnał modulacji PWM? A może są jakiegoś gotowe programy lub skrypty?
  • REKLAMA
  • #2 21689901
    gps79
    Poziom 37  
    Posty: 2193
    Pomógł: 495
    Ocena: 794
    ElektroMuzyk napisał:
    mając wyjście na db9
    wyjście z czego?
    W komputerze możesz mieć np. port RS232 z takim gniazdem, ale ten port nie służy do tworzenia sygnału PWM, a do transmisji szeregowej.
  • Pomocny post
    #3 21689911
    Ture11
    Poziom 39  
    Posty: 5417
    Pomógł: 573
    Ocena: 1121
    Na pewno porty LPT łatwo byłoby zaprząc w jakiś sposób do takiej roboty.


    gps79 napisał:
    W komputerze możesz mieć np. port RS232 z takim gniazdem, ale ten port nie służy do tworzenia sygnału PWM, a do transmisji szeregowej.



    Wydaje mi się, że pary RX i TX nie dałoby się tak wykorzystać, ale RTS już chyba tak:
    Załączniki:
    • rts.pdf (118.41 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 21689975
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Chyba czegoś ważnego nie napisałem. Uświadomił mi to dopiero załącznik Ture11 za co serdecznie dziękuję.
    Mam laptop, z windą 11. W nim usb. Do niego podłączam konwerter
    https://www.gotronik.pl/adapter-usb-na-com-rs232-1-metr-p-3538.html
    Mam wątpliwości czy to coś w ogóle obsługuje pin 7 i RTSa.
    Zakładając że los będzie łaskawy i to cudo ma aktywny pin 7.
    Bez programu lub linii komend np. w CMD nie wyślę sygnału modulacji. Co muszę zdobyć jeszcze?
  • Pomocny post
    #5 21689994
    Ture11
    Poziom 39  
    Posty: 5417
    Pomógł: 573
    Ocena: 1121
    Powiem tak - te przejściówki bywają lepsze i gorsze. Niektóre mają piny dodatkowe, inne mają tylko RxD i TxD.
    Obsłużenie tego czegoś, zarówno software-owo, jak i hardware-owo, będzie nieporównanie trudniejsze, niż wzięcie np. najmniejszego Arduino czy BlackPilla i zaprogramowanie go tak, by robiło co tam planujesz. Wtedy nawet możesz sobie otworzyć zwykły terminal i wpisać liczbę, jaka Cię interesuje do terminala, a Arduino (odpowiednio zaprogramowane) wygeneruje Ci ten sygnał bez patrzenia na timery systemowe, przerwania, i pewnie też kupę uprawnień do dostępu do portu RS232.
  • REKLAMA
  • #7 21690023
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Arduino to nie moja bajka. Po za tym chcę tutaj zaspokoić moją ciekawość. ALEEEE! Jeśli zobaczę na analizatorze lub oscyloskopie zewnętrznym że to działa to mogę wykorzystać to w innym projekcie.
    Tos18
    Dziękuję za linka. Po zapoznaniu się z tymi materiałami widzę że są to pakiety do obsługi portu RTS. Ale nie za bardzo pojmuję jak mógłbym to wykorzystać do wytworzenia fali PWM. A modulacja składa się z takich parametrów jak F czy wypełnienia więc fajnie by było móc panować nad tym. Jeśli pytanie wydaje się infantylne to z góry przepraszam:)
  • Pomocny post
    #8 21690045
    tos18
    Poziom 42  
    Posty: 7079
    Pomógł: 1097
    Ocena: 1841
    ElektroMuzyk napisał:
    Ale nie za bardzo pojmuję jak mógłbym to wykorzystać do wytworzenia fali PWM. A modulacja składa się z takich parametrów jak F czy wypełnienia więc fajnie by było móc panować nad tym.

    Sygnał PWM to włącz/wyłącz z odpowiednimi odstępami czasowymi. Ponieważ RTS nie został zaprojektowany do generacji sygnałów PWM, tylko do zarządzania transmisją, należy programowo zadbać o jego zmiany stanów i odliczanie interwałów czasowych. Bez znajomości języka programowania tematu nie ugryziesz. A utrzymanie interwałów czasowych nie będzie proste.
    Znacznie łatwiej użyć zewnętrznego urządzenia, np. Arduino, do generowania sygnałów PWM, a z PC tylko wysyłać polecenia z parametrami sygnałów.
    Innym podejściem może być PCA9685 sterowany przez konwerter USB/I2C.
  • #9 21690077
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    tos18 napisał:
    Bez znajomości języka programowania tematu nie ugryziesz.

    Trochę się tego obawiałem. Dlatego założyłem temat.
    tos18 napisał:
    Innym podejściem może być PCA9685 sterowany przez konwerter USB/I2C

    Ale to dalej arduino a jeśli nie to tworzenie czegoś "językowego".

    Przy wolnej chwili skorzystam z GPT.

    Niestety ale w życiu elektronika doszedłem do takiego poziomu że chcę rzeczy prawie kosmicznych a jednocześnie maxymalnie uproszczonych i prawie gotowych. Też takie coś mieliście albo przechodziliście? :)
  • Pomocny post
    #10 21690100
    inot
    Poziom 38  
    Posty: 3561
    Pomógł: 441
    Ocena: 802
    ElektroMuzyk napisał:
    Ale to dalej arduino a jeśli nie to tworzenie czegoś "językowego"

    Niestety tak. Ale coś "językowego" byłoby też potrzebne przy Twoim pierwotnym założeniu, czyli wykorzystaniu RTS.
  • #11 21690107
    tos18
    Poziom 42  
    Posty: 7079
    Pomógł: 1097
    Ocena: 1841
    ElektroMuzyk napisał:
    Ale to dalej arduino a jeśli nie to tworzenie czegoś "językowego".

    Chcesz użyć komputera do sterowania a on z zasady jest "językowy"
  • #12 21690141
    Ture11
    Poziom 39  
    Posty: 5417
    Pomógł: 573
    Ocena: 1121
    Jak chcesz PWM z jak najmniejszą liczbą kombinacji, to może karta dźwiękowa... wystarczy....?
  • REKLAMA
  • #13 21696961
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Witajcie. Nie miałem kiedy siąść do tematu bo dość dużo rzeczy w pracy się działo.
    Pomysł z kartą dźwiękową jest nieco za mało ambitny. Chcę coś bardziej "cyfrowo". Po prostu wyrosłem już z tego (złącza jack'owego. Zaś kręci mnie używanie cyfrowych interfejsów a także ich inwersja (choć świat analogowy też lubię, ale bardziej w kontekście muzyki).
    Biorąc pod uwagę Wasze sugestie oraz mój słaby stosunek do kompilowania językowego skorzystałem z GPT.
    Niestety pomimo ściągnięcia kompilatora miałem problemy z kompilacją więc odinstalowałem to. Prosiłbym tutaj o zrozumienie poniższej prośby, gdyż nie wynika z mego lenistwa.
    Czy ktoś dałby radę skompilować kilka linijek kodu i tu rzucić? :)

    Dodano po 2 [minuty]:

    Poniżej masz minimalny przykład w Pythonie + pyserial, który steruje linią RTS na adapterze USB–RS232 tak, aby uzyskać coś w rodzaju „PWM”.

    Kod: Python
    Zaloguj się, aby zobaczyć kod



    Wyjaśnienie:
    frequency = 10 → tutaj częstotliwość PWM w Hz
    duty_cycle = 50 → tutaj wypełnienie w %
    ser.setRTS(True/False) → ustawia stan logiczny linii RTS
  • #14 21698605
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Czy konwerter usb-db9, HL-340 ma wsparcie dla RTS?
  • Pomocny post
    #15 21698638
    inot
    Poziom 38  
    Posty: 3561
    Pomógł: 441
    Ocena: 802
    Wierząc tej chińskiej stronie, to tak. Link
  • #16 21708702
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Czy znacie dobry adapter/konwerter USB na DB9. Dobry, czyli taki który ma pełny stan: gnd, tx, rx, rts, cts, dsr, dcd i pozostałe?
  • Pomocny post
    #17 21709290
    inot
    Poziom 38  
    Posty: 3561
    Pomógł: 441
    Ocena: 802
    Dlaczego inny, skoro ten, który posiadasz, też spełnia te kryteria. Jeśli natomiast masz na myśli adapter dostarczający sygnały poziomu TTL to wtenczas kupić coś takiego: Link
  • #18 21711093
    GrzegorzSwinder
    Poziom 14  
    Posty: 100
    Pomógł: 13
    Ocena: 33
    >>21689886 A nie prościej będzie wydawać na port szeregowy wartość PWM jaką chcemy uzyskać i starować tym Attiny13 które po odebraniu odpowiedniej wartości wygeneruje PWM szybko i bez żadnych problemów ???
  • REKLAMA
  • #19 21711111
    inot
    Poziom 38  
    Posty: 3561
    Pomógł: 441
    Ocena: 802
    Podobne propozycje autor już otrzymał, ale twierdzi, że to nie jego "dyscyplina".
    ElektroMuzyk napisał:
    Arduino to nie moja bajka
  • #20 21756394
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Wracam do tematu:)
    Zakupiłem moduł USB na UART - a dokładnie CH343. Jakie napięcie ustawić? 3,3V czy lepiej 5V?


    Moduł USB na UART z układem CH343 i zworką ustawioną na 5V
    Moduł USB na UART CH343 firmy Waveshare z widocznymi pinami i opisami napięć

    Ma ktoś z Was pomysł jak sprawdzić aktywności pinu RTS?

    Dodano po 52 [minuty]:

    Okno programu Terminal v1.9b z aktywnym portem COM6 i ustawionym RTS/CTS

    Tx i Rx na zwarciu prawidłowo działa. Zworki na wtyku kontrolnym to 2-3 i 7-8. Jak przetestować w teminalu Rts/Cts?
  • Pomocny post
    #21 21756499
    tos18
    Poziom 42  
    Posty: 7079
    Pomógł: 1097
    Ocena: 1841
    Połącz RTS z CTS i zaznacz RTS on TX z opcją invert lub nie. obserwuj lampkę CTS.
  • #22 21756595
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Tos18
    Interfejs programu Terminal v1.9b z aktywną kontrolką CTS i ustawieniem RTS on TX
    W oknie programu terminala lampka CTS świeci światłem ciągłym. Wybrana opcja RTS on TX z funkcją invert oraz nie powoduje że jak dam wysyłkę to wtedy na module CH343 przez chwilę zapala się dioda Txd.

    Zrobiłem eksperyment i wypiąłem zworkę rts/cts. Wtedy program się zawiesił. Jak włączyłem na nowo to lampka CTS się nie świeciła. Jak na włączonym porcie com znowu spiąłem rts/cts to w terminalu cts się zaświeciło na zielono. Wypięcie wygasza. Więc jak dobrze myślę Pin Rts jest aktywny. Muszę sprawdzić poprzedni adapter.
    Więc na nowo mogę się zabrać za próbę wykorzystania tejże technologii do wymodulowania PWM.
    Dziękuję za wskazówki :)
  • #23 21758370
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Proszę Państwa!
    Chyba mam sukces. Przy wykorzystaniu prostego pliku *.Bat uzyskałem na pinie RTS sygnał który jest widoczny w analizatorze.
    Zrzut ekranu z Saleae Logic pokazujący sygnały cyfrowe na trzech kanałach

    Dodano po 1 [minuty]:

    Modulacja PWM - Solo.Bat
    Załączniki:
    • Modulacja PWM - Solo.zip (542 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
  • #24 21759600
    ElektroMuzyk
    Poziom 18  
    Posty: 247
    Pomógł: 29
    Ocena: 66
    Rozwiązanie podano w poprzednim poście.
    Projekt wymaga kilku poprawek ale już wiem w którym kierunku mam iść.
    Dziękuję za wszelką pomoc i udzielane mi wskazówki :-)
    Pozdrawiam serdecznie!

Podsumowanie tematu

✨ Dyskusja dotyczy możliwości generowania sygnału PWM za pomocą portu DB9, wykorzystując linie RTS lub TX/RX w konwerterze USB-RS232 podłączonym do komputera z systemem Windows 11. Standardowy port RS232 nie jest przeznaczony do generacji PWM, gdyż służy do transmisji szeregowej, a linie RTS wymagają programowego sterowania stanami i precyzyjnego odmierzania czasów, co jest trudne do realizacji bez znajomości programowania. Propozycje obejmowały użycie portów LPT, zewnętrznych mikrokontrolerów (Arduino, BlackPill, Attiny13) do generacji sygnału PWM oraz sterowanie nimi z poziomu PC. Autor preferował rozwiązanie bez mikrokontrolerów, chcąc eksperymentować z samym portem RS232 i linią RTS. Wskazano dostępne biblioteki do kontroli pinów RTS w Windows (np. Win32 API) oraz przykładowy kod w Pythonie z użyciem pyserial do sterowania linią RTS w celu uzyskania sygnału przypominającego PWM. Dyskutowano o kompatybilności i funkcjonalności konwerterów USB-DB9, zwłaszcza modeli HL-340 i CH343, pod kątem obsługi linii RTS. Testy z wykorzystaniem zworki RTS-CTS i terminala potwierdziły aktywność pinu RTS. Ostatecznie autor uzyskał widoczny na analizatorze sygnał PWM na pinie RTS, generowany prostym skryptem *.bat, co potwierdziło wykonalność projektu, choć wymaga on dalszych usprawnień. Podkreślono, że generowanie PWM przez port RS232 jest możliwe, ale wymaga programowego zarządzania stanami i precyzyjnego odmierzania czasów, co jest znacznie prostsze do realizacji przy pomocy dedykowanych mikrokontrolerów.
REKLAMA