eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Termopara i MAX6675
Ilość wypowiedzi w tym wątku: 28

  • 11. Data: 2023-03-29 00:20:10
    Temat: Re: Termopara i MAX6675
    Od: Ceat <c...@a...net>

    W dniu 28.03.2023 o 21:46, Mirek pisze:
    >...
    > skrót:
    >     integral += error * timeDelta * ki
    > Nie działa prawidłowo. ponieważ w przypadku niezerowego integral, a
    > zerowego error - wynikowe integral zostaje stałe, niezerowe.
    > Jeszcze gorzej to wygląda w przypadku wersji z Wikipedii.
    >
    W stanie ustalonym _całość_ sygnału na wyjściu pochodzi z integratora!
    Części proporcjonalna i różniczkująca są zerowe.

    Poczytaj dobre wyjaśnienie zawiłości:
    http://brettbeauregard.com/blog/2011/04/improving-th
    e-beginners-pid-introduction/


  • 12. Data: 2023-03-29 21:01:11
    Temat: Re: Termopara i MAX6675
    Od: Mirek <m...@n...dev>

    On 29.03.2023 00:20, Ceat wrote:

    > W stanie ustalonym _całość_ sygnału na wyjściu pochodzi z integratora!
    > Części proporcjonalna i różniczkująca są zerowe.
    >
    Masz rację, przekombinowałem.
    Jeżeli błąd jest zero, a jest jakaś siła zaburzająca to przecież output
    nie może być zero. To jest oczywiste w przypadku grzałki. ale ja
    ostatnio bawiłem się silnikiem z enkoderem i zacząłem drążyć temat czemu
    PWM nie jest zero i silnik brzęczy skoro jest dokładnie na zadanej pozycji.


    > Poczytaj dobre wyjaśnienie zawiłości:
    > http://brettbeauregard.com/blog/2011/04/improving-th
    e-beginners-pid-introduction/

    No ciekawe - muszę sprawdzić to z derivative kick, bo przy małych
    ruchach tak właśnie mam: silnik rusza z kopa i czasem przelatuje za daleko.

    --
    Mirek.


  • 13. Data: 2023-03-30 01:04:09
    Temat: Re: Termopara i MAX6675
    Od: Ceat <c...@a...net>

    W dniu 29.03.2023 o 21:01, Mirek pisze:
    > ostatnio bawiłem się silnikiem z enkoderem i zacząłem drążyć temat czemu
    > PWM nie jest zero i silnik brzęczy skoro jest dokładnie na zadanej pozycji.

    W znanych mi rozwiązaniach napędów DC z enkoderem silnik jest zasilany
    przebiegiem prostokątnym bipolarnym. Po osiągnięciu pozycji docelowej
    przebieg ma wypełnienie 50%, wartość średnią 0 ale wartość skuteczną
    równą amplitudzie przebiegu. Dzięki temu rozwiązaniu silnik "stoi jak
    zamurowany" (i nie ma spadku momentu/mocy przy małych prędkościach, co
    występuje przy sterowaniu PWM unipolarnym).


  • 14. Data: 2023-03-30 19:32:35
    Temat: Re: Termopara i MAX6675
    Od: Mirek <m...@n...dev>

    On 30.03.2023 01:04, Ceat wrote:

    > W znanych mi rozwiązaniach napędów DC z enkoderem silnik jest zasilany
    > przebiegiem prostokątnym bipolarnym. Po osiągnięciu pozycji docelowej
    > przebieg ma wypełnienie 50%, wartość średnią 0 ale wartość skuteczną
    > równą amplitudzie przebiegu. Dzięki temu rozwiązaniu silnik "stoi jak
    > zamurowany" (i nie ma spadku momentu/mocy przy małych prędkościach, co
    > występuje przy sterowaniu PWM unipolarnym).

    O widzisz - tego nie wiedziałem. Będę musiał popróbować.
    Widzę dwa problemy: nie będę mógł skorzystać ze sprzętowego PWM -
    znaczna komplikacja programu, będę musiał też jakoś ograniczać prąd żeby
    nie przegrzać silnika.
    Może trzeba jednak nie 50% w prawo i 50% w lewo tylko np 10% w prawo i
    10$ w lewo i w ten sposób ograniczyć prąd?
    Albo wykorzystać 2 PWM-y i jednym sterować kierunkiem a drugim regulować
    prąd?
    Sterownik ma wejścia prawo, lewo i enable - do tej pory na enable daję
    PWM, a lewo lub prawo wybieram kierunek. Jeśli prawo i lewo ma ten sam
    stan, to zwiera silnik i PWM-em można regulować hamowanie.

    --
    Mirek.


  • 15. Data: 2023-03-30 20:50:17
    Temat: Re: Termopara i MAX6675
    Od: "J.F" <j...@p...onet.pl>

    On Thu, 2 Mar 2023 20:31:07 +0100, Mirek wrote:
    > On 2.03.2023 15:15, J.F wrote:
    >> A uziemiles T- ?
    >>
    > No właśnie to uziemienie powodowało największe zakłócenia.
    > Przyjrzałem się tej płytce - nie dość, że zamienione są wyprowadzenia:
    > gruba masa jest połączona z nóżką 2 a cienka ścieżka do zacisku T- idzie
    > od nóżki 1. A działa dlatego, że przy zacisku T- jest połączenie do masy.
    > Rozdłubałem to i podłączyłem wg noty aplikacyjnej i... nie działa. Tzn.
    > scalak się komunikuje, ale wskazuje 0stopni.
    > Wychodzi na to, że ten scalak to chamska podróba, która nie ma w ogóle
    > wejścia różnicowego.

    Ale co zarzucasz - Maxim popełnił błąd projektowy, czy na płytce jest
    jakas podróba i to daleka od oryginału?

    Kośc wymaga podłączenia T- do masy.
    Ale owszem - wydaje się, ze "gruba" (cyfrowa masa) powinna byc
    podłaczona do nózki 1.
    A jak rozdłubales, to połączyles potem 2 do masy?

    Wczesniej cos tam działało, to i teraz powinno.

    > No więc nie może to działać dobrze - po prostu nie
    > ma fizycznie takiej możliwości. Dziwi mnie tylko dlaczego nóżka T- nie
    > jest połączona z masą wewnątrz układu...

    Akurat czeste rozwiaązanie, ze układ ma dwie masy - cyfrową i
    analogową, i w srodku nie połączone ...

    > ale skoro nawet płytka nie
    > udaje poprawnej aplikacji tego układu to nie ma się czemu dziwić.
    >
    > Teraz co do programu - ki jest ewidentnie skopane.
    > liczy go tak:
    >
    > self.iterm += (error * timeDelta * self.ki)
    > output = self.kp * error + self.iterm + self.kd * dErr
    >
    > a powinno być wg wikipedii tak:
    >
    > integral := integral + error × dt
    > output := Kp × proportional + Ki × integral + Kd × derivative
    >
    > Czyli przez ki mnożymy wynik a nie tylko timeDelta.
    > Znów nie chce mi się wierzyć, że nikt tego wcześniej nie odkrył i tylko
    > ja mam z tym problem.

    Jesli nie zmieniasz Ki w trakcie pracy, to na jedno wychodzi.
    w wersji wiki jest on uwzględniony w output, w wersji programu w
    w iterm, roznica wychodzi dopiero gdy Ki zmieniasz -
    w wiki natychmiast mnozona jest cala całka, czyli suma z historii,
    w programie tylko nowe dane maja nowy wspolczynnik.

    Zakladam, ze Ki zmieniasz rzadko, więc to bez wiekszego znaczenia


    J.


  • 16. Data: 2023-03-30 21:03:44
    Temat: Re: Termopara i MAX6675
    Od: "J.F" <j...@p...onet.pl>

    On Tue, 28 Mar 2023 21:46:05 +0200, Mirek wrote:
    > On 20.03.2023 20:13, Mirek wrote:
    >> On 2.03.2023 20:31, Mirek wrote:
    >>> Teraz co do programu - ki jest ewidentnie skopane.
    >>> liczy go tak:
    >>>
    >>>   self.iterm += (error * timeDelta * self.ki)
    >>>   output = self.kp * error + self.iterm + self.kd * dErr
    >>>
    >>> a powinno być wg wikipedii tak:
    >>>
    >>>   integral := integral + error × dt
    >>>   output := Kp × proportional + Ki × integral + Kd × derivative
    >>>
    >>
    >> Bzdury pisałem - wychodzi przecież na to samo.
    >> Ale picoReflow nadal nie ogarnięty,
    >>
    > Ja rozumiem, że nikogo to nie interesuje, albo nikt nie wie, a u tych,
    > którzy wiedzą mam już cichego plonka (zresztą z wzajemnością ;) ), ale
    > mimo to podzielę się swoimi "odkryciami":
    >
    > Jedyna wersja, która jako-tako działa:
    > integral = (ki * integral) + (error * timeDelta * ki)
    > następnie ograniczamy integral, np. od -1 do 1 żeby nie szybowało w
    > kosmos:
    > integral = sorted(-1,integral,1)[1]

    Nie ma lepszej metody ograniczenia?
    Bo jak na to patrze, to włos mi sie jerzy.

    No i tu:
    -jest istotne czy ten integral zawiera Ki, czy nie,
    -czy zakres -1...+1 jest własciwy?

    > skrót:
    > integral += error * timeDelta * ki
    > Nie działa prawidłowo.

    Stop. Zrobiłes cos zupelnie innego.

    integral += error * timeDelta * ki
    liczy w miare prawidło całke.

    Tzn jesli integral wynosi np 0.5, a error dojdzie do 0,
    to integral sie już nie zmienia.

    w twojej wersji
    integral = (ki * integral) + (error * timeDelta * ki)

    w takim przypadku integral (początkowe 0.5) bedzie w kazdym kroku
    mnozone przez Ki.
    Dla Ki>1 bedzie uciekal w strone nieskonczonosci.
    Dla Ki<1 (i >0) bedzie asymptotycznie dochodzil do zera.

    > ponieważ w przypadku niezerowego integral, a
    > zerowego error - wynikowe integral zostaje stałe, niezerowe.

    Ale taka jest wlasnie idea PID - jak error dojdzie do zera, to wlasnie
    czlon całkowy ma zapewnic potrzebne wysterowanie wyjscia.

    > Jeszcze gorzej to wygląda w przypadku wersji z Wikipedii.

    Ogolnie tak samo dobrze.

    J.




  • 17. Data: 2023-03-30 21:13:46
    Temat: Re: Termopara i MAX6675
    Od: "J.F" <j...@p...onet.pl>

    On Thu, 30 Mar 2023 01:04:09 +0200, Ceat wrote:
    > W dniu 29.03.2023 o 21:01, Mirek pisze:
    >> ostatnio bawiłem się silnikiem z enkoderem i zacząłem drążyć temat czemu
    >> PWM nie jest zero i silnik brzęczy skoro jest dokładnie na zadanej pozycji.
    >
    > W znanych mi rozwiązaniach napędów DC z enkoderem silnik jest zasilany
    > przebiegiem prostokątnym bipolarnym. Po osiągnięciu pozycji docelowej
    > przebieg ma wypełnienie 50%, wartość średnią 0 ale wartość skuteczną
    > równą amplitudzie przebiegu. Dzięki temu rozwiązaniu silnik "stoi jak
    > zamurowany" (i nie ma spadku momentu/mocy przy małych prędkościach, co
    > występuje przy sterowaniu PWM unipolarnym).

    Eee .. o jakim silniku mowa?
    DC z magnesami i szczotkami?

    To
    a) silnikowi prawie wszystko jedno, czy ma zasilanie 0V,
    czy takie +/- z wypelnieniem 50%, ktore powoduje prąd o sredniej 0,
    i jakiej tam skladowej przemiennej - niewielkiej.

    Za "sztywnosc" odpowiada enkoder i regulator - zejdze z zadanej
    pozycji, to poplynie prąd korygujący

    b) prąd koncowy nie musi być zerowy, jesli silnik musi pokonac jakis
    moment zewnętrzny (np robot trzyma 100kg na wyciągnietym ramieniu)

    J.


  • 18. Data: 2023-03-30 21:17:12
    Temat: Re: Termopara i MAX6675
    Od: "J.F" <j...@p...onet.pl>

    On Thu, 30 Mar 2023 19:32:35 +0200, Mirek wrote:
    > On 30.03.2023 01:04, Ceat wrote:
    >> W znanych mi rozwiązaniach napędów DC z enkoderem silnik jest zasilany
    >> przebiegiem prostokątnym bipolarnym. Po osiągnięciu pozycji docelowej
    >> przebieg ma wypełnienie 50%, wartość średnią 0 ale wartość skuteczną
    >> równą amplitudzie przebiegu. Dzięki temu rozwiązaniu silnik "stoi jak
    >> zamurowany" (i nie ma spadku momentu/mocy przy małych prędkościach, co
    >> występuje przy sterowaniu PWM unipolarnym).
    >
    > O widzisz - tego nie wiedziałem. Będę musiał popróbować.
    > Widzę dwa problemy: nie będę mógł skorzystać ze sprzętowego PWM -
    > znaczna komplikacja programu, będę musiał też jakoś ograniczać prąd żeby
    > nie przegrzać silnika.
    > Może trzeba jednak nie 50% w prawo i 50% w lewo tylko np 10% w prawo i
    > 10$ w lewo i w ten sposób ograniczyć prąd?

    Jak masz taki napieciowy PWM 50% o duzej czestotliwosci,
    to prąd na indukcyjnosci robi sie nieduzy.
    A silnik indukcyjnosc ma sporą.

    > Albo wykorzystać 2 PWM-y i jednym sterować kierunkiem a drugim regulować
    > prąd?
    > Sterownik ma wejścia prawo, lewo i enable - do tej pory na enable daję
    > PWM, a lewo lub prawo wybieram kierunek. Jeśli prawo i lewo ma ten sam
    > stan, to zwiera silnik i PWM-em można regulować hamowanie.

    J.


  • 19. Data: 2023-03-30 21:38:35
    Temat: Re: Termopara i MAX6675
    Od: Mirek <m...@n...dev>

    On 30.03.2023 20:50, J.F wrote:

    > Kośc wymaga podłączenia T- do masy.

    No to jak to ma działać, skoro czujnik (punkt pomiaru) ma połączenie z
    obudową?
    IMHO potrzebne jest wejście różnicowe. Może być połączone z masą, ale
    tylko w jednym punkcie, a ten punkt jest przy obudowie czujnika, a przy
    scalaku nie może być drugiego.


    > Ale owszem - wydaje się, ze "gruba" (cyfrowa masa) powinna byc
    > podłaczona do nózki 1.

    Nie no to tylko tak wygląda. W rzeczywistości masa jest do 1, a T- jest
    dodatkowo połączone z masą przy zaciskach śrubowych.

    > A jak rozdłubales, to połączyles potem 2 do masy?
    >
    > Wczesniej cos tam działało, to i teraz powinno.
    >
    No niestety, wygląda na to, że kostka nie przeżyła operacji i nie działa
    już wcale.
    Chcę kupić jakąś płytkę - widziałem podobne, ale z innym rysunkiem
    ścieżek - może nie mają tego błędu.
    Albo kupię samą kostkę, ale na spokojnie - na razie mam pilniejsze projekty.


    > Akurat czeste rozwiaązanie, ze układ ma dwie masy - cyfrową i
    > analogową, i w srodku nie połączone ...
    >

    Ale to nie jest masa analogowa - wejście jest różnicowe(?)
    Z resztą gdzieś widziałem schemat bez połączenia tego wejścia z masą
    (może błędny). W każdym razie skądś się wzięło w moim przypadku to, że
    dotknięcie palcem powodowało błąd rzędu kilkunastu stopni nie
    wspominając już o połączeniu obudowy z masą.

    --
    Mirek.



  • 20. Data: 2023-03-30 22:00:10
    Temat: Re: Termopara i MAX6675
    Od: Mirek <m...@n...dev>

    On 30.03.2023 21:03, J.F wrote:
    > On Tue, 28 Mar 2023 21:46:05 +0200, Mirek wrote:

    >> integral = sorted(-1,integral,1)[1]
    >
    > Nie ma lepszej metody ograniczenia?
    > Bo jak na to patrze, to włos mi sie jerzy.

    Jak? no posortuj, i weź środkowy (z ([0],[1],[2]))

    Bardziej intuicyjne może i jest z IF-ami, ale więcej pisania,
    no i to jest Python, a w Pythonie wszystko co możesz zrobić jednym
    poleceniem zadziała szybciej.


    >
    > No i tu:
    > -jest istotne czy ten integral zawiera Ki, czy nie,
    > -czy zakres -1...+1 jest własciwy?

    No ja tego też nie jestem pewien, ale z ograniczeniem przynajmniej jakoś
    działa.
    Bawiąc się piecykiem nie doszedłem do tego - każde wprowadzenie ki
    powodowało wyjście regulacji w kosmos.
    Teraz bawię się silnikiem i z ograniczeniem przynajmniej widzę jakiś
    sens wprowadzenia ki - dociąga do zadanej wartości nawet jak wzmocnienie
    jest za małe żeby ruszyć silnikiem jak jest te parę kroków od celu.
    Oczywiście ki zwiększa przerzut i oscylacje, więc trzeba wprowadzić kd i
    koło się zamyka.

    >
    >> skrót:
    >> integral += error * timeDelta * ki
    >> Nie działa prawidłowo.
    >
    > Stop. Zrobiłes cos zupelnie innego.

    Zgadza się - już się połapałem.


    >> Jeszcze gorzej to wygląda w przypadku wersji z Wikipedii.
    >
    > Ogolnie tak samo dobrze.

    Ale brakuje ograniczenia integral. a to powoduje katastrofalne skutki.

    --
    Mirek.

strony : 1 . [ 2 ] . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: