Skocz do zawartości

ahmed10

Użytkownicy
  • Zawartość

    16
  • Rejestracja

  • Ostatnio

Reputacja

19 Dobra

O ahmed10

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Zainteresowania
    elektronika , lotnictwo , muzyka klasyczna

Ostatnio na profilu byli

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

  1. Pomysł własny inspirowany na jak dobrze pamiętam jakimś kicie nordlelektronik, gdzie był zastosowany jeden LM567 do wykrywania pojedynczego tonu i to niby miało być rozpoznawanie mowy, poważnie! Ja się na to nabrałem bo gówniarz byłem. A jakiś czas później to zaadaptowałem właśnie w taki sposób jak opisany w tym wątku
  2. Dziękuję bardzo za miłe słowa. A to prawda można by było zrobić to na dwóch diodach, jakoś tak nie pomyślałem wtedy Można się bawić do woli, można by tak samo zrealizować wzmacniacz na op-ampie i wiele innych modyfikacji przeprowadzić. Kolejne wersje różniły się od siebie np tym, że zamiast dwóch NE555 był jeden układ NE556 który integrował je w sobie. Później dodałem małego Attiny13A i zrealizowałem taką funkcjonalność w kodzie programu dzięki której mogę sterować dwoma urządzeniami. Jeśli sygnał akustyczny jest opadający to włączam/wyłączam urządzenia A, natomiast jeśli jest narastający to włączam/wyłączam urządzenie B. I w sumie jako tako na tym zakończył się rozwój projektu. Miałem w planach zrealizować na jakimś AVR-ku analizę FFT sygnału i to samo wszystko robić ale już bez LM567 i uwzględniać też ciągłość sygnału, ale niestety teraz nie mam już tyle czasu co kiedyś
  3. Witam całego Forbota. Chciałbym przedstawić tu mój autorski projekt, który stworzyłem w sumie w technikum, później go udoskonalałem, aż do wersji mikroprocesorowej. Dzisiaj chciałbym wam pokazać jego jedną z pierwszych wersji (to nie znaczy gorszą tylko ciekawszą). Zapraszam do lektury. Wprowadzenie Niniejsze urządzenie powstało jako unowocześnienie i ulepszenie tanich popularnych na rynku tzw. „klaskaczy”. Jako że te opierają się wbrew temu co mówi nazwa na pomiarze głośnych dźwięków, a nie klaśnięcia to ich niezawodność pozostawia wiele do życzenia. Główną ich wadą jest działanie na wszelkie głośniejsze dźwięki co uniemożliwia np. słuchanie głośniejszej muzyki, ponadto czasem nawet upadający przedmiot jest w stanie aktywować taki „klaskacz”. Projekt włącznika akustycznego jest wysoce efektywnym i niezawodnym zamiennikiem wcześniej wspomnianego rozwiązania, duża czułość powoduje iż nawet najsłabszy gwizd będzie efektywnie interpretowany, jedynym chyba mankamentem jest fakt, że trzeba potrafić gwizdać. Zasada działania jest prosta. Należy gwizdnąć zmieniając w odpowiedni sposób ton gwizdu aby włączyć lub wyłączyć podłączone urządzenie (np światło w pokoju). Włącznik akustyczny w wersji v 1.0 jest układem niemalże całkowicie analogowym. Elektroniczny: Blokowy: Ogólny opis zasady działania Sygnał akustyczny z mikrofonu elektretowego o małej amplitudzie musi zostać najpierw wzmocniony aby mogła zostać przeprowadzona jego analiza, dlatego też trafia najpierw na wzmacniacz oparty na tranzystorach T5,T4 Następnie wzmocniony sygnał podawany jest przez kondensator separujące na wejścia dwóch układów detekcji tonu LM567 gdzie jest porównywany do częstotliwości wzorcowej ustawionej przez zewnętrzne elementy RC. Układy te posiadają wyjście typu open colector, dlatego konieczne stało się zastosowanie rezystorów pull up. Wykrycie takiej samej częstotliwości podawanej na wejście jak częstotliwość referencyjna objawia się pojawieniem stanu niskiego na wyjściu LM567. Dalej sygnał trafia na układy czasowe NE555 pracujące w trybie monostabilnym, których zadaniem jest powiązanie czasowe wystąpienia obu sygnałów z detektorów tonu. Zwiększa to niezawodność całego układu dlatego, że wykrycie drugiej częstotliwości w odpowiednim przedziale czasowym zapoczątkowanym wykryciem pierwszej częstotliwości umożliwia przełączenia układu wykonawczego. Czas trwania sygnału aktywnej częstotliwości można płynnie regulować zmieniając stałą czasową RC układów NE555. Następnie sygnały z generatorów monostabilnych trafiają na bramkę AND zbudowaną w oparciu o 3 tranzystory T2, T3, Q1. Sygnał z bramki jest podawany na wejście zegarowe aktywowane zboczem narastającym przerzutnika T (ang. Toggle) zrobionego z przerzutnika D zawartego w układzie CD4013. Pod wyjście przerzutnika podłączony jest tranzystor wykonawczy w roli klucza T1. Obciążalność tego tranzystora reguluje nam jakim urządzeniem możemy sterować. Na płytce została umieszczona dioda włączona w kierunku zaporowym na wypadek indukcyjnego obciążenia tegoż tranzystora np. cewką przekaźnika. Szczegółowy opis zasady działania Układ wejściowy i wzmacniacz Na układ wejściowy składa się taki mikrofon podłączony przez rezystor 3,3k który polaryzuje wewnętrzny tranzystor polowy. Następnie sygnał trafia przez kondensator separujący składową stałą na wzmacniacz zbudowany na tranzystorze T5 BC547B . Jest to bardzo prosty wzmacniacz, którego baza polaryzowana jest jednym rezystorem. Punkt pracy został dobrany na podstawie charakterystyk tranzystora BC547B, prąd bazy wynosi około 3,3uA, a współczynnik wzmocnienia prądowego β wynosi około 310 daje to prąd kolektora na poziomie 1[mA], zakładając spadek napięcia na rezystorze równy połowie napięcia zasilania, a więc 4V można przyjąć, że wartość rezystora powinna wynosić ok. 4000Ω. W projekcie została użyta wartość znormalizowana 3,3k. Co przesunęło nieco charakterystykę pracy w kierunku wyższego potencjału. Następnie sygnał trafia przez rezystor - w celu zwiększenia impedancji wejściowej i kondensator - aby wyeliminować składową stałą na układ dzielnika napięcia wstępnie polaryzującego bazę tranzystora bipolarnego NPN BC547B. Tranzystor ten pracuje w układzie wspólny emiter. Pomiar współczynnika wzmocnienia prądowego tranzystora β wykazał wzmocnienie na poziomie 310. Zakładając niewielką rezystancję emiterową rzędu 220 Ohm oraz przyjmując na niej spadek napięcia 1V możemy wyliczyć prąd emitera, który wynosi Ie = 1/220 = 4,5[mA]. Upraszczając, że prądy emitera i kolektora są sobie równe jesteśmy w stanie policzyć przy spadku napięcia zasilania 9V o połowę wartość rezystora R1 która będzie równa R1 = 4,5/0,0045 = 1k. Prąd bazy wynosi Ic/Beta = 4,5/310 = 14,5[µA] Należy zatem przyjąć dzielnik napięcia w którym prąd płynący będzie wielokrotnością prądu bazy. Ponieważ wcześniej przyjęte zostało, że spadek napięcia na rezystancji emiterowej R4 wynosi 1[V] to napięcie jakie się odłoży na rezystorze R3 będzie wynosiło 1 + 0,7V =1,7[V], a na rezystorze R5 odpowiednio 9 - 1,7 = 7,3V. Przyjmując wartość rezystora R5 = 22k prąd płynący przez ten rezystor wyniesie 7,3/22000 = 330[µA] , natomiast przez rezystor R3 popłynie ten sam prąd pomniejszony o prąd bazy, więc będzie on wynosił 315,5[µA]. Znając spadek napięcia oraz prąd obliczamy rezystancję i przyjmujemy najbliższą znormalizowaną jej wartość – w tym przypadku 4,7k. Poniżej znajduje się wykres oscyloskopowy sygnału wejściowego i wyjściowego wzmacniacza na samy tranzystorze T1: Do pomiarów sygnału posłużyła karta dźwiękowa i program SoundCard Osciloscope v1.41. Wzmacniacz został przetestowany na sygnale 1kHz. Jak widać cechują go bardzo małe zniekształcenia oraz wzmocnienie napięciowe na poziomie = 3.37. Oprócz tego sygnał jest przesunięty w fazie o 180ᵒ co jest cechą charakterystyczną wzmacniacza w układzie OE. Jeśli jeszcze chodzi o realizację praktyczną to pierwszy stopień wzmacniacza został zrealizowany na osobnej płytce. Układ detekcji tonu LM567 Następnie sygnał akustyczny z wzmacniacza trafia na układ detekcji tonu oparty na popularnym LM567, zawiera on w swojej strukturze wewnętrzny wysokostabilny generator (źródło częstotliwości wzorcowej) oraz wejście do którego podaje się sygnał badany. Częstotliwości obu przebiegów są porównywane w układzie fazowej pętli synchronizacji (PLL) i – o ile są one z zadaną dokładnością sobie równe – następuje uaktywnienie wyjścia układu. Wejściem sygnału jest nóżka nr 3. Do wyprowadzeń nr 5 i 6 dołączone są zewnętrzne elementy generatora decydujące o częstotliwości jego pracy. Kondensator podłączony do nóżki nr 2 służy do ustalenia głównego parametru wewnętrznej pętli PLL: tzw. zakresu trzymania. Jest to największa dopuszczalna wartość o jaką mogą różnić się porównywane częstotliwości, by układ uznał je za równe. Kondensator podłączony pod nóżkę nr 1 jest elementem wyjściowym filtra dolnoprzepustowego eliminującego ewentualne przypadkowe krótkotrwałe przełączenia wyjścia. Wejście układu jest spolaryzowane wewnętrznie i wymaga jedynie doprowadzenia sygnału wejściowego, wyjście natomiast jest typu open colector, dlatego konieczne jest zastosowanie rezystorów podciągających. Dokładna zasada działania układów LM567 jest długa do opisania. Generalnie cały układ opiera się na detektorze I-fazowym (In-phase detector) i Q-fazowym (quadrature-phase detektor). Sygnały I/Q są sygnałami wartości składowych zespolonych sygnału, a otrzymuje się je przez mnożenie sygnału wejściowego przez sygnał referencyjny i przez sygnał referencyjny przesunięty w fazie o 90*. Następnie wartość zespolona sygnału wejściowego przechodzi przez filtr dolnoprzepustowy gdzie regulowana jest maksymalna wartość o jaką mogą różnić się sygnał referencyjny i wejściowy aby układ mógł uznać je za równe sobie. Sygnał z filtru przestraja odpowiednio generator sterowany napięciowo (VCO), którego sygnał porównywany jest z sygnałem wejściowym w detektorze fazy (I chase detector) składowej rzeczywistej sygnału wejściowego. Na wyjściu pojawia się różnica tych dwóch sygnałów, więc jeśli są sobie równe wyjście układu przyjmuje stan niski. Częstotliwość detekcji wylicza się ze wzoru podanego przez producenta: Fo=1/(1.1*R1*C1), w naszym przypadku R1=R10+R9, C1=C8 Układ czasowy NE 555 NE555 zawiera komparatory mające swe wyprowadzenia na nóżki 2 i 6. Napięcia na tych nóżkach są porównywane z napięciami panującymi na wewnętrznym dzielniku napięcia. I tak jeśli napięcie na nóżce 6 przekroczy 2/3 napięcia zasilania to wyjście układu przyjmuje stan niski, a wewnętrzny tranzystor przewodzi. W przypadku spadku napięcia poniżej poziomu 1/3 Ucc sytuacja jest analogicznie odwrotna czyli na wyjściu jest stan wysoki, a wewnętrzny tranzystor nie przewodzi. W zależności od podłączenia zewnętrznych elementów można uzyskać 3 rodzaje pracy: układ astabilny, monostabilny oraz przerzutnik RS. W projekcie został zastosowany tryb monostabilny w przypadku którego sygnał wyzwalający podawany jest na nóżkę 2 układu. Sygnałem wyzwalającym jest sygnał o wartości mniejszej niż 1/3 Ucc, a więc w naszym przypadku mniejszym niż 3V(ponieważ cały układ zasilany jest z 9V). Sygnał ten pobierany jest z wyjść układów LM567. Pojawienie się go na nóżce 2 powoduje iż na wyjściu pojawia się stan wysoki, a kondensator wcześniej non stop rozładowywany przez wewnętrzny tranzystor zaczyna się ładować. Stan wysoki na wyjściu trwa dopóty dopóki napięcie na zewnętrznym kondensatorze ładowanym przez potencjometr osiągnie wartość większą niż 2/3 Ucc. Gdy to nastąpi stan na wyjściu układu zmienia się na niski, a wewnętrzny tranzystor zaczyna rozładowywać kondensator do zera. Powtórne aktywowanie stanu wysokiego na wyjściu wymaga podania stanu niskiego na nóżkę 2. Jak podaje datasheet układu NE555 czas trwania impulsu na wyjściu opisuje zależność: T=1.1*R*C, w naszym przypadku R= Bramka AND Aby mogło nastąpić przełączenie układu wykonawczego w stan przeciwny sygnał z układów czasowych NE555 musi zostać podany na bramkę AND, innymi słowy aktywacja urządzenia wyjściowego następuję wówczas gdy oba sygnały wyjściowe z przerzutników monostabilnych, są aktywne jednocześnie. Bramka AND została zrealizowana na 3 tranzystorach. Schemat bramki został przedstawiony niżej: Gdy nie ma żadnego sygnału na wejściach podpisanych channel A channel B tranzystor Q1 nie przewodzi, rezystor R20 podciąga do dodatniej szyny zasilania jego bazę dzięki czemu nie ma możliwości aby jakikolwiek potencjał zgromadzony w okolicy nóżki bazy tranzystora Q1 przez przypadek go aktywował natomiast wyjście bramki jest podciągnięte rezystorem pull down R25 do ujemnej szyny zasilania. W momencie podania sygnału na bazy tranzystorów T3 i T4 te zaczynają przewodzić. Przez rezystory R20, R19 oraz bazę tranzystora Q1 zaczyna płynąć prąd w skutek czego na wyjściu bramki pojawia się stan wysoki. Rezystory zostały dobrane tak żeby bez problemu każdy tranzystor pracował w stanie nasycenia, a jednocześnie nie zostały przekroczone dopuszczalne parametry pracy. Maksymalny prąd płynący przez tranzystory T2,T3 wyniesie uwzględniając napięcia Ucesat na obu tranzystorach ok. 1,3 [mA] Przerzutnik T Aby móc zrealizować przerzutnik typu T na przerzutniku typu D należy sygnał z jego zanegowanego wyjścia podać na wejście. Sygnał wyjściowy będzie pobierany z jego niezanegowanego wyjścia. Zmiany stanu wyjścia na przeciwny idą w takt zbocza narastającego sygnału podawanego na wejście zegarowe. Sygnał podawany jest na wejście zegarowe przez rezystor zabezpieczający prosto z bramki AND. Przerzutnik T został zrealizowany na jednym przerzutniku typu D zawartym w układzie CD4013BP. Drugi przerzutnik zostaje niewykorzystany dlatego jego nóżki wejściowe (CLOCK2, RESET2, SET2,D2) są wg zasady podłączone na stałe do masy aby ograniczyć straty mocy. Stopień wyjściowy Stopień wyjściowy został zaprojektowany tak aby był możliwie jak najbardziej uniwersalny. Jako element przełączający posłużył tranzystor BC237 o maksymalnym prądzie kolektora Ic = 100mA , co w zupełności wystarcza do zasilenia cewki przekaźnika, oraz maksymalnym napięciu kolektor emiter Uce wynoszącym 45V. Mimo iż układ zasilany może być maksymalnie z 9V bo na tyle pozwalają układy LM567 to napięcia panujące na złączu tegoż tranzystora mogą być znacznie większe np. z racji indukcyjnego obciążenia przez cewkę przekaźnika, która w momencie odłączenia zasilania indukuje wysokie napięcie, o polaryzacji przeciwnej do wcześniejszego zasilania cewki. Aby zniwelować wpływ tego napięcia na tranzystor T4 została wprowadzona dodatkowo dioda podłączona równolegle do obciążenia, której zadaniem jest ograniczenie wyindukowanego się wysokiego napięcia do napięcia spadku na diodzie 0,6-0,7V. Rezystor R24 ogranicza prąd bazy tranzystora T7 i został tak dobrany aby tranzystor w momencie aktywacji znalazł się w stanie nasycenia przy jednocześnie dopuszczalnym prądzie bazy. Przy zasilaniu układu z 9V spadek napięcia na rezystorze wyniesie: 9V-0,7V=8,3V Rezystancja wynosi 4,7k co po podstawieniu do wzoru daje nam prąd I=1,7[mA], który wystarcza do pełnego otwarcia się tranzystora. Testy praktyczne Na podstawie testów przeprowadzonych w laboratorium można stwierdzić bardzo małą awaryjność urządzenia. Dzięki wysokiej selektywności układów LM567 układ reagował nawet przy dużym hałasie z mnóstwem innych składowych np. przy słuchaniu muzyki, znacząco deklasując tradycyjne „klaskacze”. Zdarzały się jednak sporadyczne aktywacje jednej z nastawionych częstotliwości co oczywiście nie zmieniało stanu wyjścia układu. Dzięki podwójnemu wzmacniaczowi urządzenie wychwytuje określone częstotliwości już przy najcichszym sygnale akustycznym. Testy wykazały, że reaguje na słaby gwizd do 2.5m, natomiast największa odległość z jakiej udało się aktywować urządzenie wynosiła nieco ponad 10 m. Parametry te są w zupełności wystarczające biorąc pod uwagę metraż przeciętnego pokoju. Układ powinien być zasilany napięciem z przedziału 5-9V. Dolną granicę zasilania determinują głównie układy NE555, ponieważ poniżej tej wartości zaczynają się same wzbudzać, natomiast górną komparatory częstotliwości LM567. Najlepsze efekty (czułość) uzyskuje się zasilając układ z 8-9 V. I to już koniec tego mam nadzieję wyczerpującego opisu. Troszkę może to przypomina powtórkę z podstaw elektroniki, ale mimo wszystko mam nadzieję że komuś taka analiza się przyda w przyszłości aby łatwiej rozpocząć przygodę z elektroniką. Dodam tylko, że całość została zaprojektowana w programie Eagle i wykonana metodą termotransferu na laminacie jednostronnym oraz starannie pocynowana i zabezpieczona kalafonią (stąd ten może brzydki wygląd). Wzięło się to stąd, że układ robiłem koledze do zamontowania w ścianie z kartongipsu, dlatego też cała elektronika nie ma stosownej obudowy oraz trzeba było jakoś ścieżki zabezpieczyć przed ewentualną wilgocią w ścianach ;D Na zakończenie filmik przedstawiający działające urządzenie oraz zdjęcia. W załączniku płytka w Eaglu. Eagle.rar
  4. Witam! Chciałbym przedstawić wam moją konstrukcję, która stała się przedmiotem mojej pracy inżynierskiej. Mechanika: Konstrukcja mechaniczna w zasadzie oparta jest na 2 płytkach PCB. Do płytki głównej zamontowane są dwie kulki podporowe, a także silniki pololu o przekładni 1:10 co stanowi napęd robota. Z przodu zamontowana jest płytka z podstawą zawierająca uchwyty do czujników ultradźwiękowych. Taki sam uchwyt pod czujnik znajduje się również na 'ogonie' robota - jest on nie używany i został zamontowany eksperymentalnie. Na przedłużonej osi silników zostały zamontowane magnesy enkoderów magnetycznych co ilustruje poniższa fotografia. Elektronika: Sercem robota jest mikrokontroler AVR ATmega162, którego zadaniem jest sterowanie robotem w tym: obsługa enkoderów, sterowanie silnikami, odbiór informacji z mikrokontrolera slave nt. odległości mierzonych przez czujniki, realizację algorytmów sterowania, realizacja połączenia bluetooth, obsługa wyświetlacza LCD hd44780. Drugi mikrokontroler również AVR, ATmega328 realizuje tylko i wyłącznie obsługę czujników odległości HC-SR04. Pomiary normalizuje i wysyła interfejsem SPI do jednostki głównej ATmega162. Na pokładzie robota znajdują się również dwa enkodery magnetyczne AS5040 pracujące w pętli sterowania regulatora PI silników. Enkodery te pracują w trybie defaultowym czyli wyjście kwadraturowe, rozdzielczość 2x256. Silniki sterowane są poprzez mostek H L293. Komunikacją z robotem zajmuje się moduł bluetooth bt222 - czyli komunikacja jest przez UART mikrokontrolera. Główny mikrokontroler jest taktowany zewnętrznym kwarcem 16Mhz co przy takiej ilości obsługiwanych urządzeń i wykorzystywanych interfejsów było po prostu konieczne, z kolei mikrokontroler atmega328 jest taktowany zewnętrznym kwarcem jednak z powodu lepszej podstawy czasowej, która jest konieczna do dokładnych odczytów z czujników odległości. Na wyświetlaczu LCD są wyświetlane aktualnie mierzone wartości odległości czujników. Automatyka: Zostało wspomniane, że silnikami steruje algorytm regulatora PI. Aby obliczyć jego nastawy została przeprowadzona identyfikacja transmitancji. W tym celu wykorzystałem UART do przesyłania aktualnej prędkości silników oraz środowisko Matlab do wizualizacji danych na wykresie. Z wyliczeń wyszło, że silniki z zastosowanymi kołami mają transmitancję: G(s)=107/(0.19s+1) Po obliczeniu nastaw regulatora i zastosowaniu w praktyce okazało się, że można jeszcze troszkę dopieścić nastawy i ostatecznie wykresy odpowiedzi skokowej bez i z regulatorem wyglądają następująco: Software: Napisane w C w środowisku Eclipse. Umożliwia robotowi 3 tryby. Tryb avoid. W trybie tym robot ma za zadanie omijać przeszkody wykorzystując regulator rozmyty Takagi-Sugeno. Wykorzystuje w tym celu odczyty z czujników odległości. Tryb goal seeking. Robot podąża do celu czyli do odebranych przez bluetooth współrzędnych kartezjańskich podanych w [mm], zakładając, że miejsce od którego zaczyna lub dostał nowy zestaw współrzędnych, ma współrzędne 0,0. W trybie tym regulator Takagi-Sugeno ma za zadanie na podstawie zaimplementowanej odometrii oraz współrzędnych końcowych sterować robotem w celu osiągnięcia zadanego położenia. Problem algorytmu przedstawia ilustracja: Tryb avoid + goal seeking. Jest to połączenie dwóch wcześniej opisanych trybów. W trybie tym działają równocześnie obydwa wcześniej opisane algorytmy, jednak na wejście regulatorów PI sterujących silnikami jest podawany zbalansowany sygnał z obu algorytmów. Tzn w zależności od najmniejszej odległości od przeszkody mierzonej przez któryś z czujników jest obliczany procentowy udział wartości sterowania od dwóch algorytmów. Brzmi skomplikowanie ale takie nie jest. Najlepiej zobrazuje to wzór: V=K*Vg+(1-K)*Va gdzie V jest prędkością zadaną na regulator PI silnika, Vg jest prędkością wynikającą z algorytmu goal seeking, Va jest prędkością wynikającą z algorytmu avoid, K jest parametrem, który przyjmuje wartość z przedziału 0-1 w zależności od mierzonej minimalnej odległości do przeszkody. Robota wprowadza się w odpowiedni tryb za pomocą dwóch przycisków lub poprzez interfejs bluetooth. Odpowiednie tryby sygnalizują diody LED. W celu przesłania komendy zawierającej współrzędne celu najpierw należy wprowadzić robota w odpowiedni tryb, a następnie wysłać do niego wg stworzonego prze zemnie protokołu dane. Protokół wysyłania danych jest następujący: X±⌴⌴⌴Y±⌴⌴⌴& gdzie +- – znak współrzędnej, _ – wartość współrzędnej. Testy. Konstrukcja została przetestowana pod względem dokładności odometrii. Robot podczas licznych testów na bieżąco wysyłał swoje współrzędne, które w dalszej kolejności były obrabiane w środowisku Octave do przyjemnych w analizie wykresów. Przykładowy wykres drogi, którą pokonał robot na 'placu manewrowym' w trybie avoid: ... oraz rzut z góry na 'plac manewrowy': U góry pozycja początkowa, na dole końcowa robota. Cały ten obszar był dookoła ogrodzony ścianką. Słowa samokrytyki Co bym zmienił ? Czujniki. Ze względu na problematyczność wykrywania małych przeszkód lub gdy płaszczyzna przedmiotu uniemożliwia odbicie się fali ultradźwiękowej w stronę odbiornika. Zdarza się, że z powodu gubienia przeszkód robot po prostu w nie wpada. Najciekawsze fragmenty programu: Regulatory PI: //######################################## REGULATOR PRĘDKOŚCI ############################################ erra = vl-Va;//liczenie błedu prędkości errb = vp-Vb; if(ua<1023&&ua>-1023)Ca = Ca+(erra*dt);//całka błędu ua = kp*(erra + Ca/Ti);//regulator PI //P I if(ub<1023&&ub>-1023)Cb = Cb+(errb*dt);//całka błędu ub = kp*(errb + Cb/Ti);//regulator PI //P I if((ua<10)&&(ua>-10))ua=0; if((ub<10)&&(ub>-10))ub=0; motor_set(ua,ub);//ustawia sterowanie silników Regulator rozmyty Takagi-Sugeno trybu goal seeking: inline void PsiZ2Vlr(float *Psi, float *z, int16_t *vl,int16_t *vp) { float PSI[3]; float XL[6],XR[6]; float NR,FR,L,S,P,VL=0,VP=0,m=0; uint8_t i,k; ///////////////////////////////LICZENIE PRZYNALEŻNOŚCI////////////////////////////////// if(*z<=100)NR=-0.01*(*z)+1;else NR=0;//jak bardzo blisko jest cel if(*z<=100)FR=0.01*(*z);else FR=1;//jak bardzo daleko jest cel if(*Psi<=0)L=-0.3183*(*Psi);else if(*Psi<-M_PI)L=1;else L=0; if(*Psi<=0)S=0.3183*(*Psi)+1;else if(*Psi<-M_PI)S=0; else if(*Psi>M_PI)S=0;else S=-0.3183*(*Psi)+1; if(*Psi>=0)P=0.3183*(*Psi);else if(*Psi>M_PI)P=1;else P=0; /////////////////////////////////////TABLICA REGUŁ////////////////////////////////////// PSI[0]=L; PSI[1]=S; PSI[2]=P; //NR; XL[0]=-4000;XR[0]=4000; XL[1]=0;XR[1]=0; XL[2]=4000;XR[2]=-4000; //FR; XL[3]=-4000;XR[3]=4000; XL[4]=4000;XR[4]=4000; XL[5]=4000;XR[5]=-4000; /////////////////////////////obliczanie prędkości silników////////////////////////////// for(k=0,i=0;k<3;k++,i++)//pierwszy wiersz tabeli { VL+=NR*PSI[k]*XL[i]; VP+=NR*PSI[k]*XR[i]; m+=NR*PSI[k]; } for(k=0;i<6;k++,i++)//drugi wiersz tabeli { VL+=FR*PSI[k]*XL[i]; VP+=FR*PSI[k]*XR[i]; m+=FR*PSI[k]; } *vl=(int16_t)VL/m; *vp=(int16_t)VP/m; } Obsługa czujników odległości: //PRZERWANIE OD CAPTURE PIN ISR(TIMER1_CAPT_vect) { if( (TCCR1B & (1<<ICES1)) ) { LastCapture = ICR1;//jesli zbocze narastajace, zlap ICR1 } else { PulseWidth = ICR1 - LastCapture;//Jeśli zbocze opadajace oblicz PW pomiar=0;//wyzeruj flagę pomiaru } TCCR1B ^= (1<<ICES1);//Zmiana zbocza wyw. przerwanie } Mam nadzieję że robocik się podoba. W razie pytań proszę śmiało. Całości kodu nie udostępniam ze względu na prawa autorskie niektórych funkcji bibliotecznych. Co mogłem udostępniłem. Pozdrawiam was wszystkich !
  5. Zdecydowanie polecam Robo~motion Rzeszów, nie ma lepszych. Sprzęt, zorganizowanie, miła atmosfera i wgl
  6. Witam! Jak już jest wspominane o wydajności aku czy baterii to warto wspomnieć o rezystancji wewnętrznej - w końcu to od niej zależy maksymalna moc dostarczana do np. silników jak to było wspominane w tekście.
  7. no tak PWM, a co jeśli będziemy sterować silnik liniowo tj. zwiększając i zmniejszając napięcie zasilania. To jest schemat takiego połączenia: Widać, że pod stojan jest podpięte napięcie z dzielnika kondensatorowego, a nie z GND Najlepiej było by sprawdzić te sposoby oscyloskopem czy rzeczywiście coś daje podłączanie kondziołków pod obudowę. Jeśli chodzi jeszcze o to że niby przy sterowaniu PWM-em stojan stałby się anteną to mam zastrzeżenie tego typu że miałem kiedyś samolot na zdalne sterowanie (zasięg 300m) i właśnie kondensatory były podpięte tak jak na rysunku 3 czyli między szczotkami i jeszcze na obudowę. To by się trochę gryzło bo na pokładzie był przecież odbiornik.
  8. Jeśli chodzi o takie podłączenie kondensatorów to ciężko jest znaleźć jakieś sensowne informacje na ten temat. Każdy kto robi konstrukcje na silnikach powiela rozwiązania gdzieś wcześniej podpatrzone. Jedyne co mi się obiło o uszy to to że gwałtowne zmiany prędkości silnika wywołują zmiany strumienia magnetycznego co powoduje indukowanie się napięcia w samej obudowie silnika (stojanie) do tego dochodzą fale elektromagnetyczne wytwarzane przez łuk elektryczny na zestyku szczotek i komutatora, jednym słowem stojan to taki trochę ekran, który zbiera te wszystkie śmieci stąd konieczność wpięcia go również w elementy filtracyjne
  9. Artykuł ten jest skierowany głównie dla młodszej części naszej wspólnoty Forbota, co w cale nie oznacza, że ci bardziej zaawansowani w temacie nie mogą go przeczytać. Omówię w nim 3 podstawowe zagadnienia tj: » Część 1 :: Dlaczego gdy podłączymy silnik pod zasilanie na początku pobiera on duży prąd » Część 2 :: Przesunięcie osi neutralnej i bieguny pomocnicze » Część 3 :: Poprawne zasilanie i filtrowanie układów napędowych A zatem zapraszam do lektury. » Część 1 :: III klasę technikum Profesor spytał: „Dlaczego gdy podłączymy silnik pod zasilanie na początku pobiera on duży prąd?”- na to pytanie nikt nie potrafił udzielić sensownej i prawidłowej odpowiedzi. (fakt z życia wzięty) Aby odpowiedzieć na pytanie zadane przez profesora należało by najpierw zgłębić istotę działania silnika elektrycznego. Jak wiadomo istota jego działania opiera się na zasadzie siły elektrodynamicznej. Z lekcji fizyki wiemy że z siłą elektrodynamiczną wiąże się „nie wiedzieć dlaczego” lewa ręka. A to ilustracja która obrazuje zasadę używania lewej ręki: Jak wiadomo również z lekcji fizyki F = BIL, gdzie B- indukcja pola magnetycznego, I prąd płynący w przewodzie tudzież uzwojeniu, L długość przewodnika, która znajduje się w polu magnetycznym No dobra to już wiemy ale dalej nie wiemy co sprawia że na początku silnik pobiera duży prąd!! Aby to wyjaśnić potrzebna jest nam kolejna porcja wiedzy. Tym razem przyda nam się prawa ręka i zjawisko indukcji elektromagnetycznej. Całość ilustruje obrazek poniżej: i wzór do ilustracji -e = Blv , gdzie e – indukowane napięcie B – indukcja pola magnetycznego l – długość przewodnika tudzież uzwojenia poruszającego się prostopadle w polu magnetycznym v – prędkość z jaką przewodnik porusza się w strumieniu magnetycznym Dobra, czy teraz już wiemy dlaczego silnik pobiera duży prąd przy rozruchu? Niestety nie! Potrzebne jest nam jeszcze kilka informacji, a ściślej budowa i zasada działania silnika elektrycznego Aby zrozumieć to i to posłużę się kolejną ilustracją: Jest to bardzo uproszczony, ale za to bardzo dobrze wyjaśniający zasadę działania model silnika elektrycznego. Wektor F jest nam już znany z rysunku objaśniającego zjawisko elektrodynamiczne. A teraz uważaj bo przechodzimy do sedna sprawy! Jak wiadomo po podłączeniu zasilania w uzwojeniach silnika zaczyna płynąć prąd, który ogranicza rezystancja uzwojeń Rw, dodatkowo w polu magnetycznym wytworzonym przez magnesy trwałe B zaczynają poruszać się zwoje o długości l z pewną prędkością v !! No właśnie doszliśmy do wzoru -e = Blv ! A więc w zwojach które poruszają się dzięki sile elektrodynamicznej zaczyna się również indukować napięcie! Teraz przyjrzyj się dobrze schematowi poniżej, który ilustruje de facto nasz silnik: gdzie Us – napięcie zasilania I – prąd płynący w uzwojeniach silnika Rw – rezystancja uzwojeń silnika e – napięcie wyindukowane podczas pracy silnika Ze schematu wynika iż: Us- I*Rw – e = 0 Po przekształceniu: Us = e + I*Rw Pewnie od początku zastanawiałeś się dlaczego we wzorze -e = Blv występuje minus przed e. Już tłumaczę. Otóż napięcie wyindukowane w uzwojeniach ma przeciwny zwrot co zresztą zaznaczyłem na schemacie stąd ten minus. Przyjrzyjmy się bliżej naszemu wzorowi Us = e + I*Rw , Ponieważ napięcie zasilania mamy stałe oraz rezystancja uzwojeń się nie zmienia czyli Us = const i Rw = const to wynika z niego jednoznacznie, że im większe e tym mniejszy płynie prąd I, a skoro napięcie e rośnie wraz z prędkością uzwojeń wirnika de facto wraz z prędkością silnika to im silnik szybciej się kręci tym mniejszego prądu potrzebuje! Ot i takim oto sposobem doszliśmy razem do tego dlaczego gdy podłączymy silnik pod zasilanie na początku pobiera on duży prąd. » Część 2 :: Omawiając silniki szczotkowe nie można zapomnieć o zjawisku komutacji które pokrótce przedstawiają ilustracje poniżej: W zjawisku komutacji najważniejszą rolę odgrywa komutator dzięki któremu kierunek prądu w uzwojeniach jest odpowiedni pod odpowiednim biegunem. Odpowiedni tj. taki który umożliwia silnikowi dalsze obracanie się. Zagłębmy się bardziej w zjawisko komutacji. Jak widać z powyższych ilustracji wektor siły F powstaje tylko wówczas gdy zwoje wirnika poruszają się prostopadle do lini pola magnetycznego czyli pod biegunami. A co się dzieje gdy zwoje poruszają się równolegle do linii pola tak jak to ma miejsce na rysunku 2 i 4? A no wówczas żadna siła nie działa na wirnik! Brzmi nieźle, ale to nie jest prawda. Siła działa, ale jej wektor ma kierunek prostopadły do osi obrotu i zwrot na zewnątrz silnika i dlatego nie wywołuje ruchu obrotowego. Jakby tego było mało w przewodniku poruszającym się wzdłuż linii pola magnetycznego nie indukuje się SEM (siła elektromotoryczna) czyli to nasze e, które zmniejszało nam prąd silnika! Na szczęście komutator jest tak zbudowany i szczotki tak ustawione, że w momencie takiej pozycji uzwojeń wirnika nie jest na nie podawane napięcie, a oś w której nie indukuje się napięcie nazywa się osią neutralną. Zdało by się że wszystko sobie już wyjaśniliśmy odnośnie komutacji – no w zasadzie to nie, ale najpierw chcę ci przedstawić jeszcze jeden typ silnika szczotkowego w którym magnesy trwałe zastąpione są elektromagnesami. Schemat takiego silnika znajduje się poniżej: Zasada jego działania jest taka sama jak tego bardzo uproszczonego silnika którego wcześniej omawialiśmy. Różnica polega głównie na liczbie biegunów stojana(głównych) i wirnika(twornika) a co za tym idzie budowie samego komutatora przystosowanego teraz do kilku uzwojeń na wirniku. No i pojawiły się jeszcze jakieś „dziwne” bieguny pomocnicze. O co chodzi z tymi biegunami pomocniczymi? Aby zrozumieć istotę ich egzystencji przeanalizujmy sam kształt linii pola magnetycznego jakie występują w silniku. Obrazują je ilustracje poniżej: Na rys. a) zostały zaznaczone linie pola magnetycznego pochodzące tylko od magnesów lub elektromagnesów umieszczonych na stojanie. Na rys. b) zaznaczone zostały linie pola magnetycznego pochodzące od wirnika A teraz co się stanie gdy nałożymy na siebie pole magnetyczne magnesów(elektromagnesów) stojana i wirnika? Zaistniałą sytuację ilustruje rysunek c) Przesunięcie linii pola magnetycznego niestety działa na naszą niekorzyść, gdyż tam gdzie wcześniej była tzw. oś neutralna (zaznaczona czerwoną linią) w której nie indukowało się napięcie - teraz się indukuje, a zwoje w których teraz się nie indukuje bo biegną równolegle do nowych linii pola magnetycznego są podłączone pod zasilanie naszego silnika diametralnie zwiększając jego pobór prądu. Nowa oś neutralna jest zaznaczona niebieskim kolorem. A zatem co należało by zrobić? Są w zasadzie 2 możliwości: przesunąć odpowiednio szczotki, zastosować bieguny pomocnicze, Pierwszego sposobu już się praktycznie nie stosuje natomiast drugi znalazł powszechne zastosowanie ze względu na swoją prostotę. Zadaniem biegunów pomocniczych jest naprostowanie linii zniekształconego pola magnetycznego. A ponieważ zniekształcenie pola magnetycznego i co za tym idzie przesunięcie osi neutralnej zależy od prędkości obrotowej i obciążenia silnika to bieguny te łączy się szeregowo z uzwojeniami wirnika. W przypadku przesuwania szczotek jest problem tego typu, że trzeba by je przestawiać na bieżąco w zależności od prędkości obrotowej i obciążenia silnika i tu właśnie objawia się wyższość rozwiązania z biegunami pomocniczymi. » Część 3 :: Od razu mówię, że nie będę tu omawiał podłączania silników z elektromagnesami na stojanie, czyli uzwojeniami połączonymi szeregowo, bocznikowo, szeregowo-równolegle, ponieważ silniki te są rzadko spotykane w naszych konstrukcjach. Zamiast tego skupię się bardziej na odpowiednim zasilaniu silnika i filtrowaniu wszelkich śmieci pochodzących od niego. Proszę mi wierzyć, że nieumiejętne lub brak filtrowania może prowadzić do pojawienia się różnych „zanieczyszczeń” w zasilaniu naszej konstrukcji co z kolei prowadzi do przepięć, samoczynnych resetów uC lub ich uszkodzeń. Mówię to z własnego doświadczenia dla waszego dobra abyście nie musieli spędzać godzin tak jak ja na wyszukiwaniu przyczyny samoczynnego resetowania się uC mimo, iż na resecie był rezystor podciągający. Zacznijmy od tego z skąd tak naprawdę biorą się te „śmieci”? Pierwsze źródło: niedopasowanie szczotek do osi neutralnej. Skutkuje to zwiększonym i impulsywnym poborem prądu. Jest to najczęstsza przyczyna zanieczyszczeń, gdyż małe silniczki nie mają żadnych układów kompensujących zmiany pola magnetycznego. Drugie źródło: iskrzenia między szczotkami a komutatorem. Prowadzą one nie tylko do zniszczenia tychże elementów, ale także emitują w eter fale elektromagnetyczne które mogą zakłócać moduły radiowe. Także jeżeli w naszym robocie korzystamy np. z modułu bluetooth czy też takiego zwykłego na 433MHz to należy zadbać o odpowiednie środki przeciw zakłócające i ekranujące Tyle teorii teraz trochę praktyki. Podam tu parę przykładów jak sobie radzić z problemami filtracyjnymi 1 sposób i chyba najczęściej spotykany to po prostu mały ceramiczny kondensatorek podłączony przy samym silniku o wartości od 10n do 220n, zazwyczaj 100n. Rozwiązanie często spotykane w samochodzikach na zdalne sterowanie. Można również postarać się o bardziej wyrafinowane metody: 2 sposób to nawinąć dławik. Sposób działa (aktualnie wykorzystywany w moim robocie), ale jest dość kłopotliwy z tej racji, że najczęściej silnikami sterujemy przez PWM, a przebiegi zmienne + cewka to nic dobrego w tym wypadku ze względu na dodatkową impedancję (opór). 3 sposób to specjalne zaprojektowanie zasilania, a w zasadzie oddzielne zasilanie dla części sterującej i napędów z masą połączoną w jednym miejscu na płytce tj. tak żeby na płytce nie było nigdzie pętli masy. Od razu tłumaczę, że pojęcie pętli masy nie odnosi się tylko do wzmacniaczy audio! Utożsamić je można również z układami w których np. korzystamy z przetworników ADC czy długich ścieżek magistral Jeśli natomiast zależy Ci na całkowitym odizolowaniu części sterującej od napędowej można posłużyć się optoizolacją. 4 sposób to stosowanie diod prostowniczych w celu „gaszenia” przepięć. Jeśli nasz silnik w robocie kręci się tylko w jednym kierunku wówczas wystarczy tylko jedna dioda podłączona równolegle do silnika w kierunku wstecznym. Ale jeśli silnik ma wykonywać obroty w jedną jak i w druga stronę wówczas zaleca się zastosowanie takiego schematu: Oczywiście sposoby te można mieszać pomiędzy sobą uzyskując jeszcze lepsze efekty filtracyjne. No i to w zasadzie koniec. Mam nadzieje że podobał wam się artykuł. Pozdrawiam wszystkich Forbotów!!
  10. Rezerwuje temat o silnikach szczotkowych, bezszczotkowych i krokowych! ;D
  11. Konstrukcja bardzo estetycznie wykonana, świetnie się prezentuje. Natomiast co do samego problemu servomechanizmów to zastanawiam się czy przelutowanie (odwrotne przylutowanie) kabli od potencjometru znajdującego się w servie by nie pomogło czasem
×
×
  • Utwórz nowe...